www.elektronik.si
štoparica z at89c2051 bascom
Pojdi na stran 1, 2  Naslednja  :||:
www.elektronik.si -> AVR, LPC900, x51

Avtor: drax PrispevekObjavljeno: 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

Avtor: bungeeKraj: Ljubljana PrispevekObjavljeno: Ned Nov 11, 2007 12:18 am    Naslov sporočila:  
----------------------------------------------------------------------------
Če bi temo v pravi sklop napisu bi bilo tudi fajn Wink

Fixed VolkD

Avtor: vilkoKraj: Dragomer PrispevekObjavljeno: 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?

Avtor: drax PrispevekObjavljeno: Ned Nov 11, 2007 12:26 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Ne, ker ne vem kako naj sploh začnem!

Avtor: CarpeDiemKraj: Vrhnika PrispevekObjavljeno: 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.

Avtor: drax PrispevekObjavljeno: 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

Avtor: CarpeDiemKraj: Vrhnika PrispevekObjavljeno: 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.

Avtor: dkoneKraj: Krško PrispevekObjavljeno: 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.

Avtor: frenkiKraj: Ljubljana (JN76GB) PrispevekObjavljeno: 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

Avtor: drax PrispevekObjavljeno: 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

Avtor: dkoneKraj: Krško PrispevekObjavljeno: 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.

Avtor: juremKraj: Ljubljana PrispevekObjavljeno: 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

Avtor: vilkoKraj: Dragomer PrispevekObjavljeno: 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

Avtor: simeonKraj: Šentjernej PrispevekObjavljeno: 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).

Avtor: vilkoKraj: Dragomer PrispevekObjavljeno: 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.

Stran 1 od 2

Powered by phpBB © 2001,2002 phpBB Group