реклама на сайте
подробности

 
 
> Покритикуйте алгоритм включения и выключения устройства на AVR
zheka
сообщение Mar 29 2011, 09:21
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zheka
сообщение Mar 31 2011, 12:56
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Хм.. я обошелся вообще без флажка для WDT. В смысле, флажки есть, но они не относятся к WDT, а в обработчике прерывания WDT вообще пусто. Т.Е. прерывание генрируется, выполняется единственно важная функция - выход из спящего режима. А вот уже по выходу в основной цикл проверяется условие.

КРоме того, я таки сделал более человчно: при старте у меня контроллер усыпляет дисплей и засыпает сам, просыпаясь чтобы проверить тачпанель. А вот при выключеии запускается сторожевой таймер, который при переполнении ресетит контроллер. Пока вроде все работает.

Сообщение отредактировал zheka - Mar 31 2011, 12:57
Go to the top of the page
 
+Quote Post
zombi
сообщение Mar 31 2011, 22:12
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(zheka @ Mar 31 2011, 16:56) *
КРоме того, я таки сделал более человчно: при старте у меня контроллер усыпляет дисплей и засыпает сам, просыпаясь чтобы проверить тачпанель. А вот при выключеии запускается сторожевой таймер, который при переполнении ресетит контроллер. Пока вроде все работает.

Вроде правильно все, только перед засыпанием после первого включения надобы WDT разрешить biggrin.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - 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
- - 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


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 02:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01419 секунд с 7
ELECTRONIX ©2004-2016