 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
| Poglej prejšnjo temo :: Poglej naslednjo temo |
| Avtor |
Sporočilo |
SIMON ZORKO Član

Pridružen-a: Pet 19 Sep 2008 11:20 Prispevkov: 14 Aktiv.: 0.07 Kraj: zg.Volicina
|
Objavljeno: Ned Jun 12, 2011 4:19 pm Naslov sporočila: Nastavljiv utripalnik in nastavljive zakasnitve z lcdjem |
|
|
Lepo pozdravljeni
Narediti nameravam nastavljiv utripalnik. Nastaviti bo mogoče čas pavze in čas gorenja led diode. Čas bo nastavljiv v sekundah. Podatke bom vpisoval z matrično tipkovnico. Naprava bo omogočala še nastavitev 3 časovnih zakasnitev, ki bodo prav tako nastavljive. Podatki se bodo izpisovali na LCD zaslonu 2*16. Programiral bom v zbirniku. Kako izgleda koda ki število vnešeno z tipkovnico shrani v eeprom? Kako to nastavitev beremo iz eeproma in uporabimo za zakasnitev? Sam znam že nekaj osnov v zbirniku, kot so branje tipk, inicializacija LCD, vklop izhodov in podobno. Ne vem pa napisati kode ki nastavitve shrani v eeprom in nato nastvitve bere iz eeproma in jih uporabi v zakasnitvah. Med nastavitvijo parametrov je na lcd zaslonu izpisano ime nastavitve nato se izpiše število sekund, ki jih vpišemo z tipkovnico. Napravo bom uporabil za nadzor gorilnika na pelete.
Prosil bi za kak primer kode v zbirniku in za program pisanja in branja EEPROMa in prikaz vpisane vrednosti na LCDju. Pomagala bi mi tudi kakšna podobna naprava.
Hvala za nasvete. |
|
| Nazaj na vrh |
|
 |
PZUFIC Vseved


Pridružen-a: Sob 17 Nov 2007 19:06 Prispevkov: 6987 Aktiv.: 31.16 Kraj: Rakek
|
Objavljeno: Ned Jun 12, 2011 4:22 pm Naslov sporočila: |
|
|
Boš to uporabljal samo za vklop ali za izklop peči? Namreč ponavadi se te peči same prilagajajo po potrebi. _________________ Ne čakaj, da se bo nekaj premaknilo pojdi in nekaj premakni.
Lp Primož |
|
| Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 15.32
|
Objavljeno: Ned Jun 12, 2011 4:29 pm Naslov sporočila: |
|
|
Pisanje in branje EEproma se razlikuje med posameznimi PIC-i .
Vse pa piše v datasheetu, kjer je tudi primer kode za branje in pisanje.
Bo treba kar direkt od tam kopirati, ni druge.
Če pa nameravaš naenkrat prenašati večje količine podatkov med RAM-->EE ali EE-->RAM , se v zanki uporabi indeksni register.
Ta koda je za serijo 16F87xA
| Koda: |
EE2RAM ; Vrednosti spremenljivk iz EEPROM-a vpiše v RAM BANKA 0
bcf UraDela
bcf INTCON,GIE
movlw TempEk ;0x13 ; Ponovim zanko TempE-krat, dokler ne shranim v RAM 19 spremenljivk
movwf TempE
movlw 0x30 ; Podatki naj se shranijo na Indeksnih Naslovih 0x30 ... 0x43 v Ram-u BANKA 0
movwf RamPodI
movlw 0x00 ; Naslov podatkov v EEPROM-u 0x00 ... 0x13
movwf EproNas
goto EE2RAMz
EE2RAMb1 ; Vrednosti spremenljivk iz EEPROM-a vpiše v RAM BANKA 1
bcf UraDela
bcf INTCON,GIE
movlw 0x0F ;0x0F ; Ponovim zanko TempE-krat, dokler ne shranim v RAM 16 spremenljivk
movwf TempE
movlw 0xB0 ; Podatki naj se shranijo na Indeksnih Naslovih 0xB0 ... 0xBF v Ram-u BANKA 1
movwf RamPodI
movlw 0x80 ; Naslov podatkov v EEPROM-u 0x00 ... 0x0F
movwf EproNas
EE2RAMz ; ZANKA
movf RamPodI,w ; V W shranim naslov Ram-a, v katerega hočem vpisati vrednost spremenljivke iz EEPROM-a.
movwf FSR ; Ta naslov vpišem v FSR
call Beri_EE ; Iz EproNas (naslova v EEPROM-u) shranim EproPod (podatek iz EEPROM-a) v W .
btfsc EproNas,7 ; Naslov 0x80
bsf STATUS,RP0 ; BANKA1
movwf INDF ; W shranim v INDF in na naslovu RamPodI je sedaj vrednost iz EEPROM-a
bcf STATUS,RP0 ; BANKA0
incf EproNas,f ; Naslednjič bom bral iz višjega naslova v EEPROM-u ...
incf RamPodI,f ; ... in vpisal v višji naslov v RAM-u .
decfsz TempE,f ; So že vse spremenljivke iz EEPROM-a vpisane v RAM ?
goto EE2RAMz ; NE
Beri_EE ; Podprogram za branje iz EEPROM-a
movf EproNas,w
bcf STATUS, RP0
bsf STATUS, RP1 ; Banka 2
movwf EEADR ; Naslov podatka nalozimo v EEADR
bsf STATUS, RP0 ; Banka 3
bcf EECON1, EEPGD ; Point to data memory
bsf EECON1, RD ; Start Read
bcf STATUS, RP0 ; Banka 2
movf EEDATA, w ; w = EEDATA
bcf STATUS, RP1 ; Banka 0
return
RAM2EE ; Vrednosti spremenljivk iz RAM-a BANKA 0 vpiše v EEPROM
bcf UraDela
bcf INTCON,GIE
movlw TempEk ;0x13 ; Ponavljam zanko, dokler ne shranim v EEPROM 19 spremenljivk
movwf TempE
movlw 0x30 ; Podatki na Indeksnih Naslovih 0x30 ... 0x3F v Ram-u BANKA 0
movwf RamPodI
movlw 0x00 ; Naslov podatkov v EEPROM-u 0x00 ... 0x0F
movwf EproNas
goto RAM2EEz
RAM2EEb1 ; Vrednosti spremenljivk iz RAM-a BANKA 1 vpiše v EEPROM
bcf UraDela
bcf INTCON,GIE
movlw 0x0F ;0x0F ; Ponavljam zanko, dokler ne shranim v EEPROM 16 spremenljivk
movwf TempE
movlw 0xB0 ; Podatki na Indeksnih Naslovih 0xB0 ... 0xBF v Ram-u BANKA 1
movwf RamPodI
movlw 0x80 ; Naslov podatkov v EEPROM-u 0x80 ... 0x8F
movwf EproNas
RAM2EEz ; ZANKA
movf RamPodI,w ; V W shranim naslov Ram-a, iz katerega hočem prebrati vrednost spremenljivke.
btfsc EproNas,7 ; Naslov 0x80
bsf STATUS,RP0 ; BANKA1
movwf FSR ; W vnesem v FSR in ...
movf INDF,w ; ... vrednost spremenljivke se pojavi v INDF . Prenesem jo v W ...
bcf STATUS,RP0 ; BANKA0
movwf EproPod ; ... in shranim v spremenljivko za Podatek, ki se bo vpisal v EEPROM.
call Pisi_EE ; Na EproNas (naslov v EEPROM-u) shranim EproPod (podatek za vpis v EEPROM) GLEJ DATASHEET
incf RamPodI,f ; Naslednjič bom bral iz višjega naslova v RAM-u ...
incf EproNas,f ; ... in vpisal v višji naslov v EEPROM-u .
decfsz TempE,f ; So že vse spremenljivke iz RAM-a vpisane v EEPROM ?
goto RAM2EEz ; NE
clrf EproNas
bsf INTCON,GIE
return ; DA
|
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
| Nazaj na vrh |
|
 |
SIMON ZORKO Član

Pridružen-a: Pet 19 Sep 2008 11:20 Prispevkov: 14 Aktiv.: 0.07 Kraj: zg.Volicina
|
Objavljeno: Pon Jun 27, 2011 2:27 pm Naslov sporočila: |
|
|
| Sam sem naredil gorilnik na pelete. Sedaj potrebujem nadzorno elektroniko za gorilnik. Omenjeno vezje bom uporabil za nastavitev količine pelet, ki se dodajo pred vžigom gorilnika, za intezivnost dodajanja pelet v fazi prehodnega gorenja in fazi polnega gorenja, vezje bo omogočalo nastavitev časa trajanje faze prehodnega gorenja in nastavljiv čas izpihovanja pepela. Za vnos podatkov bi služila matrična tipkovnica. Nastavitve bi se morale shraniti v EEPROM ,da ostanejo tudi po izklopu vezja. Podatki bi se izpisovali na LCD. Ker so uporabljene dolge zakasnitve, bi za vklop vnosa podatkov v EEPROM verjetno moral uporabiti prekinitev, da nebi čakal da se konča zakasnitev. |
|
| Nazaj na vrh |
|
 |
SIMON ZORKO Član

