Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

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

Сб апр 29, 2023 13:43:07

теоретически, к STVD привязать можно что угодно. но если вопрос легальности не стоит, то не надо, тем более SDCС - это получится связка из сырой среды и сырого компилятора. Лучше уже STVD + Сosmiс, тогда сырая только среда.
с .нет я ошибся: https://caxapa.ru/

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

Сб апр 29, 2023 13:50:38

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

Добавлено after 2 minutes 32 seconds:
Не пойму ещё вот что. Почему в STM8L152 в 64-пин корпусе они смогли впихнуть 40 сегментных линий в драйвере ЖКИ, а в гораздо более популярном STM32L152 - только 28?

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

Сб апр 29, 2023 13:59:40

Я не встречал ломанного Сosmic.

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

Сб апр 29, 2023 15:55:03

Понятно, буду ждать ответа. Или же переходить (по примеру некоторых людей в сети) на что-то другое (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, в котором более продвинутые настройки...

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

Сб апр 29, 2023 16:01:56

я неверно высказался, потому удалил.
Замечу, что в EXTI_CRх настраивается не прерывание, а событие, которое его вызовет.
В EXTI_CONFх настраивается либо на тетрады, либо на биты (и выбор между некоторыми портами). Собственно, смотрите в даташите карту векторов прерываний и понимаете, что доступно и как работать, и в каком порядке вызовутся прерывания:
Изображение

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

Сб апр 29, 2023 16:15:01

Что странно, ничего не говорится про порты A и C. Они могут генерировать только EXTI0..EXTI7?
Короче, если проще. Можно ли повесить восемь кнопок на указанные выше пины и сделать, чтобы каждая кнопка при нажатии выдавала строго одно прерывание?

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

Сб апр 29, 2023 16:26:04

Раз не говорится, то да. Только 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

Или то, или это, но не два

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

Сб апр 29, 2023 16:31:21

G - да. А вот по поводу F (и именно F0) указаны странные вещи. С одной стороны, аналогичный бит PFLIS есть, с другой стороны, сказано, что пин 0 портов A..F (именно F, не E) генерирует EXTI0. Для других пинов указано A..E.

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

Сб апр 29, 2023 16:33:00

Кому-нибудь в последнее время удавалось зарегистрировать Cosmic? Похоже, что в связи с известными событиями они всё прикрыли. Или есть ломаная версия?

Там в C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8 есть файлик LmregFSE.exe (ещё есть Register.bat)
При запуске появляется окно, вводим адрес почты и т.д. Регистрировал 20 марта 2023, письмо пришло быстро, почта на яндексе.

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

Сб апр 29, 2023 16:36:28

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

Добавлено after 1 minute 26 seconds:
Кому-нибудь в последнее время удавалось зарегистрировать Cosmic? Похоже, что в связи с известными событиями они всё прикрыли. Или есть ломаная версия?

Там в C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8 есть файлик LmregFSE.exe (ещё есть Register.bat)
При запуске появляется окно, вводим адрес почты и т.д. Регистрировал 20 марта 2023, письмо пришло быстро, почта на яндексе.

Пробовал уже, на нажатие кнопки "web" никакой реакции. Что должна показать эта программа после нажатия кнопки? Сохранил данные в файл и отправил им по почте - тоже никакого ответа. Почта на gmail.

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

Сб апр 29, 2023 17:09:51

Ок.
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.

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

Сб апр 29, 2023 18:53:22

Кстати, для простой и надежной обработки 8 кнопок достаточно 6 пинов, если сделать в виде матрицы 2х4

В принципе возможно, но как это будет работать в active halt?

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

Сб апр 29, 2023 19:00:34

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

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

Сб апр 29, 2023 19:43:52

Кстати, идея, даже без матрицы. По прерыванию только будить и всё, дальше выполнять все действия в основном цикле и уходить обратно в halt.

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

Сб апр 29, 2023 19:59:44

ну, можно вообще без основного цикла, зачем он, если нужно только выполнить что-то однократно... смотреть на Wait for interrupt (WFI) mode
и если нужно энергосбережение, желательно выполнение кода из ОЗУ

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

Сб апр 29, 2023 20:21:27

Нужно не однократно, а до пяти-шести нажатий на кнопки и до 15 прерываний с таймера (или с RTC) в секунду.

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

Сб апр 29, 2023 21:35:38

это для человека офигенно, а, для мк это всё равно, что раз в сто лет сходить за хлебом.

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

Сб апр 29, 2023 22:00:53

смотреть на Wait for interrupt (WFI) mode

Тоже вариант, но по даташиту в этом режиме слишком большое потребление.

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

Сб апр 29, 2023 22:25:45

так ведь это не вместо активного хальта. чтобы обработать кнопки и выполнить какие-то действия, active-halt должен стать Wait, Low power run или Low power wait режимом. вот последний и использовать. main при этом не нужен.

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

Сб апр 29, 2023 23:33:49

То есть все без исключения действия делать в прерываниях? Интересная идея...
Ответить