Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Прерывание по внешнему reset Attiny2313

Непрочитано 09.02.2010, 22:28  
sbcentr
Прохожий
 
Регистрация: 09.06.2009
Сообщений: 9
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
sbcentr на пути к лучшему
По умолчанию Прерывание по внешнему reset Attiny2313

Здравствуйте уважаемые.
Мое устройство на тинке постоянно считает данные.
Пишу в CAVR.
Хотел сделать запись некоторых переменных в eeprom, по нажатию
кн reset(минус на первую ногу) с последующей перезагрузкой контроллера.
В CAVR прерывание по вектору 1 не реализовано.
Подскажите пожалуйста, как самому реализовать?
Заранее благодарен.
Реклама:
sbcentr вне форума  
Непрочитано 09.02.2010, 23:21  
_guardianangel
Почётный гражданин KAZUS.RUN
 
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,138
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
_guardianangel на пути к лучшему
По умолчанию Re: Прерывание по внешнему reset Attiny2313

При нажатии кнопки ресет на ATTiny2313 происходит безусловный ресет, счетчик команд обнуляется, сбрасывается все конфигурация, никакого обработчика сего прерывания быть не может. в вашем случае необходимо привязать кнопку записи к какомунить другому прерыванию, а в обработчике прерывания указать переход на нулевой адрес, ну или привязать какойнить свободный пин к ресету и пинать его после записи в еепром.
_guardianangel вне форума  
Непрочитано 10.02.2010, 15:56  
alexgap
Гражданин KAZUS.RUN
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Прерывание по внешнему reset Attiny2313

Сообщение от _guardianangel Посмотреть сообщение
При нажатии кнопки ресет на ATTiny2313 происходит безусловный ресет, счетчик команд обнуляется, сбрасывается все конфигурация, никакого обработчика сего прерывания быть не может
Может касатик, может

Сброс и запуск программы в AVR происходит через нулевое прерывание. Сброс оставляет содержимое ОЗУ контроллера в том виде в каком оно было до сброса. В принципе, если пометить нужные переменные как неинициализируемые, то можно из них брать данные после сброса. Не знаю как это сделать в CVAVR, но в gcc - запросто с помощью атрибута.
alexgap вне форума  
Непрочитано 10.02.2010, 16:29  
atlab
Прописка
 
Регистрация: 18.06.2006
Сообщений: 179
Сказал спасибо: 5
Сказали Спасибо 13 раз(а) в 11 сообщении(ях)
atlab на пути к лучшему
По умолчанию Re: Прерывание по внешнему reset Attiny2313

Сообщение от alexgap Посмотреть сообщение
...Сброс оставляет содержимое ОЗУ контроллера в том виде в каком оно было до сброса...
Это где-то описано в документации, или это Ваши предположения?
Pls, укажите страницу даташита, я почитаю.
atlab вне форума  
Непрочитано 10.02.2010, 17:22  
baiderin
Почётный гражданин KAZUS.RUN
 
Аватар для baiderin
 
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,739
Сказал спасибо: 2,487
Сказали Спасибо 897 раз(а) в 584 сообщении(ях)
baiderin на пути к лучшему
По умолчанию Re: Прерывание по внешнему reset Attiny2313

Регистр есть там MCUSR с флагами причин сброса.
baiderin вне форума  
Непрочитано 10.02.2010, 17:55  
_guardianangel
Почётный гражданин KAZUS.RUN
 
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,138
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
_guardianangel на пути к лучшему
По умолчанию Re: Прерывание по внешнему reset Attiny2313

Согласен что может ток процедуру инициализации всю переписывать ибо первое что делает компиль так это втыкает в самое начало кода процедурку обнуления памяти.
_guardianangel вне форума  
Непрочитано 10.02.2010, 18:46  
xerox2
Вид на жительство
 
Регистрация: 15.03.2005
Сообщений: 348
Сказал спасибо: 17
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
xerox2 на пути к лучшему
По умолчанию Re: Прерывание по внешнему reset Attiny2313

Чтобы такую фичу проделать в CVAVR нужно поиграться с "кучей" (heap) в настройках.
xerox2 вне форума  
Непрочитано 10.02.2010, 19:38  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию 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")));
kison вне форума  
Непрочитано 11.02.2010, 12:11  
makakus
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.10.2007
Сообщений: 2,758
Сказал спасибо: 1,100
Сказали Спасибо 1,033 раз(а) в 568 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Прерывание по внешнему reset Attiny2313

По кривому это. Вы получите сброс всех регистров таймеров, портов, буферного и сдвигового регистра UART и т.д. Сначала регистры будут сброшены, а потом Вы сможете понять, что это не включение питания, а ресет. Имхо ногу какую-нибудь проверять периодически будет прямее.
makakus вне форума  
Непрочитано 11.02.2010, 16:24  
atlab
Прописка
 
Регистрация: 18.06.2006
Сообщений: 179
Сказал спасибо: 5
Сказали Спасибо 13 раз(а) в 11 сообщении(ях)
atlab на пути к лучшему
По умолчанию 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.
atlab вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 09:11.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.