PDA

Просмотр полной версии : Выход из спячки Pic16f628


MegaDeth
10.10.2007, 21:45
контроллер впадает в спячку, но выходить из нее по прерыванию по изменению уровня на линиях ввода\вывода не желает. если включить но заранее подать выс уровень на линию - тогда горит светодиод (бит 4 GPIO=1 )
list p=12F629
#include <p12f629.inc>
__CONFIG _CP_OFF & _WDT_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT

counter equ 0x0a
count1 EQU 0x0b
count2 equ 0x0c

#define led GPIO,4
#define KEY1 GPIO,0
#define KEY2 GPIO,1
#define KEY3 GPIO,3


;------calibr Gen--------
bsf STATUS,RP0;Bank 1
call 3FFh ;Get the calibr value
movwf OSCCAL ;Calibrate
clrf INTCON
init;-----------inst GPIO--------
bsf STATUS,RP0
movlw b'00000000'
movwf OPTION_REG
movlw B'00101111'
movwf TRISIO
movlw b'00001011'
movwf WPU
movlw b'00001011'
movf IOCB
bsf INTCON,3
bcf INTCON,0
bcf STATUS,RP0
movlw 0xff
movwf CMCON
clrf GPIO
;---------------------------
opr btfss KEY1
goto $+4
bcf led

sleep
nop
goto init
bsf led
goto opr


end

кто хотябы вообще имел дело с этим намекните что нетак понимяю что в этой писаине разбиратся никто небудет, даже отладчик дальше слипа не работает :)

n0ne
10.10.2007, 23:05
Я не мастер в этом деле, но может надо указать сколько по времени sleep должен длица?)

MegaDeth
10.10.2007, 23:44
n0ne, нет, это спячка дло тех пор пока не изменятся уровни на входах (прерывание простоя если мона выразицо)
простой для экономии энергии (в пульте ДУ система)
смотрел другие исходники - ну все же также и работает! инициализацию брал из даташита по контроллеру.

EmitRemus
12.10.2007, 00:28
А можно по подробней о контроллере? Где именно используешь его? И чем его программишь? Поннипрогом?...

MegaDeth
12.10.2007, 15:09
EmitRemus, http://www.microchip.ru/files/d-sheets-rus/PIC12F629_675.pdf русский даташит если кому нада вдруг) контроллер на 6 линий ввода\вывода, юзаю в пульте ДУ (почему не RfPic - надо чтобы схема вышла минимальной по цене).
задача контроллера - просыпаться когда жмут на кнопку и посылать данные на ИК передатчк (модуляция частотная). но вот просыпаться он не желает... я воообще думаю надо с нуля прошивку написать но не факт что не повторю ошибки. пробовал после sleep установить на ноге лог. 1 и повесить контроллер в безк. цикл, но уровень так и выставляется на ноге значит он не пробуждается...
програмлю ЖДМ'ом. (jdm)

MegaDeth
12.10.2007, 18:51
проблема решена, тему в треш, спасибо тем кто пытался помочь!