Страница 1 из 1
PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Ср сен 10, 2025 14:29:27
serg_svd
Второй день пытаюсь бороться с этим микроконтроллером.
Исходные данные. К микроконтроллеру подключен часовой кварц на 32768 Гц, светодиод и кнопка.
Инициализация портов:
Спойлер
Код: Выделить всё
TRISA = 0x3F; // input
ANSELA = 0x0; // digital I/O
LATA = 0x0;
WPUA = 0x04; // Pullup WPUA2
OPTION_REGbits.nWPUEN = 0; //Weak pull-ups are enabled by individual WPUx latch values
//IOCx registers
IOCAP = 0x0;
IOCAN = 0x0;
IOCAF = 0x0;
Инициализация осциллятора:
Спойлер
Код: Выделить всё
// OSCCONbits.SCS = 0b00; // SCS FOSC
// OSCCONbits.SCS = 0b01; // SCS Timer1
OSCCONbits.SCS = 0b10; // SCS Internal
OSCCONbits.IRCF = 0b0000; // IRCF 31KHz_LF
OSCCONbits.SPLLEN = 0; // 4x PLL is disabled
// Oscillator module is running at the factory-calibrated frequency
OSCTUNE = 0x0;
// SBOREN disabled;
BORCON = 0x0;
Тут видно, что пытался играться с тактированием от часового кварца в режиме LP, от Timer1 и от внутреннело LF генератора на 31 кГц. Но все эти режимы в конечном итоге не влияют на ток потребления в спящем режиме.
Подтягивающий резистор включен один для кнопки. Её задача вывести микроконтроллер из сна по внешнему прерыванию, переключить светодиод и опять уйти в спячку. Ток спячки измеряю при ВЫКЛЮЧЕННОМ светодиоде! Вся остальная периферия выключена. WDT и BORCON не работают и выключены!
При этом ток потребления примерно 50 мкА, хотя по ДШ он должен быть не более 15-20 мкА.
PS. на измерение тока в спящем режиме сильно влияет программатор. Приходится отключать микроконтроллер от него. При чем зачастую после отключения программатора ток подрастает на 10-15 мкА, а не снижается. С чем связано я не понимаю.
PS2. на плате утечки тока нет. При отключении от платы микроконтроллера и программатора ток потребления нулевой на моём тестере в режиме мкА.
Добавлено after 1 hour 24 minutes 7 seconds:
В общем виновником светодиод оказался. Хоть при выключении светодиода я перевожу пин в Z состояние, но через него все равно течет ток. Без светодиода 19 мкА.
Получается нельзя напрямую на вывод порта включать светодиод??? Неправильно! Нельзя было этот вывод переводить в Z состояние. Надо было отставлять как выход и записать в него 0.
Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Ср сен 10, 2025 14:37:23
Asmodey
[uquote="serg_svd",url="/forum/viewtopic.php?p=4745188#p4745188"]В общем виновником светодиод оказался. Хоть при выключении светодиода я перевожу пин в Z состояние, но через него все равно течет ток. Без светодиода 19 мкА. Получается нельзя напрямую на вывод порта включать светодиод???[/uquote]
А что там с подтягивающими резисторами порта?
Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Ср сен 10, 2025 14:41:22
КРАМ
[uquote="serg_svd",url="/forum/viewtopic.php?p=4745188#p4745188"]Получается нельзя напрямую на вывод порта включать светодиод???[/uquote]
Наверное нужно опубликовать схему своего устройства...
Добавлено after 2 minutes 11 seconds:
[uquote="Asmodey",url="/forum/viewtopic.php?p=4745210#p4745210"]А что там с подтягивающими резисторами порта?[/uquote]
Утечка порта в Z состоянии по даташиту - 125 нА максимум. Типовое значение - 5 нА
Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Ср сен 10, 2025 14:53:16
serg_svd
[uquote="Asmodey",url="/forum/viewtopic.php?p=4745210#p4745210"]А что там с подтягивающими резисторами порта?[/uquote]
Да все нормально! Один включен в регистре WPUA для кнопки. Возможно с внешним резистором ток будет меньше, надо экспериментировать.
КРАМ писал(а):Наверное нужно опубликовать схему своего устройства...
До можно и опубликовать, если нарисовать её

