Jump to content

    

Сергей Борщ

Модераторы
  • Content Count

    9332
  • Joined

Everything posted by Сергей Борщ


  1. Собственно на фото. 2К4 вроде намекает на набор резисторов 2.4 кОм, но хочется найти на нее хоть какую-то документацию с цоколевкой. Нашел - блок резисторов Б19-1. Но цоколевка пока не попадается.
  2. Ах вы про функцию целиком? Ну, это цель дальнейших исследований.
  3. Не могу придумать, когда это может понадобиться. Не подскажете?
  4. Для тех, кто не боится плюсов (код для gcc, у которого нет указателя на невыровненные данные): unaligned.h использование: void otg_core::tx_fifo::write(void const * from, uint_fast16_t size) { auto pSrc = reinterpret_cast<unaligned<uint32_t> const *>(from); size = (size + 3) / 4; // bytes -> words while(size--) FIFO = *pSrc++; }
  5. Я не видел эту кубу-иде, но если в ней сервером выступает openocd, то он в директории запуска ищет файл openocd.cfg, в который можно засунуть хоть черта. Вот так я "замораживаю" таймера на F0: proc enable_debug {} { # enable DBG clocks set APB2_ENR [mrw 0x40021018 ] mww 0x40021018 [expr $APB2_ENR | (1 << 22)] #DBGMCU_CR: enable debug in STOP and STANDBY modes mww 0x40015804 0x00000006 #DBGMCU_APB1_FZ: freeze timers 3, 6, 7, 14, RTC, WWDG, IWDG, SMBUS timeout on halt mww 0x40015808 0x00201D32 #DBGMCU_APB2_FZ: freeze timers 1, 15, 16, 17 on halt mww 0x4001580C 0x00070800 # restore APB2_ENR mww 0x40021018 $APB2_ENR } $_TARGETNAME configure -event examine-end { enable_debug } $_TARGETNAME configure -event reset-end { enable_debug clear_reset_flags }
  6. Зато я узнал, что бывают и сравнительно свежие STM32 без встроенной подтяжки. Я думал, они закончились на F103. Что пытался сэкономить производитель (вопрос риторическй)?
  7. Последовательность выглядит правильно. А вот контрольная сумма у адреса судя по https://tomeko.net/online_tools/crc8.php?lang=en и https://crccalc.com одинаково не сходится. Вы ошиблись или при чтении адреса, или при его копировании.
  8. Перетерлись провода к этим двигателям и коротнули между собой или на корпус?
  9. Боюсь, что openocd пишет 128к всегда, когда не знает, как прочитать этот объем правильно. DFU же у вас работает как-то, а чудес не бывает. Ну тогда не знаю. Я имел подобные симптомы именно с неправильно настроенным тактированием (VladislavS написал и я сразу вспомнил свой случай).
  10. Вы бы сначала включили вместо обмоток двигателя резисторы килоомные и убедились, что на выходах есть напряжения ожидаемой формы.
  11. Чему равен этот DADDR_EF? А, нагуглил. Криминала не видно. Подумаю еще. Больше всего похоже на проблемы с линией D- (но вы пишете, что DFU у вас определяется) или, как писал VladislavS, на проблемы с тактированием. Проверьте на всякий случай еще раз - делитель точно на 1.5 устанавливается?
  12. Давайте смотреть, что делает _usb_reset(usbp)
  13. Сносите. Никакого желания наблюдать, как лично вы пытаетесь угробить свою собственную страну.
  14. Нажмите кнопку "Жалоба" в нужном сообщении и напишите, что именно вы хотите там исправить. У меня нет прав модератора в этом разделе, а модератор раздела может не обратить внимание на ваше сообщение в теме.
  15. Да хоть горшком назовите. При возникновении аппаратного события USB ядро вызывает обработчик прерывания, адрес которого записан в векторе 0x0000 0168 (USB High priority interrupt) или 0x0000 016C (USB Low priority interrupt). Вот ту функцию, которая называется USB_чего-то-там_Handler() и указатель на которую вы или ваша библиотека записали в соответствующий вектор, вам и надо смотреть.
  16. Не используйте. Ваше полное право. Но избавьте нас от демонстраций глубин вашей души.
  17. usb_event() - это не обрабтчик прерывания USB, а некая функция, которая вызывается при возникновнии в программе каких-то событий. Вас же должен интересовать обработчик прерывания, который занимается всей "грязной работой". P.S. а на каком языке у вас название города в профиле написано? Просто любопытно.
  18. Надо ставить точку останова в обработчике и смотреть, есть ли запросы к EP0 и корректно ли они отрабатываются. Именно через нее читаются дескрипторы. Но надо быть готовым к тому, что на этапе конфигурации каждая остановка в обработчике вызовет ошибку на шине. То есть на момент остановки у вас в отладчике должны быть открыты нужные регистры, вы смотрите их содержимое и перезапукаете программу.
  19. Не позорьтесь в очередной раз.
  20. Linux Mint, Vivaldi, тоже сталкивался с подобным поведением. Специально повторить не смог.
  21. Странно. Уже много лет использую этот менеджер памяти в плюсовых проектах для ARM7 и Cortex, никаких проблем с его плюсовостью не испытываю. Правда, я не выделяю динамически память при инциализации глобальных переменных. Может все же стоит найти исходники от cstartup из mingw и разобраться до конца?
  22. Это действие будет выполняться каждый раз при входе в функцию. Чтобы этого не происходило, я предложил перенести его в конструктор manager, чтобы оно выполнялось только один раз, во время выполнения конструктора: template<size_t size_items> manager::manager(int (& pool)[size_items]) : start((mcb *)pool) , freemem((mcb *)pool) , Guard() { init(start, sizeof(pool)); extern manager * pManager; pManager = this; } Про это тоже было в ссылке от GenaSPB: https://wiki.osdev.org/C++#Local_Static_Variables_.28GCC_Only.29 А пройти его пошагово в отладчике или посмотреть исходник?
  23. Эти картинки мне ни о чем не говорят. Вот выдержка из домументации на F1: В документации на F0, F4 аналогичная информация. Остальные не смотрел.