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

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

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

Сообщение Martian »

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

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

Сообщение watchmaker »

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

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

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

Сообщение Martian »

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

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

Сообщение 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, в котором более продвинутые настройки...
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

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

Сообщение Martian »

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

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

Сообщение watchmaker »

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

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

Сообщение 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

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

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

Сообщение watchmaker »

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

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

Сообщение 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, письмо пришло быстро, почта на яндексе.
watchmaker
Поставщик валерьянки для Кота
Сообщения: 2179
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков
Контактная информация:

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

Сообщение 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.
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

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

Сообщение 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.
watchmaker
Поставщик валерьянки для Кота
Сообщения: 2179
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков
Контактная информация:

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

Сообщение watchmaker »

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

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

Сообщение Martian »

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

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

Сообщение watchmaker »

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

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

Сообщение Martian »

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

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

Сообщение watchmaker »

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

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

Сообщение Martian »

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

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

Сообщение watchmaker »

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

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

Сообщение Martian »

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

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

Сообщение watchmaker »

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

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