-
- Я с ним тоже по граблям прошелся. Yft(741 знак., 03.02.2018 21:18)
- Мелкософт каждый месяц свежие патчи выпускает. Почему тогда индусам из STM нельзя косячить? :) - Codavr(30.01.2018 09:13)
- "Не связывайтесь с Кубом и LL!" и тут же "LL хорошо!" Дык с кем связываться? - Make_Pic(30.01.2018 07:28)
- если взять говно и мед, смешать, получится все равно гавно! Куб генерит ошибочный код с использованием библиотеки LL. А LL это CMSIS только только не для ядра, а для периферии, все через статик инлайн. LL развитие проекта SPL, только без IBAH(10 знак., 30.01.2018 09:07)
- С даташитом - lloyd(30.01.2018 07:36)
- и писАть на Ассемблере STM32 :-) - Лагунов(30.01.2018 08:25)
- почему бы и нет - m16_home(30.01.2018 08:38, ссылка)
- Писать на ассемблере нет смысла. misyachniy(596 знак., 30.01.2018 12:24)
- Настоящие мущщины
ходят в кексекодят в хексе! - SciFi(30.01.2018 08:56)- Это метросексуалы в хексе, а настоящие мущщины только в бинарном. На программаторе с тумблерами. - blackprapor(30.01.2018 09:00)
- метрохексуалы? - LightElf(30.01.2018 10:45)
- бинаросексуалисты :) - scorpion_с работы(30.01.2018 14:27, )
- Еще восьмеричнаясистема есть.
Очкосексуалыоктосексуалы. - Codavr(30.01.2018 17:11 - 17:21)
- Еще восьмеричнаясистема есть.
- бинаросексуалисты :) - scorpion_с работы(30.01.2018 14:27, )
- у меня до сих пор в тетрадке есть мои программы в кодах, что я набивал потом в память. Но тумблерами - это только в 1982 году. Потом уже появился монитор, где можно было ХЕКС. :-) - Лагунов(30.01.2018 10:43)
- метрохексуалы? - LightElf(30.01.2018 10:45)
- Это метросексуалы в хексе, а настоящие мущщины только в бинарном. На программаторе с тумблерами. - blackprapor(30.01.2018 09:00)
- почему бы и нет - m16_home(30.01.2018 08:38, ссылка)
- и писАть на Ассемблере STM32 :-) - Лагунов(30.01.2018 08:25)
- почему у меня ни разу настройки уарта не путал на трех разных моделях? Не везет мне... - Лагунов(29.01.2018 17:54)
- Ну вот по UARTу вопрос. Есть у куба функция передачи массива в UART: HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size). Ну тут всё понятно. И есть аналогичная функция приёма: HAL_UART_Receive_IT(UART_HandleTypeDef Звероящер(459 знак., 30.01.2018 10:30)
- У меня все принимаемые пакеты - нерегулярной длины. Командой HAL_UART_Receive_IT я всегда принимаю по 1 байту, складываю в отдельный буфер и включаю счетчик. При прекращении байт считаю, что пакет поступил. Понятно, что у меня скорости совсем не Лагунов(17 знак., 30.01.2018 10:48)
- получается что формально у Вас HAL, а фактически нет, так как не используется. - Nikolay801_(30.01.2018 11:37)
- ну зато одни и те же строки кода одинаковые и в F030, F446, L476. Причем и в USART, и в LPUART :-) - Лагунов(30.01.2018 13:49)
- Вы знаете толк в извращениях. Заведите два канала DMA, конец пакета фиксируйте по IDLE. Количество байт DMA сама посчитает, в подарок получите почти аппаратную защиту от переполнения буфера приёмника. - Evgeniy1294(30.01.2018 11:25)
- Ну вот так в конце-концов и сделал. Один канал на передачу, другой на приём. Приём оканчивается по IDLE, а передача - по TC. После флага ТС в обработчике ногу переключения драйвера дёргаю. Красота. Ни таймеров, ни промежуточных прерываний. Принял Звероящер(61 знак., 30.01.2018 14:37)
- "Приём оканчивается по IDLE" - в DMA? Учту. - Лагунов(30.01.2018 18:09)
- Нет, не так. IDLE надо в обработчике UART пасти. Словил IDLE залез в DMA регистр DMA_CNDTR и поглядел, сколько данных пришло. Прерывания от DMA вообще можно не использовать. Сделал буфер с запасом и крути его по кругу. - Звероящер(30.01.2018 20:56)
- Некоторые особо упорные, я слышал, связывали прием по UART со взводом таймера, который по состоянию тишины добегал до нуля и генерил прерывания. lloyd(53 знак., 30.01.2018 21:57)
- у меня еще в 8-битнике импульсы от приема UART перезапускали таймер. Как только он переставал перезапускаться и досчитывал до конца - прием окончен. - Лагунов(31.01.2018 08:16)
- Это не упорные :) Это стандартный способ. Например, стек freemodbus примерно так работает. Это уже в угоду кроссплатформенности написано, ибо тупой таймер и уарт у всех есть, а вот уарт определяющий свободную линию и дма - не у всех. - Звероящер(31.01.2018 05:45)
- Некоторые особо упорные, я слышал, связывали прием по UART со взводом таймера, который по состоянию тишины добегал до нуля и генерил прерывания. lloyd(53 знак., 30.01.2018 21:57)
- Нет, не так. IDLE надо в обработчике UART пасти. Словил IDLE залез в DMA регистр DMA_CNDTR и поглядел, сколько данных пришло. Прерывания от DMA вообще можно не использовать. Сделал буфер с запасом и крути его по кругу. - Звероящер(30.01.2018 20:56)
- "Приём оканчивается по IDLE" - в DMA? Учту. - Лагунов(30.01.2018 18:09)
- думаю, что когда припрет - так и сделаю. Пока периода кручения в штатном while() мне хватает на обработку одного байта . :-) - Лагунов(30.01.2018 11:32)
- Честно сказать, там делов минут на 10) Могу поделится примером, если нужно. - Evgeniy1294(30.01.2018 11:35)
- ага, перевел проекты на дма и круговой буфер (на прием), красиво получается :) - 0men(30.01.2018 12:52)
- Я в чем красивость? Все равно по байту вычерпывать? Я на передачу ДМА ставлю - обычно пакет передаешь и только по окончанию DTR надо опустить. - Andreas(30.01.2018 14:03)
- красивость в том, что не нужно улетать в прерывание каждый раз и тратить на связанное с этим кучу времени. А вычерпывать из буфера в основном теле - 0men(30.01.2018 14:06)
- Вот в этом часто тупость. Я до сих пор совместно с МК мучаюсь, ворочаюсь, натужно перелопачиваю байты. Такое напряжение! А потом посмотрел, что делает МК за 10 мксек (Карл!!! :-))) и понял - ни фига он (МК) там не перетруждается. :-) Ага, куча Лагунов(25 знак., 30.01.2018 18:13)
- я вот не стал маяться с дма, в прерывании принятые байты собираю в пакет с контролем заголовка и хвоста, очередь приемная из уже готовых пакетов. Передача наоборот, формирую очередь из байт которая выгребается в прерывании. И не каких сожалений. Nikolay801_(35 знак., 31.01.2018 09:54)
- кстати у меня у меня АЦП изначально только в DMA по кольцу. - Лагунов(31.01.2018 15:09)
- очень часто есть масса других прерываний, гораздо более важных. - 0men(30.01.2018 18:29)
- верно, есть. Я специально смотрел осциллографом. Аж до 7-8 мксек! И это с L476, который на 80МГЦ. А если F446, который на 180МГЦ? Я вот сейчас ломаю все свои старые заморочки в голове, когда у меня МК работал на 4-12 МГц... - Лагунов(30.01.2018 18:51)
- поэтому стоит различать "просто работает" и "красиво работает" :) - 0men(30.01.2018 18:54)
- это типа из авиастроительских баек? "Некрасивый самолет не полетит..." :-) - Лагунов(30.01.2018 19:13)
- я с этой байкой полностью согласен :) - 0men(30.01.2018 19:20)
- это типа из авиастроительских баек? "Некрасивый самолет не полетит..." :-) - Лагунов(30.01.2018 19:13)
- поэтому стоит различать "просто работает" и "красиво работает" :) - 0men(30.01.2018 18:54)
- верно, есть. Я специально смотрел осциллографом. Аж до 7-8 мксек! И это с L476, который на 80МГЦ. А если F446, который на 180МГЦ? Я вот сейчас ломаю все свои старые заморочки в голове, когда у меня МК работал на 4-12 МГц... - Лагунов(30.01.2018 18:51)
- я вот не стал маяться с дма, в прерывании принятые байты собираю в пакет с контролем заголовка и хвоста, очередь приемная из уже готовых пакетов. Передача наоборот, формирую очередь из байт которая выгребается в прерывании. И не каких сожалений. Nikolay801_(35 знак., 31.01.2018 09:54)
- А точно можно так? Насколько помню, там то ли счетчик обновляется в конце транзакции, то ли еще что-то остановило меня, когда рассматривал этот вариант. - Andreas(30.01.2018 14:13)
- точно - 0men(30.01.2018 14:21, ссылка)
- Спасибо, надо глянуть внимательней будет. Пару лет назад почему-то отверг этот вариант. - Andreas(30.01.2018 14:25)
- точно - 0men(30.01.2018 14:21, ссылка)
- Вот в этом часто тупость. Я до сих пор совместно с МК мучаюсь, ворочаюсь, натужно перелопачиваю байты. Такое напряжение! А потом посмотрел, что делает МК за 10 мксек (Карл!!! :-))) и понял - ни фига он (МК) там не перетруждается. :-) Ага, куча Лагунов(25 знак., 30.01.2018 18:13)
- красивость в том, что не нужно улетать в прерывание каждый раз и тратить на связанное с этим кучу времени. А вычерпывать из буфера в основном теле - 0men(30.01.2018 14:06)
- я держу в голове круговой буфер DMA для UART. :-) Один раз уже почти вставил. - Лагунов(30.01.2018 13:51)
- нужно себя заставить )) - 0men(30.01.2018 13:56)
- Я в чем красивость? Все равно по байту вычерпывать? Я на передачу ДМА ставлю - обычно пакет передаешь и только по окончанию DTR надо опустить. - Andreas(30.01.2018 14:03)
- ага, перевел проекты на дма и круговой буфер (на прием), красиво получается :) - 0men(30.01.2018 12:52)
- Честно сказать, там делов минут на 10) Могу поделится примером, если нужно. - Evgeniy1294(30.01.2018 11:35)
- Ну вот так в конце-концов и сделал. Один канал на передачу, другой на приём. Приём оканчивается по IDLE, а передача - по TC. После флага ТС в обработчике ногу переключения драйвера дёргаю. Красота. Ни таймеров, ни промежуточных прерываний. Принял Звероящер(61 знак., 30.01.2018 14:37)
- получается что формально у Вас HAL, а фактически нет, так как не используется. - Nikolay801_(30.01.2018 11:37)
- У меня все принимаемые пакеты - нерегулярной длины. Командой HAL_UART_Receive_IT я всегда принимаю по 1 байту, складываю в отдельный буфер и включаю счетчик. При прекращении байт считаю, что пакет поступил. Понятно, что у меня скорости совсем не Лагунов(17 знак., 30.01.2018 10:48)
- может потому что HAL, а не LL? - IBAH(29.01.2018 19:40)
- Ну если честно, то LL мне как-то не нужен был. Вполне HAL-а хватало. - Лагунов(30.01.2018 07:21)
- на самом деле хватало бы и LL, HAL это оверкил. но 1)LL запрятана в кубе. 2)взаимодействие Куба и LL совершенно не тестировано - IBAH(30.01.2018 08:58)
- ну и зачем тогда? Из принципа? Такая дикая аллергия на HAL? :-) - Лагунов(30.01.2018 10:44)
- на самом деле хватало бы и LL, HAL это оверкил. но 1)LL запрятана в кубе. 2)взаимодействие Куба и LL совершенно не тестировано - IBAH(30.01.2018 08:58)
- Ну если честно, то LL мне как-то не нужен был. Вполне HAL-а хватало. - Лагунов(30.01.2018 07:21)
- Ну вот по UARTу вопрос. Есть у куба функция передачи массива в UART: HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size). Ну тут всё понятно. И есть аналогичная функция приёма: HAL_UART_Receive_IT(UART_HandleTypeDef Звероящер(459 знак., 30.01.2018 10:30)
- Куб нужен, чтобы ноги распределить и настройки PLL прикинуть. В остальном он - симулятор индуса. - Evgeniy1294(29.01.2018 17:01)
- у вас перед глазами полный текст настроек периферии. Какие проблемы просто глазом посмотреть? Всё ж английским по белому написано. - Лагунов(29.01.2018 17:56)
- Есть такая штука CFInit ColdFire® Initialization Tool. Это просто песня: диалоги с настройками периферии, генерация кода инициализации в виде REG = VALUE. И никакого индусского говнокода. Эх, куда всё подевалось-то... - SciFi(29.01.2018 18:05, ссылка)
- Эталонный вариант, как не нужно делать. Nikolay801_(618 знак., 29.01.2018 18:11 - 30.01.2018 10:27)
- Ну вот чем тут гадостно? -> Лагунов(476 знак., 30.01.2018 07:24 - 07:27)
- Имя переменной: Хуярт1. Очень свежо! - Крок(31.01.2018 09:10)
- а то! - Лагунов(31.01.2018 09:59)
- Да нормально там все. Интерфейс удобный. Но концепция РТОСная. Статических объектов понаделали и таскай весь чемодан без ручки через все программу - IBAH(30.01.2018 09:17)
- Имя переменной: Хуярт1. Очень свежо! - Крок(31.01.2018 09:10)
- вспоминая корявую фантазийность названий регистров и управляющих битов у Freescale представляю как такой выхлоп читать... - Vit(30.01.2018 00:19)
- Все дело в цене на билет!(с) - IBAH(29.01.2018 19:43)
- У интела помнится был тулз для 51 и 196. Галочки натыкал а он тебе код с настройками регистров. - 1111111(29.01.2018 18:26)
- для 51х у силабса до сих пор так. - POV_(30.01.2018 00:07, )
- Есть такая штука CFInit ColdFire® Initialization Tool. Это просто песня: диалоги с настройками периферии, генерация кода инициализации в виде REG = VALUE. И никакого индусского говнокода. Эх, куда всё подевалось-то... - SciFi(29.01.2018 18:05, ссылка)
- у вас перед глазами полный текст настроек периферии. Какие проблемы просто глазом посмотреть? Всё ж английским по белому написано. - Лагунов(29.01.2018 17:56)