Страница 2 из 2
Re: Встраеваемый ИК пульт управления (PIC+Atmel=проблема)
Добавлено: 30 июн 2014, 15:42
Jman
Просто мне кажется, что в sleep mode намного дольше хватало бы батарей питания. Можно же его в существующий код внести, как поправку? На Си примерно понимаю как :
// Инициализация режима сна
set_sleep_mode (SLEEP_MODE_PWR_DOWN);
while(1)
{
sleep_enable(); // разрешение режима сна
sleep_cpu(); // активация режима сна
}
На асме не знаю как... =(
Re: Встраеваемый ИК пульт управления (PIC+Atmel=проблема)
Добавлено: 01 июл 2014, 00:02
rhf-admin
Попробуй как-то так:
1) добавляем в шапку
.def Sleep_Counter=r22
2) после org 0 вставляем
Код: Выделить всё
rjmp Init ; reset
reti ; INT0
reti ; Pin Change
reti ; Timer (переход к обработч.прерывания от таймера)
reti ; EEPROM
reti ; comparator
reti ; timer compare match A
reti ; timer compare match B
reti ; watchdog
reti ; ADC
3) Вот этот кусок:
Код: Выделить всё
Scan: sbis PINB,4 ; если на входе PB4 низкий уровень - нажата КН1
rjmp Tx_CMD1
sbis PINB,2 ; если на входе PB2 низкий уровень - нажата КН2
rjmp Tx_CMD2
sbis PINB,0 ; если на входе PB0 низкий уровень - нажата КН3
rjmp Tx_CMD3
sbis PINB,1 ; если на входе PB1 низкий уровень - нажата КН4
rjmp Tx_CMD4
sbr MBC,0b00100000 ; установить toggle bit в 1 (первое нажатие)
rjmp Scan
меняем на вот такой:
Код: Выделить всё
ldi w, 0b00010111
out PCMSK,w
ldi w,0b00100000
out GIMSK,w
Scan: sei
ldi Sleep_Counter, 5 ; устанавливаем счётчик на 5 сканов (если за это время ничего не произойдёт - уснём)
Test_Sleep:
dec Sleep_Counter
brne Test_Buttons ; если ещё не сделали 5 сканов - продолжаем сканить кнопки
ldi w,0b00100000
out MCUCR,w ; разрешаем засыпание
sleep ; засыпаем
clr w
out MCUCR,w ; запрещаем засыпания
ldi Sleep_Counter, 5 ; устанавливаем счётчик на 5 сканов
Test_Buttons:
sbis PINB,4 ; если на входе PB4 низкий уровень - нажата КН1
rjmp Tx_CMD1
sbis PINB,2 ; если на входе PB2 низкий уровень - нажата КН2
rjmp Tx_CMD2
sbis PINB,0 ; если на входе PB0 низкий уровень - нажата КН3
rjmp Tx_CMD3
sbis PINB,1 ; если на входе PB1 низкий уровень - нажата КН4
rjmp Tx_CMD4
sbr MBC,0b00100000 ; установить toggle bit в 1 (первое нажатие)
rjmp Test_Sleep
а вот этот:
Код: Выделить всё
TxRC: sbrc MBC,7 ; Startbit 1. Если бит равен 1 - выполняется
вот на такой:
Код: Выделить всё
TxRC: cli
sbrc MBC,7 ; Startbit 1. Если бит равен 1 - выполняется
Re: Встраеваемый ИК пульт управления (PIC+Atmel=проблема)
Добавлено: 01 июл 2014, 15:43
Jman
Спасибо огромное!!! Повставлял ваши куски кода. Компильнул в АВР студио. Пока полет нормальный. Поставил в холдер новую баталерку. Будем смотреть, как в sleep mode энергия расходуется.
Re: Встраеваемый ИК пульт управления (PIC+Atmel=проблема)
Добавлено: 01 июл 2014, 16:48
rhf-admin
Интересно, кстати, работает или нет. Можешь потребление в sleep режиме измерить и не в sleep режиме (с какой-нибудь нажатой кнопкой).
Re: Встраеваемый ИК пульт управления (PIC+Atmel=проблема)
Добавлено: 02 июл 2014, 12:47
Jman
Все работает!
Потребление в sleep mode:
режим покоя - 800 мкА;
кнопка нажата - 5,5 мА (резистор в цепи ИК-диода я уменьшил до 22 Ом);
*******************************************************************************************************
Потребление с прошивкой RC-5
режим покоя - 3 мА;
кнопка нажата - 5,5 мА (резистор в цепи ИК-диода я уменьшил до 22 Ом);
*******************************************************************************************************
Вот такие мои замеры. Залил прошиву с sleep mode, ибо она рациональнее, тем более под батарейку CR2032.
Re: Встраеваемый ИК пульт управления (PIC+Atmel=проблема)
Добавлено: 02 июл 2014, 13:39
rhf-admin
То есть прошивка со sleep режимом в покое жрёт 800 мкА, а без него в покое жрёт 3 мА? так?
Кстати, это у нас получился sleep-режим, который называется IDLE, когда только CPU останавливается.
А если изменить этот кусок:
Код: Выделить всё
ldi w,0b00100000
out MCUCR,w ; разрешаем засыпание
sleep ; засыпаем
на вот такой:
Код: Выделить всё
ldi w,0b00110000 ; режим Power Down
out MCUCR,w ; разрешаем засыпание
sleep ; засыпаем
то получится режим Power Down и потребление должно стать ещё меньше, поскольку тут даже генератор стопится и вообще все модули, кроме асинхронных...
Re: Встраеваемый ИК пульт управления (PIC+Atmel=проблема)
Добавлено: 02 июл 2014, 14:04
Jman
rhf-admin писал(а):То есть прошивка со sleep режимом в покое жрёт 800 мкА, а без него в покое жрёт 3 мА? так?
Совершенно верно. Попробую намедни перекомпильнуть. Можете мне дать исходник, я подправлю? Затем снова проведу замеры.
Re: Встраеваемый ИК пульт управления (PIC+Atmel=проблема)
Добавлено: 02 июл 2014, 14:07
Jman
Прикрепляю свою печатную плату в формате sLayot5. Может кому пригодится.
Re: Встраеваемый ИК пульт управления (PIC+Atmel=проблема)
Добавлено: 02 июл 2014, 21:40
rhf-admin
Вот исправленный исходник и перекомпиленная прошивка: