【Curiosity Nano 测评报告】ATTINY1607 Timer/Counter B捕捉事件测评

[复制链接]
7575|1
手机看帖
扫描二维码
随时随地手机跟帖
AINZGOWN|  楼主 | 2021-9-23 11:08 | 显示全部楼层 |阅读模式
虽然晚了一天,但还是祝各位坛友中秋快乐!
这次我为大家带来ATTINY1607 Curiosity Nano板的TCB(Timer/Counter B)的使用测评,TCB是Microchip系列单片机中一个功能非常强大的外设,拥有非常多的模式,诸如定时中断,超时中断,输入捕获,单次脉冲,PWM脉冲输出等。
45909614be5670fa80.png

这次测评用到了TCB的Capture On Event模式,事件捕捉模式,他的作用是利用事件系统,在指定引脚检测到下降沿后,将计时器当是的值赋给TCB.CCMP寄存器中,因为利用的是事件而非中断,是硬件间的直接通信,因此速度会快很多。

46780614be79ec207f.png

照例,我们新建完工程后,打开MCC进行配置,这次测评使用到的外设有TCB,EVSYS,USART,我们一一进行配置。
首先是TCB,因为用到的是Capture On Event模式,所以我们要启用EVENT INPUT CAPTUTR。
95859614beaf699476.png

接下来是EVSYS,事件系统,要注意这边的选项,最左边一栏为生成源,中间是通道,右边为使用者,因为TCB只支持同步的事件,因此选择第三个通道(前两个为异步通道),生成源这边选择PA7,使用者为TCB0,这样事件就配置完成了。
35106614beb857f42a.png

最后是串口,选择和电脑通信对应的虚拟串口即可。
16990614bec1f7302d.png


配置完成后点生成,接下来对主程序进行设置。
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,即触发事件时,计时器中的值。
18321614beee245bf5.png



64256614bec15930db.png

使用特权

评论回复
mintspring| | 2021-9-23 23:21 | 显示全部楼层
没看太懂,明天试试看。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

70

帖子

1

粉丝