|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
drax Neznanec
Pridružen-a: Čet 27 Sep 2007 10:49 Prispevkov: 5 Aktiv.: 0.02
|
Objavljeno: Sob Nov 10, 2007 11:23 pm Naslov sporočila: štoparica z at89c2051 bascom |
|
|
lp.
že dolgo časa se mučim z enim preprostim projektom....
Ce mi lahko kdo pomaga kako v bascomu napišem program za štoparico , ki bo se prikazovala na lcd 2x16 zaslonu in ima 3 vhode (start, stop, reset).
Rad bi pa imel prikaz ura, min, sek in stotinka ...
hvala
|
|
Nazaj na vrh |
|
|
bungee Član
Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.64 Kraj: Ljubljana
|
Objavljeno: Ned Nov 11, 2007 12:18 am Naslov sporočila: |
|
|
Če bi temo v pravi sklop napisu bi bilo tudi fajn
Fixed VolkD
|
|
Nazaj na vrh |
|
|
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.04 Kraj: Dragomer
|
Objavljeno: Ned Nov 11, 2007 8:42 am Naslov sporočila: Kako daleč si pa že prišel? |
|
|
Kako daleč si pa že prišel?
1. si definiral procesor, kristal, okolje,
2. si definiral tipke in lcd
3. si definiral spremenljivke
4. si definiral urni mehanizem, se pravi prekinitveni podprogram s katerim boš
meril stotinke sekunde
5. imaš koncept programske hrbtenice?
Na kakšnem vezju boš testiral program? Bascom testni plošči?
|
|
Nazaj na vrh |
|
|
drax Neznanec
Pridružen-a: Čet 27 Sep 2007 10:49 Prispevkov: 5 Aktiv.: 0.02
|
Objavljeno: Ned Nov 11, 2007 12:26 pm Naslov sporočila: |
|
|
Ne, ker ne vem kako naj sploh začnem!
|
|
Nazaj na vrh |
|
|
CarpeDiem Član
Pridružen-a: Pon 16 Feb 2004 17:24 Prispevkov: 333 Aktiv.: 1.50 Kraj: Vrhnika
|
Objavljeno: Ned Nov 11, 2007 12:31 pm Naslov sporočila: |
|
|
Za začetek si očitno našel forum. Kar v današnjem času niti ni tako težko. Sedaj pa uporabi funkcijo "išči" preden boš začel postavljati preveč vprašanj.
|
|
Nazaj na vrh |
|
|
drax Neznanec
Pridružen-a: Čet 27 Sep 2007 10:49 Prispevkov: 5 Aktiv.: 0.02
|
Objavljeno: Ned Nov 11, 2007 12:58 pm Naslov sporočila: |
|
|
carpediem- hvala za tako obsežen odgovor. Če je kdo pripravljen pomagati, naj mi prosim opiše kako se prikazuje čas v bascom oz. meri.
hvala
|
|
Nazaj na vrh |
|
|
CarpeDiem Član
Pridružen-a: Pon 16 Feb 2004 17:24 Prispevkov: 333 Aktiv.: 1.50 Kraj: Vrhnika
|
Objavljeno: Ned Nov 11, 2007 2:25 pm Naslov sporočila: |
|
|
Lahko ti pa zadevo naredim in prinesem danes zvečer na dom. V lični škatli z mašnico.
Iz tvojih sporočil je razbrati, da niši še niti začel. Vedno znova imam občutek, da se "začetniki v svetu mikrokrmilnikov" ne zavedajo v kaj se spuščajo. Radi bi "hiter" povzetek znanj nekoga, ki je za to rabil mesece (bolj verjetno leta).
PS:
1. Da ne bi pomote. Tudi sam še vedno prištevam k bandi "začetniki v svetu mikrokrmilnikov".
2. Mikrokrmilniki so zelo lep hobi za pridobivanje znanja, ki bi ga drugače z muko pridobival. Branje in pisanje 100ih formul za 100 načinov modeliranja in uporabe tranzistorja. Fuj fej.
|
|
Nazaj na vrh |
|
|
dkone Član
Pridružen-a: Sre 07 Mar 2007 18:53 Prispevkov: 2104 Aktiv.: 10.10 Kraj: Krško
|
Objavljeno: Ned Nov 11, 2007 7:27 pm Naslov sporočila: |
|
|
Drax zakaj se mučiš? poglej si tole. Imaš čisto vse narejeno, nevem zakaj še kar odkrivaš "tople vode". Sicerje program pisan v C-ju, ampak bistvo imaš podano.
sicer se pa s CarpeDiem-om strinjam. Tudi sam se začetnik v tem.
_________________ Denis |
|
Nazaj na vrh |
|
|
frenki Moderator
Pridružen-a: Ned 23 Feb 2003 21:26 Prispevkov: 6553 Aktiv.: 29.42 Kraj: Ljubljana (JN76GB)
|
Objavljeno: Ned Nov 11, 2007 7:54 pm Naslov sporočila: |
|
|
dkone je napisal/a: |
Drax zakaj se mučiš? poglej si tole. Imaš čisto vse narejeno, nevem zakaj še kar odkrivaš "tople vode". Sicerje program pisan v C-ju, ampak bistvo imaš podano. |
A si ti sploh preveril na kaj daješ povezavo? Že nekajkrat sem pisal o pripenjanju dokumentacije na brezplačne strežnike, od koder po nekaj tednih ali mesecih izgine. počasi bo pa tegale dovolj. Najti bo potrebno neko varianto, da se tega na forumu znebimo.
Dkone ti pa poskrbi, da se bodo dokumentacija na katero si dal povezavo tudi pojavila!
Lp, Frenki
|
|
Nazaj na vrh |
|
|
drax Neznanec
Pridružen-a: Čet 27 Sep 2007 10:49 Prispevkov: 5 Aktiv.: 0.02
|
Objavljeno: Ned Nov 11, 2007 11:39 pm Naslov sporočila: |
|
|
carpediem!nihče ti ni rekel da moraš kaj narediti, zato če se ne počutiš pripravljenega pomagati-enostavno ne rabiš!In glede tvojega razumevanja mojega posta: napisal sem(opiše kako se prikazuje čas v bascom oz. meri. ) ne pa da mi napiše program, ker se učim osnov.Zato svoj sarkazem obdrži zase v svoji lični škatlici!
dkone:hvala, to sem že pogledal, vendar me mučijo zakasnitve pri vklop/izklop in rad bi še posebej v bascomu to preizkusil.
lp
|
|
Nazaj na vrh |
|
|
dkone Član
Pridružen-a: Sre 07 Mar 2007 18:53 Prispevkov: 2104 Aktiv.: 10.10 Kraj: Krško
|
Objavljeno: Ned Nov 11, 2007 11:44 pm Naslov sporočila: |
|
|
frenki je napisal/a: |
dkone je napisal/a: |
Drax zakaj se mučiš? poglej si tole. Imaš čisto vse narejeno, nevem zakaj še kar odkrivaš "tople vode". Sicerje program pisan v C-ju, ampak bistvo imaš podano. |
A si ti sploh preveril na kaj daješ povezavo? Že nekajkrat sem pisal o pripenjanju dokumentacije na brezplačne strežnike, od koder po nekaj tednih ali mesecih izgine. počasi bo pa tegale dovolj. Najti bo potrebno neko varianto, da se tega na forumu znebimo.
Dkone ti pa poskrbi, da se bodo dokumentacija na katero si dal povezavo tudi pojavila!
Lp, Frenki |
Se opravičujem, nisem vedel da ne delajo povezave. Meni dela dokumentacija in jo seveda tudi pripenjam.
Opis: |
|
Download |
Ime datoteke: |
stoparca++.zip |
Velikost datoteke: |
185.54 KB |
Downloadano: |
96 krat |
_________________ Denis |
|
Nazaj na vrh |
|
|
jurem Član
Pridružen-a: Tor 02 Dec 2003 15:53 Prispevkov: 408 Aktiv.: 1.83 Kraj: Ljubljana
|
Objavljeno: Pon Nov 12, 2007 9:31 am Naslov sporočila: |
|
|
drax je napisal/a: |
napisal sem(opiše kako se prikazuje čas v bascom oz. meri. ) ne pa da mi napiše program, ker se učim osnov.
lp |
Kaj pa če bi v roke vzel kakšno literaturo, tudi v slovenskem jeziku je nekaj literature na to temo.
Ko boš "zvozil" od začetka, ti bodo člani foruma lažje pomagali, prve korake moraš narediti sam...
Lp
Jure
|
|
Nazaj na vrh |
|
|
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.04 Kraj: Dragomer
|
Objavljeno: Pon Nov 12, 2007 11:50 am Naslov sporočila: Mala šola Bascoma |
|
|
Pa se malo pozabavajmo z Bascom-om. Morda bom še koga navdušil za programiranje mikroprocesorjev v Bascomu.
Torej, naredimo štoparico!
Za osnovo vzamem Bascom testno ploščo, kjer imam skoraj vse, kar je potrebno, le še LCD je potrebno vezati. (Pa še to je na novi Bascom Minipin plošči že predvideno, le te plošče nimam, imam eno staro.)
Najprej definiram procesor in kristal:
Koda: |
' Definiramo generalije
Const Program = "Stoparica"
$regfile = "89c2051.dat"
$crystal = 11059200 |
Kristal vzamem take frekvence, ki je dekliva z 12*100 = 1200 brez ostanka, ker tako bom dokaj natančno meril čas. Zakaj 12 * 100 ? Ker mikroprocesorji družine 8051 štejejo z internim timerjem časovne enote, ki se f/12 kjer je f frekvenca kristala, in 100 zato, ker hočem meriti stotinke sekunde.
Nato definiram kako je vezan LCD. Vežem ga kar tako, kot priporoča Bascom Help:
Koda: |
LCD-DISPLAY PORT PIN
DB7 P1.7 14
DB6 P1.6 13
DB5 P1.5 12
DB4 P1.4 11
E P1.3 6
RS P1.2 4
RW Ground 5
Vss Ground 1
Vdd +5 Volt 2
Vo 0-5 Volt 3 |
definiram isto še v programu:
Koda: |
' Definiramo LCD
Config Lcdpin = Pin , Db7 = P1.7 , Db6 = P1.6 , Db5 = P1.5 , Db4 = P1.4 , E = 1.3 , Rs = P1.2 |
' in ga takoj preizkusimo:
Koda: |
Cls
Lcd Program
Wait 1 |
Sledijo navodila, kako uporabiti Timer0. Malo je le treba vedeti o interni logiki timer naprave pri 8051 družini. le ta pozna tri načine, mode=1, mode = 0 in mode = 2
Pri mode = 1, že interno mikroprocesor deli frekvenco z 256 (pri mode = 2 z 1 in pri mode = 0 z 32). Ker želimo prekinitev 100 krat na sekundo moramo polniti timer z vsebino, ki odgovarja:
11059200 / 100 (hočemo stotinke! ) / 12 ( interno 8051 ) / 256 (mode = 1) in to je 36. To se pravi, da moramo timer napravi naložiti, da šteje do 36, predno sproži prekinitev. To naredimo tako:
Koda: |
Config Timer0 = Timer , Gate = Internal , Mode = 1
On Timer0 Titi Nosave
Load Timer0 , 36
Start Timer0
Enable Timer0
Enable Interrupts
Goto Preskok1 'preskočimo timer0 podprogram
Titi:
Dim Stotinke As Byte
Load Timer0 , 36
' v podprogramu ne delamo drugega kot štejemo prekinitve
Incr Stotinke
Return
Preskok1: |
Kot smo videli v preknitvenem podprogramu ne naredimo drugega, kot da štejemo stotinke sekunde in ponovno naložimo v timer število, ki ga krmili do sledeče prekinitve.
In že gremo v glavno programsko zanko, kjer , ko stotinke dosežejo 100 povečamo sekunde, ko sekunde dosežejo 60 povečamo minute itd, in stanje prikažemo na LCD
Koda: |
' Glavna programska zanka
Do
If Stotinke > 99 Then
Stotinke = Stotinke - 100
Incr Sekunde
If Sekunde > 59 Then
Sekunde = Sekunde - 60
Incr Minute
If Minute > 59 Then
Minute = Minute - 60
Incr Ure
End If
End If
End If
Lowerline
Lcd Ure ; ":" ; Minute ; ":" ; Sekunde ; "," ; Stotinke ; " " |
Ja, kaj je še potrebno? seveda tipke start stop reset.
Definiramo jih, z debounce ukazom jih odtipavamo (debounce ukaz je zelo pripraven, ker poleg odtipavanje tipke tudi kompenzira odskakovanje kontaktov stikala) in če ugotovimo, da smo tipko pritisnili, zaustavimo, ali poženemo timer ali pa resetiramo števce:
Koda: |
Tstart Alias P3.3 'tipka TP1 start
Tstop Alias P3.2 'tipka TP2 stop
Treset Alias P3.0 'tipka TP3 reset
Debounce Tstart , 0 , Zacni , Sub
Debounce Tstop , 0 , Prenehaj , Sub
Debounce Treset , 0 , Resetiraj , Sub
Loop
Zacni:
Start Timer0
Return
Prenehaj:
Stop Timer0
Return
Resetiraj:
Ure = 0 : Minute = 0 : Sekunde = 0 : Stotinke = 0
Lowerline
Lcd Ure ; ":" ; Minute ; ":" ; Sekunde ; "," ; Stotinke ; " "
Return |
Kot vidite se Bascom program lahko bere zelo preprosto, za pisanje programa pa je seveda potrebno malo študija, ki pa se zelo hitro izplača.
Upam, da je bilo le to komu dobrodošlo.
pozdrav
|
|
Nazaj na vrh |
|
|
simeon Član
Pridružen-a: Pon 21 Maj 2007 21:55 Prispevkov: 118 Aktiv.: 0.57 Kraj: Šentjernej
|
Objavljeno: Pon Nov 12, 2007 3:01 pm Naslov sporočila: |
|
|
vilko zelo lepo napisano in razloželo. Pohvalno!
Vendar meni se je sedaj postavilo eno vprašanje. Koliko je ta zadeva točna?
Si naredil kakšen poskus?
Ker kakor se jaz spomnim je prijatel delal uro na podoben način in se je izkazalo da je znala veliko zaostajati (na dan tudi za minuto).
_________________ Sej bo bolš! |
|
Nazaj na vrh |
|
|
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.04 Kraj: Dragomer
|
Objavljeno: Pon Nov 12, 2007 3:39 pm Naslov sporočila: No |
|
|
No, točnost je odvisna od kristala, a le ta bi moral biti točen daleč pod promilo.
Zamudo, res majhno zamudo povzroči poraba mikrosekund za prekinitev glavnega programa in nalaganje nove vrednosti v timer, po moji oceni bi moralo biti to manj kot 10 usec na interrupt, interupt pa pride na 10 000 usec = 10 msec
Seveda pa nisem šel tako daleč, da bi pustil teči program en dan. Mislim, da gre pri vsem tem bolj za vajo bascoma in razumevanje delovanja mikroprocesorja.
S štoparico meriš običajno čase nekaj sekund do ene ure, tukaj pa bo več netočnosti prinesel človek, ki ne bo matematično natančno pritisnil tipke.
|
|
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: 68 dni
Powered by phpBB © 2001, 2005 phpBB Group
|