15.08.2013, 07:37
|
|
Временная регистрация
Регистрация: 16.08.2010
Сообщений: 58
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Pic12F675 - как выйти из режима SLEEP
Не могу вывести контроллер 12F675 из режима слип по изменению состояния на входе GP3.
; настройка слова конфигурации микроконтроллера
;
__config 011C4h
;..... Инициализация TRISIO направление выводов (GP3 - аппар. только вход) .......
;
MOVLW 0bh ; Значение для выбора направления 0000 1011 b
MOVWF TRISIO ; Установить GP‹3,1:0› - вход, GP‹5:4,2› выходы
BCF GPIO,LEDB ; Потушить синий светодиод
BSF GPIO,LEDR ; Зажечь красный светодиод
BCF INTCON,PEIE ; разрешение обработки прерываний переферии ??????????????????????
BSF INTCON,GPIE ; разрешить прерывания при изменении на GPIO
CLRF IOCB
BSF IOCB,IOCB3 ; разрешаем прерывания по изменению на GP3
BCF INTCON,GPIF ; сброс флага прерывания для GPIO
BCF INTCON,GIE ; разрешение прерываний
SLEEP
NOP
CALL PAUSE
BCF GPIO,LEDR ; Потушить красный светодиод
CALL PAUSE
CALL PAUSE
CALL PAUSE
BSF GPIO,LEDB ; Зажечь синий светодиод
Где несоответствие?
|
|
|
|
15.08.2013, 07:53
|
|
Заблокирован
Регистрация: 22.04.2010
Сообщений: 348
Сказал спасибо: 41
Сказали Спасибо 106 раз(а) в 95 сообщении(ях)
|
Re: Pic12F675 - как выйти из режима SLEEP
Вместо разрешения прерываний запрещаете их:
BCF INTCON,PEIE
BCF INTCON,GIE
|
|
|
|
15.08.2013, 08:05
|
|
Временная регистрация
Регистрация: 16.08.2010
Сообщений: 58
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Pic12F675 - как выйти из режима SLEEP
Сообщение от firew0rker
|
Вместо разрешения прерываний запрещаете их:
BCF INTCON,PEIE
BCF INTCON,GIE
|
Устал разрешать... Не хочет выходить также и с разрешением периферии. Общее разрешение прерываний GIE, согласно документации, должно работать, как с запретом, так и с разрешением. Разница - в одном случае выходит на прерывание адр. 04, в другом продолжает программу после инструкции NOP.
|
|
|
|
15.08.2013, 08:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,549
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
|
Re: Pic12F675 - как выйти из режима SLEEP
Где у Вас переключение банков?
|
|
|
|
15.08.2013, 08:19
|
|
Временная регистрация
Регистрация: 16.08.2010
Сообщений: 58
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Pic12F675 - как выйти из режима SLEEP
Вот такая схема
|
|
|
|
15.08.2013, 08:22
|
|
Временная регистрация
Регистрация: 16.08.2010
Сообщений: 58
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Pic12F675 - как выйти из режима SLEEP
;................ Калибровка внутреннего OSC генератора .............................
;
BSF STATUS,RP0 ; ВЫБРАТЬ БАНК 1
CALL 3FFh ; Считать калибровочную константу
MOVWF OSCCAL ; Калибровать генератор
;
;............... Инициализация регистра OPTION_REG ..................................
;
BCF OPTION_REG,T0CS ; Выбор внутреннего источника тактирования TMR0
BSF OPTION_REG,PSA ; Назначить предварительный делитель перед WDT
BCF OPTION_REG,PS2 ; Значение коэф предварительного делителя (старш)
BSF OPTION_REG,PS1 ; Значение коэф предварительного делителя(1:4)
BCF OPTION_REG,PS0 ; Значение коэф предварительного делителя
;
;..... Инициализация TRISIO направление выводов (GP3 - аппар. только вход) .......
;
MOVLW 0bh ; Значение для выбора направления 0000 1011 b
MOVWF TRISIO ; Установить GP‹3,1:0› - вход, GP‹5:4,2› выходы
;
;............... Инициализация регистра ANSEL ......................
;
CLRF ANSEL ; Все выводы цифровые,источник тактовой частоты АЦП - Fosc/2
BSF ANSEL,ANS0 ; Настроить вывод GP0 - аналоговый
BSF ANSEL,ANS1 ; Настроить вывод GP1 - аналоговый
BSF ANSEL,ADCS0 ; Выбрать источник тактового сигнала АЦП - Fosc/8 (100)
;
BCF STATUS,RP0 ; ВЫБРАТЬ БАНК 0
|
|
|
|
15.08.2013, 09:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,549
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
|
Re: Pic12F675 - как выйти из режима SLEEP
BSF STATUS, RP0 ;IOCB в банке 1
Сообщение от Архип
|
CLRF IOCB
BSF IOCB,IOCB3 ; разрешаем прерывания по изменению на GP3
|
BCF STATUS, RP0 ;GPIO в банке 0
|
|
|
|
15.08.2013, 09:42
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Pic12F675 - как выйти из режима SLEEP
Там еще вроде порт надо прочесть после прерывания в обязательном порядке. Были такие грабли.
|
|
|
|
15.08.2013, 10:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Pic12F675 - как выйти из режима SLEEP
Вроде порт надо прочесть и до перехода в режим SLEEP.
|
|
|
|
15.08.2013, 10:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Pic12F675 - как выйти из режима SLEEP
Архип, использование директивы banksel наглядней чем
Цитата:
|
BSF STATUS,RP0 ; ВЫБРАТЬ БАНК 1
|
Потом и самому будет легче читать код.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:57.
|
|