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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Объединить Rst и порт
SerjT
сообщение Apr 26 2017, 05:46
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 2-04-08
Пользователь №: 36 411



Здравствуйте.
Разрабатываю устройство с батарейным питанием.
Контроллер находится в LPM4.
На входе rst кнопка, вход rst запараллелен на p1.0.
Программа при запуске настраивает вход rst на функцию NMI, а
Порт на вход. На порт вешается обработчик прерывания ну и дальнейшая работа как с обычной кнопкой. Можно ловить короткие, длинные нажатия, удержания, отпускания и т.п.
При выходе из программы, вход rst перенастраивается на функцию сброса и делается переход в LPM4.
Вопрос : нет ли скрытых проблем в этой схеме? Возможно они могу вылезти при программировании: например порт настроиться на выход и будет держать 0 - все время сброшен.
Кто-нибудь реализовал подобные схемы? Может предложите ещё варианты.
Go to the top of the page
 
+Quote Post
Baser
сообщение Apr 26 2017, 09:59
Сообщение #2


Просто Che
*****

Группа: Свой
Сообщений: 1 279
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(SerjT @ Apr 26 2017, 08:46) *
Вопрос : нет ли скрытых проблем в этой схеме?

Проблема в возможности "на ходу" менять функцию RST или NMI.
А если есть возможность сбоя, то он обязательно иногда будет случаться. И вашей кнопкой нельзя будет разбудить устройство.
А разбудить можно будет только Power On Reset.

Так что при такой идеологии или должна быть скрытая сервисная кнопка сброса, которая отключает питание МК,
или возможность вытащить батарею.

В сложном случае, типа неразборный герметичный Ex корпус с несменяемыми аккумуляторами - только схемный аппаратный триггер вкл/выкл питания прибора.
Go to the top of the page
 
+Quote Post
Obam
сообщение Apr 26 2017, 11:23
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 657
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата(SerjT @ Apr 26 2017, 09:46) *
…На входе rst кнопка, вход rst запараллелен на p1.0.
Программа при запуске настраивает вход rst на функцию NMI, а
Порт на вход. На порт вешается обработчик прерывания ну и дальнейшая работа как с обычной кнопкой. Можно ловить короткие, длинные нажатия, удержания, отпускания и т.п.

Вопрос : нет ли скрытых проблем в этой схеме? Возможно они могу вылезти при программировании: например порт настроиться на выход и будет держать 0 - все время сброшен.

Проц вы утаили, буду говорить о F449: альтернативная функция P1.0 - это выход Bootstrap Loader (BSL). Будете использовать BSL - не нажимайте вашу кнопку.

LPM4 не применял, оставлял ACLK, а это LPM3. Ну и цитата:
2.3.1 Entering and Exiting Low-Power Modes
An enabled interrupt event wakes the MSP430 from any of the low-power operating modes.

А ещё дребезг "весело" давить с кнопкой на ~RST/NMI (эт так из собственного опыта).


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
SerjT
сообщение Apr 26 2017, 13:18
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 2-04-08
Пользователь №: 36 411



Цитата(Baser @ Apr 26 2017, 12:59) *
Проблема в возможности "на ходу" менять функцию RST или NMI.
А если есть возможность сбоя, то он обязательно иногда будет случаться. И вашей кнопкой нельзя будет разбудить устройство.
А разбудить можно будет только Power On Reset.


Вот тут, как раз, проблем нет.
В начале программы вход RST делается входом NMI, а перед переходом в LPM4 снова меняется на RST. Устройство прекрасно будится.
Если в результате помех произойдет сбой, то мне это не важно.

Проц AFE253, программирование по Spy-by-wire. BSL в этом чипе нет.

Цитата(Obam @ Apr 26 2017, 14:23) *
LPM4 не применял, оставлял ACLK, а это LPM3. Ну и цитата:
2.3.1 Entering and Exiting Low-Power Modes
An enabled interrupt event wakes the MSP430 from any of the low-power operating modes.


Про это я знаю, тут сказано, что прерывания от порта (например) разбудит из LPM4.

Но аппаратный ресет, мне кажется как то понадежнее. Да и корпус не слишком легко разборный, что-бы батарейку передернуть.



>> А ещё дребезг "весело" давить с кнопкой на ~RST/NMI (эт так из собственного опыта).

Вот по поводу дребезга и вопрос:

Хочу параллельно RST присоединить какой-нибудь порт (не обезательно P1.0), при старте программы глушить RST,
а кнопку обрабатывать уже обычным способом. При этом получится реализовать обнаружение длинных-коротких нажатий и пр.
Вход NMI обнаруживает только переходы, а уровни нет.