. А так я в первом сообщении поправил. Нельзя было пин со светодиодом переключать в Z состояние. Об этом ДШ говорит, я читал, но картинка в мозгу сразу не сложилась. Искал утечку в другом месте.
Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Ср сен 10, 2025 15:40:17
КРАМ
[uquote="serg_svd",url="/forum/viewtopic.php?p=4745213#p4745213"]Об этом ДШ говорит[/uquote]
ДШ так же говорит об величине тока утечки Z состояния. И это не десятки микроампер. Это всего 0,1 мкА.
Так что было бы интересно узнать как у вас включен светодиод.
Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Ср сен 10, 2025 16:08:14
serg_svd
[uquote="КРАМ",url="/forum/viewtopic.php?p=4745226#p4745226"]Так что было бы интересно узнать как у вас включен светодиод.[/uquote]
Катод светодиода к выводу 8 микроконтроллера, то есть на GND
Анод через резистор 1 кОм к РА1.
Добавлено after 9 minutes 44 seconds:
Вот! Набросал схемку...

Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Ср сен 10, 2025 17:14:09
КРАМ
[uquote="serg_svd",url="/forum/viewtopic.php?p=4745231#p4745231"]Вот![/uquote]
Диод создает плавающий потенциал на входе (третье состояние - это вход). Поэтому на выходе входного буфера наблюдается сквозной ток в наблюдаемой разнице токов потребления. Либо нужен параллельный светодиоду резистор примерно 10 кОм, либо нулевой выход.
Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Чт сен 11, 2025 10:57:04
serg_svd
Надо пробовать и остальные неиспользуемые пины переввести на выход и установить в ноль. Может и через них еще утечка идет? 20 мкА тоже много, если в ДШ указан совсем мизерный ток. Про 20 мкА, к которым я стремился, это я невнимательно ДШ прочел. 20 мкА - это ток в рабочем режиме самого микроконтроллера с LP тактировпнием. А в спячке то тактировпние выключено. Значит надо искать, как еще можно снизить ток
Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Чт сен 11, 2025 11:26:39
veso74
Попробуйте в обратном порядке: создайте настройки нужного генератора, выключите вся периферия и убедитесь, что в спящем режиме потребление низкое и соответствует документации. Затем постепенно включайте периферии, функции и т.д., пока не получите желаемые функции. Так будет легче найти "виновника". В прошлом с подобным PIC12 у меня как идея осталась: WDTE OFF, BOREN OFF -> на простом измерительном приборе с минимальным ток. диапазоном: 2 mA в выключенном состоянии PIC12 показание: 0,000

. Некоторые PIC12x на это более способны. Напр. любимый: PIC12LF1571 /но нет генератора с внешним кварцем/.
Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Чт сен 11, 2025 15:18:19
Zikon
[uquote="serg_svd",url="/forum/viewtopic.php?p=4745374#p4745374"]Надо пробовать и остальные неиспользуемые пины переввести на выход и установить в ноль. Может и через них еще утечка идет? 20 мкА тоже много, если в ДШ указан совсем мизерный ток. Про 20 мкА, к которым я стремился, это я невнимательно ДШ прочел. 20 мкА - это ток в рабочем режиме самого микроконтроллера с LP тактировпнием. А в спячке то тактировпние выключено. Значит надо искать, как еще можно снизить ток[/uquote]
Перечитал ДШ и вопрос
если у вас PIC12F1822 - то это минимум - 20мкА
а вот если PIC12LF1822 - то там действительно мизерные токи !
Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Чт сен 11, 2025 15:45:13
serg_svd
[uquote="Zikon",url="/forum/viewtopic.php?p=4745409#p4745409"]если у вас PIC12F1822 - то это минимум - 20мкА[/uquote]
Похоже так и есть! LF кушает намного меньше. Верхний результат для LF, нижний для F
Добавлено after 2 minutes 36 seconds:
[uquote="veso74",url="/forum/viewtopic.php?p=4745377#p4745377"]Попробуйте в обратном порядке[/uquote]
Да я так и делал. Поэтому и нашел проблему с Z-состоянием портов.
Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Пт сен 12, 2025 11:01:50
veso74
Сегодня осталось немного свободного времени. Тест с PIC12F1822. VDD +5.0V, SLEEP -> 0,021 mA.
Программатор не подключен.
Спойлер
Код: Выделить всё
#include <xc.h>
#pragma config FOSC = INTOSC
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config MCLRE = OFF
#pragma config BOREN = OFF
#pragma config CP = OFF, CPD = OFF
#pragma config PLLEN = OFF
#pragma config LVP = OFF
void main(void) {
OSCCONbits.SCS = 0b10;
OSCCONbits.IRCF = 0b0000;
OSCCONbits.SPLLEN = 0;
OSCTUNE = 0x00;
ADCON0 = 0x00;
ANSELA = 0x00;
CM1CON0 = 0x00;
FVRCON = 0x00;
DACCON0 = 0x00;
T1CON = 0x00;
WDTCONbits.SWDTEN = 0;
TRISA = 0x00;
LATA = 0x00;
WPUA = 0x00;
OPTION_REGbits.nWPUEN = 1;
INTCON = 0x00;
SLEEP();
while (1) {
}
}
Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Пт сен 12, 2025 12:23:56
Родэрик
16F636 ... 3.6 вольт ... какие-то ноги выходные, какие-то входные ... подтяжка везде включена (что-то к верху, что-то к низу)
sleep - 0,6 микроампера (всё, что может кушать - отключено).
Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Пт сен 12, 2025 13:16:25
Mursik
У PIC12F1822 ядро процессора питается 1,7в, ноги от входного. А ядро кормит стабилизатор. Он и жрет те 20мкА. У PIC12LF1822 стаба нет, потому максимальное питающее 3,6в. Зато потребление в слипе - наноамперы.

Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Пт сен 12, 2025 22:51:39
zAries
[uquote="Mursik",url="/forum/viewtopic.php?p=4745493#p4745493"]...Зато потребление в слипе - наноамперы.[/uquote]
При условии, что питание будет 1,8v. Sleep mode: 20 nA @ 1.8V, typical
Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Вс сен 14, 2025 14:52:24
serg_svd
[uquote="zAries",url="/forum/viewtopic.php?p=4745586#p4745586"][uquote="Mursik",url="/forum/viewtopic.php?p=4745493#p4745493"]...Зато потребление в слипе - наноамперы.[/uquote]
При условии, что питание будет 1,8v.
Sleep mode: 20 nA @ 1.8V, typical[/uquote]
Это для
LF

Re: PIC12F1822 SLEEP. Большой ток в спящем режиме
Добавлено: Пн сен 15, 2025 00:36:01
zAries
Да я разве спорил, но, наверное, кому разрешено так цитировать - тому виднее.