ATmega328 a PROGMEM
Šerých Jakub
Serych na panska.cz
Středa Březen 24 20:02:08 CET 2021
PROGMEM není moc spolehlivé a většinou se musí obsah před použitím zkopírovat do RAMky pomocí něčeho jako:
memcpy_P(BuffRam, &ConstProgmem, NumberOfBytes);
Jakub Šerých
-----Original Message-----
From: Hw-list <hw-list-bounces na list.hw.cz> On Behalf Of Petr Zapadlo
Sent: Wednesday, March 24, 2021 7:42 PM
To: HW-news <hw-list na list.hw.cz>
Subject: ATmega328 a PROGMEM
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