[Ответить в тред] Ответить в тред

15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!
30/09/16 - BREAKING NEWS ШОК АБУ ПРОДАЛСЯ МЭЙЛУ (на самом деле нет)



Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 6 | 1 | 4
Назад Вниз Каталог Обновить

Ай нид ёр хелп, комрад! Аноним 25/10/16 Втр 12:01:07  863308  
(37Кб, 600x450)
Сап, программач. Обстоятельства вынудили меня выйти из забвения (длившегося почти год) и молить о помощи.

Есть один AVR - Atmega32. Код пишется на С в обычном блокноте и собирается AVR_GCC. МК шьётся индусским eXtreme Burner AVR. Код состоит из примерно 700 строк, на МК используются два таймера, прерывания по INT0, и почти постоянное чтение из eeprom, UART, тактируется от кварца 8МГц. К сожалению, не могу полностью запилить исходник сюда пока. На данном этапе все работает более-менее корректно, но стоит добавить еще пару строк в switch case, и начинает происходить неведомая хуйня - МК выполняет произвольные куски кода, отсылает в UART разной степени дичь, в общем жопа. Иногда дичь начинает происходить после первого прерывания по таймеру - через пять секунд после запуска. Если убрать добавленные кейсы - все становится как надо. Подобная чушь уже происходила на восьмой атмеге, вылечилось переносом переменной в другое место.

Пробовал разные уровни оптимизации s, 1, 2, 3 - почти не меняется ничего. Пробовал разное тактирование - от внешнего, от внутреннего, limited swing и full swing на внешнем.

Подскажите, куда копать хоть. Или это косяк уже самой 32-й - в таком случае не вижу ничего более лучшего, чем переходить на stm32 (хотя желательно, все же, остаться на атмеге).
Аноним 25/10/16 Втр 12:27:27  863315
>>863308 (OP)
как обычно, выключай любую оптимизацию, создавай ассемблерный дамп и ковыряйся в свитче
Аноним 25/10/16 Втр 19:16:22  863502
>>863315
Немного неправильно указал - дичь начинается практически от любого действия с переменной, не обязательно свитч.
Аноним 25/10/16 Втр 20:18:28  863522
>>863308 (OP)
break нигде не забыл?
Какашечка 26/10/16 Срд 04:14:36  863754
тут много ньюансов, нужно знать архитектуру железа. может пишется в какую нибудь память только для чтения, нарушается сегментация, превышается макс. размер и т.д. и т.п. сделай два асм дампа, один из которых крашится и сравнивай.
Аноним 26/10/16 Срд 22:33:22  864243
Расходимся, посоны.
Размер самой программки был в норме, а вот SRAM при переполнении начинает творить подобную хуйню. А его в атмеге мало.

Может, кому пригодится мой опыт
Аноним 30/10/16 Вск 23:56:49  866638
>>863308 (OP)
> и начинает происходить неведомая хуйня
У тебя кончился RAM. С атмегами такое случается постоянно. Засунь часть неизменяемых данных в ROM с помощью ключевого слова. Это может помочь

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 6 | 1 | 4
Назад Вверх Каталог Обновить

Топ тредов
Избранное