你好朋友我是微控制器领域的新手想知道这是不可能计算事件而不使用计数器我的意思是通过监控连接到事件发生器的引脚。我问这个问题因为目前我想要通过使用DSO(数字存储示波器)计算传感器的频率我已经检查了它的频率,并且它(DSO)说它的频率是98khz,但是现在我们都知道8位计数器的最大值是255,那么它是如何可能的......传感器连接到PB0(Atmega16的TCNT0 / Counter 0).........请帮忙
答案 0 :(得分:1)
你可以用两种不同的方式做到这一点。第一种是使用预分频器。例如,你可以将它设置为1024,因此每触发第1024次PB0(或者正确的术语是,自从我处理MCU以来已经有一段时间了),计数器会增加1.所以基本上计数器会计数每一次KHz(约)。
第二种方法是不使用预分频器,而是设置MCU,以便每次计数器溢出时,将其他寄存器递增1,每次寄存器溢出时,将另一个寄存器递增1.使用8位定时器和那些2个额外的8位寄存器,最多可计数16,777,215。我实际上更喜欢这第二种方法,但我可能只有这个:)
Greybeard& Andy Brown对于stm32和微处理器标签是正确的,你应该删除它们。
答案 1 :(得分:0)
您可以将传感器引脚分配给外部中断引脚(INT0\INT1
),然后创建一个全局变量,该变量在传感器的每个外部信号的ISR
递增,并在每个固定量下获取样本时间
此时间由定时器中断配置,但与计数次数无关(定时器仅作为时钟工作),因此在定时器的ISR
内,您应将计数次数除以此固定量时间(counter/Ts
)。
然后你应该将表示计数器的变量设置为零,这里的计数器变量可以是unsigned long
,以确保它适用于高频率。