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

esaulenka

Свой
  • Постов

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

  • Посещение

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

    2

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


  1. Вы там, случаем, вход приёмника в dominant state не держите? Подключения к шине для инициализации и не требуется - там как раз условие выхода из неё, чтобы на шине не было активности.
  2. STM32 + RTC & BACKUP

    Какое-то спорное утверждение. Какие-то исследования есть? Почему-то на этих инопланетных контроллерах созданы миллионы устройств. К десяткам тысяч я приложил руку. Там есть батарейка (литиевая coin cell, 3 вольта), конденсатор рядом с ней и стабилизатор на 3.3 вольта для ядра. Подозреваю, с этой уникальнейшей конструкцией я не одинок. Пролёт "мощных ступенек" не зафиксирован. Также очень хочется подтверждений.
  3. Число 94 означает "на столько милливольт изменится сигнал на выходе при изменении ускорения на 1 g." Если Вы видите на одном из каналов напряжение 3 вольта, значит, вы прямо сейчас ускоряетесь на (3 В -2,5 В) / 0,094 В/g = 5.3 g (и если делаете это вертикально вверх, скоро выйдете в открытый космос :-) ). Рекомендую ещё прочитать сноску к этой цифре - это максимальное значение коэффициента. Правильное значение определяется экспериментально, при калибровке, и должно быть написано в паспорте. Не надо верить всему, что пишут в интернетах. В документации русским языком сказано, что на выходе в покое 2.5 вольта. Вот документации и верьте.
  4. Ещё куб (STM32 CubeMX) посмотрите. У них STM32L4xx есть, экспорт проекта в кейл - тоже есть. Как этот контроллер будет отображаться в кейле, я не знаю. Но компилятору разницы особо никакой, все Cortex-M4 одинаковы. Тут вопрос линкера (надо подобрать камень с таким же объемом памяти, или поправить настройки руками) и отладчика (чтоб периферию красиво показывал).
  5. Извините за флуд, но проверка регистра статуса - это рабочее решение (собственно, для того он там и есть). Ищите ошибку, кто такие LOGGER_DELAY, SPIEEPROM_ReadStatus() и SPIEEPROM_STATUS_WIP нам неведомо. И название микросхемы хорошо б сразу указывать. Тут, конечно, у многих навыки телепатии неплохие, но некрасиво это.
  6. HAL

    Мне кажется, надо только переделать HAL_LockTypeDef на мьютекс. И дефайны __HAL_LOCK() / __HAL_UNLOCK() переопределить. Ну или вручную, критическая секция в __HAL_LOCK()
  7. HAL

    Нириально хороший. Просто флажок "периферия занята". Поддержки RTOS (типа "семафор"), как и банальных критических секций, там нет. Т.е. наблюдаем типичную хорошо спрятанную граблю - неатомарная операция "проверил - поменял - записал" выполняется, теоретически, в нескольких потоках. Дальше только вопрос времени, когда это добро "выстрелит"...
  8. Ой, простите, STM32 _L_ 4xx - это ж очередная линейка, низкопотребляющий M4. Тогда так: поддержка ядра M4 давным-давно есть, поддержки именно Вашего контроллера я не вижу. Соответственно, над где-то (ST Cube ?) найти заголовки с описанием регистров и подложить в нужное место. Где брать XML'ки с теми же регистрами, чтоб подсунуть их отладчику, я не знаю... Приключения, чтоб их... Для поддержки ARM7, если ничего не путаю, надо http://www2.keil.com/mdk5/legacy/
  9. Возьмите последний кейл, полгода назад они анонсировали поддержку Cortex-M7. Тут можно картинки полистать: http://www2.keil.com/mdk5/cortex-m7/ Поддержка STLink в кейле встроенная, надо просто выбрать правильный отладчик (правда, откуда драйвер поставился, я не помню. Возможно, от штатной ST'шной утилиты).
  10. Да что этот Шилдс понимает... :-) Я осваивал плюсы на scmRTOS ("кишки" довольно сложные, но снаружи всё просто и понятно) и на Qt (супер-понятный внешний интерфейс, в "кишки" даже не лазил). Рекомендую! После этого свои классы без особых проблем придумываются. При этом проекты не сказать, чтоб прямо сложные. Пара сотен килобайт исходников - это немного совсем...
  11. STM32, timer capture/compare

    Господа, подскажите пожалуйста: вход таймера ETR можно использовать для определения длительности/периода импульса? В документации вижу только возможность тактировать таймер. Может, как-то slave использовать можно?.. На готовой железке возникла необходимость измерять параметры импульсов, а на той ноге только ETR и есть...
  12. Предлагаю прорывную нано-технологию. Цепляем к выходам датчика осциллограф (как выяснилось, они аналоговые. и то хорошо). Пальцем крутим вал. Глазами смотрим на осциллограф. Если видим там что-то похожее на две синусоиды (сдвинутые на 90 градусов), радуемся и пытаемся вспомнить школьную тригонометрию. Если видим там что-то похожее на меандр "включено-выключено", пытаемся приспособить этот датчик к чему-то ещё.
  13. Нет. Значение SYSCFG определяет, на какую область памяти будет отображаться адрес 0. Т.е., выставляем в одно значение - и содержимое памяти по адресам 0x00000000 и 0x08000000 будет одинаковое (и так же одинаковым будут следующие N килобайт, цифирку за ненадобностью не помню). Выставляем другое значение - будут одинаковыми 0x00000000 и 0x20000000 и т.д. Но вот правда - бросайте Вы эти глупости. Мне кажется, этим ремапом никто толком и не пользуется. Разве что штатный загрузчик, да отладчики в режиме "загружать код в RAM" (этакий быстрый режим отладки для маленьких программ, чтобы флеш каждый раз не стирать).
  14. usb stm32f401

    Reset - это команда со стороны хоста. Виндовс при подключении устройства делает reset, потом считывает дескрипторы, потом снова reset, снова считывает дескрипторы, и только потом считает, что процедура подключения завершена. Почему так, видел какое-то внятное описание, но забыл где... PS должно сильно поспособствовать сравнение рабочего и нерабочего вариантов каким-нибудь сниффером. Я крайний раз пользовался "free usb analyzer". Не очень удобно, зато совесть чиста :-)
  15. Да, в этих библиотеках надо обязательно инициализировать все поля структур-параметров. Иначе возможны разнообразнейшие приключения. Тут, судя по всему, порт переключился в режим "открытый коллектор".
  16. Адрес пина.

    следующая тема, чувствую, будет опять "как в этой лапше выгадать 3 такта". Jenya7, предлагаю: - забыть слово "адресс" (а то придёт Herz, и научит Вас русскому языку) - написать модуль-прослойку, у которого на входе не некие странные "GPIOA+1", а вполне понятные "вход кнопка 1", "вход XXX". Тогда привязка функции входа к конкретной ноге будет ровно в одном месте. Не, ну можно, конечно, благо у STM'ок адреса разных портов GPIO различаются аж на 0x400. uint32_t get_input (uint32_t param) { GPIO_TypeDef * port = (GPIO_TypeDef *) (param & ~0x1F); uint32_t pin = param & 0x1F; return port->IDR & (1UL << pin); } ... get_input (GPIOA | 1); get_input (GPIOB | 31); Но всё равно, не надо так делать.
  17. Пишите на с++, stm32tpl - образец компактности и лаконичности! typedef Pin<'C', 9> GreenLed; GreenLed::Mode (OUTPUT); GreenLed::On();
  18. Отстаньте вы от человека! Он же сразу сказал - это спорт такой. Что-то вроде "я напишу hello world в N байт", только следующий уровень :-) Если _Ivana хватит упорства и знаний затолкать всё это в тиньку, он будет на порядок больше молодец, чем реализация того же ПИДа на stm32discovery.
  19. С чего бы это? Растянуть импульсы с триггера, и готово. Другой вопрос, что придётся вешать табличку на энкодер "быстро не крутить" :-) (будет "проглатывать" импульсы).
  20. Что-то типа того. Только ещё делители нужны на выходах. Энкодер, который предложил Plain, будет выдавать импульсы каждые 15 градусов. Точная настройка прибора будет довольно неудобной (это +/- 20 единиц легко накрутить; +/- 1 придётся делать очень аккуратно). В общем, самое время освоить какую-нибудь ардуину. На входе - энкодеры (статей "подключаем энкодер к ардуино" в сети десятки), на выходе - эмулятор 74hc4021 в лице SPI.
  21. Имхо, вполне реальная задача. Если диагностический прибор цепляется только на разъем OBD2, никаких сверхъестественных сигналов передавать не надо. С одной стороны 1-2 CAN'а, с другой стороны 1-2 CAN'а. Ну ещё K-Line может быть. Настройка скорости - вручную (выбор диагностируемого авто) или автоматом. Зажигание может быть. Ещё J1850 может быть (я не в курсе специфики сельхоз. и строительной техники), туда свои драйвера надо ставить. Таймауты в автомобильных протоколах обычно с изрядным запасом. Чисто умозрительно, если связывать оба блока не через GPRS, должно взлететь.
  22. (раз уж взялись оффтопить...) Руслан, а как этот logic16 на сотне мегасэмплов работает? Беглый гуглинг сообщает нам "у меня всё работает, ногодрыг с ардуины захватывается, больше мне ничего не надо" и "ничего не работает, сэмплы теряются напрочь"
  23. ISP бутлоaдер

    Да, кстати. Загрузчик понимает, что код - в thumb mode, и program counter должен быть нечётным? Попробуйте сделать GO на адрес 0x02001001
  24. ISP бутлоaдер

    Не знаю. Сделайте то же самое, но под отладчиком: char remap_flash[] = { 0x00, 0x4F ... }; ( (void (*)(void)) remap_flash) ();
  25. ISP бутлоaдер

    Да это просто :-) Длина команды thumb2 - 16 бит или 32. 32-битная константа напрямую в эту команду не влезает (нужно же место под код самой команды). Можно положить константу рядом, и ссылаться на неё (что-то вроде LDR r0, [pc, #смещение-до константы]); компилятор так и делает. Но руками проще загрузить в регистр за два раза, благо у кортексов команда MOVT сделана, похоже, специально для этого.
×
×
  • Создать...