Interesuje me vaš savet,pomoć,zapravo,uradio sam serijsku komnukaciju sa dva pica-a 16f628a,u pic basic pro,pomocu
SERIN I SEROUT,komadi,testirao sam sa direktno sa žicom i preko 433Mhz,predajnikom i prijemnikom,i sve radi OK
Ali mi je sad potrebno da predajni deo na kome se nalazi pic16f628a,radi na bateriji, pa me brine potrošnja baterije,tj.vremenski preiod u kome bi radila.
Ostavio sam na test pločici,predajnika samo neophodne komponete,i merenjem mi se pokazalo, da kada je radnom režimu prenosa podataka, potrošnja uredjaja 10mA, u mirnom radu 3mA,predpostavljam da i tu regulator 78L05 vuče odredjeni deo struje,što mislim da je malo mnogo za potrošnju baterije
Tragao sam po netu,pa sam našao neke primere,interesujeme da li postoji mogućnost da se programnski dovede PIC u stanje minimalne potrošnje, komandama SLEP NAP, ili nekim drugim u picbasic-u, jer mi je u principu potrebno da samo kada se pritisne taster,izvši prenos podatka.
Code: Select all
@ DEVICE pic16F628a, INTRC_OSC_NOCLKOUT, pwrt_on, mclr_on, lvp_on,wdt_on,bod_on
include "modedefs.bas"
DEFINE OSC 4
CMCON=7
Define LOADER_USED 1
DEFINE CHAR_PACING 1000
DEFINE HSER_CLROERR 1
DEFINE HSER TXSTA 20h
DEFINE HSER_BAUD 1200
TMR1H = $60
TMR1L = $01
PIR1.0 = 0
PIE1.0 = 1
INTCON.3 = 1 ' Enable TMR1 peripheral interrupt
OPTION_REG = $7f
TRISA=%00001
TRISB=%00000001
PORTA=0
PORTB=0
PODACI VAR BYTE
PODACI=0
PAUSE 500
START:
IF PORTB.0=0 THEN
PODACI=10
GOSUB SLANJE_PODATAKA
ENDIF
IF PORTB.0=1 THEN
PODACI=20
GOTO PAUZA
ENDIF
GOTO START
SLANJE_PODATAKA:
serout PORTA.0,T1200,["D",PODACI]
RETURN
PAUZA:
low PORTA.0
IF PORTB.0=0 THEN
GOTO START
ENDIF
@ SLEEP
@ NOP
T1CON.0 = 0 ' Stop TMR1 on overflow wake-up
TMR1H = $60 ' Re-load TMR1 with $6001
TMR1L = $01
PIR1.0 = 0 ' Clear TMR1 over-flow int flag
T1CON.0 = 1 ' Re-start TMR1
GOTO PAUZA