Вот, собственно, что вы скажете про такую схему?

Сообщение отредактировал SerjT - Apr 26 2017, 13:26
Go to the top of the page
 
+Quote Post
Obam
сообщение Apr 26 2017, 13:42
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 657
Регистрация: 14-11-14
Пользователь №: 83 663



Так ведь и GPIO реагирует только на фронт (или прерывания от порта не нужны?).
Дребезг - это как раз несколько переключений (в итоге фронтов) в течение мс 30-ти, не меньше… и каждый свой фронт NMI отработает (приоритет самый старший и быстродействия хватит) - вот в этом и "головняк".
Быстродействие человека существенно ниже что-то ~ 5 нажатий в секунду.

ПовозИтесь, конечно, с NMI, пощупайте, опыт он лишним не будет, но (по моему скромному опыту) результативнее опрос кнопок по таймеру.
SLAA139 документик техасовский на всякий случай гляньте.


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
SerjT
сообщение Apr 26 2017, 13:46
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 2-04-08
Пользователь №: 36 411



Цитата(Obam @ Apr 26 2017, 16:42) *
Так ведь и GPIO реагирует только на фронт (или прерывания от порта не нужны?).
Дребезг - это как раз несколько переключений (в итоге фронтов) в течение мс 30-ти, не меньше… и каждый свой фронт NMI отработает (приоритет самый старший и быстродействия хватит) - вот в этом и "головняк".
Быстродействие человека существенно ниже что-то ~ 5 нажатий в секунду.

ПовозИтесь, конечно, с NMI, пощупайте, опыт он лишним не будет, но (по моему скромному опыту) результативнее опрос кнопок по таймеру.
SLAA139 документик техасовский на всякий случай гляньте.


На порту можно еще и уровень проверить, а на входе NMI нет.
Антидребезг на порту: ловим переход, по таймеру выжидаем время, проверяем уровень если тот-что нужен - фиксируем нажатие,

а как реализовать подобное на NMI (попроще) я не знаю.

Документик сейчас посмотрю.
Go to the top of the page
 
+Quote Post
Obam
сообщение Apr 26 2017, 14:05
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 657
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата(SerjT @ Apr 26 2017, 17:46) *
На порту можно еще и уровень проверить, а на входе NMI нет.

Ну почему же? "0" будет: фронт-то отрицательный.

Цитата
Антидребезг на порту: ловим переход, по таймеру выжидаем время, проверяем уровень если тот-что нужен - фиксируем нажатие,

