ATmega328 a PROGMEM

Jindrich Fucik fulda na seznam.cz
Středa Březen 24 19:59:07 CET 2021


chyba je ve čtení
OCR1A = pgm_read_byte_near(sin_table[count])
OCR1A = pgm_read_byte_near(sin_table + count)

https://www.arduino.cc/reference/en/language/variables/utilities/progmem/

Dne 24.3.2021 v 19:42 Petr Zapadlo napsal(a):
> 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
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list