ATmega328 a PROGMEM
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Středa Březen 24 20:04:11 CET 2021
Spis takhle?
OCR1A = pgm_read_byte_near(&sin_table[count])
Dne 24.03.2021 v 19:59 Jindrich Fucik napsal(a):
> 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
> _______________________________________________
> 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