Что под этим понимается?можно перезаписывать переменную при отладке, так её можно в watch перезаписать.
AVR studio в вопросах и ответах
- Сообщения: 791
- Зарегистрирован: Вт июн 17, 2014 00:34:26
Добрый день, у data breakpoint есть параметр access type, можно выбрать чтение или запись.
Что под этим понимается?можно перезаписывать переменную при отладке, так её можно в watch перезаписать.
Что под этим понимается?можно перезаписывать переменную при отладке, так её можно в watch перезаписать.
- Реклама
Остановка будет либо при записи в ОЗУ либо при чтении ОЗУ, ну или при любом типе доступа (по умолчанию). А то что ее можно перезаписать, это с breakpoint-ам не относится.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
- Сообщения: 791
- Зарегистрирован: Вт июн 17, 2014 00:34:26
Всем доброго времени суток! Прошу подсказать ответ на вопрос: имеется attity13. В AVRstudio написанная программа выполняется как надо, начинаю прошивать или моделировать в Proteus начинаются страшные глюки. На поиски бяки убил 2 дня и установил, что если SRAM память микрика заполнена менее 75% все работает как надо. 
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Судя по симптомам наиболее вероятно срыв стека или чтение из его области. Дальше мои телепатические способности не простираются.
- Реклама
Я уже об этом думал, пишу на С. Обычно стек срывал когда на ассемблере писал. Не думал что и на С такое возможно!
Ну язык тут совсем не причём. Компилятору тяжело отследить использование стека. Взять ту же рекурсию - стек запороть на раз-два...
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Невозможно сорвать стек на Си? Да я могу хоть 10 примеров привести, начиная от указателей и заканчивая рекурсией. Памяти у ATtiny13 всего 64 байта. Если память заполнена на 75% то на стек остается всего 16 байт, то есть максимум 8 уровней вложенности процедур. Это не считая сохраняемых при входе-выходе регистров, на которых Си не экономит.
Вопрос о невозможности срыва не стоял. Тупо не знал что сорвать стек на Си проще простого.
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
В большинстве контроллеров AVR стек расположен в конце оперативной памяти. Не во всех, в некоторых он аппаратный и записать в него через st* нельзя. А уж с тиньками нужно быть предельно осторожным - памяти мало. Поэтому для них лучше программировать на ассемблере.
Вы, наверное, хотели сказать, что большинство СИшных компиляторов его там делают? + сейчас производитель стал делать значения регистров SP после сброса указывающими на конец памяти.В большинстве контроллеров AVR стек расположен в конце оперативной памяти.
А так расположить стек можно где угодно. Keil, к примеру, для АРМов располагает стек и кучу перед основной программой.
Fucking static initialization order fiasco
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Неправильно выразился. Обычно в AVR стек располагают в конце памяти. Хотя я и сам делал десяток отдельных стеков по всей памяти, когда делал модель ОС с вытесняющей многозадачностью.
Нуууу... Я думаю, что стек основного родительского процесса (оно же ядро системы) все равно находился в конце, если Вы писали на СИ, разумеется?
Fucking static initialization order fiasco
если задача соответствует тиньке, то на Си можно работать спокойно и не особо тревожась. не нагоняйте страху без нуждыCOKPOWEHEU писал(а):А уж с тиньками нужно быть предельно осторожным - памяти мало. Поэтому для них лучше программировать на ассемблере.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Разумеется, на ассемблере. Там проще извращаться с адресами переходов и возвратов и стеком.Pink-Pank писал(а):Нуууу... Я думаю, что стек основного родительского процесса (оно же ядро системы) все равно находился в конце, если Вы писали на СИ, разумеется?
Понятие "соответствует" включает "помещается почти без запаса".ARV писал(а):если задача соответствует тиньке, то на Си можно работать спокойно и не особо тревожась. не нагоняйте страху без нужды
узнать, помещается или нет задача можно только после ее постановки и реализацииCOKPOWEHEU писал(а):Понятие "соответствует" включает "помещается почти без запаса".
например, для attiny13 вполне нормальным будет задача типа "диммер лампы накаливания с дистанционным управлением с самообучением командам любого пульта ДУ и включением-выключением лампы отдельной кнопкой". эта задача вполне комфортно решается на Си. или такая задача "лампа настроения с различными режимами работы и управлением с пульта ДУ".
разумеется, если нужно решать задачу с мощной математикой, большим количеством внешних прерываний, кнопок и т.п., то такую задачу для attiny13 ставить будет некорректно - тут и на ассемблере придется попотеть
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Я лишь к тому, что 64 байта для Си все-таки маловато, там часто вызываются вложенные процедуры и в каждой сохраняются регистры. А сохранить все регистры один раз - пол-памяти нет. Это, конечно, редкое событие, но внимательность сохранять надо.
Как можно переписывать младшие 4 бита порта не трогая остальных? tiny2313 На младших висит дешифратор, а на старших - USI с часами.
Код: Выделить всё
in temp,PORTX; читаем состояние порта
temp&= 0xF0; сбрасываем младшую тетраду
temp|= 0x0N; записываем в младшую тетраду N(должно быть четыре бита)
PORTX= temp; выводим в порт
Docendo discimus




