|
Объединить Rst и порт |
|
|
|
Apr 26 2017, 05:46
|
Участник

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

|
Здравствуйте. Разрабатываю устройство с батарейным питанием. Контроллер находится в LPM4. На входе rst кнопка, вход rst запараллелен на p1.0. Программа при запуске настраивает вход rst на функцию NMI, а Порт на вход. На порт вешается обработчик прерывания ну и дальнейшая работа как с обычной кнопкой. Можно ловить короткие, длинные нажатия, удержания, отпускания и т.п. При выходе из программы, вход rst перенастраивается на функцию сброса и делается переход в LPM4. Вопрос : нет ли скрытых проблем в этой схеме? Возможно они могу вылезти при программировании: например порт настроиться на выход и будет держать 0 - все время сброшен. Кто-нибудь реализовал подобные схемы? Может предложите ещё варианты.
|
|
|
|
|
Apr 26 2017, 09:59
|

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

|
Цитата(SerjT @ Apr 26 2017, 08:46)  Вопрос : нет ли скрытых проблем в этой схеме? Проблема в возможности "на ходу" менять функцию RST или NMI. А если есть возможность сбоя, то он обязательно иногда будет случаться. И вашей кнопкой нельзя будет разбудить устройство. А разбудить можно будет только Power On Reset. Так что при такой идеологии или должна быть скрытая сервисная кнопка сброса, которая отключает питание МК, или возможность вытащить батарею. В сложном случае, типа неразборный герметичный Ex корпус с несменяемыми аккумуляторами - только схемный аппаратный триггер вкл/выкл питания прибора.
|
|
|
|
|
Apr 26 2017, 11:23
|

Знающий
   
Группа: Участник
Сообщений: 756
Регистрация: 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 (эт так из собственного опыта).
--------------------
Пролетарий умственного труда.
|
|
|
|
|
Apr 26 2017, 13:18
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 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
|
|
|
|
|
Apr 26 2017, 13:46
|
Участник

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

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

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

|
Цитата(SerjT @ Apr 26 2017, 17:46)  На порту можно еще и уровень проверить, а на входе NMI нет. Ну почему же? "0" будет: фронт-то отрицательный. Цитата Антидребезг на порту: ловим переход, по таймеру выжидаем время, проверяем уровень если тот-что нужен - фиксируем нажатие, Так я примерно и полагал (: Вам кажется что человек ну очень быстрый источник (: Ладно, делайте как задумали, а ежели что "ловить переход" и NMI - лишнее.
--------------------
Пролетарий умственного труда.
|
|
|
|
|
Apr 26 2017, 14:05
|

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

|
Цитата(SerjT @ Apr 26 2017, 16:18)  Вот тут, как раз, проблем нет. В начале программы вход RST делается входом NMI, а перед переходом в LPM4 снова меняется на RST. Устройство прекрасно будится. Если в результате помех произойдет сбой, то мне это не важно. Если при сбое ваше устройство уйдет в LPM с конфигурацией вход NMI и прерывания NMI и прочие запрещены - оно не проснется. На столе случайно получить такую ситуацию невероятно. Но у заказчиков такие ситуевины случались - это не измышления, а реальный опыт. Для бытовой поделки можно раз в пару лет и иголочкой на скрытую кнопочку нажать, а с серьезным прибором выглядит некрасиво.
|
|
|
|
|
Apr 26 2017, 14:11
|
Участник

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

|
Цитата(Baser @ Apr 26 2017, 17:05)  Для бытовой поделки можно раз в пару лет и иголочкой на скрытую кнопочку нажать, а с серьезным прибором выглядит некрасиво. Да вот я про это и говорю, если устройство, вдруг заглючит и перестанет реагировать на кнопку на порту - потребуется кнопка ресет, а она как раз доступна пользователю так как это одна и та же кнопка . Если вы говорите, что все это лишнее, и контроллер достаточно стабилен. То вариант из SLAA139 вполне подходящий. Просто до этого с F149 были проблемы с запуском. Там не то что ресет, передергивание питания не всегда помогало.
Сообщение отредактировал SerjT - Apr 26 2017, 14:16
|
|
|
|
|
Apr 26 2017, 14:15
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(SerjT @ Apr 26 2017, 16:46)  На порту можно еще и уровень проверить, а на входе NMI нет. Антидребезг на порту: ловим переход, по таймеру выжидаем время, проверяем уровень если тот-что нужен - фиксируем нажатие, . . . При отработке прерывания по кнопке (допустим Fail) в векторе запрещается это прерывание и идет longjump() на точку, где реализован цикл с LPM3 - там активизируется таймер ACLK/250ms опроса состяния порта раз в 250 мс в течение около 4с. С анализом что-когда-сколько времени нажималось + антидребезг. В моем случае это не кнопка, а состояние системы питания (авария), поэтому стек можно было обнулить и пойти на ресет по longjump. Нет смысла дрегать вектор прерывания кнопкой с дребезгом и бороться с нимже.
|
|
|
|
|
Apr 26 2017, 14:23
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 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.
|
|
|
|
|
Apr 26 2017, 15:09
|

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

|
Цитата(SerjT @ Apr 26 2017, 17:11)  Да вот я про это и говорю, если устройство, вдруг заглючит и перестанет реагировать на кнопку на порту - потребуется кнопка ресет, а она как раз доступна пользователю так как это одна и та же кнопка . Не, я как раз говорю, что вход RST/NMI у MSP430 кривой до ужаса и не является "честным" ресетом. Имеет полное право при определенных ситуациях не работать даже согласно документации. Цитата Просто до этого с F149 были проблемы с запуском. Там не то что ресет, передергивание питания не всегда помогало. Кардинально ничего они в серии MSP430F2x/4x не поменяли. Добавили BOR, подкрутили немного систему сброса и улучшили вочдог, так и не доведя его до действительно "честного". Так что иногда помогает только передергивание питания. Но это просто мой ответ на ваш вопрос: Цитата нет ли скрытых проблем в этой схеме? решать вам
|
|
|
|
|
Apr 27 2017, 08:17
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(SerjT @ Apr 26 2017, 17:23)  Я вроде примерно также и описал: . . . Моя софтина по такой схеме тестируется уже около месяца - "завесы" в непонятном состоянии не замечены. Ресетный пин не трогался - ф-ия ресет. Проц - F5438A. ps - после отработки прерывания пин сигнала просто опрашивается.
|
|
|
|
|
Apr 29 2017, 11:18
|

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

|
QUOTE (jcxz @ Apr 29 2017, 04:25)  Честных встроенных WDT не бывает. Потому что они все программно отключаемые/включаемые, а значит уже поэтому - не честные. Intel 8xC51GB, встроенный watchdog timer неотключаемый.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|