![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Уже полдня бьюсь с АЦП через ПДП. На стадии вывода значений возникают непонятные зависания. Что только не делал. И вдруг: бамц, озарение! Если убрать математические операции (деление, умножение, взятие остатка), никакого зависания нет. А как только я пытаюсь отобразить значение, вылезает ошибка.
То ли микроконтроллер дохлый, то ли какая-то хитрость есть в том, чтобы STM32F042 научить целочисленной арифметике кроме сложения и вычитания...
То ли микроконтроллер дохлый, то ли какая-то хитрость есть в том, чтобы STM32F042 научить целочисленной арифметике кроме сложения и вычитания...
no subject
Date: 2017-01-15 03:07 pm (UTC)no subject
Date: 2017-01-15 04:22 pm (UTC)Ищу нормальные алгоритмы.
no subject
Date: 2017-01-15 04:25 pm (UTC)Очень часто одно тянет другое очень косвенно.
no subject
Date: 2017-01-15 03:07 pm (UTC)no subject
Date: 2017-01-15 04:23 pm (UTC)Но я, конечно, не ожидал, что у cortex-M0 нет аппаратной операции целочисленного деления. Блин...
no subject
Date: 2017-01-15 04:39 pm (UTC)no subject
Date: 2017-01-15 05:14 pm (UTC)no subject
Date: 2017-01-15 05:12 pm (UTC)Я сталкивался с багом софтового деления у фрискейла - при использовании операции деления в коротких прерываниях возможно undefined behaviour. Глянь в еррату, может есть что похожее.
no subject
Date: 2017-01-15 05:35 pm (UTC)Для БТА я вообще не буду в код вставлять деление/умножение — буду пересылать калибровочные значения и "сырые" данные АЦП, а "апельсинка" пусть вычисляет.
Да уж, что-то не ожидал я, что ядро M0 настолько кастрированное. Даже STM8 со своими жуткими восьмибитными инструкциями мне такой заподлянки не выкручивал: sdcc нормально реализует софтовое деление для длинных чисел.
Скорее всего, здесь облом в opencm3. Нужно либо под себя все переделать, чтобы только заголовочные файлы использовать (а библиотеку брать от gcc), либо смириться. Выбираю второе.
no subject
Date: 2017-01-15 06:12 pm (UTC)Уверен, что у тебя косяк не в как таковом делении, а в чем-то другом. И даже если ты его сейчас замаскируешь костылями - он с большой вероятностью потом все равно всплывет.
Одно из основных правил качественной разработки - если что-то глючит, то разобраться, почему именно оно так происходит.
no subject
Date: 2017-01-15 06:52 pm (UTC)no subject
Date: 2017-01-15 06:56 pm (UTC)И нахрена оно нужно? Ты бы еще под SPL писал бы..
А пеняет еще на микроконтроллер...
no subject
Date: 2017-01-15 07:02 pm (UTC)no subject
Date: 2017-01-15 07:13 pm (UTC)no subject
Date: 2017-01-15 07:22 pm (UTC)CMSIS - он только для всего семейства общее содержит, а уже конкретно для STM32 нужно где-то брать заголовки.
no subject
Date: 2017-01-15 07:31 pm (UTC)Те дефайны что ты написал это и есть цмсис. к опенцм3 вообще никакого отношения не имеет.
http://www.keil.com/dd/docs/arm/st/stm32f0xx/stm32f0xx.h
no subject
Date: 2017-01-15 07:43 pm (UTC)У меня в сниппетах такой есть в CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h. Но в нем мне не нравится, что описания регистров через структуры делаются. В opencm3 удобней.
Найти бы где готовый пример, чтобы проверить... Я те же сниппеты без мучений в течение 4-8 часов не соберу: там Makefile отсутствует. Поди-ка собери все, что там им нужно...
Где бы нормальный Makefile взять, чтобы скомпилировать примеры вообще безо всяких левых библиотек и стартап-файлов?
no subject
Date: 2017-01-15 07:47 pm (UTC)Тут ты формально прав, да, это надо было мне уточнить. Но так сложилось, что все давно это называют цмсисом и не парятся :)
>>не нравится, что описания регистров через структуры делаются
И в чем же плюсы такого? Структуры - наоборот удобно.
>>Makefile отсутствует.
а нефиг говносредами пользоваться.
Я вот одну кнопочку нажимаю и все готово.
no subject
Date: 2017-01-15 07:50 pm (UTC)Ну, учитывая то, что gcc в отличие от sdcc умеет оптимизировать, то действительно, все равно.
> а нефиг говносредами пользоваться.
Я как раз говносредами не пользуюсь. У меня IDE geany и компилятор gcc.
> Я вот одну кнопочку нажимаю и все готово.
Мне больше нравится видеть всю информацию в консоли, поэтому хоть и могу на хоткеи все повесить, лучше набрать make, посмотреть выхлоп, а затем уже make flash.
no subject
Date: 2017-01-15 07:53 pm (UTC)no subject
Date: 2017-01-15 07:58 pm (UTC)no subject
Date: 2017-01-15 08:01 pm (UTC)no subject
Date: 2017-01-15 08:38 pm (UTC)Непонятно только, как туда usb и (в случае необходимости) lwip прикручивать: в opencm3-то все сделано единым массивом, никаких лишних движений не нужно делать.
no subject
Date: 2017-01-15 08:42 pm (UTC)С usb/ethernet/sdio (и может еще парой сложных блоков) - да, без готовых решений довольно заморочно вручную писать, это минус. Все остальное пишется влет на регистрах без заморочек.
no subject
Date: 2017-01-15 07:50 pm (UTC)я тоже этот вот .h подпихиваю в GCC из cmd
из него уже stm32f030x6.h подставляется
no subject
Date: 2017-01-15 07:51 pm (UTC)no subject
Date: 2017-01-15 09:17 pm (UTC)ps не скажу, что помню откуда и для чего часть ключей GCC :)
-D STM32F030x4 - откуда то из прошлого там например
no subject
Date: 2017-01-15 09:23 pm (UTC)Ладно, буду разбираться как-нибудь в другое время.