теоретически, к STVD привязать можно что угодно. но если вопрос легальности не стоит, то не надо, тем более SDCС - это получится связка из сырой среды и сырого компилятора. Лучше уже STVD + Сosmiс, тогда сырая только среда. с .нет я ошибся: https://caxapa.ru/
Вопрос легальности не стоит - всё чисто для себя (пока что). Ломаный Cosmic существует?
Добавлено after 2 minutes 32 seconds: Не пойму ещё вот что. Почему в STM8L152 в 64-пин корпусе они смогли впихнуть 40 сегментных линий в драйвере ЖКИ, а в гораздо более популярном STM32L152 - только 28?
_________________ Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Понятно, буду ждать ответа. Или же переходить (по примеру некоторых людей в сети) на что-то другое (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, в котором более продвинутые настройки...
_________________ Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
я неверно высказался, потому удалил. Замечу, что в EXTI_CRх настраивается не прерывание, а событие, которое его вызовет. В EXTI_CONFх настраивается либо на тетрады, либо на биты (и выбор между некоторыми портами). Собственно, смотрите в даташите карту векторов прерываний и понимаете, что доступно и как работать, и в каком порядке вызовутся прерывания:
Что странно, ничего не говорится про порты A и C. Они могут генерировать только EXTI0..EXTI7? Короче, если проще. Можно ли повесить восемь кнопок на указанные выше пины и сделать, чтобы каждая кнопка при нажатии выдавала строго одно прерывание?
_________________ Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Раз не говорится, то да. Только 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
G - да. А вот по поводу F (и именно F0) указаны странные вещи. С одной стороны, аналогичный бит PFLIS есть, с другой стороны, сказано, что пин 0 портов A..F (именно F, не E) генерирует EXTI0. Для других пинов указано A..E.
_________________ Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Кому-нибудь в последнее время удавалось зарегистрировать Cosmic? Похоже, что в связи с известными событиями они всё прикрыли. Или есть ломаная версия?
Там в C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8 есть файлик LmregFSE.exe (ещё есть Register.bat) При запуске появляется окно, вводим адрес почты и т.д. Регистрировал 20 марта 2023, письмо пришло быстро, почта на яндексе.
Ещё вопрос. Сколько (в реальности) потребляет этот чип, если тактировать ядро, LCD и RTC от кварца 32 кГц и не пользоваться halt? Не знаю, что лучше: обрабатывать нажатия кнопок в прерываниях на высокой частоте или тупо постоянно сидеть запущенным на 32 кГц. Производительности при 32 кГц по идее должно хватить. RTC и LCD нужны постоянно, также эпизодически нужен TIM5 в режиме OC или PWM.
Кому-нибудь в последнее время удавалось зарегистрировать Cosmic? Похоже, что в связи с известными событиями они всё прикрыли. Или есть ломаная версия?
Там в C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8 есть файлик LmregFSE.exe (ещё есть Register.bat) При запуске появляется окно, вводим адрес почты и т.д. Регистрировал 20 марта 2023, письмо пришло быстро, почта на яндексе.
Пробовал уже, на нажатие кнопки "web" никакой реакции. Что должна показать эта программа после нажатия кнопки? Сохранил данные в файл и отправил им по почте - тоже никакого ответа. Почта на gmail.
_________________ Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Ок. 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.
ну, можно вообще без основного цикла, зачем он, если нужно только выполнить что-то однократно... смотреть на Wait for interrupt (WFI) mode и если нужно энергосбережение, желательно выполнение кода из ОЗУ
так ведь это не вместо активного хальта. чтобы обработать кнопки и выполнить какие-то действия, active-halt должен стать Wait, Low power run или Low power wait режимом. вот последний и использовать. main при этом не нужен.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 37
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения