ATmega328 a PROGMEM
Petr Zapadlo
zapik na email.cz
Středa Březen 24 19:42:17 CET 2021
Zdravím,
hraji si tady generátorem sinu v atmega328 a narazil jsem na to, že že
mi nefunguje direktiva PROGMEM.
Definuji si pole s předpočítanými hodnotami sinu:
const PROGMEM uint8_t sin_table[] ={0,8,16,24,32..... };
a následně ho v přerušení používám:
OCR1A=sin_table[count];
Pokud je definice pole s direktivou progmem, tak je něco špatně - průběh
má několik zubů - rozhodně se to ani neblíží sinu - připadá mi, jako by
to četl odněkud nesmyslně. Jestliže progmem odstraním, tak to funguje
přesně jak má a vykresluje sinus, tj kod bude OK. Podle příkladů co jsem
na netu nalezl se to používá právě takto. V info při kompilaci vidím,
jak se alokace přesouvá mezi flash a ram podle toho jestli progmem je
nebo není, ale to čtení z flash nějak nefunguje.
Co činím špatně?
Petr
Další informace o konferenci Hw-list