Программирование STM8

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

теоретически, к STVD привязать можно что угодно. но если вопрос легальности не стоит, то не надо, тем более SDCС - это получится связка из сырой среды и сырого компилятора. Лучше уже STVD + Сosmiс, тогда сырая только среда.
с .нет я ошибся: https://caxapa.ru/
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Сообщения: 2186
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков

Сообщение watchmaker »

Вопрос легальности не стоит - всё чисто для себя (пока что). Ломаный Cosmic существует?

Добавлено after 2 minutes 32 seconds:
Не пойму ещё вот что. Почему в STM8L152 в 64-пин корпусе они смогли впихнуть 40 сегментных линий в драйвере ЖКИ, а в гораздо более популярном STM32L152 - только 28?
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Контактная информация:
Реклама
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Я не встречал ломанного Сosmic.
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2186
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков

Сообщение watchmaker »

Понятно, буду ждать ответа. Или же переходить (по примеру некоторых людей в сети) на что-то другое (IAR или даже Code::Blocks + sdcc).

Добавлено after 1 hour 17 minutes 43 seconds:
Ещё вопрос по внешним прерываниям.
1. Если настроить прерывание на пин 0, то оно будет срабатывать при воздействии на пин 0 портов A..F.
2. Если настроить прерывание на порт F, то оно будет срабатывать при воздействии на любой пин порта F.
Значит ли это, что при настроенных обоих прерываниях они будут срабатывать ОБА подряд при воздействии на пин F0?
Проблема такая: нужно установить 8 кнопок, свободные пины для них A2, A3, G0, G1, F0, F1, C0, C1. Соответственно, нужно настроить прерывания (одного и того же типа - falling edge) на: 0, 1, 2, 3, F, G. Все прерывания будут вызывать одну и ту же функцию, в которой уже будет анализироваться нажатая кнопка по состоянию порта. Можно ли что-то сделать, чтобы при нажатии на F0 функция не вызывалась два раза подряд?

Добавлено after 18 minutes 47 seconds:
Пин 0 портов A..F - в EXTI_CR1, младшие два бита, порт F - в EXTI_CR3, старшие два бита. RM0031, с. 169 и с. 171.

Добавлено after 3 minutes 14 seconds:
Блин, тут ещё EXTI_CONF1, в котором более продвинутые настройки...
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

я неверно высказался, потому удалил.
Замечу, что в EXTI_CRх настраивается не прерывание, а событие, которое его вызовет.
В EXTI_CONFх настраивается либо на тетрады, либо на биты (и выбор между некоторыми портами). Собственно, смотрите в даташите карту векторов прерываний и понимаете, что доступно и как работать, и в каком порядке вызовутся прерывания:
Изображение
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Сообщения: 2186
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков

Сообщение watchmaker »

Что странно, ничего не говорится про порты A и C. Они могут генерировать только EXTI0..EXTI7?
Короче, если проще. Можно ли повесить восемь кнопок на указанные выше пины и сделать, чтобы каждая кнопка при нажатии выдавала строго одно прерывание?
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Контактная информация:
Реклама
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Раз не говорится, то да. Только EXTI0..EXTI7
ну Вы же видите, что EXTI_CONFх переключает между векторами 5..7 и 8..15, как нажатие кнопки вызовет два прерывания?

Bit 2 PGHIS: Port G[7:4] external interrupt select It selects pins PG[7:4] for EXTIG interrupt.
0: PG[7:4] are used for EXTI7-EXTI4 interrupt generation
1: PG[7:4] are used for EXTIG interrupt generation

Или то, или это, но не два
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2186
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков

Сообщение watchmaker »

G - да. А вот по поводу F (и именно F0) указаны странные вещи. С одной стороны, аналогичный бит PFLIS есть, с другой стороны, сказано, что пин 0 портов A..F (именно F, не E) генерирует EXTI0. Для других пинов указано A..E.
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Контактная информация:
Родился
Сообщения: 16
Зарегистрирован: Вс мар 27, 2022 15:49:30

Сообщение Vladislav14 »

[uquote="watchmaker",url="/forum/viewtopic.php?p=4408483#p4408483"]Кому-нибудь в последнее время удавалось зарегистрировать Cosmic? Похоже, что в связи с известными событиями они всё прикрыли. Или есть ломаная версия?[/uquote]
Там в C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8 есть файлик LmregFSE.exe (ещё есть Register.bat)
При запуске появляется окно, вводим адрес почты и т.д. Регистрировал 20 марта 2023, письмо пришло быстро, почта на яндексе.
Поставщик валерьянки для Кота
Сообщения: 2186
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков

Сообщение watchmaker »

