не удержался... таки поигрался с настройками компилятора...
код не трогал вообще. исходный вариант( Makefile(standard) ):
полная UART отладка: 93.2% Full
без UART: 70%
с небольшой добавкой опций компилятору( Makefile(+opts_but_not_combine) )
полная UART отладка: 88.6% Full
без UART: 59.7%
радикальный подход к опциям компилятора(ручное редактирование мэйкфайла Makefile(combine) )
в этом режиме не работает меню Build -> Compile. Но он и не нужен. есть Rebuild All ведь 
полная UART отладка: 84.2% Full
без UART: 56.3%
меньше уже не будет наверно...
ну только если немного покрошить init.. поубивать неиспользуемые прерывания, ещё кое-чего там...
но это наверно байт на 30 потянет...если на 50 - то я буду очень рад.
ещё можно было бы отделаться от деления в функции
static uint8_t sensor_val_to_led_number(
uint16_t sensor_val)
ну т.е. заменить делитель на степень двойки, а деление - сдвигом.
но делитель у нас зависит от калибровочных констант датчика и не всегда ровняется степени двойки.. от этого там идет вызов библиотечной функции деления и тратятся лишние байтики ))
можно в прошивке жестко задать пределы, чтобы получилось 8поинтов на 1 диод, а реальную подгонку этих пределов под показания датчика провести в аналоговой части. кстати, это и избавить от геморроя с EEPROM. подкрутил резисторы min, max - и делу конец )
для испытания разных опций компилытора, нужно подсовывать разные мэйкфайлы.
к примеру, если вы захотите испытать стандартный вариант - вам нужно будет файл Makefile(standard) скопировать под именем Makefile с заменой существующего. аналогично и с другими...
при добавлении новых файлов в проект - придётся вручную редактировать makefile. это не сложно, но я Вас должен был предупредить )
редактирование существующих в проекте файлов - без ограничений.
в симуляторе вроде работает.... но, как всегда, посмотрим как оно на практике себя покажет...
кстати, подумайте насчёт регулировки в аналоге. хорошая, простая и надежная идея ИМХО.