AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Опытный кот
Аватара пользователя
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Сообщение baghear »

Добрый день, у data breakpoint есть параметр access type, можно выбрать чтение или запись.
Что под этим понимается?можно перезаписывать переменную при отладке, так её можно в watch перезаписать.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Остановка будет либо при записи в ОЗУ либо при чтении ОЗУ, ну или при любом типе доступа (по умолчанию). А то что ее можно перезаписать, это с breakpoint-ам не относится.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Реклама
Опытный кот
Аватара пользователя
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Сообщение baghear »

Спасибо!!!!
Встал на лапы
Аватара пользователя
Сообщения: 111
Зарегистрирован: Вт окт 05, 2010 08:11:41
Откуда: г. Петрозаводск

Сообщение ciph »

Всем доброго времени суток! Прошу подсказать ответ на вопрос: имеется attity13. В AVRstudio написанная программа выполняется как надо, начинаю прошивать или моделировать в Proteus начинаются страшные глюки. На поиски бяки убил 2 дня и установил, что если SRAM память микрика заполнена менее 75% все работает как надо. :dont_know:
Реклама
Эиком - электронные компоненты и радиодетали
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Судя по симптомам наиболее вероятно срыв стека или чтение из его области. Дальше мои телепатические способности не простираются.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 111
Зарегистрирован: Вт окт 05, 2010 08:11:41
Откуда: г. Петрозаводск

Сообщение ciph »

Я уже об этом думал, пишу на С. Обычно стек срывал когда на ассемблере писал. Не думал что и на С такое возможно!
Реклама
Модератор
Аватара пользователя
Сообщения: 4618
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Ну язык тут совсем не причём. Компилятору тяжело отследить использование стека. Взять ту же рекурсию - стек запороть на раз-два...
Встал на лапы
Аватара пользователя
Сообщения: 111
Зарегистрирован: Вт окт 05, 2010 08:11:41
Откуда: г. Петрозаводск

Сообщение ciph »

Век живи век учись! Спасибо!
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Невозможно сорвать стек на Си? Да я могу хоть 10 примеров привести, начиная от указателей и заканчивая рекурсией. Памяти у ATtiny13 всего 64 байта. Если память заполнена на 75% то на стек остается всего 16 байт, то есть максимум 8 уровней вложенности процедур. Это не считая сохраняемых при входе-выходе регистров, на которых Си не экономит.
Встал на лапы
Аватара пользователя
Сообщения: 111
Зарегистрирован: Вт окт 05, 2010 08:11:41
Откуда: г. Петрозаводск

Сообщение ciph »

Вопрос о невозможности срыва не стоял. Тупо не знал что сорвать стек на Си проще простого.
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

В большинстве контроллеров AVR стек расположен в конце оперативной памяти. Не во всех, в некоторых он аппаратный и записать в него через st* нельзя. А уж с тиньками нужно быть предельно осторожным - памяти мало. Поэтому для них лучше программировать на ассемблере.
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

В большинстве контроллеров AVR стек расположен в конце оперативной памяти.
Вы, наверное, хотели сказать, что большинство СИшных компиляторов его там делают? + сейчас производитель стал делать значения регистров SP после сброса указывающими на конец памяти.
А так расположить стек можно где угодно. Keil, к примеру, для АРМов располагает стек и кучу перед основной программой.
Fucking static initialization order fiasco
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Неправильно выразился. Обычно в AVR стек располагают в конце памяти. Хотя я и сам делал десяток отдельных стеков по всей памяти, когда делал модель ОС с вытесняющей многозадачностью.
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

Нуууу... Я думаю, что стек основного родительского процесса (оно же ядро системы) все равно находился в конце, если Вы писали на СИ, разумеется?
Fucking static initialization order fiasco
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18794
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

COKPOWEHEU писал(а):А уж с тиньками нужно быть предельно осторожным - памяти мало. Поэтому для них лучше программировать на ассемблере.
если задача соответствует тиньке, то на Си можно работать спокойно и не особо тревожась. не нагоняйте страху без нужды :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Pink-Pank писал(а):Нуууу... Я думаю, что стек основного родительского процесса (оно же ядро системы) все равно находился в конце, если Вы писали на СИ, разумеется?
Разумеется, на ассемблере. Там проще извращаться с адресами переходов и возвратов и стеком.
ARV писал(а):если задача соответствует тиньке, то на Си можно работать спокойно и не особо тревожась. не нагоняйте страху без нужды :)))
Понятие "соответствует" включает "помещается почти без запаса".
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18794
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

COKPOWEHEU писал(а):Понятие "соответствует" включает "помещается почти без запаса".
узнать, помещается или нет задача можно только после ее постановки и реализации :) поэтому я имел ввиду соответствует == "правильно поставлена".
например, для attiny13 вполне нормальным будет задача типа "диммер лампы накаливания с дистанционным управлением с самообучением командам любого пульта ДУ и включением-выключением лампы отдельной кнопкой". эта задача вполне комфортно решается на Си. или такая задача "лампа настроения с различными режимами работы и управлением с пульта ДУ".
разумеется, если нужно решать задачу с мощной математикой, большим количеством внешних прерываний, кнопок и т.п., то такую задачу для attiny13 ставить будет некорректно - тут и на ассемблере придется попотеть :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Я лишь к тому, что 64 байта для Си все-таки маловато, там часто вызываются вложенные процедуры и в каждой сохраняются регистры. А сохранить все регистры один раз - пол-памяти нет. Это, конечно, редкое событие, но внимательность сохранять надо.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1307
Зарегистрирован: Ср мар 10, 2010 22:28:34
Откуда: Запад Беларуси

Сообщение Xatrix »

Как можно переписывать младшие 4 бита порта не трогая остальных? tiny2313 На младших висит дешифратор, а на старших - USI с часами.
Изображение
Изображение
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Код: Выделить всё

in temp,PORTX; читаем состояние порта
temp&= 0xF0; сбрасываем младшую тетраду
temp|= 0x0N; записываем в младшую тетраду N(должно быть четыре бита)
PORTX= temp; выводим в порт
Docendo discimus
Контактная информация:
Ответить

Вернуться в «AVR»