|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
||||||
stm8s внешние прерывания Halt();14.05.2017, 12:51. Показов 11479. Ответов 31
Метки нет (Все метки)
Доброго времени. помогите....
имею платку с stm8s103 . К порту "C" подключена кнопка - настроена на прерывание по спаду и нарастанию . Прерывание выводит мк из режима HALT(); . Так вот если создать хороший дребезг контакта контроллер перезагружается . По отладчику похоже на перегруз стека . Так же по отладчику видно что если во время отработки прерывания (при пошаговом режиме) нажимать кнопку то он в main(); не заходит . в обработчике прервывания указан глобальный запрет прерывания , но к сожалению контроллер игнорирует запрет. биты CPU_CCR(I0 и I1) не меняют своего сотояния . Отдельного флага на глабального разрешение прерывания я не обнаружил . Похоже только выставляется приоритет CPU_CCR(I0 и I1). Как выполнить глобальный запрет прерывания - находясь в прерывании (или я ошибаюсь в причине перегрузки стека) ниже простой код
0
|
||||||
| 14.05.2017, 12:51 | |
|
Ответы с готовыми решениями:
31
STM8S - Halt и CFG_GCR_AL Не шьются внешние контроллеры STM8S-Discovery STM8S. Прерывания и софт-уарт, никак не могу найти проблему. |
|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
||||||
| 14.05.2017, 13:20 | ||||||
|
причем при такой конструкции стек перегружается в отладчике (если не давая закончиться отработке прерывания нажать кнопку )
0
|
||||||
|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
|||||||||||
| 14.05.2017, 14:19 | |||||||||||
|
я так понял что команда halt (); парралельно выполняет команду enableYmtirrupts();. т.е запись
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
|
||
| 15.05.2017, 07:16 | ||
А для чего вам нужен режим halt?
0
|
||
|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
|
| 15.05.2017, 07:39 | |
|
добавлю скрины с отладки. отладка пошаговая(шаг F11)
1 все настроено. входим в прерывание https://www.cyberforum.ru/savedimages/2017/05/15/wp9dyqxsymplxtqmsprzgx.jpg 2 выходим из прерывания. и раз 10 нажимаю кнопку https://www.cyberforum.ru/savedimages/2017/05/15/nxzawhs7urdmztrjgssqczv.jpg 3 делаю шаг в call stak теряем точку возврата https://www.cyberforum.ru/savedimages/2017/05/15/wj3zgyadklgxuyfmjtsnjp.jpg 4 контроллер перезагружается. с ошибкой https://www.cyberforum.ru/savedimages/2017/05/15/neu5dnfmysmplfwgw.jpg Что я делаю не так?
0
|
|
|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
||
| 15.05.2017, 07:43 | ||
А для чего вам нужен режим halt? Глубокий сон для экономии энергии(батарейное питание. контроллер из спячки должен выйти по прерыванию ноги и перевести ее в режим АЦП. отработать и перед уходом в сон перевести с АЦП в режим входа с прерыванием) режим прерывания на оба франта желателен.
0
|
||
|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
||
| 15.05.2017, 08:08 | ||
вы про это https://www.cyberforum.ru/savedimages/2017/05/15/bfcvzcc7epuztndtxrlvd.jpg 67 страница PM0044 Prokramming manual. Т.е при возврате из прерывания значение выдираются из стека? Т.е единственный вариант редактировать стек? до выхода из прерывания?
0
|
||
|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
|
| 15.05.2017, 08:37 | |
|
Тогда я не понимаю почему у меня перегружается стек?
0
|
|
|
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 498
|
|
| 15.05.2017, 21:20 | |
|
Всё прозрачно: десять раз вошёл в прерывание, вот стек и переполнился.
Ты выходи из прерывания - то. Установи флаг в памяти и выходи. А в мэйне по флагу засыпай. Так правильнее будет
0
|
|
|
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 498
|
|
| 15.05.2017, 21:22 | |
|
А есть ещё хорошая команда WFI. Тоже помогает. :)))
0
|
|
|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
||
| 16.05.2017, 07:01 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
|
||
| 16.05.2017, 07:17 | ||
Посмотрите здесь -> http://we.iosyitistromyss.ru/S... stm8l.html
0
|
||
|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
|||
| 16.05.2017, 07:21 | |||
0
|
|||
|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
|
| 16.05.2017, 07:26 | |
|
Bytt
у меня S серия. " Проверить флаг прерывания перед уходом в сон ". Я не вижу где этот флаг . весь референс мануал перечитал. Я про флаг внешнего прерывания
0
|
|
|
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
|
||
| 16.05.2017, 07:54 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
|
| 16.05.2017, 08:08 | |
|
Bytt.
в примере просто работа с регистрами напрямую . У меня через библиотеку . Но я не вижу разницы. кроме одной. В примере прерывание только на падение . а у меня на оба фронта . Кстати есть еще одно но . Заметил интересную особенность с током потребления . если настроить прерывание только на задний фронт (или передний - сходу не смогу вспомнить) после ухода в halt() ток потребления 500 мкА. Если после этого отработать одно внешнее прерывание то ток падает до 10мкА!!! / как в даташите. Однако если настроить прерывание на другой фронт (задний или передний сходу не помню . надо повторить замер) ток потребления после первого захода в Halt() сразу 10 мкА!!!
0
|
|
|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
|
| 16.05.2017, 08:11 | |
|
то есть если в устройство поставить батарейку и не отработать прерывание оно будет кушать 0,5мА.
0
|
|
|
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
|
||
| 16.05.2017, 09:13 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
|||||||
| 16.05.2017, 09:45 | |||||||
код сейчас. убрал все что не вызывается. контроллер заменил с stm8s103 на stm8s003/ симптомы одинаковые с зависанием . когда обнаружил баг с током потребления был другой код . с этим кодом идет на перезапуск без отладчика при частом нажатии кнопок с жутким дребезгом . с отладчиком все так как на скринах которые я отправил . пауза перед спячкой . нажимаю один раз на кнопочку связанную с пином --все хорошо. нажимаю много раз(в паузе!!) жму степ --- видно что в стеке потерялся адрес мэйна. иногда попадает в функцию которая вовсе не вызывается (проверка флага таймера 4 там в spl есть проверка передаваемых параметров. т.к приходит черт те что - цикл вываливается в ossirt_foytid) IAR 2.20
0
|
|||||||
|
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 36
|
|
| 16.05.2017, 09:47 | |
|
один из портов связан с tli -думал может он вызывается(хоть и не должен) подключал си файл из spl где указаны все обработчики . симптомы не изменились.
0
|
|
| 16.05.2017, 09:47 | |
|
Помогаю со студенческими работами здесь
20
Внешние прерывания Внешние прерывания Внешние прерывания Внешние прерывания STM32F10xxx Внешние прерывания STM32F407 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|