Probuzeni ze Sleep u PIC12F683

Admin HWnews hwnews na cncnet.info
Čtvrtek Leden 3 21:39:18 CET 2013


Tak uz jsem to nasel....
v preruseni je treba precist nebo zapsat neco na GPIO - aby se srovnal port


Dne 3.1.2013 21:20, Admin HWnews napsal(a):
> Zdravim,
>
> slibil jsem pro kamaradovo deti naprogramovat blikac na kolo vcetne
> blinkru - do nejakeho cinskeho bazmeku - je to sdruzena koncova svitilna
> - puvodni elektronika prijde ven a da se tam tohle.
>
> Vse funguje jak ma, ale v okamziku kdy nejsou stiskla tlacitka se MCu
> spravne uspi (podle spotreby), predtim se zapne preruseni na zmenu log.
> urovni na GPIO, bohuzel nevim proc, ale procesor uz mi nenajede.. Uz
> hodinu studuju DS a nevidim nikde chybu.
>
> osazeni je takove - napajeni bude 3.2V az 2V (dve suche tuzky):
>
> MCU.............: PIC12F683
> takt............: 31kHz interni oscilator
>
> GP0......: vystup - mosfet - koncove svetla
> GP1......: vystup - mosfet - pravej blinkr - od GP5
> GP2......: vystup - mosfet - levej blinkr - od GP4
> GP3......: vstup - prepinac noc/den - log. 0 je noc - externi pull-up
> GP4......: vstup - levej blinkr na GP2 - log. 0 je sepnuto - interni
> pull-up
> GP5......: vstup - pravej blinkr na GP1 - log. 0 je sepnuto - interni
> pull-up
>
>
> inicializace:
>
>    OSCCON := %00001001;                  //31kHz
>    TRISIO := %00111000;                  //GP0-2 vystupy
>    CMCON0 := %111;                       // Disable Comparators
>    ANSEL  := 0;                          // Disable Analog
>    GPIO   := 0;                          // GPIO vsechno na nulu
>    WPU    := %00110000;                  //na GP4-5 zapnu pull-up
>    OPTION_REG := %01111111;          //povolim pull-up generalne /GPPU=0
>    INTCON := %01001000;            //setup Interrupt GIE=0,PEIE=1,GPIE=1
>    IOC    := %00111000;                  //Source on-change to GP3-5
>
>
> vstup do Sleepu:
>
> if (TestBit(GPIO, sw_DenNoc)=1) and (TestBit(GPIO, sw_Rblik)=1) and
> (TestBit(GPIO, sw_Lblik)=1) then
>     begin
>       GPIO   := 0;             // GPIO vsechno na nulu - pozhasinam
>       INTCON := %11001000;     //setup Interrupt GIE= 1,PEIE= 1, GPIE= 1
>       Sleep;
>       INTCON := %01001000;     //setup Interrupt GIE= 1,PEIE= 1, GPIE= 1
>     end;
>
> a osetreni preruseni:
>
> Procedure Interrupt;
>   Begin
>    If TestBit(INTCON,GPIF) = 1 then
>      ClearBit(INTCON,GPIF);       //Vymazu priznak preruseni GPIF
>   End;


Další informace o konferenci Hw-list