我的Atmega328p有中斷問題。我使用Arduino Nano 16 Mhz 5V,所以它不應該是一個硬件問題。 這是我的代碼:Atmega328p定時器錯誤配置
#include <avr/io.h>
#include <avr/interrupt.h>
volatile uint16_t counter;
int main(void)
{
DDRB |= (1<<PB5);
TCCR1B |= (1 << CS10); // set prescaler to 1
TIMSK1 |= (1 << TOIE1); // set overflow interrupt
sei(); // enable interrupts
while (1)
{
// Main loop
}
}
ISR (TIMER1_OVF_vect)
{
counter++;
if (counter > 200)
{
counter = 0;
PORTB ^= _BV(PB5);
}
}
我想有intterupt儘可能多,但這種配置二極管閃爍每1秒 - 這是太慢了,我需要至少每10微秒或更少,如果有可能。它可以是任何其他計時器,我不在乎。
你能告訴我適當的代碼嗎?我是新手,我不明白一切。如果你爲我寫代碼,我會用數據表檢查它,看看是什麼。我寫這個代碼:http://pastebin.com/sR8CrZfk並且每變化一次400us就會變化狀態,但我不知道如何將它變成中斷((TCNT0> = 100)只是爲了減慢它的速度,因爲我已經老了示波器) – Archont