Zdravim, mam podozrenie na to, ze avr-gcc (4.8.2) ma bug v jednom pripade pouzitia volatile. Ma niekto iny napad co som mohol prehliadnut a sposobuje to moj problem? Mam zapojenie, v ktorom je ATmega128A, XTAL 8MHz, na PORTC je zavesenych 8 LED.
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:
a slucku v main() som upravil na
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:
tak sa to tvari funkcne, ale takto by to byt nemalo. + Program sa sprava inak pri zapnutych/vypnutych optimalizaciach.
float l,I,Q,_,o;int E;main(){I=1.125;while(I>=-1.225){for(l=-2;l<=1;l+=3/79.0){Q=_=0;for(E=127;Q*Q+_*_<4.0&&--E>32;){o=Q;Q=Q*Q-_*_+l;_=2*o*_+I;}putchar(E);}putchar(10);I-=9/88.0;}}