А то как то странно: при прошивке с помощью stvp файла ihx автора в устройстве подмигивают одни символы, а при компиляции и прошивке с помощью Microsoft VS Code исходников из той же папки, горят другие символы.
Я бы не рассчитывал особо на работоспособность того "кода" как есть. Так как он весьма низкого качества. Вот например в функциях set_display_buf() и display_int() автор сравнивает значение типа char с отрицательными константами:
Код:
for(M = i-1; M > -1; M--, ch--){...
в то время как знаковость типа char зависит от используемого компилятора и его настроек. Один компилятор это скомпилит правильно, другой (в котором тип char - беззнаковый) - нет. Естественно - так писать нельзя.
В криво написанном коде, надо быть готовым, что любая, самая безобидная модификация, может привести к любым сбоям. Или даже просто смена компилятора или его версии - привести к неработоспобности скомпилированного кода.
Приветствую всех знатоков STM8! Может ли кто-то проконсультировать по настройке и работе таймера TIM1?
Включил на 1-ом канале TIM1 ШИМ-сигнал 800кГц (Т=1,25мкс), разрешил прерывание по совпадению регистров CNTR и CCR1. В прерывании меняю состояние ножки PE5 контроллера.
Ожидал, что на каждый переход состояния вывода TIM1_CH1 из "1" в "0", то есть совпадения значений регистров CNTR и CCR1, будет менять состояние вывод PE5, но наблюдаю непонятное поведение PE5. Что я не так настроил?
Включил на 1-ом канале TIM1 ШИМ-сигнал 800кГц (Т=1,25мкс), разрешил прерывание по совпадению регистров CNTR и CCR1. В прерывании меняю состояние ножки PE5 контроллера.
Что такое 800кГц? Частота ШИМ? Вы прерывание с частотой 800кГц включили на STM8??? Серьёзно? Если так, что возникает вопрос - на какой частоте работает ваш STM8? На скольки ГГц тактовой?
PS: Не всякий даже 100МГц-овый ARM справится с такой частотой прерываний... а уж STM8....
PPS: И если уж решили сделать ШИМ, то на кой "менять ножки в прерывании"? Для работы ШИМ на STM8 никаких прерываний не нужно. Достаточно просто корректно настроить таймер и включить его.
то такое 800кГц? Частота ШИМ? Вы прерывание с частотой 800кГц включили на STM8??? Серьёзно? Если так, что возникает вопрос - на какой частоте работает ваш STM8? На скольки ГГц тактовой? ---------- Таймер тактируется частотой 16Мгц, затем предделитель на 20, получаем ШИМ 800кГц (период 1,25мкс), хочу подружить STM8 с адресной светодиодной лентой на WS2812B. В инете есть подобные проекты на STM32 (таймеры там тактируются 72МГц).
---------- PPS: И если уж решили сделать ШИМ, то на кой "менять ножки в прерывании"? Для работы ШИМ на STM8 никаких прерываний не нужно. Достаточно просто корректно настроить таймер и включить его. ---------- Я это прекрасно знаю, так и включил ШИМ на первом канале, а прерывание включил и ножкой стал дрыгать просто ради интереса и дальнейшей перспективы. После Вашего замечания проверю работу при более низкой частоте ШИМ
800 кГц это не частота ШИМ, а частота тактирования таймера, а ШИМ получится во столько раз меньшей частоты, на сколько счетчик таймера считать будет. Например, для счета до 256 будет в 256 раз меньше
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
800 кГц это не частота ШИМ, а частота тактирования таймера, а ШИМ получится во столько раз меньшей частоты, на сколько счетчик таймера считать будет. Например, для счета до 256 будет в 256 раз меньше
Посмотрите исходник
Добавлено after 41 minute 56 seconds: Мдя...(многозначительно ) спасибо jcxz, что своей критикой навел меня на мысль "После Вашего замечания проверю работу при более низкой частоте ШИМ". Установил частоту ШИМ на два порядка меньше (8кГц), все штатно заработало. Слишком маленькие временные промежутки были для нормальной работы прерываний.
Таймер тактируется частотой 16Мгц, затем предделитель на 20, получаем ШИМ 800кГц (период 1,25мкс)
Зачем тогда обманываете? Эта частота - частота тактирования таймера (частота, с которой инкрементируются счётчик таймера), а не "частота ШИМ". "Частота ШИМ" - это частота на ШИМ-выходе таймера.
Я это прекрасно знаю, так и включил ШИМ на первом канале, а прерывание включил и ножкой стал дрыгать просто ради интереса и дальнейшей перспективы. После Вашего замечания проверю работу при более низкой частоте ШИМ
Так может у вас просто прерывание не работает, а ШИМ-сигнал на выходе таймера есть? Лог.анализатором проверьте сигнал на выходе таймера.
Таймер тактируется частотой 16Мгц, затем предделитель на 20, получаем ШИМ 800кГц (период 1,25мкс)
Зачем тогда обманываете? Эта частота - частота тактирования таймера (частота, с которой инкрементируются счётчик таймера), а не "частота ШИМ". "Частота ШИМ" - это частота на ШИМ-выходе таймера.
Я это прекрасно знаю, так и включил ШИМ на первом канале, а прерывание включил и ножкой стал дрыгать просто ради интереса и дальнейшей перспективы. После Вашего замечания проверю работу при более низкой частоте ШИМ
Так может у вас просто прерывание не работает, а ШИМ-сигнал на выходе таймера есть? Лог.анализатором проверьте сигнал на выходе таймера.
800 кГц это не частота ШИМ, а частота тактирования таймера, а ШИМ получится во столько раз меньшей частоты, на сколько счетчик таймера считать будет.
Ну вот - уже ответили. Точнее - частота ШИМ-сигнала будет равна частоте тактирования таймера делённой на период, запрограммированный в таймере.
Мдя....разговор слепого с глухим... Вы мои последующие сообщения читали? Прикрепленную картинку смотрели? Кстати, эта картинка - скриншот экрана получена логическим анализатором.
"Частота ШИМ" - это частота на ШИМ-выходе таймера" - золотые слова....а я что говорил, именно частота на ШИМ-выходе 800кГц с периодом 1,25мкс (верхний сигнал на картинке, там все подписано). Кароче,все работает и ШИМ, и прерывания. Причину первоначальной ситуации я указал в предыдущем своем сообщении.
Мдя....разговор слепого с глухим... Вы мои последующие сообщения читали? Прикрепленную картинку смотрели? Кстати, эта картинка - скриншот экрана получена логическим анализатором.
Куда именно смотреть и что читать? Вы в своих сообщениях пишете совершенно противоречащие друг другу вещи. То пишете что:
Таймер тактируется частотой 16Мгц, затем предделитель на 20, получаем ШИМ 800кГц (период 1,25мкс)
отсюда уже следует, что частота тактирования таймера у вас =800кГц, а не частота ШИМ.
Что такое "предделитель" (prescaler) - понимаете? "Reference manual" читали? Там как раз и описано - как работает вся система тактирования таймера, что такое "prescaler", что такое "период", с какой частотой считает счётчик таймера и т.п. Смотрим в мануал:
Из последней вашей фразы следует, что: CK_PSC=16МГц; CK_CNT=800кГц; а частота ШИМ (частота перезагрузок счётчика) - неизвестна. Так чему именно верить из вами же написанного??? Где ложь? где правда?
PS: Вы плаваете в базовых понятиях. И при этом почему-то обвиняете других, что они вас не понимает. Пишите вменяемо. И тогда вас будут понимать.
Вопрос: Хоспода, листал я тут эту писанину и так и не нашел ШО меня озадачивает (мож. плохо искал в 128 листах). Подскажите рабочий ныне, не глючный вариант IDE с рабочим дебагером.
Подкат:
Валяется у меня больше 100 шт. на работе STM8S003F3P6. И вроде как 8 бит уже усё, но для мелких поделок всё же пользую периодически, а учитывая цены на бывший AVR - так вообще появилось желание заюзать эти МК как альтернативу. Так как с ST я не работал, то мне сложно сходу въехать в древнюю их 8-ми битную тему. Судя по всему они забили на 8-битники и SТM32 их нынешнее всё))
Идеальный вариант для меня это: VSCode+PlatformIO+Proteus (для симуляции и макетирования).
Но в PlatformIO используется для STM8 глючный компилятор SDCC который при попытке дебага выдает кучу ошибок и эти ошибки разрабы фиксят с 2018 г... В Proteus вообще нет STM8 (хотя STM32 есть))
Нарыл я тут кучу древнючего гг.. и оно всё работает через опу:
1. ST Visual Develop - вроде как тулса чисто под такие задачи, но при работе глючит, вылетает, закрывается сама по себе и кидает мутные ошибки (проверял на нескольких ПК). Может ей винда 10-я не нравится - я ХЗ. Короче, заставить её адекватно работать я так и не смог;
2. Cosmic CXSTM8 Special Edition - вообще глючнейшая херабора, невзирая на то что ее писали именно под STM8!! Без стакана и курения мануала на пол года там делать нечего. + евойный компилятор с бесплатной, Карл!, лицензией, но сук после регистрации и по почте через месяц, а может и никогда!
3. IAR EW for STM8 - вроде как самая адекватная, и заточенная под STM8 и отладка работает, но как то всё там... ну не заходит мне...
Резюме:
VSCode+PlatformIO меня полностью устраивают - не нужно переучиваться на другую IDE, все удобно и быстро, но вот с дебагом беда. Думал хоть переменные смотреть с помощью STMStudio, но ему почему то не нравится elf выходной файл... Хоть на UART переходи и смотри только переменные прям как в Ардуино блин! Этот Cosmic со своей бесплатной, бля, лицензией по почте и IAR с кряками... МРАК из 00-х! Короче, не думал я что с этим старым железом могут быть такие затыки в наше время. Может я конечно плохо искал или не шарю как этой всей древней х-нёй пользоваться, но всё же, для сбережения времени, денег и нервов, уповаю на общественность.
Жаль, что вы до сих пор, "знакомый с огромным сообществом людей, использующих STM8" так и не научились писать по существу в теме и не переходить на личности. А может и не жаль... Вы меня посчитали быдлом, я вас - идиотом. Будьте здоровы. Пост мой направлен к адекватным людям))
Зарегистрирован: Вс мар 23, 2025 14:56:55 Сообщений: 700
Рейтинг сообщения:0
Пожалуйста, без перехода на личности: плохому разработчику мешают: яйца(а не, это танцору), инструментарий, цвет клавиатуры, положение планет на небе. Пока он жалится, плачется и использует лексикон быдла (и даже это не может, буковки тире заменя, типа, смотрите, мои родители были культурными людьми), остальные просто делают.
Последний раз редактировалось Уош Вс апр 20, 2025 19:41:32, всего редактировалось 1 раз.
Я неслучайно знаком с огромным сообществом людей, использующих STM8.
Но это не даёт права хамить человеку, который недостаточно в теме. Так что на ответку нечего обижаться. Все мы были новичками. По-моему, человек ждал доброжелательного совета.
_________________
Последний раз редактировалось Jack_A Вс апр 20, 2025 19:46:09, всего редактировалось 1 раз.
Зарегистрирован: Вс мар 23, 2025 14:56:55 Сообщений: 700
Рейтинг сообщения:0
Тот, кто ждёт доброжелательного ответа, не задаёт вопрос, как быдло. Накатал соплей, вместо простого вопроса, какие есть инструменты, с учётом известных таких-то. И когда недостаточно в теме, не оскорбляешь производителей и не делаешь выводы.
Этот Cosmic со своей бесплатной, бля, лицензией по почте
у космиков не надо ничего по почте запрашивать. в каталоге программы есть "register.bat" по которому выдается ключ онлайн. но я не уверен что на российский IP что-либо вышлют.
Что то подобное я и делал, ибо лицензия так и не пришла по почте. Но сути воброса это не решает. Бляха, загадили всю тему из-за упоранта, который решил учить грамматике на форуме и зело за разработчиков глючного софта переживает Ну да ладно, на всех идиотов времени не напасёшься! Попробовать бы воткнуть в PlatformIO вместо SDCC - пресловутый COSMIC.... Но полагаю это не удастся. Это ж надо было так упороться разработчикам (которых так сильно уважает идиот "Уош"), что бы проигнорировать вездесущий и всеми изученный GCC!!??! И нагондурасить глючных космиков, сдсс и прочей.... Это я еще про Raisonance не читал...
Карма: 16
Рейтинг сообщений: 204
Зарегистрирован: Вс дек 02, 2012 16:58:33 Сообщений: 931 Откуда: от туда
Рейтинг сообщения:0
Больше 10 лет пишу для STM8 на IAR. Единственное, что напрягло - фикс бага прерывания деления, добавляющий в каждое прерывание 6 команд на входе и выходе. И симулятор не нужен - всё дебажится в железе. Не понимаю, почему вы отвергли этот вариант.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения