- posted
20 years ago
dziwne zachowanie WINAVR czyli AVR-GCC
- Vote on answer
- posted
20 years ago
jak zadeklarowales DELAY?
j.
- Vote on answer
- posted
20 years ago
Piter wrote: ...
A podglądałeś wygenerowany kod? IMHO ta pętla jest przez kompilator zupełnie usuwana (co jest zgodne z dokumentacją).
BTW> dlaczego nie używasz gotowych funkcji _delay_loop_1 lub _delay_loop_2
Pozdrawiam,
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
zadelkaruj DELAY jako volatile unsigned int. To powinno powstrzymac kompilator od nadmiernej optymalizacji
j.
- Vote on answer
- posted
20 years ago
A dlaczego nie, przecież z punktu widzenia kompilatora nic sensownego nie robi oprócz zmieniania wartości jakiejś zmiennej, która jest dalej nie używana (i nie jest volatile). Kuknij do dokumentacji GCC opisującej co może zrobic kompilator na poszczególnych poziomach optymalizacji.
Przyzwyczaj się też, że oglądanie wyprodukowanego assemblera będzie normalną praktyką (avr-objdump twoim przyjacielem 8-).
Jak to mówią - najlepiej się uczyć na cudzych błędach 8-) Twój problem (plus jego odmiana z "niewidzeniem" zmian wykonanych przez obsługę przerwania w wartosci zmiennych globalnych) pojawia się średnio raz na tydzień na forum AVR-GCC na AVRFreaks. Tak zwany "problem" volatile występuje równiez jako FAQ #1 w dokumentacji avr-libc.
Pozdrawiam,
- Vote on answer
- posted
20 years ago