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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

oleg110592 спасибо!

переписал код с AVR для DHT22, там задержки на десятки нсек ногодрыгом
пока подобрал задержки циклами, но видел, что на stm8 c этим могут быть проблемы
какого рода проблемы?

подобрал задержки на голом stm8s103f3 и проверил датчик с частотой 2/4/8/16 мгц
потом перенес код в рабочее устройство с STM8S003F3 где работает TIM2, ADC, I2C и UART
заработало только на 16 мгц, на частотах ниже тайминги не попадают

и вообще как то странно себя МК повел, до добавления кода DHT22 который просто одна функция в теле main, все работало отлично на любой из чатсот 2/4/8/16
после добавления в main кода чтения dht основной цикл main исполняться перестал, это стало понятно по отсутствию ответов на UART
делаю пошаговую отладку - на строке до основного цикла в теле main там где включается ADC отладчик зависает, т.е. при нажатии F10 не происходит перехода на следующую строку
если поставить точку останова внутри хандлера ADC то туда исполнение прилетает бесконечно без возврата в main
при этом если поднять частоту до 16 - все работает как надо и не зависает на ADC
так же работает нормально если закоментарить код DHT ниже в основном цикле main
глюк или я что то упускаю?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

можт потому что программные задержки в STM8 организовывать плохо, "виноват" трехуровневый конвейер, таймер не зря изначально предлагался.
Тут мучения и решения с программными задержками описаны:
http://we.easyelectronics.ru/STM8/progr ... -stm8.html
http://we.easyelectronics.ru/STM8/progr ... ast-2.html
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Сообщение scorpi_0n »

Программные задержки всегда плохо. Особенно микросекундные. И дело не в СТМ с его конвейером. И не в таймере, а в его неправильном применении и в неправильном способе решении задачи. Там всё решается элементарно на уровне железа и прерывания. Нужно только абстрагироваться от устаревших решений на АВР.
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

У dht примитивный протокол. Сдается мне решение с прерываниями будет более громоздким с непонятно каким выигрышем кроме "это правильно"
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Сообщение scorpi_0n »

Как по мне наоборот. У СТМ8 развитые прерывания. Не стоит их бояться. Главное правильно расставить приоритеты.
Реклама
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

боязнь здесь вобще ни при чем
это вопрос целесообразности
есть у вас пример реализации протокола DHT или похожего на прерываниях?
Реклама
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

какая логика должна быть при работе с передачей на UART (UART1) с использованием буфера?
- первый вариант - в putc заношу бвйт в софтверный FIFO буфер и активирую прерывание по готовности TX. Из предположения, что при этом сработает прерывание, в прерывании я вынимаю байт из FIFO и заношу в регистр данных для передачи. Если буфер пуст - отключаю прерывания
- второй вариант - в putc смотрю, если FIFO пуст, а а TX готов - просто вношу байт в регистр TX для передачи, если не пуст или TX не готов то заношу байт в FIFO и все. Прерывание включаю один раз при инициализации
Мучитель микросхем
Аватара пользователя
Сообщения: 424
Зарегистрирован: Чт май 14, 2015 15:11:39
Откуда: Саратов

Сообщение FireProoF »

Всем привет. Есть у кого опыт измерения напряжения питания. В курсе, что его можно измерить с помощью внутреннего ИОН, но как его подать на канал АЦП?
P.S. и что за VCAP. В ДШ: 1.8V regulayor capacitor. Не оно?
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Его не надо подавать на канал АЦП, он уже давно подключен к одному из старших(внутренних) 8-ми каналов мультиплексора, его надо только выбрать а какой именно канал выбирать для этого - заглянуть в даташит.
Там же есть канал подключенный напрямую к AGND и в некоторых чипах рядом же находится сигнал со встроенного терморезистора.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 424
Зарегистрирован: Чт май 14, 2015 15:11:39
Откуда: Саратов

Сообщение FireProoF »

Ах да, забыл указать, что использую STM8S103F. Кажется терморезистор в L-серии. Попозже посмотрю в ДШ про каналы. Когда бегло смотрел, то не находил.
Пролистал еще раз ДШ и РМ и ничего про заветный опорный источник не нашел.
У меня stm8s в корпусе SO20.
Родился
Сообщения: 6
Зарегистрирован: Чт апр 07, 2016 09:44:42