Ещё вопрос. Сколько (в реальности) потребляет этот чип, если тактировать ядро, LCD и RTC от кварца 32 кГц и не пользоваться halt? Не знаю, что лучше: обрабатывать нажатия кнопок в прерываниях на высокой частоте или тупо постоянно сидеть запущенным на 32 кГц. Производительности при 32 кГц по идее должно хватить. RTC и LCD нужны постоянно, также эпизодически нужен TIM5 в режиме OC или PWM.

Добавлено after 1 minute 26 seconds:
[uquote="Vladislav14",url="/forum/viewtopic.php?p=4408595#p4408595"][uquote="watchmaker",url="/forum/viewtopic.php?p=4408483#p4408483"]Кому-нибудь в последнее время удавалось зарегистрировать Cosmic? Похоже, что в связи с известными событиями они всё прикрыли. Или есть ломаная версия?[/uquote]
Там в C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8 есть файлик LmregFSE.exe (ещё есть Register.bat)
При запуске появляется окно, вводим адрес почты и т.д. Регистрировал 20 марта 2023, письмо пришло быстро, почта на яндексе.[/uquote]
Пробовал уже, на нажатие кнопки "web" никакой реакции. Что должна показать эта программа после нажатия кнопки? Сохранил данные в файл и отправил им по почте - тоже никакого ответа. Почта на gmail.
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Контактная информация:
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Ок.
EXTI_CRх - настраивается событие (изменение сигнала) вызывающего прерывание
EXTI_SR1 - биты этого регистра - флаги прерывания для соответствующих пинов для портов A/B/C/D/E/F, то есть, по ним мы можем определить, какой пин вызвал прерывание
EXTI_SR2 - биты этого регистра - флаги прерывания для портов B/D/E/F/G/H, то есть, по ним можно определить, какой из этих портов вызвал прерывание
Одновременная проверка EXTI_SR1 и EXTI_SR2 позволяет однозначно определить пин, вызвавший прерывание в портах B/D/E/F
EXTI_CONF1 - можно выбрать, какой из портов F или E будет генерировать прерывание 5, выбрать для него тетрады или же биты (для EXTI0...7) для B, D, E и для младших тетрады/битов F
EXTI_CONF2 - можно выбрать, какие из портов H или G и B или D будут генерировать прерывания 6 и 7, выбрать для этих прерываний тетрады или биты для H, G и для старших тетрады/битов F

Вот и всё. ну разв что в конфигурации самого пина ставится вкл-выкл

Потребление энергии и продолжительность работы приблизительно можно рассчитать в STM8CubeMX

Добавлено after 12 minutes 1 second:
Кстати, для простой и надежной обработки 8 кнопок достаточно 6 пинов, если сделать в виде матрицы 2х4
И если сюда в строки подпихнуть COM0/1 дисплея, то совместно с прерыванием дисплея SOF можно использовать лишь 4 пина для 8 кнопок. A2, A3, C0, C1.
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2186
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков

Сообщение watchmaker »

Кстати, для простой и надежной обработки 8 кнопок достаточно 6 пинов, если сделать в виде матрицы 2х4
В принципе возможно, но как это будет работать в active halt?
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Контактная информация:
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

так же, как и в любом другом режиме. по прерыванию просыпаться, по опросу определять, что разбудило
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2186
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков

Сообщение watchmaker »

Кстати, идея, даже без матрицы. По прерыванию только будить и всё, дальше выполнять все действия в основном цикле и уходить обратно в halt.
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Контактная информация:
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

ну, можно вообще без основного цикла, зачем он, если нужно только выполнить что-то однократно... смотреть на Wait for interrupt (WFI) mode
и если нужно энергосбережение, желательно выполнение кода из ОЗУ
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2186
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков

Сообщение watchmaker »

Нужно не однократно, а до пяти-шести нажатий на кнопки и до 15 прерываний с таймера (или с RTC) в секунду.
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Контактная информация:
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

это для человека офигенно, а, для мк это всё равно, что раз в сто лет сходить за хлебом.
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2186
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков

Сообщение watchmaker »

смотреть на Wait for interrupt (WFI) mode
Тоже вариант, но по даташиту в этом режиме слишком большое потребление.
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Контактная информация:
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

так ведь это не вместо активного хальта. чтобы обработать кнопки и выполнить какие-то действия, active-halt должен стать Wait, Low power run или Low power wait режимом. вот последний и использовать. main при этом не нужен.
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2186
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков

Сообщение watchmaker »

То есть все без исключения действия делать в прерываниях? Интересная идея...
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Контактная информация:
Ответить

Вернуться в «Разные вопросы по МК»