我阅读了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);
}