IAR, ньанс по типам данных... в общем atmega16, понадобилось
обработать 24 входа и выхода... формирую общую переменную, после unsigned int -16 бит, идет long.
unsigned long out;
out = 1<<shift;
где, shift = 0..23. Такое написание работает пока shift<=15. При shift>15, в out не попадает ничего...
пробовал приведение типа перед выражением типа out =(unsigned long)(1<<shift); не помогло...
покопался в настройках IAR и не нашел решения...он у меня правда древний :) IAR C/C++ Compiler for AVR
4.11A/W32
пришлось переделать так:
unsigned long out, tempo;
tempo=1;
out = tempo<<shift;
так заработало...но как-то не красиво....смотрится.
Подозреваю как-то можно красиво поправить ограничение компилятора в два байта при выполнении сдвига...