0

我在哪里寻找表明它使用中断的代码?我已经浏览了Arduino子文件夹中的wiring.c,但它只导致了该功能。

问题是当我为 Timer/Comp0启用CTC 模式时,LCD 会打印出完全乱码,但当我禁用CTC 模式时,它工作得非常好。

下面是定时器初始化代码:

void timerCompare0_ini(void){                               // -Initialization of the Timer Compare 0
    TCCR0A  = 0;                                            // This regulates the menu navigation arrow to show where user is pointing                      
    TCCR0B  = 0;                                                              
    TCNT0   = 0;                                       
    OCR0B   = 256;
    // TCCR0A |= (1 << COM0B0) | (1 << COM0B1); 
    TCCR0A |= (1 << WGM01);                                   // -CTC mode
    TCCR0B |= ((1 << CS02) | (1 << CS00));                    // -1024 prescaler
    TIMSK0 |= (1 << OCIE0B);                                  // -Enable timer compare interrupt

}
4

1 回答 1

0

接线.c是个好地方。delay() 使用 micros() 取决于运行 timer0 和溢出中断。delayMicroseconds() 根据指令进行内部暂停。顺便说一句,但这两种方法都有错误,因为当看门狗设置的时间短于请求的延迟时,它会重新启动 CPU。即你需要实现自己的功能。

于 2014-05-28T21:09:54.433 回答