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

    

jcxz

Свой
  • Публикаций

    5 649
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о jcxz

  • Звание
    Гуру
  • День рождения 01.12.1974

Контакты

  • ICQ
    311337544

Информация

  • Город
    Омск

Посетители профиля

13 738 просмотров профиля
  1. Перечитайте ещё раз, внимательнее, обратите внимание на выделенное: Или хотя бы воспользуйтесь гуглом: "К155ИЕ6".
  2. Берёте два 4-разрядных двоично-десятичных счётчика с возможностью параллельной записи. По их выходу ставите элемент И, объединяющий 0-й & 2-й разряды 1-го счётчика и 1-й разряд 2-го счётчика. И с выхода И заводите сигнал на вход параллельной записи в счётчик начального значения "1". В стародавние времена была такая микросхема: К155ИЕ6. Две штуки К155ИЕ6 + 3-входовой элемент И-НЕ - и Ваша схема готова
  3. Так это и есть ЦОС. Или Вы хотите его по-старинке аналогово генерировать/модулировать?
  4. Cosmic IdeaSTM8 и тип INT

    Как и где определён этот самый uint_fast8_t? Мой IAR_7.80.4 его не знает. И в uCOS-II его тоже нет.
  5. А зачем их конструировать? Если нужен FM-приёмник: покупаете на али модуль на RDA5807M, скачиваете даташит на него, подключаете его к I2C своей платы, и остаётся изучить только I2C. Если интересна приём-передача по радио - можно другие модули. Например те же nRF24L01+ на том же али. Опять - даташит + изучение SPI. Ну а если Вы хотите свой радиомодем, с модуляцией и демодуляцией, то STM32 пожалуй будет слабовата. Тут нужен DSP или ПЛИС.
  6. А я и не имел в виду WiFi-канал. Конечно гарантию стабильности времени доставки даст только plain радио-канал.
  7. stm32 i2c

    Как может залипнуть SDA? Если клоки SCL подаются то в конце концов доберёмся до конца принимаемого байта (раз SDA был == 0, значит слэйв передавал), до бита ACK, и он по любому отлипнет. Я просто даю много раз подряд СТОП-условие. Потому что если слэйв в состоянии передачи, и даже почему-то сразу не отработает СТОП посреди байта, то по-крайней мере он его будет воспринимать как клок, дойдёт до конца байта, и на ACK-е примет СТОП. Просто у меня количество СТОП-ов == длина байта + макс.длина адреса (10 битного). Clock-stretching отрабатываю всегда. На его залипание не рассчитываю.
  8. stm32 i2c

    Разве зависит? I2C же допускает объединение на одной шине устройств с 7-и и 10-битным адресом? Если так, то 7-битные должны как-то определять что сейчас передаётся 10-битный адрес. И соответственно пропускать его весь. Вот что сказано в википедии: Комбинация бит 11110ХХ адреса зарезервирована для 10-битной адресации. Получается похоже что можно совмещать на одной шине устройства с разной длиной адреса.
  9. stm32 i2c

    Если сбойнул слэйв (например - потерял клок), то это не поможет. Лучше выполнить многократное стоп-условие. Да и адрес бывает 10-битовый, так что 9 раз - маловато будет.
  10. Зачем RTC? Просто в пакете передать: "включиться через 5 сек". Все кто получил - запускают таймер на 5 сек. Через 1 сек передать пакет: "включиться через 4 сек". Через ещё 1 сек - следующий пакет "... 3 сек". И т.д. Если кто-то не получил один из пакетов (помехи), то он получит другие пакеты и всё равно запустит таймер. В результате во всех будут декрементироваться таймеры, которые обнулятся в один момент - в этот момент и включатся все. Множество пакетов (дублирование) увеличивает устойчивость к кратковременным помехам связи. И никаких синхронизаций и GPS-ов не нужно.
  11. Тогда можно посоветовать ТСу переписать его медленные исходники предельно корректно. Ну или хотя-бы заглянуть в листинги чтобы проверить это.
  12. А смысл такой оптимизации? Сперва написать на асме, а потом добиваться чтобы компиляция си давала такой же результат? Да ещё трястись при каждой пересборке и изменении версии компилятора - не порушится ли? Для переносимости? Но ведь не факт, что после перенесения оно останется оптимальным для новой платформы. Там придётся опять то же самое проделывать. Я это сделал просто из спортивного интереса. И для накопления опыта. Сама по себе такая оптимизация не имеет особого смысла. Проще просто на асме написать.
  13. Странный HARDFAULT

    Чинить реализацию ТС - дело самого ТС. А меня больше волнуют мои проекты. И правильность их реализации. Потому и спрашиваю - откуда такие рекомендации? Есть ссылки на какие-то доки почему так надо делать? Где почитать?
  14. Странный HARDFAULT

    Вообще для WFI лучше отдельную задачу создать. Тогда никакие DSB/ISB не нужны, так как при входе/выходе в/из exception ядро Cortex-M автоматом выполняет ISB. Или на какой-то STM32 есть errata, где указано что почему-то не выполняется ISB при enter/return in/from exception? По-крайней мере - уже много лет на разных МК использую Idle-задачу с WFE без всяких ISB/DSB. Выдержка из мануала на Cortex-M4: However, memory barrier instructions are not required if the MPU setup process starts by entering an exception handler, or is followed by an exception return, because the exception entry and exception return mechanism cause memory barrier behavior.
  15. Не обращайте внимания. Все LDR/LDRH/LDRD/STR/STRH/STRD, а также LDREX../STREX.. атомарны в пределах одного ядра Cortex-M. Неатомарны только LDM/STM, PUSH/POP. Но как я вижу - IAR например LDM/STM почти не использует при компиляции си-кода. Возможно как раз по причине их неатомарности.