|
Покритикуйте алгоритм включения и выключения устройства на AVR |
|
|
|
Mar 29 2011, 09:21
|
Гуру
     
Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164

|
Господа, есть некое устройство на АТМега, управляющее TFT-дисплеем с тачпанелью и небольшим набором периферии. Подключено к автомобильному аккумулятору постоянно. А значит нужно предусмотреть включение и выкючение устройства. При всем изяществе конструкции, наличии тачпанели слишком жалко будет смотреться механический переключатель для коммутации. Хочется выключать устройство нажав виртуальную кнопку на тачпанели, а включать простым прикосновением к экрану. А посему возникла такая идея: Контроллер управляет дисплеем через специальную плату (если кому интересно TFT-компаньон) Эта плата умеет выходить в режим пониженного потребления и понимает в нем только две команды - выход из режима пониженного энергопотребления и опрос тачпанели. Я планирую по нажатии на виртуальную кнопку на экране переводить его в PowerDown. Затем переводть в PowerDown (именно в этот режим) и сам AVR. Как включать? Предварительно - настроить WatchDog на 1 сек и на генерацию прерывания по переполнению. В прерывании опрашивать тачпанель и если было прикосновение - можно просыпаться. Однако получается следующее - при выключении всего устройства мы его на самом деле не выключаем, а переводим в спящий режим, и при включении оказываемся на том же месте. Хотелось бы перезагрузить и контроллер. А для этого хочу попробовать следующее - если при обработке прерывания от сорожевого таймера выяснится что к тачпанели прикасались - перенастраивать таймер на сброс контроллера и более короткий период (самый короткий 16 мс). После чего ждать следующего переполнения таймера.
Пока не пробовал, идею сочинял на работе, попробую только дома.
Вопросы: 1. Довольно странный алгоритм получился - при выключении устройство на самом деле просто останавливается, а истинная его перезагрузка происходит только при включении. Хотя на самом деле ввсе выглядит благористойно (забыл сказать - в режиме PowerDown TFT компаньон не только меньше жрет, но и подсветку отключает). Может есть какие-то более адекватные истрически сложившиеся алгоритмы? 2. Есть ли какой-то иной способ программного сброса AVR? Цеплять какой-нибудь выход на RESET не предлагайте, плата сделана и детали напаяны. 3. Не происходит ли чего нехорошего с портами ввода вывода в режиме PowerDown АВР? Нужно чтобы пины оставались в том же состоянии. Спасибо.
Сообщение отредактировал zheka - Mar 29 2011, 09:22
|
|
|
|
Сообщений в этой теме
zheka Покритикуйте алгоритм включения и выключения устройства на AVR Mar 29 2011, 09:21 forever_student Цитата(zheka @ Mar 29 2011, 13:21) ...
2.... Mar 29 2011, 09:53 zheka Извните, ассемблера не знаю. Пишу на С.
Но даже гл... Mar 29 2011, 10:38 forever_student Цитата(zheka @ Mar 29 2011, 14:38) Извнит... Mar 29 2011, 10:45 ILYAUL Цитата(zheka @ Mar 29 2011, 14:38) Но даж... Mar 29 2011, 18:27  aaarrr Цитата(ILYAUL @ Mar 29 2011, 22:27) Интер... Mar 29 2011, 20:05   ILYAUL Цитата(aaarrr @ Mar 30 2011, 00:05) Помим... Mar 29 2011, 20:34    aaarrr Цитата(ILYAUL @ Mar 30 2011, 00:34) Как б... Mar 29 2011, 20:44     ILYAUL Цитата(aaarrr @ Mar 30 2011, 00:44) Скажи... Mar 30 2011, 09:57 zheka Спасибо за совет, но я все же предпочту для переза... Mar 29 2011, 10:49 _Pasha Дык все тривиально, не о чем переживать. Первый по... Mar 29 2011, 11:28 SysRq Теоретически, можно перезагрузить МК тоже. На стар... Mar 29 2011, 15:55 Marian Цитата(zheka @ Mar 29 2011, 11:21) Однако... Mar 29 2011, 17:22 coolbassnik Есть идея заставить МК ресетить самого себя железн... Mar 29 2011, 17:30 _Pasha Цитата(coolbassnik @ Mar 29 2011, 20:30) ... Mar 29 2011, 17:33 IgorKossak Цитата(coolbassnik @ Mar 29 2011, 20:30) ... Mar 29 2011, 17:39 zombi Цитата(zheka @ Mar 29 2011, 13:21) Предва... Mar 29 2011, 20:24 Atridies Я не сильно знаю Атмегу, но на MSP430 я делал сбро... Mar 29 2011, 20:56 aaarrr Вот и попались. Логика USART'а сброшена не буд... Mar 30 2011, 10:45 forever_student Цитата(aaarrr @ Mar 30 2011, 14:45) ...Ло... Mar 30 2011, 11:04  aaarrr Цитата(forever_student @ Mar 30 2011, 15... Mar 30 2011, 12:32   forever_student Цитата(aaarrr @ Mar 30 2011, 16:32) ...Вы... Mar 30 2011, 13:22    aaarrr Цитата(forever_student @ Mar 30 2011, 17... Mar 30 2011, 13:33     forever_student Цитата(aaarrr @ Mar 30 2011, 17:33) Возмо... Mar 30 2011, 13:45 defunct Цитата(aaarrr @ Mar 30 2011, 12:45) Тоже ... Mar 30 2011, 13:51 ILYAUL Цитата(aaarrr @ Mar 30 2011, 14:45) Логик... Mar 31 2011, 11:38  aaarrr Цитата(ILYAUL @ Mar 31 2011, 15:38) Не по... Mar 31 2011, 11:54   ILYAUL Цитата(aaarrr @ Mar 31 2011, 15:54) Тольк... Mar 31 2011, 12:11 zheka Господа, необходимость железного сброса продиктова... Mar 30 2011, 15:04 aaarrr Ну а собственно sleep где? Mar 30 2011, 16:08 zheka КодНу а собственно sleep где?
Да уже исправил. Вс... Mar 30 2011, 16:48 zheka Так... работаю со сторожевым таймером...
Господа о... Mar 30 2011, 19:05 forever_student Цитата(zheka @ Mar 30 2011, 23:05) ...Сут... Mar 30 2011, 20:02 zheka Хм.. я обошелся вообще без флажка для WDT. В смысл... Mar 31 2011, 12:56 ILYAUL Цитата(zheka @ Mar 31 2011, 16:56) КРоме ... Mar 31 2011, 13:02  defunct Цитата(ILYAUL @ Mar 31 2011, 16:02) Это к... Mar 31 2011, 16:36   ILYAUL Цитата(defunct @ Mar 31 2011, 20:36) Наве... Mar 31 2011, 17:51 zombi Цитата(zheka @ Mar 31 2011, 16:56) КРоме ... Mar 31 2011, 22:12 zheka defunct, именно так.
Дело в том, что питание будет... Mar 31 2011, 18:04 ILYAUL Может 0,5 сек опрос Mar 31 2011, 19:30 zheka Так ведь он разрешен или я чего-то не понимаю...
В... Apr 1 2011, 06:02 zombi Цитата(zheka @ Apr 1 2011, 10:02) Так вед... Apr 1 2011, 08:18
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|