Pridružen-a: Pet 19 Sep 2008 11:20 Prispevkov: 14 Aktiv.: 0.07 Kraj: zg.Volicina
|
Objavljeno: Pon Jun 27, 2011 2:35 pm Naslov sporočila: |
|
|
Vprašal bi ali b mii kdo iz okolice Maribora-Lenarta, ki programira PIC mikrokontrolerje hotel pokazati nekaj osnov programiranja? Za učenje programiranja sem uporabljal knjigo Programirajmo PIC mikrokontrolerje, ki zelo dobro opiše assembler. Sedaj pa sem začel spoznavati Mikrobasic za PIC in sem že naletel na težave. Vesel bi bil če bi mi kdo bil pripravljen pokazati nekaj osnov programiranja, saj je večina literature na spletu v angleščini, ki pa je ne obvadam dobro. Hvala.
Moj mail: simon.zorko@gmail.com |
|
| Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 15.32
|
Objavljeno: Pon Jun 27, 2011 3:04 pm Naslov sporočila: |
|
|
Za uro uporabi RTC čip. Na leto zgreši za par sekund, česar niti slučajno ne boš dosegel s PIC-om.
Še vedno nisi napisal s katerim PIC-om delaš, ker je tudi struktura prekinitve odvisne od tega.
Sicer pa se daljše pavze obravnava na sledeč način:
Uporabiš prekinitve s Timer0. Ob znani frekvenci (4MHz, 10Mhz, 20MHz,...), znanem preddelilniku timerja in morebitnem vnašanju vrednosti timerja se prekinitve zgodijo vsakih xyz ciklov.
Glede na potrebno hitrost izvajanja programa ponavadi napravim tako, da se v prekinitvi postavljajo zastavice
bsf zCas001 ;(stotinka sekunde)
bsf zCas010 ;(desetinka sekunde)
bsf zCas100 ;(ena sekunda).
GlavnaZ
btfss zCas010 ; ali je minilo 0,1sekunde?
goto GlavnaZ ; NE še, čakaj.
; JA, naredi zanko
...
bcf zCas010 ;
goto GlavnaZ
Ker veš, da v pavzo vstopiš samo naprimer vsako sekundo, v pavzi samo povečaš števec, ga primerjaš z nastavljeno vrednostjo, po potrebi nastaviš zastavico in letiš ven. Vsega par us za obdelavo pavze. V drugem podprogramu pa pogledaš, če je zastavica postavljena
btfss zXYZ ; je postavljena?
return ; NE, leti ven iz podprograma
; JA, izvede podprogram
...
bcf zXYZ ; brisanje zastavice
return
ga izvedeš, pobrišeš zastavico in letiš ven.
Seveda so zastavice samo del spremenljivke Zastave_
#define zCas001 Zastave1,0
#define zCas010 Zastave1,1
... Pač porabiš 2 ali 3 spremenljivke samo za zastavice, da potem program zleti okrog v nekaj 10-100 ciklih.
Eh, zdajle videl, da greš na PICbasic. Mail "popravi" v ime(afna)priimek(pika)ponudnik(pika)com _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
| Nazaj na vrh |
|
 |
SIMON ZORKO Član

Pridružen-a: Pet 19 Sep 2008 11:20 Prispevkov: 14 Aktiv.: 0.07 Kraj: zg.Volicina
|
Objavljeno: Pon Jun 27, 2011 3:14 pm Naslov sporočila: |
|
|
| Uporabil bom PIC 16F877. Saj v assemblerju tudi delam, vendar sem delal le še enostavne stvari, tako da mi manjka nekaj znanja za bolj zahtevne stvari. V assemblerju imaš popoln nadzor nad mikrokontrolerjem in lahko nekatere stvari narediš po svoje, kar v mikrobasicu ni mogoče! Je pa v assemblerju polno fint ki jih jaz kot začetnik ne poznam, zato sem vsake informacije vesel. |
|
| Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 57.58 Kraj: Divača (Kačiče)
|
Objavljeno: Pon Jun 27, 2011 3:52 pm Naslov sporočila: |
|
|
Če rabiš RTC čip se javi. _________________ Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo. |
|
| Nazaj na vrh |
|
 |
PZUFIC Vseved


Pridružen-a: Sob 17 Nov 2007 19:06 Prispevkov: 6987 Aktiv.: 31.16 Kraj: Rakek
|
Objavljeno: Pon Jun 27, 2011 4:58 pm Naslov sporočila: |
|
|
Sem mnenja, da raje ne delaj na zakasnitve, ampak trenutno temperaturo dimnih plinov in plamena. Skratka vsake toliko časa je treba izvesti meritve v peči in izhodu plinov, ter na podlagi tega prilagajati upih in doziranje. Taka peč zna namreč odtrgati tudi svoja vrata. _________________ Ne čakaj, da se bo nekaj premaknilo pojdi in nekaj premakni.
Lp Primož |
|
| Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 232 dni
Powered by phpBB © 2001, 2005 phpBB Group
|