Вопрос к знатокам, отлитым в бронзе

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

нет. побочный эффект операции сравнения.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

а можно какнибуть описать указатель на PROGMEM?   чтото типа 

const PROGMEM char *

и чтоб канпилятор знал, что чтить надо из флэша?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Можно-то можно, только компилятор не вставит сам код для их вытаскивания из прогмема.

Кстати, почитайте статью, может найдёте что интересное - http://www.github.com/abcminiuser/avr-tutorials/blob/master/Progmem/Output/Progmem.pdf?raw=true

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Познавательная статья, спасибо большое. Про printf точно не знал. 

sadman41
Offline
Зарегистрирован: 19.10.2016

sadman41 пишет:

Проверил на коротком примере - if-else-if дает более предсказуемый результат, конечно. И progmem чуток поменее занимает. На досуге попробую замастрячить в реальной функции - даст ли это существенный выигрыш... 

Попробовал. Переход с 32-х шт. case на if-else-if в progmem высвободил 46 байт. Не так много, но порой, бывает, что именно пары десятков байт и не хватает . Красота switch-а, правда, утеряна...

Logik
Offline
Зарегистрирован: 05.08.2014

ЕвгенийП пишет:

Можно-то можно, только компилятор не вставит сам код для их вытаскивания из прогмема.

А если перегрузку операторов доступа по указателю сделать? Не уверен что удастся отличать указатель PROGMEM от не PROGMEM.