Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
09.02.2010, 22:28
|
|
Прохожий
Регистрация: 09.06.2009
Сообщений: 9
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
|
Прерывание по внешнему reset Attiny2313
Здравствуйте уважаемые.
Мое устройство на тинке постоянно считает данные.
Пишу в CAVR.
Хотел сделать запись некоторых переменных в eeprom, по нажатию
кн reset(минус на первую ногу) с последующей перезагрузкой контроллера.
В CAVR прерывание по вектору 1 не реализовано.
Подскажите пожалуйста, как самому реализовать?
Заранее благодарен.
|
|
|
|
09.02.2010, 23:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
|
Re: Прерывание по внешнему reset Attiny2313
При нажатии кнопки ресет на ATTiny2313 происходит безусловный ресет, счетчик команд обнуляется, сбрасывается все конфигурация, никакого обработчика сего прерывания быть не может. в вашем случае необходимо привязать кнопку записи к какомунить другому прерыванию, а в обработчике прерывания указать переход на нулевой адрес, ну или привязать какойнить свободный пин к ресету и пинать его после записи в еепром.
|
|
|
|
10.02.2010, 15:56
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
|
Re: Прерывание по внешнему reset Attiny2313
Сообщение от _guardianangel
|
При нажатии кнопки ресет на ATTiny2313 происходит безусловный ресет, счетчик команд обнуляется, сбрасывается все конфигурация, никакого обработчика сего прерывания быть не может
|
Может касатик, может
Сброс и запуск программы в AVR происходит через нулевое прерывание. Сброс оставляет содержимое ОЗУ контроллера в том виде в каком оно было до сброса. В принципе, если пометить нужные переменные как неинициализируемые, то можно из них брать данные после сброса. Не знаю как это сделать в CVAVR, но в gcc - запросто с помощью атрибута.
|
|
|
|
10.02.2010, 16:29
|
|
Прописка
Регистрация: 18.06.2006
Сообщений: 179
Сказал спасибо: 1
Сказали Спасибо 13 раз(а) в 11 сообщении(ях)
|
Re: Прерывание по внешнему reset Attiny2313
Сообщение от alexgap
|
...Сброс оставляет содержимое ОЗУ контроллера в том виде в каком оно было до сброса...
|
Это где-то описано в документации, или это Ваши предположения?
Pls, укажите страницу даташита, я почитаю.
|
|
|
|
10.02.2010, 17:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,731
Сказал спасибо: 2,454
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
|
Re: Прерывание по внешнему reset Attiny2313
Регистр есть там MCUSR с флагами причин сброса.
|
|
|
|
10.02.2010, 17:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
|
Re: Прерывание по внешнему reset Attiny2313
Согласен что может ток процедуру инициализации всю переписывать ибо первое что делает компиль так это втыкает в самое начало кода процедурку обнуления памяти.
|
|
|
|
10.02.2010, 18:46
|
|
Вид на жительство
Регистрация: 15.03.2005
Сообщений: 351
Сказал спасибо: 17
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: Прерывание по внешнему reset Attiny2313
Чтобы такую фичу проделать в CVAVR нужно поиграться с "кучей" (heap) в настройках.
|
|
|
|
10.02.2010, 19:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Прерывание по внешнему reset Attiny2313
Сообщение от atlab
|
Это где-то описано в документации, или это Ваши предположения?
|
Это не предположения. Страница 36 в даташите на 2313 Rev. 2543I–AVR–04/06
Возможно есть свежее, и там на пару страниц номер может отличаться.
Раздел System Control and Reset -› Resetting the AVR
Цитата:
|
During reset, all I/O Registers are set to their initial values, and the program starts execution from the Reset Vector.
|
Никаких изменений в SRAM не производится. Надо всего лишь разобраться, как в CV получить неинициализируемую глобальную переменную. Можно конечно через malloc, но это приплюсует к программе некислый кусок диспетчера кучи. В нормальных же компиляторах это сделать несложно и без выделения динамической памяти. К примеру ГЦЦ:
Код:
|
uint16_t volatile ForeverVar __attribute__ ((section (".noinit"))); |
|
|
|
|
11.02.2010, 12:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: Прерывание по внешнему reset Attiny2313
По кривому это. Вы получите сброс всех регистров таймеров, портов, буферного и сдвигового регистра UART и т.д. Сначала регистры будут сброшены, а потом Вы сможете понять, что это не включение питания, а ресет. Имхо ногу какую-нибудь проверять периодически будет прямее.
|
|
|
|
11.02.2010, 16:24
|
|
Прописка
Регистрация: 18.06.2006
Сообщений: 179
Сказал спасибо: 1
Сказали Спасибо 13 раз(а) в 11 сообщении(ях)
|
Re: Прерывание по внешнему reset Attiny2313
Сообщение от kison
|
Это не предположения. Страница 36 в даташите на 2313 Rev. 2543I–AVR–04/06
Возможно есть свежее, и там на пару страниц номер может отличаться.
Раздел System Control and Reset -› Resetting the AVR
Цитата:
|
During reset, all I/O Registers are set to their initial values, and the program starts execution from the Reset Vector.
|
Никаких изменений в SRAM не производится....
|
Скачал самый свежий даташит. Поискал в нем. И по-прежнему не согласен.
То, что Вы процитировали, относится к I/O Registers и это явно указано, но не к SRAM. Причем процитированное Вами как раз говорит о том, что состояние I/O Registers после RESET не сохраняется, а придет в начальное состояние (оно описано в даташит).
Про сохранение содержимого SRAM явно упомянуто только, что оно сохраняется в SLEEP. Все.
Поэтому расчитывать на то, после RESET в переменных что-то сохранится, я бы не стал: исходить нужно из худшего, тогда сюрпризов не будет.
Последний раз редактировалось atlab; 11.02.2010 в 16:28.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:02.
|
|