Atmega32u4: снижение энергопотребления при сохранении активности USB
У меня есть плата с питанием от USB, которая должна потреблять как можно меньше энергии в режиме ожидания, сохраняя при этом активное USB-соединение.
Устройство только отправляет данные на хост, но не получает их, поэтому само соединение не обязательно должно работать в режиме ожидания, но хост должен видеть устройство как подключенное. Поэтому устройство никогда не должно отключаться.
Я могу перевести Atmega32u4 в режим ожидания, не отключая USB-подключение, но энергопотребление будет очень высоким (чуть меньше, чем в активном состоянии). Я отключил все периферийные устройства, которые можно отключить в режиме ожидания, но это мало что изменило.
Как только я перехожу в любой другой спящий режим (выключение питания, ждущий режим или шумоподавление АЦП), соединение теряется и хост больше не видит устройство, хотя в документации сказано, что в режиме шумоподавления АЦП в режиме сокращения часы USB остаются активными, а при отключении питания/режиме ожидания асинхронные прерывания USB должны продолжать работать.
Можно ли еще что-нибудь сделать, чтобы снизить энергопотребление?
Нужно ли мне что-нибудь сделать, чтобы использовать режимы отключения питания, ожидания или шумоподавления АЦП, сохраняя при этом подключение USB?
@Dakkaron, 👍0
Обсуждение0
- Keyboard.print() пропускает клавиши
- Библиотека джойстиков Arduino не распознается играми (Steam)
- Arduino Leonardo/Pro Micro сон и USB
- Установка Arduino внутри ПК
- Отключить поддержку USB для mega32u4
- Леонардо - всегда включен, статус сохраняется между перезагрузками компьютера?
- Если USB дает 5 В, как Arduino может подавать 5 В на контакт 5 В? (И еще вопрос)
- Отправка мультимедийных клавиш клавиатуры с помощью библиотеки клавиатур
Как перевести микроконтроллер в спящий режим? Разве он не просыпается через миллисекунду или около того прерыванием таймера?, @Edgar Bonet
В настоящее время я использую эту библиотеку: https://github.com/LowPowerLab/LowPower. Я понял, что ошибся, и теперь я могу использовать режим шумоподавления АЦП. Но изменение не очень большое. Если я отключу его с помощью выключения / режима ожидания, энергопотребление снизится до нуля, но соединение USB будет потеряно. На самом деле, его разбудил WDT, и я позволил ему проснуться через 256 мс. Затем он просыпается менее чем за 1 мс, прежде чем снова заснуть., @Dakkaron
Есть ли способ перевести его в режим выключения/ожидания без потери USB-соединения? Это было бы замечательно., @Dakkaron
Вы вызываете
idle()
сADC_OFF
,TIMER4_OFF
... и все остальное выключено? Попробуйте измерить потребляемый ток с помощью обоих параметровUSB_OFF
иUSB_ON
: это покажет вам, потребляет ли само периферийное устройство USB слишком большой ток. Вы также можете проверить таблицу данных, чтобы узнать, есть ли другие периферийные устройства, о которых не заботится библиотека, которые вы можете отключить с помощью функции [power_*_disable()
из avr-libc](https://www.nongnu .org/avr-libc/user-manual/group__avr__power.html)., @Edgar Bonet@EdgarBonet Очень интересно: «USB_OFF» значительно снижает энергопотребление (даже ниже, чем в режиме шумоподавления АЦП), сохраняя при этом работу USB. Я все еще намного выше текущего использования, которое я получаю в режиме отключения питания, но это уже значительное улучшение. Это заставляет меня думать, что отключение питания должно быть возможно, но мне нужно каким-то образом добавить прерывания или что-то еще, чтобы USB правильно реагировал на SUSPI/WAKUPI в режиме отключения питания., @Dakkaron
Большое спасибо за список периферии, я перепроверю, чем!, @Dakkaron