[ visatix @ 02.03.2006. 08:50 ] @
Zeleo bih da napravim nekakav tajmer za punjac NiMh baterija, koji bi odbrojavao recimo 12 sati i nakon toga iskljucio punjenje. Ovaj tajmer sam hteo napraviti sa PIC-om 12F629 ili 12F675 i to tako sto bi PIC pratio da li ima struje u mrezi sa koje se napaja punjac ili ne tako da bi vreme punjenja uvek (bez obzira na nestanak struje) bilo npr. 12 sati! Uradio bih to sa nekom petljom (od npr 1 minuta) i vrednost odbrojanih petlji bih smestao u EEPROM na kraju petlje i ponovo je 'citao' na pocetku petlje(EEPROM bi zapamtio taj broj odbrojanih petlji i nakon nestanka struje), povecao za 1 minut itd sve do 12 sati. Da li moze neko da mi pomogne oko 'smestanja' i 'citanja' tog broja (naredbe, kako da adresiram...). Znam za READ i WRITE naredbu, ali kada sam pokusao sa datasheetom ovih kontrolera nista mi nije bilo jasno jer se pojavljuju i novi registri: EECON1, EECON2, EEDATA, EEADR. Ako je neko u mogucnosti, molim da mi pomogne, jer ovo citanje/pisanje u EEPROM bih koristio i za nesto drugo!!!
[ shonex @ 02.03.2006. 11:51 ] @
Izvini, sada cu ja da budem "pametan", ali zar ti nije najjednostavnije da kupis jedan od onih elektromotornih steker-tajmera podesenih na 12h. Kad nema struje stace i odbrojavanje, kad dodje, punjenje se nastavlja. A kostaju smesno.

To sa pic-om, nije neka nauka, ali ako si sada tek cuo za ove SFRegistre, onda imas jos puno da drljas da bi stigao do gotovog uredjaja, barem ako radis u asembleru. Alternativa ti je da to uradis u nekom od PIC basica. Ja sam slucajno nabasao na www.oshonsoft.com Covek (nas lik, iz Zemuna) je napravio sjajan PIC razvojni sw na bazi Basic-a koji je sam razvio, a na jednom od linkova imas - gle koincidencije, fenomenalan inteligentni NiCD punjac, ali ne bas jeftin kad se sve sabere. E sad, taj nema predvidjeno monitorisanje mreze, pa vidi sta ti je prece.

Poz. Nenad
[ visatix @ 02.03.2006. 12:10 ] @
Znam da ima onih steker-tajmera (imam kuci jedan), ali ja ocu nesto sa PIC-om! Posto sam spomenuo READ i WRITE naredbu, mogao si pretpostaviti da radim u PICBasicu a ne u asembleru!!!
[ roberto555 @ 02.03.2006. 22:12 ] @
EECON1, EECON2,---to su ti kontrolni registri u kojima nakon sto si postavio adresu i podatak,postavljas pojedini bit(imas u datasheetu) da bih upisao takoder i za citanje radim sa atmelom tako da ne znam koji su bitovi,al imas u dokumentaciji!

EEDATA,--podatkovni registar,kod upisa u eeprom tu postavljas podatak koji zelis upisati,a kod citanja nakon zavrsenog citanja tu imas procitani podatak
EEADR.--kod upisa tu stavljas adresu na koju zelis upisati,a kod citanja postavljas adresu sa koje ces citati,nakon citanja podatak je u eedata!
-za kontrolne reg.pogledaj u datasheet kako vrsis upis i citanje,ovo ti je princip,takoder ja radim i u avrstudiu(asembler),tako da ti nemogu reci za picbas.al imas princip drugo je sve sintaksa pojedinog "programa"!
[ aty @ 02.03.2006. 22:28 ] @
Evo jos jednog resenja.

Kontrolu elektroniku zasto moras da napajas sa mreze ??
Ako napajas iz akumulatora, brojis 12 sati. Ako u medjuvremenu nestane mreza samo zaustavis brojenje. Ovako ne moras da smestis podatke u EEPROM.

[ visatix @ 03.03.2006. 10:57 ] @
Sve ja to znam, ali jednostavno sam zapeo za EEPROM jer mi smestanje i citanje EEPROM-a treba i za jos neke stvari, a ne samo za tamo neki tajmer!!!
[ roberto555 @ 03.03.2006. 11:25 ] @
ok,odlucio si za eeprom,svejedno je sad,ak ces jos nesto raditi trebat ce ti to je ok,no ja ne kuzim sto ti sad ne razumijes s tim eepromom,???sto tocno ne kuzis?rekao sam ti cemu sluzi koji registar,u datasheetu vidi za kontrolni reg.znacenje pojedinog bita i eto ti to je sva mudrost,!!

-eto ti slika!

[Ovu poruku je menjao roberto555 dana 03.03.2006. u 12:31 GMT+1]
[ visatix @ 03.03.2006. 13:02 ] @
Citao sam naredbe za PICBasic za npr. upisivanje u EEPROM naredba je write adresa, vrednost i nigde se ne spominju tamo neki registri. Deluje jednostavno, ali sam onda video u datasheetu i te registre pa mi je sve to malo zakomplikovalo stvar! Iskreno, nisam nesto preterano hteo da se "udubim" u problematiku, nego sam hteo cist odgovor i mozda da neko "postavi" neki primer! Ipak, verovatno cu morati sesti i dobro sve to prouciti kada budem imao vise vremena! Roberto555 hvala Ti na trudu!
[ _str_ @ 03.03.2006. 17:33 ] @
Ako radis u BASIC-u onda registri i ne treba da te interesuju. Ako pises program u asembleru, e onda...
Primer za BASCOM (AVR):

