Программирование STM8
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
Пришло время опробовать вложенные прерывания в STM8 (обещал тут написать о результатах).
Задачка тут у меня такая - сделать приборчик простенький для простеньких измерений (подробности не важны). В приборе есть семисегментный индикатор, индикация сделана с помощью таймера на прерываниях. Основная задача сделать оцифровку сигнала с помощью АЦП в течении некоторого периода времени, результаты оцифровки помещаются в буфер, потом обрабатываются по формуле и выводятся на индикатор. Главное - оцифровка должна производится строго через равные промежутки времени (100мкс). Так как динамическая индикация будет мешать процессу оцифровки, а выключать индикацию на время измерения не вариант, было решено использовать вложенные прерывания. Понятно, что приоритет прерываний оцифровки должен быть выше приоритета прерываний индикации. Для проверки задействовал один таймер для динамической индикации с периодом 1мс, второй для отсчета промежутков времени, вызывающий прерывания каждые 100мкс - в этом прерывании просто дрыг ногой микроконтроллера. Почитал документацию - вроде приоритеты прерываний можно просто задать регистрами ITC->ISPRx. Попробовал посмотреть дрыганье ногой без приоритета - дрыгает как попало, прерывания таймера индикации мешают. Задал приоритеты прерываний для таймеров (второй выше приритет) - ногодрыг стал идеальным - ничего не дребезжит, период ногодрыага строго 100 мкс и на индикации не заметно никаких артефактов. Похоже все работает, что то правда слишком просто получилось - может где ошибся.
Задачка тут у меня такая - сделать приборчик простенький для простеньких измерений (подробности не важны). В приборе есть семисегментный индикатор, индикация сделана с помощью таймера на прерываниях. Основная задача сделать оцифровку сигнала с помощью АЦП в течении некоторого периода времени, результаты оцифровки помещаются в буфер, потом обрабатываются по формуле и выводятся на индикатор. Главное - оцифровка должна производится строго через равные промежутки времени (100мкс). Так как динамическая индикация будет мешать процессу оцифровки, а выключать индикацию на время измерения не вариант, было решено использовать вложенные прерывания. Понятно, что приоритет прерываний оцифровки должен быть выше приоритета прерываний индикации. Для проверки задействовал один таймер для динамической индикации с периодом 1мс, второй для отсчета промежутков времени, вызывающий прерывания каждые 100мкс - в этом прерывании просто дрыг ногой микроконтроллера. Почитал документацию - вроде приоритеты прерываний можно просто задать регистрами ITC->ISPRx. Попробовал посмотреть дрыганье ногой без приоритета - дрыгает как попало, прерывания таймера индикации мешают. Задал приоритеты прерываний для таймеров (второй выше приритет) - ногодрыг стал идеальным - ничего не дребезжит, период ногодрыага строго 100 мкс и на индикации не заметно никаких артефактов. Похоже все работает, что то правда слишком просто получилось - может где ошибся.
- GARMIN
- Держит паяльник хвостом
- Сообщения: 952
- Зарегистрирован: Вс дек 02, 2012 16:58:33
- Откуда: от туда
- Контактная информация:
Re: Программирование STM8
Вообще-то всё правильно.
Обычно я настраиваю прерывания как мне удобно:
Обычно я настраиваю прерывания как мне удобно:
Код: Выделить всё
/*******************************************************************************
* настройка приоритетов прерываний
*******************************************************************************/
inline void interrupt_init (void)
{
ITC->ISPR6 = (ITC->ISPR6 & ~ITC_SPR6_TIM4OVF_MSK) | ITC_SPR6_TIM4OVF_LVL3; // установить высокий приоритет прерывания системного таймера
ITC->ISPR4 = (ITC->ISPR4 & ITC_SPR4_TIM1CC_MSK) | ITC_SPR4_TIM1CC_LVL2; // прерывание для вывода индикации
ITC->ISPR4 = (ITC->ISPR4 & ~ITC_SPR4_TIM2CC_MSK) | ITC_SPR4_TIM2CC_LVL2; // Прерывание на управление реле - высокий приоритет
ITC->ISPR3 = (ITC->ISPR3 & ~ITC_SPR3_SPI_MSK) | ITC_SPR3_SPI_LVL2; // SPI отправляет по одному байту
ITC->ISPR6 = (ITC->ISPR6 & ~ITC_SPR6_ADC1_MSK) | ITC_SPR6_ADC1_LVL1; // В АЦП проводится много вычислений, пусть они смогут прерываться
ITC->ISPR7 = (ITC->ISPR7 & ~ITC_SPR7_FLASH_MSK) | ITC_SPR7_FLASH_LVL1; // прерывание записи во флеш может подождать
}
Re: Программирование STM8
Прикупил STM8S003F3P 0,5$ за штуку решил попробовать что и как, до этого юзал пик и авр, с компиляторами разобрался, а вот с прошивкой встал вопрос, покупать отладочную плату за 25$ или комплектацию 10$ не серьезно, решил попробовать STMflashloader, но нигде не могу найти что куда подключить, TX; RX -UART понятно, Reset - тоже, для STM32 пишут Boot0 + питания, но в STM8, такого нет.
Если кто сталкивался пожалуйста подскажите на какой пин тыкать этот + , есть подозрения на UART_clock но не уверен.
Если кто сталкивался пожалуйста подскажите на какой пин тыкать этот + , есть подозрения на UART_clock но не уверен.

- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
vmalush писал(а):покупать отладочную плату за 25$ или комплектацию 10$ не серьезно
В микроконтроллерах STM8S003 нет бутлоадера, поэтому покупать или паять ST-LINK придется - зато это будет и программатор и отладчик (для STM8 и STM32), чего для пик и авр по такой цене ни спаять ни купить.
http://ru.aliexpress.com/item/FREE-SHIP ... 75269.html
Re: Программирование STM8
Сразу же остужу.
Данный огрызок может работать только с 3v, в то время как STM8S - 2.95 to 5.5 V operating voltage.
И дабы не пришлось потом кусать локти - задавите жабу и купите полноценный STLink v2.
http://ru.aliexpress.com/item/ST-LINK-V ... 29194.html
Тем более что STM не ограничивается одной линейкой STM8S ,
и в L серии питание Operating power supply range 1.8 V to
3.6 V (down to 1.65 V at power down)
Да и после STM8x всяко захочется STM32 ...
Данный огрызок может работать только с 3v, в то время как STM8S - 2.95 to 5.5 V operating voltage.
И дабы не пришлось потом кусать локти - задавите жабу и купите полноценный STLink v2.
http://ru.aliexpress.com/item/ST-LINK-V ... 29194.html
Тем более что STM не ограничивается одной линейкой STM8S ,
и в L серии питание Operating power supply range 1.8 V to
3.6 V (down to 1.65 V at power down)
Да и после STM8x всяко захочется STM32 ...
Re: Программирование STM8
oleg110592 писал(а):Данный огрызок может работать только с 3v, в то время как STM8S - 2.95 to 5.5 V operating voltage.
На сколько он там внутри ОГРЫЗОК нам не ведомо - корпус не прозрачный. Мой клон без выходного буфера нормально работает с STM8S, которая питается от 5В. Резисторных ограничителей достаточно.
Re: Программирование STM8
подскажите, пин SWIM у STM8S003, чтобы пользовать как IO - надо что-нибудь менять в настройках проца или как?
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
не надо, только учесть:
The PD1 pin is in input pull-up during the reset phase and after internal reset release
- RusikOk
- Нашел транзистор. Понюхал.
- Сообщения: 197
- Зарегистрирован: Пн янв 24, 2011 01:51:48
- Откуда: Украина, Киев
- Контактная информация:
Re: Программирование STM8
для STM8 есть программа аналогична STM32CubeMX или что нибудь облегчающее старт?
Re: Программирование STM8
RusikOk , все что необходимо :
1) Знание языка + умение читать и понимать документацию.
2) Знание основ электроники .
4) Опыт в программировании .
Без вышеперечисленного даже нет смысла начинать и никакие облегчалки не помогут...
1) Знание языка + умение читать и понимать документацию.
2) Знание основ электроники .
4) Опыт в программировании .
Без вышеперечисленного даже нет смысла начинать и никакие облегчалки не помогут...
- RusikOk
- Нашел транзистор. Понюхал.
- Сообщения: 197
- Зарегистрирован: Пн янв 24, 2011 01:51:48
- Откуда: Украина, Киев
- Контактная информация:
Re: Программирование STM8
я это понимаю. все это имеется в наличии)dosikus писал(а):RusikOk , все что необходимо...
просто немного протоптав путь от AVR к STM32 призадумался а стоит ли осваивать STM8 ведь AVR-ы никто не отменял и в общем-то всем устраивают (особенно корпусами)))))
P.S.
хотел поковырять STM8 вечерка два а там уже и решить
Re: Программирование STM8
RusikOk писал(а):призадумался а стоит ли осваивать STM8
При наличии STM32F0 смысла в STM8 нет. А AVR пора забыть давно...
- RusikOk
- Нашел транзистор. Понюхал.
- Сообщения: 197
- Зарегистрирован: Пн янв 24, 2011 01:51:48
- Откуда: Украина, Киев
- Контактная информация:
Re: Программирование STM8
STM8 в наличии тоже есть)dosikus писал(а):При наличии STM32F0 смысла в STM8 нет
ну это если следовать модным тенденциям. а по факту AVR мне ничего плохого не сделали, чтоб от них отказываться. цена правда слегка раздута из за их популярности...dosikus писал(а):А AVR пора забыть давно...
Re: Программирование STM8
Здоров ребята ! Кто может подсказать мне готовую простую прогу на stm8s003f3p6 АЦП ? уже неделю голову об стену бью и безрезультатно . Спасибо !
Re: Программирование STM8
Возникла проблема.
При попытке изменить OPTIONS BYTE через ST-Link в STVP произошёл сбой.
В ИАРЕ при попытке записать прошивку через ST-Link вылетает следующее сообщение:
При этом в STVP прошивку записать могу, но при попытке доступа к OPTION BYTES считывает 44% и выдаёт ошибку, что байты не комплементарны. И похоже, что сбросились OPTION BYTES, связанные с загрузчиком - не могу по UART соединиться - не определяется чип.
Что можно сделать?
При попытке изменить OPTIONS BYTE через ST-Link в STVP произошёл сбой.
В ИАРЕ при попытке записать прошивку через ST-Link вылетает следующее сообщение:
Код: Выделить всё
Errors while setting configuration with MCU name STM8S105S6: gdi-error [40701]: Option bytes read error: not complemented; please use a programmer При этом в STVP прошивку записать могу, но при попытке доступа к OPTION BYTES считывает 44% и выдаёт ошибку, что байты не комплементарны. И похоже, что сбросились OPTION BYTES, связанные с загрузчиком - не могу по UART соединиться - не определяется чип.
Что можно сделать?
- RusikOk
- Нашел транзистор. Понюхал.
- Сообщения: 197
- Зарегистрирован: Пн янв 24, 2011 01:51:48
- Откуда: Украина, Киев
- Контактная информация:
Re: Программирование STM8
какая версия ИАРа?Serj_K писал(а):Возникла проблема.
Re: Программирование STM8
1.40.1, а какая разница, ведь и в STVP нет доступа к opton byte и оба говорят о некомплементарности.RusikOk писал(а):какая версия ИАРа?
Re: Программирование STM8
Проблему решил установкой последней версии STVP.
Re: Программирование STM8
Так вышло что сначала подсел на стм32 , стм8 привлекли STM8S003F3P6 за 20руб на сей день. минусы только 100 кратное флэшперепрограммирование, и что нет своего бут-прошивальщика. В загашнике нашел STM32F103C8 на ней наваял свой простенький ST_LINK упрощенный развел один только swim прошил его через бут, обновил прошивку ST шной утилитой. и вуаля. STM8003 шьется очень быстро. На днях долго мучил ENC28J60 все же удалось запустить. Можно посмотрет теперь ь в сторону дешевейшего ip телефона и прочего
Re: Программирование STM8
RingQ писал(а):Так вышло что сначала подсел на стм32 , стм8 привлекли STM8S003F3P6 за 20руб на сей день. минусы только 100 кратное флэшперепрограммирование,
Минусы? Стократная перезапись -- это не сказать, что совсем уж мало. Не каждое устройство на МК в процессе разработки требует такого большого числа перезаписей. Кроме того, даташит утверждает, что производитель не гарантирует сохранность содержимого флеша, если число перезаписей превысило цифру 100 и устройство эксплуатировалось при температуре 55 градусов двадцать лет. 55 градусов -- это довольно горячо. Температура на грани ожога, если описывать ее на уровне ощущений. И при таком нагреве МК должен отбарабанить не менее двадцати лет без перерыва. Чтобы соблюсти все условия для возможной порчи флеша через двадцать лет -- это еще надо постараться хорошенько. Но опять же, производитель не утверждает, что порча наступит обязательно. Вот и выходит, что для подавляющего большинства применений на данный параметр можно наплевать и забыть.