Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

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

Вт окт 25, 2022 16:36:21

ну... я бы в таком случае посмотрел в отладчике, во что оно скомпилировалось. Но у меня STVD с космиком;-)
Или попробовать другие операторы: if, else ...

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

Вт окт 25, 2022 16:39:39

наверно еще раз влезу в "STVD с космиком" и попробую перенести туда этот участок кода, благо, он мелкий... а в STVD с SPL работаете или напрямую регистрами/портами рулите?

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

Вт окт 25, 2022 16:44:53

И то, и другое. SPL помогает быстрее разобраться с использованием внутренностей контроллера, а затем, особенно если критично быстродействие, можно и оптимизировать.

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

Вт окт 25, 2022 16:46:55

Писать без SPL, естественно - напрямую регистрами (удобно макросы всякие поопределять, можно как пример у меня в гитхабе глянуть).
А для реакции на возрастающий или спадающий фронт, если ничего, кроме прерываний, не осталось, лучше прерывание настроить и конечный автомат забульбенить. Ну, если же совсем по-абдурински хочется, то как-то так:
Код:
static uint8_t waitNxtRise(){
  uint32t_i;
  for(i = 0; i < 100000 && (PORT(LATCH_PORT, IDR) & LATCH_PIN); ++i);
  if(i == 100000) return 0;
  for(i = 0; i < 100000 && ~(PORT(LATCH_PORT, IDR) & LATCH_PIN); ++i);
  if(i == 100000) return 0;
  return 1;
}

И аналогично сделать функцию на спадающий фронт. Соответственно, вызывать нужную функцию и проверять, что вернула: если 1 - все ОК, если 0 - был таймаут. Таймаут, в принципе, лучше бы таймером реализовать…

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

Вт окт 25, 2022 16:58:46

Eddy_Em, а какую максимальную частоту, даже скорее, минимальную ширину импульса можно подобным образом отлавливать? (При частоте stm 16mhz)

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

Вт окт 25, 2022 17:05:48

Ромыч, есть же даташит на камень, лень мне искать, честно говоря. Вряд ли выше 8МГц, но скорей всего, не выше 2МГц. Плюс трата ресурсов на всякие дела - итого, полезная скорость будет совсем небольшой. Чтобы была нормальная, нужно использовать аппаратные возможности - тот же SPI, например, или USART.

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

Вт окт 25, 2022 17:26:15

В любом случае чтение или запись gpio следует делать через прямое обращение к портам, т.к. в spl фактически оно и делается, но при его использовании тратятся лишние такты на вызов функции. Вот оно, например:
/**
* @brief Reads the specified GPIO input data pin.
* @param GPIOx : Select the GPIO peripheral number (x = A to I).
* @param GPIO_Pin : Specifies the pin number.
* @retval BitStatus : GPIO input pin status.
*/
BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin)
{
return ((BitStatus)(GPIOx->IDR & (uint8_t)GPIO_Pin));
}
Определения можно посмотреть в gpio.h

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

Вт окт 25, 2022 18:04:07

Спасибо за советы, до дома доберусь, попробую! Ещё глупенький вопрос... Вот uart, spi,ic2 вроде все понятно, если использовать их по назначению. Не понятно как их использовать не по назначению, например как в моем случае. То есть не совсем понимаю отличие железной реализации протокола от софтовой

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

Вт окт 25, 2022 18:38:03

Для ненормативного использования нужно использовать datasheet cd00190271-stm8s-series-and-stm8af-series-8bit-microcontrollers-stmicroelectronics. Там достаточно много настроек. Например, мне удалось успешно подключить к I2C дисплей TM1637 (там протокол похож, но не передаётся slave address, поэтому потребовался некоторый "хакинг"). А с SPI + TM1638 вообще всё просто: вот пример инициализации:
SPI_DeInit();
SPI_ITConfig(SPI_IT_TXE, DISABLE);

SPI_Init(SPI_FIRSTBIT_LSB, SPI_BAUDRATEPRESCALER_32, SPI_MODE_MASTER, SPI_CLOCKPOLARITY_HIGH, SPI_CLOCKPHASE_2EDGE, SPI_DATADIRECTION_1LINE_TX, SPI_NSS_HARD, (uint8_t)0x07); // SPI_DATADIRECTION_2LINES_FULLDUPLEX SPI_BAUDRATEPRESCALER_32

SPI_BiDirectionalLineConfig(SPI_DIRECTION_TX);
SPI_CalculateCRCCmd(DISABLE);
SPI_Cmd(ENABLE);

В данном случае видно, что передача, начиная с младшего бита (SPI_FIRSTBIT_LSB), частоту делим на 32 (SPI_BAUDRATEPRESCALER_32), т.к. TM 1638 не быстрый (в устройстве тактовая 16 MHz), передача по одной линии MOSI (SPI_DATADIRECTION_1LINE_TX).
Используя spl для инициализации регистров периферии, очень желательно заглядывать в datasheet, чтобы понимать, как оно работает, а иногда и самому более удобную функцию написать;-)

