Не работает код на ATTiny10

У ТС на самом деле 19 байт глобальных (7*2 + 1 + 4)
Плюс в файле wiring_time.c еще 13 (4 + 4 + 4 +1)
Уже 32.
Для локальных переменных места нет, поэтому и виснет.

Проверка - перенести массив в прогмем. Если заработает - значит проблема в памяти.

1 лайк

он скорее всего там и есть

ХЗ
У АВР-ок вроде “само” не переносится, иначе бы никто с прогмемом не возился.

он там и сидит

значит угадал

Как он может там сидеть, если он даже не const ?
Агрессивная оптимизация?

А если попробовать в него в коде что-то записать - размер изменится?

да

1 лайк

… а вы массив объявили в 32 bit… это ничего?

@xDriver , а ты вначале - скучно-скучно))) Сам всё и разрулил ))

Должно работать, ТС проверяй пайку )

Может оптимизатор массив просто выкинул?:slight_smile:
Потому и не работает

Да, я такое только под PIC встречал ))

Не мог, к нему же обращаются в коде.

Ну мы не знаем все ли там рабочее в аддоне. Хотя пайку проверить не мешает

Если тема доживет до пятницы без решения, можно будет ради пятницы переписать без всяких аддонов.))

1 лайк
note[6]=6;

Элементу массива присваивать константу не катит. Оптимизатор же сразу присвоить должен. Разве нет? Почему размер занятой ОЗУ меняется тогда?

Нет, массив же инициализирован.

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

1 лайк

Оффтоп:
Кто может мне рассказать, как заставить атмел студию 7 для attiny без озу писать код на си? Мне постоянно предлагает асм. Или я что-то не так нажимаю?

Ну хз, любые заранее известные изменения avr-gcc выкидывает вроде. XC8 точно выкидывает.

Наверно использовать переменные в регистрах.

reg uint8_t x asm('r8');

Как-то так вроде