www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Nastavljiv utripalnik in nastavljive zakasnitve z lcdjem

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
SIMON ZORKO
Član
Član



Pridružen-a: Pet 19 Sep 2008 11:20
Prispevkov: 14
Aktiv.: 0.07
Kraj: zg.Volicina

PrispevekObjavljeno: Ned Jun 12, 2011 4:19 pm    Naslov sporočila:  Nastavljiv utripalnik in nastavljive zakasnitve z lcdjem Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
PZUFIC
Vseved



Pridružen-a: Sob 17 Nov 2007 19:06
Prispevkov: 6987
Aktiv.: 31.16
Kraj: Rakek

PrispevekObjavljeno: Ned Jun 12, 2011 4:22 pm    Naslov sporočila:   Odgovori s citatom

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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 15.32

PrispevekObjavljeno: Ned Jun 12, 2011 4:29 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
SIMON ZORKO
Član
Član



Pridružen-a: Pet 19 Sep 2008 11:20
Prispevkov: 14
Aktiv.: 0.07
Kraj: zg.Volicina

PrispevekObjavljeno: Pon Jun 27, 2011 2:27 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
SIMON ZORKO
Član
Član



Pridružen-a: Pet 19 Sep 2008 11:20
Prispevkov: 14
Aktiv.: 0.07
Kraj: zg.Volicina

PrispevekObjavljeno: Pon Jun 27, 2011 2:35 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 15.32

PrispevekObjavljeno: Pon Jun 27, 2011 3:04 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
SIMON ZORKO
Član
Član



Pridružen-a: Pet 19 Sep 2008 11:20
Prispevkov: 14
Aktiv.: 0.07
Kraj: zg.Volicina

PrispevekObjavljeno: Pon Jun 27, 2011 3:14 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 57.58
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Pon Jun 27, 2011 3:52 pm    Naslov sporočila:   Odgovori s citatom

Če rabiš RTC čip se javi.
_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
PZUFIC
Vseved



Pridružen-a: Sob 17 Nov 2007 19:06
Prispevkov: 6987
Aktiv.: 31.16
Kraj: Rakek

PrispevekObjavljeno: Pon Jun 27, 2011 4:58 pm    Naslov sporočila:   Odgovori s citatom

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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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: 233 dni


Powered by phpBB © 2001, 2005 phpBB Group