Так я примерно и полагал (: Вам кажется что человек ну очень быстрый источник (:
Ладно, делайте как задумали, а ежели что "ловить переход" и NMI - лишнее.


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Baser
сообщение Apr 26 2017, 14:05
Сообщение #8


Просто Che
*****

Группа: Свой
Сообщений: 1 279
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(SerjT @ Apr 26 2017, 16:18) *
Вот тут, как раз, проблем нет.
В начале программы вход RST делается входом NMI, а перед переходом в LPM4 снова меняется на RST. Устройство прекрасно будится.
Если в результате помех произойдет сбой, то мне это не важно.

Если при сбое ваше устройство уйдет в LPM с конфигурацией вход NMI и прерывания NMI и прочие запрещены - оно не проснется.
На столе случайно получить такую ситуацию невероятно.
Но у заказчиков такие ситуевины случались - это не измышления, а реальный опыт.
Для бытовой поделки можно раз в пару лет и иголочкой на скрытую кнопочку нажать, а с серьезным прибором выглядит некрасиво.
Go to the top of the page
 
+Quote Post
SerjT
сообщение Apr 26 2017, 14:11
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 2-04-08
Пользователь №: 36 411



Цитата(Baser @ Apr 26 2017, 17:05) *
Для бытовой поделки можно раз в пару лет и иголочкой на скрытую кнопочку нажать, а с серьезным прибором выглядит некрасиво.

Да вот я про это и говорю, если устройство, вдруг заглючит и перестанет реагировать на кнопку на порту - потребуется кнопка ресет,
а она как раз доступна пользователю так как это одна и та же кнопка .

Если вы говорите, что все это лишнее, и контроллер достаточно стабилен. То вариант из SLAA139 вполне подходящий.
Просто до этого с F149 были проблемы с запуском. Там не то что ресет, передергивание питания не всегда помогало.

Сообщение отредактировал SerjT - Apr 26 2017, 14:16
Go to the top of the page
 
+Quote Post
k155la3
сообщение Apr 26 2017, 14:15
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 718
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(SerjT @ Apr 26 2017, 16:46) *
На порту можно еще и уровень проверить, а на входе NMI нет.
Антидребезг на порту: ловим переход, по таймеру выжидаем время, проверяем уровень если тот-что нужен - фиксируем нажатие,
. . .

При отработке прерывания по кнопке (допустим Fail)
в векторе запрещается это прерывание и идет longjump() на точку, где реализован цикл с LPM3 - там активизируется таймер ACLK/250ms
опроса состяния порта раз в 250 мс в течение около 4с. С анализом что-когда-сколько времени нажималось + антидребезг.
В моем случае это не кнопка, а состояние системы питания (авария), поэтому стек можно было обнулить и пойти на ресет по longjump.
Нет смысла дрегать вектор прерывания кнопкой с дребезгом и бороться с нимже.
Go to the top of the page
 
+Quote Post
SerjT
сообщение Apr 26 2017, 14:23
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 2-04-08
Пользователь №: 36 411



Цитата(k155la3 @ Apr 26 2017, 17:15) *
При отработке прерывания по кнопке (допустим Fail)
в векторе запрещается это прерывание и идет longjump() на точку, где реализован цикл с LPM3 - там активизируется таймер ACLK/250ms
опроса состяния порта раз в 250 мс в течение около 4с. С анализом что-когда-сколько времени нажималось + антидребезг.
В моем случае это не кнопка, а состояние системы питания (авария), поэтому стек можно было обнулить и пойти на ресет по longjump.
Нет смысла дрегать вектор прерывания кнопкой с дребезгом и бороться с нимже.


Я вроде примерно также и описал:

1. Ловим первый переход (фрон, срез - что требуется нажатие, отпучкание),
2. Отключаем прерывания от кнопки
3. ждем время дребезга .
4. проверяем состояние порта (для защиты от случайных помех)
5. если состояние нужное - фиксируем нажатие.
6. по таймеру, с фиксированным (или нет) интервалом проверяем состояние порта
7. если по истечению N-проверок порт не менял состояние фиксирум нажатие длинны N.
Go to the top of the page
 
+Quote Post
Baser
сообщение Apr 26 2017, 15:09
Сообщение #12


Просто Che
*****

Группа: Свой
Сообщений: 1 279
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(SerjT @ Apr 26 2017, 17:11) *
Да вот я про это и говорю, если устройство, вдруг заглючит и перестанет реагировать на кнопку на порту - потребуется кнопка ресет,
а она как раз доступна пользователю так как это одна и та же кнопка .

Не, я как раз говорю, что вход RST/NMI у MSP430 кривой до ужаса и не является "честным" ресетом. Имеет полное право при определенных ситуациях не работать даже согласно документации.

Цитата
Просто до этого с F149 были проблемы с запуском. Там не то что ресет, передергивание питания не всегда помогало.

Кардинально ничего они в серии MSP430F2x/4x не поменяли. Добавили BOR, подкрутили немного систему сброса и улучшили вочдог, так и не доведя его до действительно "честного". Так что иногда помогает только передергивание питания.

Но это просто мой ответ на ваш вопрос:
Цитата
нет ли скрытых проблем в этой схеме?

решать вам cool.gif
Go to the top of the page
 
+Quote Post
k155la3
сообщение Apr 27 2017, 08:17
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 718
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(SerjT @ Apr 26 2017, 17:23) *
Я вроде примерно также и описал:
. . .

Моя софтина по такой схеме тестируется уже около месяца - "завесы" в непонятном состоянии не замечены.
Ресетный пин не трогался - ф-ия ресет. Проц - F5438A.

ps - после отработки прерывания пин сигнала просто опрашивается.


Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 28 2017, 21:25
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 775
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Baser @ Apr 26 2017, 17:09) *
и улучшили вочдог, так и не доведя его до действительно "честного".

Честных встроенных WDT не бывает. Потому что они все программно отключаемые/включаемые, а значит уже поэтому - не честные.
Go to the top of the page
 
+Quote Post
dxp
сообщение Apr 29 2017, 11:18
Сообщение #15


Adept
******

Группа: Свой
Сообщений: 3 371
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (jcxz @ Apr 29 2017, 04:25) *
Честных встроенных WDT не бывает. Потому что они все программно отключаемые/включаемые, а значит уже поэтому - не честные.

Intel 8xC51GB, встроенный watchdog timer неотключаемый.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st November 2017 - 19:08
Рейтинг@Mail.ru


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