Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PIC18F252 и режим SLEEP
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
sheff
Доброе время суток! МК PIC18F252. Есть такая задача - нужно МК вводить в SLEEP и затем выводить по изменению уровня на выводе контроллера (в часности - RB5), и включить режим "мигания" светодиода. Написал на асме.
Светодиод на вывод RA2, T0CKI подключен на массу, кнопка на RB5 и массу, работает от кварца 4 Мгц.

;*******************************************************************************
*************
LIST P=18F252
#include <P18F252.INC> ;ПОДКЛЮЧЕНИЕ ФАЙЛА С ОПИСАНИЕМ ПЕРЕМЕННЫХ И СИСТЕМНЫХ РЕСУРСОВ PIC18F252
radix dec
;*******************************************************************************
*************
#define Led2 PORTA,2
; ================= задаем биты конфигурации : =================
CONFIG OSC = HS
CONFIG WDT = OFF ; сторожевой таймер выключить
CONFIG LVP = OFF ; запретить низковольтное программирование
BODEN = 0
; ==============================================================
Reg_1 EQU 0x039
Reg_2 EQU 0x040
;************************************************* *******************************************
ORG 0x0000 ; Вектор сброса процессора, начальный адрес
;************************************************* *******************************************
goto Start

Start:
clrf INTCON ; запрещаем все прерывания
clrf INTCON2
clrf INTCON3
clrf PIE1
clrf PIE2
clrf PIR1
clrf PIR2
clrf RCON

clrf SSPCON2
clrf SSPSTAT
clrf SSPBUF
clrf SSPADD

clrf T0CON
clrf T1CON
clrf T2CON
clrf T3CON

clrf CCP1CON ; Выкл. модули сравнения.
clrf CCP2CON

clrf SSPCON1
clrf RCSTA ; Выкл. посдедовательные порты.

clrf ADCON0 ; Выкл. АЦП
movlw B'00000110'
movwf ADCON1

clrf LATA
clrf LATB
clrf LATC

setf TRISA
setf TRISB
setf TRISC

movlw B'00100000'
movwf TRISB ;RB5 будет на вход

bcf TRISA,2 ; Порт на выход (светодиод)

bcf INTCON2, NOT_RBPU ; ВКЛ. ПОДТЯГ. РЕЗ. PORTB

bcf INTCON2, RBIP ; обработчик прерываний по изменению уровня на PORTB на ? приоритет
bsf INTCON, RBIE ; Разрешить прерывания по изменению уровня на PORTB


loop:
btfss PORTB,5
bra Start

rcall Pause02
clrf LATB

movf PORTB, W
bcf INTCON, RBIF

;bsf INTCON2, NOT_RBPU ; ВЫКЛ. ПОДТЯГ. РЕЗ. PORTB

sleep
nop


Skaniruem_knopku:
btfss PORTB,5
bra Skaniruem_knopku

btfss PORTB,5
bra $-2

migalka:
bsf Led2 ; Зажечь Svetodiod 2
rcall Pause02 ; Время = 0,2 с

btfss PORTB,5
bra Start

bcf Led2 ; Потушить Svetodiod 2
rcall Pause02 ; Время = 0,2 с

btfss PORTB,5
bra Start

bra migalka
; ==============================================================
Pause02:
movlw .197
movwf Reg_1

paus_ clrf Reg_2

paus__
nop
decfsz Reg_2, F
bra paus__

decfsz Reg_1, F
bra paus_

return
; ==============================================================
END





Вопрос в том что в режима сна МК потребляет 100 мкА. Не много ли потребляет? Например недавно "изучал" Pic12F629/675 - там ток потребления "во сне" менее 1 мкА.
P.S. Так же заметил странное влияние: если приблизить руку к мк, то ток возрастает до 1 мА
Пробовал питание от АКБ (U=4,2 В) ток потребления = 40 -50 мкА. Хотя в даташите на МК: I = 0,11 - 20 мкА.
Тут же достаю такой же "макет н а воздухе" на 12F675, те же условия (БП, тестер), "слип" работает как часы. Не понимаю в чем дело?
@Ark
Цитата
Вопрос в том что в режима сна МК потребляет 100 мкА. Не много ли потребляет? Например недавно "изучал" Pic12F629/675 - там ток потребления "во сне" менее 1 мкА.
P.S. Так же заметил странное влияние: если приблизить руку к мк, то ток возрастает до 1 мА...

1) BOR выключить в конфигурации.
2) Все неиспользуемые порты перевести на выход и записать в них 1.
3) Проверить, все ли периферийные модули выключены.
sheff
Спасибо, получилось!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.