Страница 1 из 2
Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 10:07:58
king-live
Доброго времени суток! Есть задача снизить энергопотребление Attiny13A, хотя бы до 100мкА. Отпустил питание микроконтроллера до 2,7В , но максимум чего я добился при режиме SLEEP_MODE_PWR_DOWN, это снижение тока потребления до 550мкА. В FUSE битах я только снизил частоту работы процессора до 4,8Мгц, больше ничего не трогал. Между частотами 9,6Мгц и 4,8Мгц потребление тока практически не изменилось. Между питанием 5В и 2,7В разница в потреблении 150мкА. Контроллер не имеет на плате периферии, ни что не подключено к ножкам МК. Только осцилограф на порту PB4 висит, чтобы проверять режим мигания от прерывания по watchdog. В даташите указанно что нужно камень питать от 1,8В чтобы достичь эффективного энергопотребления. Ещё не проверял. Такое напряжение для моего проекта критично. Выкладываю код, может в нём ещё какая проблема находится. Заранее спасибо! Работаю в связке WinAVR + AVRStudio4.19
Код: Выделить всё
#include <avr/io.h>
#include <util/delay.h>
#include <avr/wdt.h>
#include <avr/sleep.h>
#include <avr/interrupt.h>
ISR (WDT_vect)
{
PORTB = _BV(PB4);
_delay_us(100);
PORTB &=~_BV(PB4);
}
int main()
{
ADCSRA=0b11100011;
ADMUX=0x22;
DDRB=0b00010000;
PORTB |= _BV(PB4);//PCN
_delay_ms(100);
PORTB &=~_BV(PB4);
MCUCR=(1<<SM1);
MCUCR |= _BV(SE);
WDTCR=0x42;
WDTCR |= (1<<WDP2);
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sei();
while (1)
{
sleep_mode();
sleep_cpu();
}
}
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 10:21:13
Flasher
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 10:26:05
Ivanoff-iv
а сколько он будет потреблять если "собаку" не включать (знаю, что код работать не будет...)
ещё можно убавить частоту, для этого в майн (где настройки) добавь например:
Код: Выделить всё
// Crystal Oscillator division factor: 8
#pragma optsize-
CLKPR=0x80;
CLKPR=0x03;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 10:31:12
king-live
Эти все темы я просмотрел. У меня всё работает, только ток большой потребляет.
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 10:31:42
Ivanoff-iv
пока подозреваю в обжорстве _delay_us(100);
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 10:37:22
king-live
Спасибо Ivanoff-iv я поэкспериментирую с таким кодом.
Добавлено after 56 seconds:
_delay_us(100)я убирал, нет не помогает
Добавлено after 3 minutes 29 seconds:
дописал код убавил частоту, не помогает так же 550мкА жрёт.
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 10:39:35
Ivanoff-iv
возможно она у тебя не засыпает, попробуй закомментировать sleep_cpu(); для проверки, замерь ток...
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 10:40:15
ARV
Значит, так, в 100500-й раз рассказываю, что надо сделать для минимизации потребляемого тока в POWER_DOWN:
- отключить BOD
- отключить аналоговый компаратор, который после сброса всегда включен
- не оставлять пины портов в режиме входа без подтяжки, предпочтительно вообще перевести их в режим выхода и установить "безопасные" (для схемы) уровни
- помнить, что внешние резисторы схемы могут очень много тянуть на себя
- помнить, что WDT тоже кушает
- если есть регистр управления питанием периферии, отключать все, что можно с его помощью
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 10:43:35
king-live
Закомментировал, нет не помогает.
Добавлено after 2 minutes 19 seconds:
Хорошо AVR, попробую вырубить и настроить порты по другому.
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 10:45:31
Ivanoff-iv
поддерживаю ARV кроме ватчдога - он достаточно экономичен (~5мкА) пусть живет, раз нужен. другой вопрос, что этот таймер не очень точен.
Добавлено after 1 minute 2 seconds:
[uquote="king-live",url="/forum/viewtopic.php?p=3280226#p3280226"]Закомментировал, нет не помогает.[/uquote] а должно было усугубить...
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 11:11:03
king-live
а должно было усугубить...
Повысилось энергопотребление приблизительно на 20мка.
Добавлено after 18 minutes 36 seconds:
Нашёл!!!! Причина в настройках ADC. Закомментировал строчки работы с ADC и потребление тока упало до 9мкА при напряжении 4,6В. Теперь надо понять как отключать сами регистры ADC. Так как мне в проекте нужны и ADC и компаратор. Спасибо всем за помощь.
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 11:16:22
Ivanoff-iv
выход работает правильно? сигнал на нем какой надо? а то у собаки в режиме прерывания вроде надо флаг чистить WDTCR|=0x40; чтобы следующая сработка не ребутнула мк.
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 11:24:44
king-live
Всё работает правильно! Сигналы в норме.
Добавлено after 2 minutes 34 seconds:
есть такой регистр у Attiny13 (PRR – Power Reduction Register). Я никогда с ним не имел дела. Сейчас поэкспериментирую. Этот регистр как раз и работает с Timer и с ADC.
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 13:29:00
Ivanoff-iv
Чето не нашел нормального даташита на неё (посмотрел по тини13 там нет этого регистра, а на 13а только на 20-30 листов урезанные попадаются)
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 13:40:02
king-live
Вот файл более менее полный
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 13:49:53
akl
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 14:06:57
Ivanoff-iv
спасибо
king-live.
а для чего у тебя аналоги задействованы?
Добавлено after 6 minutes 52 seconds:
вторую ссылку посмотрел - такойже.
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 19:19:23
king-live
а для чего у тебя аналоги задействованы?
Пока контроллер спит, должен зарядиться конденсатор до определённого уровня. Когда контроллер просыпается то в основном схема работает от этого конденсатора. Вот задача дополнительная к этому контроллеру, чтобы проверял его заряд и разряд по времени. Если будет отклонение у этого конденсатора, то схема бракованная. Так как таких схем будет десятки тысяч в месяц, то и проверять их не возможно. А так контроллер сам будет выявлять отклонения у этого конденсатора и выдавать определённое сообщение на светодиод.
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Чт янв 11, 2018 21:03:52
Ivanoff-iv
так их (АЦПшки) и надо включать только перед замерами, а на спячку отключать
Добавлено after 2 minutes 9 seconds:
другой вопрос, чем отключать PRR или ADCSRA или обоими сразу.
Re: Attiny13A и SLEEP_MODE_PWR_DOWN
Добавлено: Пт янв 12, 2018 07:11:18
king-live
так их (АЦПшки) и надо включать только перед замерами, а на спячку отключать
Ну я так и сделал в обработчике.
другой вопрос, чем отключать PRR или ADCSRA или обоими сразу.
В даташите написано, что сначала надо отключать АЦП, а затем установить нужный бит в PRR регистр. Я так сделал, но разницы не ощутил в потреблении тока. Так что вопрос наверное знатокам. Где, в каких целях и как применять этот регистр PRR?