Сообщение nuisance »

EugenyAM писал(а):
Сейчас готовим цикл статей об освоении STM8 с нуля на личных примерах, скоро будет первая - про мигание светодиодом
Первая статья опубликована, ждем комментариев...
http://eugenemcu.ru/publ/11-1-0-66
Хорошая идея, но вот зайти по ссылке не получается :(
Вылезает вот это
СпойлерИзображение
Это не совсем то, что я ожидал увидеть :)
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

вопросы есть по отладке в IAR

- когда используешь Debug without download он должен стартовать с main так же как Download & Debug?
почему то стартует где попало

- отчего может быть такое - после остановки по точке останова при нажатии F10 не переходит на следующую строку, даже по F5 зависает на строке с точкой отсанова
чтобы пройти дальше надо выключить точку останова и тогда идет дальше
раньше такого не было, может я какие-то настройки сбил
Мучитель микросхем
Аватара пользователя
Сообщения: 424
Зарегистрирован: Чт май 14, 2015 15:11:39
Откуда: Саратов

Сообщение FireProoF »

Подпаялся я к выводу Vcap до конденсатора ради 1.8В. Подключил его к АЦП. На выходе АЦП при питании МК - 561, что соответствует 3.3В опорного напряжения АЦП, хотя я питаю МК 4В специально. :dont_know:
Держит паяльник хвостом
Аватара пользователя
Сообщения: 960
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда

Сообщение GARMIN »

Я экспериментировал с таким методом.
Вот здесь:
http://forum.easyelectronics.ru/viewtop ... 33&t=20021
Контактная информация:
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

UART с буферами и прерываниями разобрался
Еще такой вопрос
Когда велючен RX receiver можно ли считывать значение этого пина обычным образом? Т.е. Можно ли знать ноль там сейчас или единица?
Мучитель микросхем
Аватара пользователя
Сообщения: 424
Зарегистрирован: Чт май 14, 2015 15:11:39
Откуда: Саратов

Сообщение FireProoF »

Всем привет. В чем разница между функциями GPIO_ReadOutputData() и GPIO_ReadInputData()? Взято из библиотечного файла:
Спойлер/**
* @brief Reads the specified GPIO output data port.
* @note The port must be configured in input mode.
* @param GPIOx : Select the GPIO peripheral number (x = A to I).
* @retval GPIO output data port value.
*/
uint8_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)
{
return ((uint8_t)GPIOx->ODR);
}

/**
* @brief Reads the specified GPIO input data port.
* @note The port must be configured in input mode.
* @param GPIOx : Select the GPIO peripheral number (x = A to I).
* @retval GPIO input data port value.
*/
uint8_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
{
return ((uint8_t)GPIOx->IDR);
}
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

FireProoF, читать RM на тему портов, Там и найдете различия регистров ODR и IDR ...
Мучитель микросхем
Аватара пользователя
Сообщения: 424
Зарегистрирован: Чт май 14, 2015 15:11:39
Откуда: Саратов

Сообщение FireProoF »

Всем привет. В stm8s103 UART1 имеет пины: D4 - UART_CK, D5 - UART_TX, D6- UART_RX. Мне нужен D4 для других целей. Можно ли сделать так, чтоб UART не пользовался им?
Держит паяльник хвостом
Аватара пользователя
Сообщения: 960
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда

Сообщение GARMIN »

Control register 3 (UART_CR3)
Bit 3 CLKEN: Clock enable
This bit allows the user to enable the SCLK pin.
0: SLK pin disabled
1: SLK pin enabled
Контактная информация:
Родился
Сообщения: 13
Зарегистрирован: Сб май 07, 2016 16:19:58

Сообщение Casper17 »

Здравствуйте. Хочу использовать в своем проекте STM8f003. C STM никогда не работал. И не могу найти описание регистров и их назначения. Необходимо UART и SPI. Какие даташиты смотреть? У ATMEL даташиты мне очень понравились, а у STM ничего подобного найти не могу. Все разбросано. Подскажите, дайте пожалуйста ссылки)) И еще такой вопрос, как лучше, проще работать с STM на прямую с регистрами или использовать библиотеки SPL?
Ответить

Вернуться в «Разные вопросы по МК»