虽然晚了一天,但还是祝各位坛友中秋快乐!
这次我为大家带来ATTINY1607 Curiosity Nano板的TCB(Timer/Counter B)的使用测评,TCB是Microchip系列单片机中一个功能非常强大的外设,拥有非常多的模式,诸如定时中断,超时中断,输入捕获,单次脉冲,PWM脉冲输出等。
这次测评用到了TCB的Capture On Event模式,事件捕捉模式,他的作用是利用事件系统,在指定引脚检测到下降沿后,将计时器当是的值赋给TCB.CCMP寄存器中,因为利用的是事件而非中断,是硬件间的直接通信,因此速度会快很多。
照例,我们新建完工程后,打开MCC进行配置,这次测评使用到的外设有TCB,EVSYS,USART,我们一一进行配置。
首先是TCB,因为用到的是Capture On Event模式,所以我们要启用EVENT INPUT CAPTUTR。
接下来是EVSYS,事件系统,要注意这边的选项,最左边一栏为生成源,中间是通道,右边为使用者,因为TCB只支持同步的事件,因此选择第三个通道(前两个为异步通道),生成源这边选择PA7,使用者为TCB0,这样事件就配置完成了。
最后是串口,选择和电脑通信对应的虚拟串口即可。
配置完成后点生成,接下来对主程序进行设置。
main函数如下,作用是不断输出CCMP中的值,用于检测EVENT是否触发。
int main(void)
{
/* Initializes MCU, drivers and middleware */
SYSTEM_Initialize();
/* Replace with your application code */
while (1){
printf("%c%c",TCB0.CCMP,TCB0.CCMP>>8);
_delay_ms(1000);
}
}
看一下测试结果,初始化后,串口输出十六位值 03 00,随后在人为触发中断后(给PA7一个下降沿。),输出 84 C2,即触发事件时,计时器中的值。
|