Добрый день.
От вывода Vcc2 запитан блок АЦП (суммарное потребление не более 250 мкА) и четыре вывода GPIO: B0-B3.
Если выводы B0-B3 настроены на выход или включены режимы PullUp, то ток потребления по выводу Vcc2 будет зависеть от подключенной нагрузки к этим выводам.
1921ВК035 (общие вопросы)
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
Re: 1921ВК035 (общие вопросы)
Спасибо, ценная информация!
Re: 1921ВК035 (общие вопросы)
Проделали опыт - на МК постоянно выдан RESET (соответственно выводы В0...В3 д.б. в Z-состоянии), потребление по аналоговому питанию практически совпадает с потреблением при выполнении программы.
Собственно из-за чего возник вопрос - по входу аналогового питания был установлен RC фильтр, где R=51 Ом. Так вот на этом R на некоторых (пока нашли 2 шт) микросхемах падает 250 мВ, на остальных 50 мВ (что даёт 1 мА потребления, но никак не 250 мкА).
Собственно из-за чего возник вопрос - по входу аналогового питания был установлен RC фильтр, где R=51 Ом. Так вот на этом R на некоторых (пока нашли 2 шт) микросхемах падает 250 мВ, на остальных 50 мВ (что даёт 1 мА потребления, но никак не 250 мкА).
Re: 1921ВК035 (общие вопросы)
Добрый день!
Появилась проблема: при непрерывной работе контроллера 1921ВК035 в течение длительного времени (недели, месяцы) происходит зависание. Проанализировал код, единственное место, где это может возникнуть, это в процессе обмена по Spi (режим мастера), то есть вот на таком участке кода:
SPI->DR = data;
while(SPI->SR_bit.BSY) { __nop(); }
data = SPI->DR;
Так как это происходит через месяц, а то и больше, выловить не получается, но других вариантов, где он может встать, нет. Но у нас мастер и передача в любом случае должна произойти, флаг BSY должен всегда нормально обнуляться.
Сталкивался ли кто с такой проблемой, когда флаг не сбрасывается? Если да, то как это успешно парировать? В каких случаях может возникнуть такой эффект?
Появилась проблема: при непрерывной работе контроллера 1921ВК035 в течение длительного времени (недели, месяцы) происходит зависание. Проанализировал код, единственное место, где это может возникнуть, это в процессе обмена по Spi (режим мастера), то есть вот на таком участке кода:
SPI->DR = data;
while(SPI->SR_bit.BSY) { __nop(); }
data = SPI->DR;
Так как это происходит через месяц, а то и больше, выловить не получается, но других вариантов, где он может встать, нет. Но у нас мастер и передача в любом случае должна произойти, флаг BSY должен всегда нормально обнуляться.
Сталкивался ли кто с такой проблемой, когда флаг не сбрасывается? Если да, то как это успешно парировать? В каких случаях может возникнуть такой эффект?
-
RabidRabbit
- Сообщения: 202
- Зарегистрирован: 10 июн 2025, 12:11
- Предприятие: HomeWork
Re: 1921ВК035 (общие вопросы)
Здесь Вы ССЗБ. Ожидание изменения состояния флага очевидно нужно ограничивать таймаутом. И лучше бы для определения завершения передачи использовать бит RNE.Wolver писал(а): ↑15 июл 2026, 13:18 Проанализировал код, единственное место, где это может возникнуть, это в процессе обмена по Spi (режим мастера), то есть вот на таком участке кода:
SPI->DR = data;
while(SPI->SR_bit.BSY) { __nop(); }
data = SPI->DR;
Сталкивался ли кто с такой проблемой, когда флаг не сбрасывается? Если да, то как это успешно парировать? В каких случаях может возникнуть такой эффект?
Re: 1921ВК035 (общие вопросы)
В библиотеке lib035 в примерах именно так реализовано, как у меня, именно флагом bsy и без таймаута. И все же, в каких случаях он может не ставиться?
