Задачка тут у меня такая - сделать приборчик простенький для простеньких измерений (подробности не важны). В приборе есть семисегментный индикатор, индикация сделана с помощью таймера на прерываниях. Основная задача сделать оцифровку сигнала с помощью АЦП в течении некоторого периода времени, результаты оцифровки помещаются в буфер, потом обрабатываются по формуле и выводятся на индикатор. Главное - оцифровка должна производится строго через равные промежутки времени (100мкс). Так как динамическая индикация будет мешать процессу оцифровки, а выключать индикацию на время измерения не вариант, было решено использовать вложенные прерывания. Понятно, что приоритет прерываний оцифровки должен быть выше приоритета прерываний индикации. Для проверки задействовал один таймер для динамической индикации с периодом 1мс, второй для отсчета промежутков времени, вызывающий прерывания каждые 100мкс - в этом прерывании просто дрыг ногой микроконтроллера. Почитал документацию - вроде приоритеты прерываний можно просто задать регистрами ITC->ISPRx. Попробовал посмотреть дрыганье ногой без приоритета - дрыгает как попало, прерывания таймера индикации мешают. Задал приоритеты прерываний для таймеров (второй выше приритет) - ногодрыг стал идеальным - ничего не дребезжит, период ногодрыага строго 100 мкс и на индикации не заметно никаких артефактов. Похоже все работает, что то правда слишком просто получилось - может где ошибся.
Программирование STM8
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Пришло время опробовать вложенные прерывания в STM8 (обещал тут написать о результатах).
Задачка тут у меня такая - сделать приборчик простенький для простеньких измерений (подробности не важны). В приборе есть семисегментный индикатор, индикация сделана с помощью таймера на прерываниях. Основная задача сделать оцифровку сигнала с помощью АЦП в течении некоторого периода времени, результаты оцифровки помещаются в буфер, потом обрабатываются по формуле и выводятся на индикатор. Главное - оцифровка должна производится строго через равные промежутки времени (100мкс). Так как динамическая индикация будет мешать процессу оцифровки, а выключать индикацию на время измерения не вариант, было решено использовать вложенные прерывания. Понятно, что приоритет прерываний оцифровки должен быть выше приоритета прерываний индикации. Для проверки задействовал один таймер для динамической индикации с периодом 1мс, второй для отсчета промежутков времени, вызывающий прерывания каждые 100мкс - в этом прерывании просто дрыг ногой микроконтроллера. Почитал документацию - вроде приоритеты прерываний можно просто задать регистрами ITC->ISPRx. Попробовал посмотреть дрыганье ногой без приоритета - дрыгает как попало, прерывания таймера индикации мешают. Задал приоритеты прерываний для таймеров (второй выше приритет) - ногодрыг стал идеальным - ничего не дребезжит, период ногодрыага строго 100 мкс и на индикации не заметно никаких артефактов. Похоже все работает, что то правда слишком просто получилось - может где ошибся.
Задачка тут у меня такая - сделать приборчик простенький для простеньких измерений (подробности не важны). В приборе есть семисегментный индикатор, индикация сделана с помощью таймера на прерываниях. Основная задача сделать оцифровку сигнала с помощью АЦП в течении некоторого периода времени, результаты оцифровки помещаются в буфер, потом обрабатываются по формуле и выводятся на индикатор. Главное - оцифровка должна производится строго через равные промежутки времени (100мкс). Так как динамическая индикация будет мешать процессу оцифровки, а выключать индикацию на время измерения не вариант, было решено использовать вложенные прерывания. Понятно, что приоритет прерываний оцифровки должен быть выше приоритета прерываний индикации. Для проверки задействовал один таймер для динамической индикации с периодом 1мс, второй для отсчета промежутков времени, вызывающий прерывания каждые 100мкс - в этом прерывании просто дрыг ногой микроконтроллера. Почитал документацию - вроде приоритеты прерываний можно просто задать регистрами ITC->ISPRx. Попробовал посмотреть дрыганье ногой без приоритета - дрыгает как попало, прерывания таймера индикации мешают. Задал приоритеты прерываний для таймеров (второй выше приритет) - ногодрыг стал идеальным - ничего не дребезжит, период ногодрыага строго 100 мкс и на индикации не заметно никаких артефактов. Похоже все работает, что то правда слишком просто получилось - может где ошибся.
- Реклама
Вообще-то всё правильно.
Обычно я настраиваю прерывания как мне удобно:
Обычно я настраиваю прерывания как мне удобно:
Код: Выделить всё
/*******************************************************************************
* настройка приоритетов прерываний
*******************************************************************************/
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; // прерывание записи во флеш может подождать
}
- Сообщения: 5
- Зарегистрирован: Пт мар 09, 2012 12:03:52
Прикупил STM8S003F3P 0,5$ за штуку решил попробовать что и как, до этого юзал пик и авр, с компиляторами разобрался, а вот с прошивкой встал вопрос, покупать отладочную плату за 25$ или комплектацию 10$ не серьезно, решил попробовать STMflashloader, но нигде не могу найти что куда подключить, TX; RX -UART понятно, Reset - тоже, для STM32 пишут Boot0 + питания, но в STM8, такого нет.
Если кто сталкивался пожалуйста подскажите на какой пин тыкать этот + , есть подозрения на UART_clock но не уверен.
Если кто сталкивался пожалуйста подскажите на какой пин тыкать этот + , есть подозрения на UART_clock но не уверен.
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
В микроконтроллерах STM8S003 нет бутлоадера, поэтому покупать или паять ST-LINK придется - зато это будет и программатор и отладчик (для STM8 и STM32), чего для пик и авр по такой цене ни спаять ни купить.vmalush писал(а):покупать отладочную плату за 25$ или комплектацию 10$ не серьезно
http://ru.aliexpress.com/item/FREE-SHIP ... 75269.html
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Сразу же остужу.
Данный огрызок может работать только с 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 ...
- Реклама
- Сообщения: 718
- Зарегистрирован: Сб апр 14, 2012 16:11:35
На сколько он там внутри ОГРЫЗОК нам не ведомо - корпус не прозрачный. Мой клон без выходного буфера нормально работает с STM8S, которая питается от 5В. Резисторных ограничителей достаточно.oleg110592 писал(а):Данный огрызок может работать только с 3v, в то время как STM8S - 2.95 to 5.5 V operating voltage.
подскажите, пин SWIM у STM8S003, чтобы пользовать как IO - надо что-нибудь менять в настройках проца или как?
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
не надо, только учесть:
The PD1 pin is in input pull-up during the reset phase and after internal reset release
для STM8 есть программа аналогична STM32CubeMX или что нибудь облегчающее старт?
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
RusikOk , все что необходимо :
1) Знание языка + умение читать и понимать документацию.
2) Знание основ электроники .
4) Опыт в программировании .
Без вышеперечисленного даже нет смысла начинать и никакие облегчалки не помогут...
1) Знание языка + умение читать и понимать документацию.
2) Знание основ электроники .
4) Опыт в программировании .
Без вышеперечисленного даже нет смысла начинать и никакие облегчалки не помогут...
я это понимаю. все это имеется в наличии)dosikus писал(а):RusikOk , все что необходимо...
просто немного протоптав путь от AVR к STM32 призадумался а стоит ли осваивать STM8 ведь AVR-ы никто не отменял и в общем-то всем устраивают (особенно корпусами)))))
P.S.
хотел поковырять STM8 вечерка два а там уже и решить
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
При наличии STM32F0 смысла в STM8 нет. А AVR пора забыть давно...RusikOk писал(а):призадумался а стоит ли осваивать STM8
STM8 в наличии тоже есть)dosikus писал(а):При наличии STM32F0 смысла в STM8 нет
ну это если следовать модным тенденциям. а по факту AVR мне ничего плохого не сделали, чтоб от них отказываться. цена правда слегка раздута из за их популярности...dosikus писал(а):А AVR пора забыть давно...
- Сообщения: 21
- Зарегистрирован: Ср сен 17, 2014 21:43:30
Здоров ребята ! Кто может подсказать мне готовую простую прогу на stm8s003f3p6 АЦП ? уже неделю голову об стену бью и безрезультатно . Спасибо !
- Сообщения: 718
- Зарегистрирован: Сб апр 14, 2012 16:11:35
Возникла проблема.
При попытке изменить 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 Что можно сделать?
какая версия ИАРа?Serj_K писал(а):Возникла проблема.
- Сообщения: 718
- Зарегистрирован: Сб апр 14, 2012 16:11:35
1.40.1, а какая разница, ведь и в STVP нет доступа к opton byte и оба говорят о некомплементарности.RusikOk писал(а):какая версия ИАРа?
- Сообщения: 718
- Зарегистрирован: Сб апр 14, 2012 16:11:35
- Сообщения: 12
- Зарегистрирован: Ср окт 14, 2015 12:16:40
Так вышло что сначала подсел на стм32 , стм8 привлекли STM8S003F3P6 за 20руб на сей день. минусы только 100 кратное флэшперепрограммирование, и что нет своего бут-прошивальщика. В загашнике нашел STM32F103C8 на ней наваял свой простенький ST_LINK упрощенный развел один только swim прошил его через бут, обновил прошивку ST шной утилитой. и вуаля. STM8003 шьется очень быстро. На днях долго мучил ENC28J60 все же удалось запустить. Можно посмотрет теперь ь в сторону дешевейшего ip телефона и прочего
- Сообщения: 6452
- Зарегистрирован: Пт сен 13, 2013 13:11:31
Минусы? Стократная перезапись -- это не сказать, что совсем уж мало. Не каждое устройство на МК в процессе разработки требует такого большого числа перезаписей. Кроме того, даташит утверждает, что производитель не гарантирует сохранность содержимого флеша, если число перезаписей превысило цифру 100 и устройство эксплуатировалось при температуре 55 градусов двадцать лет. 55 градусов -- это довольно горячо. Температура на грани ожога, если описывать ее на уровне ощущений. И при таком нагреве МК должен отбарабанить не менее двадцати лет без перерыва. Чтобы соблюсти все условия для возможной порчи флеша через двадцать лет -- это еще надо постараться хорошенько. Но опять же, производитель не утверждает, что порча наступит обязательно. Вот и выходит, что для подавляющего большинства применений на данный параметр можно наплевать и забыть.RingQ писал(а):Так вышло что сначала подсел на стм32 , стм8 привлекли STM8S003F3P6 за 20руб на сей день. минусы только 100 кратное флэшперепрограммирование,