Writeeeprom (promenljiva),lokacija
Writeeeprom x,5

Raedeeprom a,5

Sve se svodi na jednu komandu. Pogledaj u help za sintaksu PICBasic-a.
Ako je x word onda moras racunati da ce da zauzme 2 bajta eeproma, tako da snimanje sledece promenljive krece od 7 (writeeeprom y,7).
[ 16f84 @ 08.03.2006. 07:12 ] @
Ne poznam ovog bas?&%& :( Ako možeš ovuči kodo od assemblera onda je ovo veoma jednostavno:

Upis U EEprom:

Code:

;-----------------------------------------------
;procedura v eeprom na lokacijo katero predhodno
;nastavimo vpise vrednost iz registra W
;-----------------------------------------------
EE_VPIS
    bcf INTCON,GIE        ;izklop prekinitev
    btfsc INTCON,GIE
    goto EE_VPIS
    bsf STATUS,RP0
    movwf EEDATA
    bsf EECON1,WREN        ;omogocim vpis
    movlw 0x55
    movwf EECON2
    movlw 0xAA
    movwf EECON2        ;magicna sekvenca
    bsf EECON1,WR
    btfsc EECON1,WR
    goto $-1
    bcf EECON1,WREN
    bcf STATUS,RP0
    bsf INTCON,GIE
    return



Čitanje EEproma
Code:

;--------------------------------------------------
;procedura iz eeproma (lokacija doblena v W)prebere
;vrednost katero vrne v W
;--------------------------------------------------
EE_BRANJE
    bsf STATUS,RP0
    movwf EEADR
    bsf EECON1,RD
    movf EEDATA,w
    bcf STATUS,RP0
    return    



Kao real-clock timer može se i koristi PCF8593 (Clock/calendar with 240 8-bit RAM) koji rade na I2C i može se napajat iz bateriji (može i z tiste koja se puni)


PS
Izvinite, ako nešto nisem dobro napisao, srbohrvacki nije moj materin jezik.





[ elektros @ 12.04.2006. 09:25 ] @
Ima li neko iskustva sa PCF8593-program, spajanje sa mikrokontrolerom, mogućnosti...
[ lord Vader @ 06.05.2006. 00:32 ] @
Ti si izabrao najgori način punjenja baterija, vremensko ograničenje. Mikrokontroleri su mnogo jako oruđe pa treba da ih koristiš što je moguće više. Pretraži malo net i videćeš da je najbolji način za punjenje NiCD baterija kombinacija vremenskog ograničenja i detekcija negativne promene napona na bateriji. Time komplikuješ elektroniku ali dobiješ neuporedivo bolji punjač. Ako hoćeš još veći kvalitet treba meriti temperaturu baterije tokom punjenja i razbijati mehuriće koji se hvataju na elektrodama naglim kratkim pražnjenjem baterije tokom punjenja. Ima fenomenalnih sajtova gde je sve lepo opisano, šta prija, a šta ne baterijama.

Što se tiče EEPROM memorije, ja radim na asembleru i postoje tri registra vezana za eeprom, EEDATA, EEADR i par flegova. Ako se vrši upis jednostavno se u EEDATA upiše podatak, u EEADR adresa lokacije EEPROMA u koju se smešta podatak i izazove upiš. Ovaj deo je vremenski kritičan i zato se tada mora isključiti globalni interapt. Postoji sekvenca koja se mora ispoštovati da bi upis bio validan. Posle ove sekvence mora se sačekati par ms pre narednog upisa jer je upiš u memorije EEPROM tipa relativno spor.

Vidi u čemu grešiš, ali ako radiš na basicu teško da ti mogu pomoći. U tim višim jezicima niko živ ne zna šta se dešava, moraš da im veruješ na reč da funkcije rade:)!!!!
[ roberto555 @ 10.05.2006. 11:47 ] @
eto brzinskog primjera:

upisi i citaj pozivas sa rcall

upisi_u_eeprom:
cli ;onemog.prekid
out eear,adresa ;postavlja adresu
out eedr,podatak ;postavlja podatak
sbi eecr,2 ;set eemwe
sbi eecr,1 ;set eewe
pro:
sbic eecr,1 ;nece nastaviti sa dlajim izvr.prg.ako nije
rjmp pro ; zavrsio upis
sei ;omog.prekid
ret ;vraca se iz rutine

citaj_iz_eeproma:
cli ;onemog.prekid
out eear,adresa ;adresa sa koje se cita
sbi eecr,0 ;postvlja bit za citanje u eecr
in podatak,eedr ;procit.vrijednost,ide u "podatak"
prov:
sbic eecr,0 ;provjerava dal je gotoov citanje
rjmp prov ;proc.pod. je u reg. "podatak"
sei ;omog.prekid
ret ;vraca se