Testovaci program je tu : https://pastebin.com/197Q3c6p
Pokusne som si chcel nechat vysvietit hodnotu systemTimer na PORTC, ale akosi sa nedeje nic, vsetky LED zhasnute. Zapojenie je OK, ak sa hodnota na PORTC nastavi natvrdo, LED svietia ako maju. Ak som skusil zmenit ISR priamo na manipulaciu s portom, napr:
- Kód: Vybrať všetko
ISR(TIMER1_COMPA_vect){
PORTC = ~PORTC;
}
a slucku v main() som upravil na
- Kód: Vybrať všetko
while(1){
;
}
tak v 1s intervaloch sa LED pekne vypinaju a zapinaju, taze casovac je urcite nastaveny OK. Vychadza mi to, ze v main() v loope kompilator necita realnu hodnotu systemTimer, ale pouziva stale hodnotu 0 z inicializacie. Je to tou vecernou hodinou, alebo uslo nieco mne, alebo je to naozaj bug kompilatora?
EDIT:
Ak som deklaraciu systemTime zmenil na:
- Kód: Vybrať všetko
register Time systemTime asm("r3");
tak sa to tvari funkcne, ale takto by to byt nemalo. + Program sa sprava inak pri zapnutych/vypnutych optimalizaciach.