Зарегистрирован: Вс мар 27, 2022 15:49:30 Сообщений: 16
Рейтинг сообщения:0
ну... я бы в таком случае посмотрел в отладчике, во что оно скомпилировалось. Но у меня STVD с космиком;-) Или попробовать другие операторы: if, else ...
Зарегистрирован: Ср янв 06, 2010 22:02:25 Сообщений: 210 Откуда: Уфа сити
Рейтинг сообщения:0
наверно еще раз влезу в "STVD с космиком" и попробую перенести туда этот участок кода, благо, он мелкий... а в STVD с SPL работаете или напрямую регистрами/портами рулите?
_________________ Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Зарегистрирован: Вс мар 27, 2022 15:49:30 Сообщений: 16
Рейтинг сообщения:0
И то, и другое. SPL помогает быстрее разобраться с использованием внутренностей контроллера, а затем, особенно если критично быстродействие, можно и оптимизировать.
Писать без SPL, естественно - напрямую регистрами (удобно макросы всякие поопределять, можно как пример у меня в гитхабе глянуть). А для реакции на возрастающий или спадающий фронт, если ничего, кроме прерываний, не осталось, лучше прерывание настроить и конечный автомат забульбенить. Ну, если же совсем по-абдурински хочется, то как-то так:
И аналогично сделать функцию на спадающий фронт. Соответственно, вызывать нужную функцию и проверять, что вернула: если 1 - все ОК, если 0 - был таймаут. Таймаут, в принципе, лучше бы таймером реализовать…
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Ромыч, есть же даташит на камень, лень мне искать, честно говоря. Вряд ли выше 8МГц, но скорей всего, не выше 2МГц. Плюс трата ресурсов на всякие дела - итого, полезная скорость будет совсем небольшой. Чтобы была нормальная, нужно использовать аппаратные возможности - тот же SPI, например, или USART.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Зарегистрирован: Вс мар 27, 2022 15:49:30 Сообщений: 16
Рейтинг сообщения:0
В любом случае чтение или запись 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
Зарегистрирован: Ср янв 06, 2010 22:02:25 Сообщений: 210 Откуда: Уфа сити
Рейтинг сообщения:0
Спасибо за советы, до дома доберусь, попробую! Ещё глупенький вопрос... Вот uart, spi,ic2 вроде все понятно, если использовать их по назначению. Не понятно как их использовать не по назначению, например как в моем случае. То есть не совсем понимаю отличие железной реализации протокола от софтовой
_________________ Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Зарегистрирован: Вс мар 27, 2022 15:49:30 Сообщений: 16
Рейтинг сообщения:0
Для ненормативного использования нужно использовать 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_FIRSTBIT_LSB), частоту делим на 32 (SPI_BAUDRATEPRESCALER_32), т.к. TM 1638 не быстрый (в устройстве тактовая 16 MHz), передача по одной линии MOSI (SPI_DATADIRECTION_1LINE_TX). Используя spl для инициализации регистров периферии, очень желательно заглядывать в datasheet, чтобы понимать, как оно работает, а иногда и самому более удобную функцию написать;-)
В документации есть временнЫе диаграммы и примеры использования.
Ромыч, вот здесь у меня куча всякой всячины под STM8. И без позорных SPL. Я подозреваю, что если бы STM8 была еще более популярной, под нее и свой калокуб бы замутили! Чтобы "снизить порог вхождения" и экспоненциально увеличить количество быдлокода и жертв на производстве.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Добрый день! Пытаюсь обуздать 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, а тут, на голой СТМке как будто камня не хватает для выборки сигнала..
Здравствуйте , уважаемые форумчане. Лет 20 писал под Пики, заказчик поставил задачу разработать устройства на STM8. Сунулся всё хорошо , прекрасная маркиза. Но STVD и программатор ссылки только на оф. сайт https://www.st.com. который заблокирован для РФ. Бывалые советуют через VPN. Торрент не помог. Или не нашел. Хотелось узнать как эту проблему Вы решаете.
Там ещё регистрироваться надо. В последний раз успешно все скачивалось через тор-браузер. Сам сайт не заблокирован. Прекрасно открывается. Только скачивание они заблокировали с российских ip.
Под линуксом все нормально работает, и никаких ВПН не надо.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Уважаемый JackSmith, Зашел через Тор. но видно запоминает почту. я засветил два адреса. И ругается , но по другому. Видите ли браузер не нравиться. Типа я заходил с другого.
Вариантов как всегда два. Просить у вас ссылку или Продолжить на PIC. Могу рассчитаться коньяком. Программатор ST-link V2 для STM8 / Stm32 нашёл , добрые люди выложили. Работаю в одной конторе удалённо. Есть интересные задачи. от Эхолотов до автоматической проверки кабелей. Заказчики приходят от Сколково. Одна из них стабилизация режима ректификационной колонны для дома. Зам. директора планирует выпуск. С этим изделием точно не кинут. Но пахнет ПИД регулятором с транспортной задержкой.
Да, под STM8 есть лишь один свободный компилятор - SDCC. Настойчиво советую выкинуть мастдайку и разрабатывать, пользуясь исключительно свободным ПО. Все равно в ближайшем будущем за использование проприетарщины в бюджетных учреждениях будут штрафовать.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения