在Atmega128A上使用计时器捕获

时间:2017-02-05 07:53:44

标签: arduino microcontroller avr atmega

我阅读了Atmega128的数据表并尝试使用输入捕获引脚ICP1。 为了测试它,我在PORTC引脚1上生成一个sqaure波。我正在使用USB-TTL使用命令USART_Transmitnumber(timer_capt, 0)使用X-CTU软件查看笔记本电脑上的值,USART_Transmitchar(0x0d,0)用于下一行命令。我已经确认USART功能和PORTC引脚1上的方波工作正常。问题是变量timer_capt的值永远不会打印出来。这意味着没有生成中断事件。我做错了什么?

int main(void) 
{
    TCNT1 = 0;
    TCCR1B = (1 << ICNC1) | (1<<ICES1) | (1<<CS10);
    sei();

    DDRC = 0x01;
    while (1) {
         PORTC = 0x01;
         _delay_ms(100);
         PORTC = 0;
         _delay_ms(100);
    }
}

ISR(TIMER1_CAPT_vect)
{
    timer_capt = TCNT1; 
    USART_TransmitNumber(timer_capt, 0);
    USART_Transmitchar(0x0d,0);
}  

0 个答案:

没有答案