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