Я пытаюсь переключить светодиод на Arduino nano ATmega328P, но безуспешно.
(Таймер 0 равен 8bit
таймер)
Мне удалось выполнить это с Timer 1
с кодом отсюда .
#define ledPin 13
void setup() {
pinMode(ledPin, OUTPUT);
cli(); // disable interrupts
TCCR0A = 0;
TCCR0B = 0;
TCCR0B |= (1 << CS02 | 1 << CS00); //clkI/O/1024
TIMSK0 = 0;
TIMSK0 |= (1 << TOIE0); // Overflow Interrupt Enable
TCNT0 = 0;
sei(); // enable interrupts
Serial.begin(9600);
}
ISR(TIM0_OVF_vect) {
digitalWrite(ledPin, digitalRead(ledPin) ^ 1);
}
void loop() {
}
Я также пытался изменить вектор прерывания на: TIMER0_OVF_vect
и получил эту ошибку:
Arduino: 1.8.9 (Windows 10), Board: "Arduino Nano, ATmega328P (Old Bootloader)"
wiring.c.o (symbol from plugin): In function `__vector_16':
(.text+0x0): multiple definition of `__vector_16'
sketch\tests.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino Nano.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Я ожидаю, что светодиод переключится.