|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Ned Nov 07, 2004 8:25 am Naslov sporočila: Hm, sedaj si me pa našel nepripravljenega! |
|
|
Sedaj pa si me našel nepripravljenega. NI kaj, moram priznati, da v tem načinu še nisem uporabljal TImerja. In tudi testirati ne morem, ker nimam programatorja, a to bo v nekaj dneh urejeno, tedaj bom testiral timer v tem načinu
Do takrat pa malo potrpljenja, prosim
Pozdrav
Vilko _________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
Nazaj na vrh |
|
|
red_mamba Profesionalec
Pridružen/-a: Tor Jan 2004 16:44 Prispevkov: 181 Kraj: Mozirje
|
|
Nazaj na vrh |
|
|
marcelo Novinec
Pridružen/-a: Tor Okt 2004 12:07 Prispevkov: 9
|
Objavljeno: Ned Nov 07, 2004 1:27 pm Naslov sporočila: pomožna rešitev |
|
|
pozdravvljeni
Tudi sam se trudim da najdem rešitev. na asembler se ne spoznam dosti ( vem da je zelo koristen).Za silo bi rabil rešitev za dva atmela. torej ločena programa za vsakega . Eden naj menjava impulze vsakih 122 mikro sekund drugi pa kretek impulz 50 mikro sekund vsake 4 sekunde.
Ploščico sem že naredil tudi za to varianto, dokler ne najdemo rešitve. |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Tor Nov 09, 2004 10:04 am Naslov sporočila: Počakaj še kakšen dan |
|
|
Počakaj še kakšen dan. Programator sem že popravil. Danes moram nekam ven, tako da se bom šele popoldan ali zvečer ukvarjal s tem.
Vilko _________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Tor Nov 09, 2004 4:48 pm Naslov sporočila: Tako! Program dela! |
|
|
Program sem testiral na testni plošči BASCOM.
Impulze s polperiodo 122 usec sem gledal na osciloskopu (stari škatli iz časov elektronk). 4sekundni impulz sem opazoval na led diodi, dolžino impulza sem ustrezno podaljšal, da se to da opazovati na led diodi. V pravem programu je potrebno le konstanto, ki jo polniš v akumulator ustreno spremeniti.
Koda je sledeča:
Koda: |
$regfile = "89c2051.dat"
$crystal = 12000000
' inicializacija - nastavimo parametre za timer interrupt
' Če je frekvenca krislata f je timerenota 12/f
' Do prekinitve pride po
' 1 timerenot krat vrednost load pri mode je 2
' 32 timerenot krat vrednost load pri mode je 0
' 256 timerenot krat vrednost load pri mode je 1
'
Config Timer0 = Timer , Gate = Internal , Mode = 2
On Timer0 Titi122
Load Timer0 , 122
Start Timer0
Enable Timer0
Enable Interrupts
' Za časovno konstanto 4 sekunde bomo uporabili timer1:
' 4 sek = 4 000 000 usec / 256 = 15625
' 15625 / 125 = 125
Config Timer1 = Timer , Gate = Internal , Mode = 1
On Timer1 Titi4sec
Load Timer1 , 125
Start Timer1
Enable Timer1
Enable Interrupts
Dim Stevec1 As Byte
Pin4sec Alias P3.3
Do
If Stevec1 > 124 Then
Stevec1 = Stevec1 - 125
' Pin4sec = Not Pin4sec 'če uporabljam alias ime - ne dela!
P3.3 = Not P3.3
End If
If P3.3 = 1 Then
' trajanje impulza na 10 msec, lahko opazujemo na led diodi
' Waitms 10
' če pa želimo trajanje 50 usec potem si moramo pomagati z assemblerjem:
$asm
mov a,#255 'nastavi število zank
djnz a,*-0 'odštevaj do ničle, vsakokrat porabiš 2 usec
$end Asm
Reset P3.3
End If
Loop
Titi4sec:
'Vsakih 125 * 256 usec smo v tej rutini
' povečamo stanje števca in ponovno napolnimo timer
Load Timer1 , 125
Incr Stevec1
Return
Pin122us Alias P3.0
Titi122:
'Vsakih 122 usec se aktivira rutina titi122 in njena naloga je, da
'preklopi bit pin122:
Pin122us = Not Pin122us
' V mode=2 je autoreload vključen v hardware
Return
|
Pri tem sem opazil da
Uporaba alias včasih dela, včasih ne.
Med tem ko uporaba aliasa pin122us ni bila problematična,
je program stekel šele, ko sem se odrekel uporabe alias imena za
pin4sec in je stekel šele, ko sem namesto le tega uporabil direktno ime pina p3.3
To bi sicer lahko rekli, da gre za napako prevajalnika, toda ni šans, da bi avtor to popravil, saj je bascom8051 nehal negovati že pred kakima dvema letoma.
Opomba:
Assemblerska instrukcija
mov a,#255 'nastavi število zank
določa število, kolikokrat naj se izvede sledeča assemblerska instrukcija
djnz a,*-0 'odštevaj do ničle, vsakokrat porabiš 2 usec
kjer spet ni bil zadovoljen z assemblerskim naslovom *, temveč sem moral namesto le tega zapisati *-0
Vsako izvajanje instrukcije djnz porabi 2 usec
Če torej hočeš točno 50 usec, tedaj bi bilo potrebno pogledati, koliko mikrosekund vzamejo instrukcijo
If P3.3 = 1 Then
in nato razliko dodati še v enotah po 2 usec v instrukcijo
mov a, #
namesto številke 255. Mislim, da bi bila številka 20 kar dovolj blizu. Ne vem, koliko natančno je važno, da je dolžina impulza točno 50 usec
Pa lepo naprej.
Vilko[/quote][/list] _________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
Nazaj na vrh |
|
|
SimonS Profesionalec
Pridružen/-a: Pon Jan 2004 17:52 Prispevkov: 181 Kraj: Kobarid
|
Objavljeno: Tor Nov 09, 2004 5:35 pm Naslov sporočila: |
|
|
No to sicer ne spada povsem zraven, ampak mislim da je na mestu.
Kot je ze Vilko povedal se bascom ne razvija vec. Ze sedaj moram kup stvari dopisovati sam z assemblerjem...
Sedaj obstaja moznost da gremo nazaj na assembler oziroma na "C". Meni je zadnja moznost predcej ljubsa in bom slej ali prej presel nanjo. Problem. Pojma nimam o C-ju. Zelo lepo bi bilo, ce bi se nasel kaksen junak, ki obvlada C za 8051 in napravil kaksno malo solo... Mogoce ze obstajajo kaksne dobre knjiznice zanj itd... _________________ Skupaj smo mocnejsi
LP Simon |
|
Nazaj na vrh |
|
|
iskra Profesionalec
Pridružen/-a: Tor Jan 2004 16:29 Prispevkov: 254 Kraj: Sežana
|
Objavljeno: Tor Nov 09, 2004 6:50 pm Naslov sporočila: |
|
|
SimonS je napisal/a: | No to sicer ne spada povsem zraven, ampak mislim da je na mestu.
Kot je ze Vilko povedal se bascom ne razvija vec. Ze sedaj moram kup stvari dopisovati sam z assemblerjem...
Sedaj obstaja moznost da gremo nazaj na assembler oziroma na "C". Meni je zadnja moznost predcej ljubsa in bom slej ali prej presel nanjo. Problem. Pojma nimam o C-ju. Zelo lepo bi bilo, ce bi se nasel kaksen junak, ki obvlada C za 8051 in napravil kaksno malo solo... Mogoce ze obstajajo kaksne dobre knjiznice zanj itd... |
Se pridružujem , če bi bil Maribor bližje . bi izkoristil to možnost: http://www1.ozs.si/~elektroniki/forum/viewtopic.php?t=3317 / tako pa |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Sre Nov 10, 2004 6:34 pm Naslov sporočila: Jaz ostajam pri Bascomu |
|
|
Jaz ostajam pri Bascomu. Seveda ni perfekten, kar tako in tako velja za vse, kar je kdajkoli človek naredil. Nova orodja prinašajo sicer nove možnosti, toda tudi nove muke: treba se jih je naučiti uporabljati, (stari ljudje se že bolj počasi učimo), najti je treba njih slabosti, (za BASCOM že poznam njegove slabosti).
Tako pa svoje probleme rešujem kar z BASCOMom še v naprej. In če kje kaj zmanjka, je tukaj še vedno stari dobri Assembler.
Sicer pa je prav, da mladci preskakujete stare!
Lepo neprej!
Vilko _________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
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 You cannot attach files in this forum You cannot download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|