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