В документации есть временнЫе диаграммы и примеры использования.

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

Вт окт 25, 2022 19:06:23

Ромыч, вот здесь у меня куча всякой всячины под STM8. И без позорных SPL.
Я подозреваю, что если бы STM8 была еще более популярной, под нее и свой калокуб бы замутили! Чтобы "снизить порог вхождения" и экспоненциально увеличить количество быдлокода и жертв на производстве.

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

Вс ноя 13, 2022 15:09:39

Добрый день! Пытаюсь обуздать STM8. Задача - сымитировать работу сдвигового регистра. На всякий случай поясню суть: после сигнала latch идет серия тактовых сигналов, по которым отдаем в DATA биты по очереди. Проблема в том, что что latch читается легко, а вот с чтением CLK возникли проблемы. Не пойму, что не так, но либо читается один импульс, либо не читается вообще. СТМка работает на частоте 16мгц.

График сигналов в аттаче.
photo_2022-10-25_17-05-05.jpg


Код функции
Код:
void proc(void){ 
  while(GPIO_ReadInputPin(LATCH_PORT,LATCH_PIN)==0){};    // Ждем изменения latch   
  for (u8 i = 0; i < 8; i++) {   
    if (data & (1 << i))
      dataL();               // сброс бита
    else
      dataH();                // установка бита
   
     while( GPIO_ReadInputPin(CLK_PORT, CLK_PIN)==0){};    // Ждем изменения clk
  }
 
  dataH(); 
}


В строке while( GPIO_ReadInputPin(CLK_PORT, CLK_PIN)==0) ожидание что 0, что 1 дает один и тот же результат - биты отдаются сразу пачкой, такое ощущение, что чтение порта не работает, хотя сконфигурирован как вход GPIO_Init(CLK_PORT, (GPIO_Pin_TypeDef)(CLK_PIN), GPIO_MODE_IN_FL_NO_IT);

Подобный код на ардуине работал превосходно, даже с учетом тормозов фреймворка Arduino, а тут, на голой СТМке как будто камня не хватает для выборки сигнала..
Ассемблерный листинг можно посмотреть?

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

Вс ноя 13, 2022 23:01:53

Здравствуйте , уважаемые форумчане.
Лет 20 писал под Пики, заказчик поставил задачу разработать устройства на STM8.
Сунулся всё хорошо , прекрасная маркиза. Но STVD и программатор ссылки только на оф. сайт https://www.st.com. который заблокирован для РФ. Бывалые советуют через VPN.
Торрент не помог. Или не нашел.
Хотелось узнать как эту проблему Вы решаете.

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

Вс ноя 13, 2022 23:10:07

программатор ST-link V2 для STM8 / Stm32 . установка драйвера где это счастье можно взять.
Заранее спасибо . Или всё-таки через VPN?

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

Пн ноя 14, 2022 05:42:07

Там ещё регистрироваться надо. В последний раз успешно все скачивалось через тор-браузер.
Сам сайт не заблокирован. Прекрасно открывается. Только скачивание они заблокировали с российских ip.

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

Пн ноя 14, 2022 08:07:34

Под линуксом все нормально работает, и никаких ВПН не надо.

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

Пн ноя 14, 2022 09:47:34

Уважаемый JackSmith, Зашел через Тор. но видно запоминает почту. я засветил два адреса.
И ругается , но по другому. Видите ли браузер не нравиться. Типа я заходил с другого.

Вариантов как всегда два. Просить у вас ссылку или Продолжить на PIC.
Могу рассчитаться коньяком.
Программатор ST-link V2 для STM8 / Stm32 нашёл , добрые люди выложили.
Работаю в одной конторе удалённо. Есть интересные задачи. от Эхолотов до автоматической проверки кабелей. Заказчики приходят от Сколково.
Одна из них стабилизация режима ректификационной колонны для дома. Зам. директора планирует выпуск. С этим изделием точно не кинут. Но пахнет ПИД регулятором с транспортной задержкой.

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

Пн ноя 14, 2022 10:23:47

Под линуксом все нормально работает, и никаких ВПН не надо.


У меня и в виндовоэе с мозиллы всё открывается без проблем.

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

Пн ноя 14, 2022 10:36:26

stvd+stvp
https://disk.yandex.ru/d/PmjwIebgZ9997Q

драйвера на stlink

https://disk.yandex.ru/d/GzESLuxbdmjBFw

если нужен будет Си-компилятор, ищите на сайте Cosmic. его пока дают скачивать без танцев с бубном.

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

Пн ноя 14, 2022 11:29:42

ну, небольшие танцы там иногда с получением лицензии бывают, но в этом случае письменный запрос в течение суток обрабатывают и присылают файлик

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

Пн ноя 14, 2022 12:09:06

Да, под STM8 есть лишь один свободный компилятор - SDCC.
Настойчиво советую выкинуть мастдайку и разрабатывать, пользуясь исключительно свободным ПО. Все равно в ближайшем будущем за использование проприетарщины в бюджетных учреждениях будут штрафовать.
Ответить