PIC16F88 ne bo šel spat

B

brew

Guest
Živjo, jaz sem poskušal postaviti PIC16F88 za spanje, vendar le ne bo spal. Jaz sem z uporabo ccx5 prevajalnik, ki jih bknd. upravljavec mora spati, ko obstaja zunanja prekinitev na RB0/INT. # Define svetlobe PORTA.0 prekinitev intHandler (void) / / ISR, funkcije, ki ravnajo prekine {TMR1ON = 0; INTCON = 0x00; GIE = ​​0; PEIE = 0; INT0IE = 0; TMR1IE = 0; TMR1IF = 0; TRISA = 0x11; TRISB = 0x11; PR1 = 0x00; spanja (); NOP (), lahka = 0;} void main () {initPic (); / / inicializira PIC TRISA, PORTA, TRISB, PORTB, OSCCON, itd svetlobo = 1;} si se potrudil, da izklopite vse možne prekinitve in jasno pod njihovo zastavo bitov, vendar še vedno moj krmilnik noče spati? rabim vašo pomoč! hvala! zadeva, pivo.
 
Hi! V initPic () postopek vam bo omogočila prekinitev? in po tem, ko svetlobe = 1 boste morali dati pic za tekoče neskončno zanko! svetlobe = 1; spanja (), medtem ko (1) {}
 
Hi! V initPic () postopek vam bo omogočila prekinitev? in po tem, ko svetlobe = 1 boste morali dati pic za tekoče neskončno zanko! svetlobe = 1; spanja (), medtem ko (1) {}
hi pmar_kpj, hvala za odgovor. sem lahko nekaj prekinitev v initPic () funkcijo, GIE, PEIE in INT0IE. v moji funkciji ISR, ki je prekine intHandler (), i onemogočili vse prekinitve i omogočena med funkcijo initPic (). Prav tako sem očiščeno vse zastave bitov, ki ustrezajo prekinitve i omogočen. svetlobe = 1; spanja (), medtem ko (1) {} je to kodo v glavni program? zakaj si dal spanja () funkcijo znotraj katerega glavna funkcija, bo to le dal PIC na spanje, če se izvaja glavni program. kaj hočem, da se zgodi, je, naj pic iti spat, ko je prekinitev. in še ena stvar, kaj je, medtem ko (1) koda za? hvala, žal, če imam veliko vprašanj. prosim golimi z mano. Hvala! zadeva, pivo
 
hi! Vaš program izvaja "light = 1;" in končal. Nič drugega za izvedbo! Zato sem dal, da je neskončno zanko za uporabo, ki se vedno aktivni!
 
hi! Kaj pa spanje funkcije znotraj glavnega programa pred neskončno zanko? kaj storiti? zadeva, pivo.
 
Če je kakršnokoli pomoč tukaj je spal funkcijo sem se uporabljajo za 16F88: [sintaksa = asm] postopek sleep_seconds (byte v x) je var byte local_wdtcon var byte local_option - naredite kopijo MOŽNOST bank_1 ASM MOVF OPTION_REG, W bank_0 ASM movwf local_option - naredite kopijo WDTCON bank_2 ASM MOVF WDTCON, W movwf bank_0 ASM local_wdtcon - možnost nastavitve delilnika bank_1 asm bcf OPTION_REG, 0 ASM BCF OPTION_REG, 1 ASM BCF OPTION_REG, 2 ASM BSF OPTION_REG, 3 - nastavitev WDTCON delilnika bank_2 WDTCON = 0b_0001_0100 bank_0 za x loop bank_2 asm BSF WDTCON, 0 asm clrwdt asm spanja asm bcf WDTCON, 0 bank_0 konec zanke - obnoviti možnost ASM MOVF local_option, W movwf bank_1 asm OPTION_REG bank_0 - obnoviti WDTCON ASM MOVF local_wdtcon, W bank_2 asm movwf WDTCON bank_0 konec postopka [/sintaksa]
 
hi! po tem, ko je inicializacija potrebnih za vstop v spanju? zato pokličite spanja funkcijo!
 
Hi! hvala za odgovore. sem storil tisto, kar vi predlagali, ampak ne morem se zdi, da bi bilo delo. Zato sem poskusil, da bi prekinitev, vsaj trenutno porabo, da lahko prišli do je 900uA. Obrazec spanja trenutno treba okoli 0,1 UA. Jaz sem še vedno ne izgubljajo l hope.i "še vedno poskuša spremeniti nekaj mojih kod. Če imate več predlogov, prosim vas prosimo, nam jih pošljite na mene. zadeva, pivo.
 
Hi guys. Končno!! Sem to storil! Včasih sem mikroC za zbiranje moje kodo in to je delo! i nastavite timer za spanje po 10 minut, tudi ko je bil sprožen RB0 prekiniti, bo pic tudi spanje. Bom post kodo, v upanju, da pomagajo drugim newbies pic, kot sem jaz. int timercounter = 0; void prekinitev (void) {if (PIR1.B0) / / TMR1 prekinitev {PORTA.B0 = 0; timercounter + +; PIR1.B0 = 0;} else if (INTCON.B1) / / prekinitev zastavo na RB0 {PORTA.B0 = 0; asm spanja / / INTCON.B1 = 0;}} void main () {INTCON.GIE = ​​1; / / omogoča globalno prekinitev INTCON.PEIE = 1; / / perifernih omogoča prekinitev INTCON.B4 = 1; / / prekinitev na RBO je omogočeno OPTION_REG.INTEDG = 1; / / prekinitve o rasti RB0 OSCCON = 0x70; / / oscilator = 8Mhz, HS T1CON.B1 = 0; / / timer1 clock source je FOSC / 4 T1CON.B3 = 0; / / timer1 oscilator izklop za odpravo moč možganov T1CON.B4 = 1; T1CON.B5 = 1; / / prescalar vrednost = 01:08 T1CON.B0 = 1; / / omogoča prekinitev PIE1.B0 = 1; / / TMR1 omogoča prekinitev PORTA = 0x00; PORTB = 0x00; TRISB.B0 = 1; TRISA = 0xFE, medtem ko (1) {PORTA.B0 = 1; if (timercounter == 2268) / / čas za spanje = 10 minut, dejansko čas = 9:58 {asm spanja}}} zvezi pivo.
 

Welcome to EDABoard.com

Sponsor

Back
Top