Перейти к содержанию
    

esaulenka

Свой
  • Постов

    1 459
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Весь контент esaulenka


  1. timer task

    Здравствуйте. Скажите, ни у кого не возникало задачи сделать софт-таймеры? Уже не первый раз делаю что-то подобное в очередном проекте, хочется сделать унифицировано. Я это вижу по аналогии с FreeRTOS: отдельная задача, которая хранит в себе массив из n-цати структур. Структура состоит из таймера и коллбэка - по истечению таймера (один раз или периодически) вызывается коллбэк. Заполнение этого списка, перенастройка таймеров и т.д. - динамически, из остальных задач. По сравнению с FreeRTOS надо подумать и применить шаблонную магию, чтобы коллбэком мог быть метод произвольного класса. PS в mbed используют другой вариант API. Выглядит симпатичнее, но не совсем понятно, как оно внутри устроено: https://github.com/ARMmbed/mbed-os/blob/c12b433026beae5b3b769c27941bc6d7fe5d4b27/rtos/RtosTimer.h#L58
  2. Если бы у рыб была шерсть, то там обязательно были бы блохи. Не сомневайтесь :-) код из сообщения "Вот теперь больше на правду похоже. Переписал немного" выдаёт следующее: GetCrc16Table = D641 GetCrc16Cycle = 4B37 GetCrc16Simple = 4B37 https://godbolt.org/z/urjyup
  3. Скажите, а код в пдф-ке выдаёт три одинаковых результата? Я не умею в уме "переворачивать" полином, но какое-то подозрение, что код-таки разный. Спасибо за идею. Надо б допилить до макроса автовычисления констант, и можно смело применять там, где цикл по битам делать долго, а места под таблицу - жалко.
  4. Конкретно про этот случай мне Рабинович напел, но у арма на сайте написано, что они совместили замечательный компилятор шланг и их супер-оптимизированные библиотеки. Так что, может быть, не сильно-то он и отличается. Но, повторюсь, сам я не проверял - ни платную версию, ни бесплатную (я даже не знаю, умеют ли prebuilt версии с https://clang.llvm.org/ собирать под мелко-армы).
  5. Я понимаю, что мы в России живём, и знание лицензионных тонкостей тут э-э... не востребовано, но, всё-таки, бесплатный и свободный - вещи разные. Например, микрочип вполне легально берёт деньги за свой XC32, который, по сути, GCC (но при этом не сильно препятствует желающим собрать свой собственный XC32 забесплатно). И, разумеется, компилятор с нуля сейчас никто не пишет. Даже АРМ. Это clang. Допиленный-улучшенный-сертифицированный, но...
  6. Под фразой "руками нажать BOOT" я имел в виду именно P2.10=LOW. Вручную, перед сбросом (сброс - тоже вручную). Ну и симптомы автора (в загрузчик попасть можно, но потом всё отваливается) говорят о нестабильности связи, а не о невозможности входа в загрузчик. Если это не какой-то хитрый загрузчик, мимикрирующий под штатный.
  7. Необязательно, насколько я помню. Это несколько облегчает задачу (не надо руками нажимать BOOT и RESET), но работает и так. Проверял миллион лет назад на LPC2378. Вот-вот. Осциллографом на RX/TX сигнал посмотрите.
  8. Тут уже который день идёт разговор про VCL. Использовать VCL без компилятора от борланда/эмбаркадеро, мне кажется, ещё бОльшее безумие, чем собирать ими Qt ;-)
  9. Это вы предлагаете Qt билдером собрать? Интересное занятие, конечно: в теории, можно значительно расширить познания потрохов как Qt, так и билдера. То, что несовместимость VCL со всем остальным миром - это неоспоримое преимущество, мы уже поняли.
  10. Там вроде бы по другому сейчас считается - чем больше данных загрузил, тем больше запросов к API можешь сделать. Впрочем, скачать базу и поднять подобный сервис у себя можно бесплатно. Ну только своих приборов у вас будет тыщща. Или целых десять тысяч. А в гугл миллиард андроидов данные сливает...
  11. "STL за пять минут" - это покруче будет, чем "C++ за 21 день"! :-) ... г-но мамонта, криво-косо спортированное из дельфей в C++ builder. Имхо. Не являюсь экспертом по билдеру, но что-то мне кажется, что этот automatic reference counting - этакий std::shared_ptr, прибитый к TObject. Соответственно, std::vector из указателей на производные от TObject будет так же считать эти ссылки. Если это критично, пользуйтесь контейнерами из указателей. Впрочем, лично у меня программы почему-то не "всё время копируют", а ещё и модифицируют данные. Там и копия как-то к месту смотрится. Искренне рад за вас, я за пять минут вещи подобной сложности полностью освоить не могу... Да что уж там, за несколько лет не могу...
  12. Мне кажется, конкретно вам помочь не получится. Потому что вам надо сначала перестроить мышление и перестать сравнивать богоподобный дельфи и жалкую поделку Страуструпа, а только потом задумываться над конкретикой про контейнеры из STL. А всем остальным может помочь вот такая шпаргалка: https://habr.com/ru/company/infopulse/blog/194726/
  13. Самый низкий уровень оно умеет: показывает PID-адрес-данные-контролька. А дальше - беда, пришлось USB in Nutshell вспоминать. Правда, у меня этот самый низкий уровень и глючил...
  14. Я, кстати, искал косяк в USB с помощью Saleae. Для фулл-спид его вполне хватает.
  15. Я, конечно, понимаю желание отстоять свою точку зрения, но мне почему-то кажется, что написать исходное выражение в две строчки (прочитать во временную переменную a, вычесть бэ) сильно проще, чем писать прагмы. Я уж не говорю о переносимости этих прагм...
  16. Тут - очевидно, ничего. Осталось только объяснить этот конкретный случай компилятору. Вопрос, на самом деле, интересный. Я никогда активно не пользовался IAR'ом (только какие-то чужие проекты собрать), но с варнингом "два volatile'а в одном выражении" сталкивался. Вот только где, блин?..
  17. Если эти а и бэ - не просто переменные, а какие-нибудь регистры (о чём, в общем случае, компилятору неведомо), то от перестановки слагаемых можно поиметь оооочень интересные грабли в случае "для сброса флага считать регистр статуса, потом регистр данных".
  18. Скажите, а как такого добиться? Мне предлагают только выбрать из обычных "больших" фреймворков. У меня подозрение, что установщик не в курсе моего (триального) аккаунта. Куда логин-пароль вводить, я так и не понял... Золотые слова. Жаль только, брёвна в своих глазах плохо видно...
  19. Мда. Пока не наступишь на эти грабли, и не догадаешься... А проблема документирована, на самом деле: http://ww1.microchip.com/downloads/en/DeviceDoc/80000740D.pdf "The FDPLL96M exhibits high period jitter and is not suitable for accurate clocking." В новых ревизиях поправлено. Но насколько этот PLL inaccurate, ни атмел, ни микрочип не сознались...
  20. Конечно же, это не так. Правильный ответ "можно в некоторых сериях камней". Например, в F0, L0, L4, F3, F7. Ключевое слово для поиска в референс мануале - "Character match flag".
  21. Здравствуйте! Кто-нибудь пользуется сеггеровской отладочной консолью RTT ? Штука весьма удобная, но я никак не придумаю, как её нормально интегрировать в эклипс. Сеггеровская софтина при старте отладки запускает телнет-сервер, куда сыпятся все сообщения из контроллера. К этому серверу надо прицепиться телнет-клиентом. В принципе, телнет-клиент в эклипсе есть, но каждый раз соединяться после запуска отладки мне надоело. Про Segger RTT Viewer я в курсе (собственно, им и пользуюсь), но лишнее окно мешается...
  22. Я правильно понимаю, что величина этого выброса - заметно больше 5 вольт? Проверьте ещё разик, что земли у всех участников соединены. Попробуйте ткнуть осциллографом в TXD между контроллером и трансивером.
  23. Подозреваю, это отладчик у вас недостаточно корректно работает. При старте программы эти ошибки есть? Самый простой способ - чистить эти ошибки перед инициализацией. А вообще - ST'шники могли бы чистить ошибки перед началом записи...
  24. Ну, очевидно, что эта ошибка может возвращаться только из PageErase(). А тот, в свою очередь, зависит только от HAL_FLASHEx_Erase(). Вот тут и надо гулять отладчиком (если можно) или обвешивать всё printf'ами.
×
×
  • Создать...