Kazalo po Svet elektronike forumu Svet elektronike
Revija za prave elektronike
 
AlbumAlbum   Pomoč pogostih vprašanjPomoč pogostih vprašanj   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil   PrijavaPrijava 

Basom AVR in Timer1 simulator

 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
tkuhar1
Mojster


Pridružen/-a: Sre Mar 2007 22:20
Prispevkov: 27

PrispevekObjavljeno: Sob Dec 27, 2008 4:23 pm    Naslov sporočila: Basom AVR in Timer1 simulator Odgovori s citatom

Pozdravljeni!

Ja, že spet ta oguljena tema: timer1 in Bascom AVR.

V želji, da bi se naučil pognati Timer1 v Bascom AVR sem prišel do tega programčka:

$sim
$hwstack = 12
$swstack = 128
$framesize = 128
$crystal = 1000000
$baud = 9600
$regfile = "m8def.dat"

Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Postb.7
Config Lcd = 16 * 2

Config Timer1 = Timer , Prescale = 1 ' Timer 1 = 1 sec
Tcnt1l = &HEE
Tcnt1h = &H85
On Timer1 P_1sec
Enable Timer1
Enable Interrupts

Dim St_sec As Byte

Stop Timer1
Reset Timer1

Start Timer1
Locate 1 , 1

Do
Waitms 250
Loop

P_1sec:
Tcnt1l = &HEE
Tcnt1h = &H85
Incr St_sec 'za 1 sec
Cls
Lcd St_sec
Return


In...
Ko sem zadevo skušal testirati v Bascom AVR simulatorju sem opazil, da se je v registra:
Tcnt1l
Tcnt1h
zapisala vrednost hEE in h85, ampak potem ko pride ukaz Start Timer1, se ti vrednosti prav nič ne spremenita.
Na internetu sem našel še približno 5 podobnih programov in nikjer ne vidim, da bi se vrednost v teh dveh registirh pričela ob simulacijio povečevati.
1.) Ali moram kaj posebnega nastaviti v Bascom AVR simulatorju, da mi bo simuliral tudi delovanje Timerja?
2.) Ali imajo vsi programi isto napako?

uporabljam Bascom Avr 1.11.9.1 (včeraj downloadano)- demo verzijo


Za kakršenkoli namig, najlepša hvala!
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 555
Kraj: Ljubljana

PrispevekObjavljeno: Sob Dec 27, 2008 5:51 pm    Naslov sporočila: BascomAVR in timer1 Odgovori s citatom

Hm...
nisem še uporabljal Timer-ja v simulatorju, čeprav sem ga že veliko uporabljal predvsem da ugotovim koliko ciklov uporabi kak ukaz.
V simulatorju za interrupte obstaja posebno okno, prav tako tudi za timer "SIM TIMERS" zgoraj desno.
Poskusi pa boš videl kaj se zgodi.
Vlado
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
tkuhar1
Mojster


Pridružen/-a: Sre Mar 2007 22:20
Prispevkov: 27

PrispevekObjavljeno: Sob Dec 27, 2008 9:40 pm    Naslov sporočila: Odgovori s citatom

Hvala, ja sedaj delovanje timerja vidim tudi v simulatorju.

LP!
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
tkuhar1
Mojster


Pridružen/-a: Sre Mar 2007 22:20
Prispevkov: 27

PrispevekObjavljeno: Ned Dec 28, 2008 8:26 am    Naslov sporočila: Odgovori s citatom

Pozdravljeni še enkrat!

Vlado, ali lahko prosim preizkusite program tudi na vašem simulatorju Bascom AVR?
Meni se zdi, da se stvar čudno obnaša...
Nekaj časa se zadržuje v glavni zanki, potem pa skoči kar na začetek programa.
Pa zdi se mi, da ne glede na to kolikšna je vrednost za timer v registrih, da vedno naredi enako število cikov....


Vse to počnem zato, ker bi si rad naredil nek generator frekvenc, in to reda od 1Hz do 100kHz.

Mogoče imate vi boljši predlog kot je ta?

Hvala
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 555
Kraj: Ljubljana

PrispevekObjavljeno: Ned Dec 28, 2008 10:32 am    Naslov sporočila: AVR Timer1 simulator Odgovori s citatom

Hm..
poskusil sem simulacijo in deluje pravilno (gledano do 15 sekund), čeprav se ukaz LCD nikoli ne daje v prekinitveni podprogram.
Iz prekinitvenega podprograma premakni ukaze za LCD v glavno zanko, novo vrednost naj izpiše samo če se razlikuje od stare.
Zakaj pa si postavil $hwstack=12?
Kaj se pa tiče frekvenčnega generatorja malo preberi na MCS-ovem forumu v temi:
http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=6329
LP
Vlado
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
tkuhar1
Mojster


Pridružen/-a: Sre Mar 2007 22:20
Prispevkov: 27

PrispevekObjavljeno: Ned Dec 28, 2008 11:30 am    Naslov sporočila: Odgovori s citatom

Zdravo!

Kot sem že povedal, kodo sem pobral iz interneta in mislim, da je bila izvorno za attinny...
Zato ostalih parametrov nisem še spremenil (mislim, da se da te nastavitve za vsak ukontroler videti, ko v Bascomu AVR izberem določen tip ukontrloreja, drži?)

Hvala za link, ga bom poizkusil naštudirati, rutino od LCD pa bom prestavil.

Še eno vprašanje:
Ali je mogoče, da če spremenim LCD pine-nastavitve v BASCOMU pod Options-Compiler-LCD, da potem LCD v simulatorju ne deluje več?

Imel sem namreč drugačne nastavitve, pa mi LCD v simulatorju nikakor ni hotel delati...
Potem sem Bascom še enkrat inštaliral, sedaj pa LCD v simulatorju deluje...
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 555
Kraj: Ljubljana

PrispevekObjavljeno: Ned Dec 28, 2008 11:49 am    Naslov sporočila: Bascom AVR in Timer1 simulator Odgovori s citatom

Citiram:
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Postb.7
Config Lcd = 16 * 2

Joj zakaj LCD nebi delal, poglej malo katere pine ima M8, saj nima celega portaB (portb.6 in 7 ne obstajata).
Čudno pa je da Bascom sploh ne prijavi napapke (Db7=postb.7 ???).
Drugače pa vsem priporočam da se izogibaju nastavitvam v Options, kasneje boste lahko imeli težave ker config file ne deluje tako kot bi moral.
Ko boste čez čas odprili stari projekt sploh ne boste vedeli kako je bil nastavljen stack, LCD . . .
Vlado
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
tkuhar1
Mojster


Pridružen/-a: Sre Mar 2007 22:20
Prispevkov: 27

PrispevekObjavljeno: Ned Dec 28, 2008 1:56 pm    Naslov sporočila: Odgovori s citatom

Pozdravljen, še enkrat!

Mislil sem na LCD v simulatorju. Res ne vem zakaj mi ni deloval, šele ko sem BASCOM AVR ponovno namestil je pričel delovati...
Pa ne glede na to kateri program, tudi tisti iz SAMPLE ni deloval...
Pine za LCD je potrebno seveda prilagoditi uporabljenemu ukontrolerju, tiste nastavitve so ostale še od originalnega programa....

Torej je bolje, če softwersko nastavim pine, glede na realno situacijo in pustim nastavitve pri miru... Se mi je zdelo...

Torej, prilagam programček, ki sem ga sedaj že malo bolje prilagodil za AtM8:

$sim
$hwstack = 32
$swstack = 8
$framesize = 24
$crystal = 1000000
$baud = 9600
$regfile = "m8def.dat"

Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Postb.7
Config Lcd = 16 * 2

Config Timer1 = Timer , Prescale = 1
Tcnt1l = &H00
Tcnt1h = &HFF
On Timer1 P_1sec
Enable Timer1
Enable Interrupts

Dim St_sec As Byte , St_sec1 As Byte


Stop Timer1
Reset Timer1

St_sec = 1
St_sec1 = 1
Locate 1 , 1
Lcd St_sec

Start Timer1

Do
If St_sec1 = St_sec Then
Goto Zanka 1
Else
Cls
Lcd St_sec
St_sec1 = St_sec
End If
Zanka1:
Loop

P_1sec:
Tcnt1l = &H00
Tcnt1h = &HFF
St_sec1 = St_sec
Incr St_sec
Return


Sedaj pa nekaj vprašanj:
1.) Ko izvajam simulacijo in ko je aktiviran interrupt, mi simulator najprej vrže na prvo vrstico $sim (glej priloženo sliko). Je to prav?

2.)Ker nameravam zadevo testirati na MiniPin, brez zunanjega oscilatorja sem sedaj definiral kristal 1MHz. Ali se da v BascomuAVR za AtMega8 programsko nastaviti takt oscilatorja na več kot 1Mhz? Kako?

3.) Kako priklopiti LCD 16x2 na Mini Pin razvojno ploščo?

4.) Zakaj mi simulator ne deluje prav, če pritisnem samo tipko "Play", če pa delam korak po korakih, pa mi program z interrupti pravilno deluje?

5.) Zakaj dejansko je potreben ukaz $sim?


Res najlepša hvala če si boste lahko vzeli čas tudi za teh 5 vprašanj, ki me že dalj časa mučijo in niso povezana samo s tem projektom.

Lep pozdrav!
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 555
Kraj: Ljubljana

PrispevekObjavljeno: Ned Dec 28, 2008 9:09 pm    Naslov sporočila: Bascom AVR in Timer1 simulator Odgovori s citatom

Najprej, mojega prejšnjega posta nisi prebral dovolj pazljivo, M8 nima celoten portB!
Svoj program nisi popravil pa tudi tega nisi popravil "Db7 = Postb.7".
V simulaotrju še nekako deluje, v realnem vezju pa ne bo!
Citiram:
1.) Ko izvajam simulacijo in ko je aktiviran interrupt, mi simulator najprej vrže na prvo vrstico $sim (glej priloženo sliko). Je to prav?

Ja saj je $sim prvi ukaz v programu. $Sim pomaga simulatorju predvsem pri ukazih Waitms, Wait da ne trajajo celo večnost pri simulaciji.

Citiram:
2.)Ker nameravam zadevo testirati na MiniPin, brez zunanjega oscilatorja sem sedaj definiral kristal 1MHz. Ali se da v BascomuAVR za AtMega8 programsko nastaviti takt oscilatorja na več kot 1Mhz? Kako?

Ja vendar to nima zveze z Bascom-om ampak z M8. Preberi poglavje o Fuse bitih in takt mikrokontrolerja. Bascom samo pove s kakšno frekvenco teče ura kontrolerja. Za začetek ti odsvetujem uporabo notranjega oscilatorja, da ne bomo odgovarjali kako oživeti M8.


Citiram:
3.) Kako priklopiti LCD 16x2 na Mini Pin razvojno ploščo?

Tako kot ga boš priklopil tako boš v programu definiral pine na katere je kaj priklopljeno, skratka po želji.

Citiram:
4.) Zakaj mi simulator ne deluje prav, če pritisnem samo tipko "Play", če pa delam korak po korakih, pa mi program z interrupti pravilno deluje?

Ali naj ugibamo kaj ne deluje ali to lahko poveš, pri meni deluje prav.

Citiram:
5.) Zakaj dejansko je potreben ukaz $sim?

Na to sem že odgovoril.
Vlado
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
tkuhar1
Mojster


Pridružen/-a: Sre Mar 2007 22:20
Prispevkov: 27

PrispevekObjavljeno: Ned Dec 28, 2008 10:02 pm    Naslov sporočila: Odgovori s citatom

Pozdravljeni!

Add1:
Glede določevanja pinov za LCD imam malo težav, zato jih v programu še nisem pravilno določil. Namreč, če hočem uporabljati AtMega8 na MiniPin, moram uporabiti adapter. No tu se pa potem trenutno zgubljam, ker ne vem, kateri pin gre potem na kateri predvideni izhod oziroma konektor...
Zato se opravičujem v zvezi s to točko.

Add2:
Te Fuse bite sem ravno začel prebirati to popoldan. Vendar ne vem, kje se jih nastavlja v Bascom AVR.
Za hec sem v simulatorju probal tole:
OSCCAL=&HFF (datasheet pravi, da bi moral oscilator delati z 8MHz)
pa je potem v ta register res vpisal vrednost FF, samo ne vem kaj bi se v resnici zgodilo z mikrokontrolerjem.
V zvezi s tem imam vprašanje:
Kako potem Bascom AVR ve, kdaj misliš uporabljati notranji oscilator ali zunanji, zgolj samo z ukazom $crystal? (tako kot je bilo v Bascom 8051)?

Add3:
Ja, se navezuje na točko Add1

Add4:
Tu se moram zopet opravičiti, enostavno nisem dovolj počakal, da bi timer vklopil interrupt in sem imel samo prazen LCD

Hvala za potrpežljivost!
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 555
Kraj: Ljubljana

PrispevekObjavljeno: Ned Dec 28, 2008 10:10 pm    Naslov sporočila: BascomAVR in Timer1 simulator Odgovori s citatom

Fuse bite lahko prebereš in nastaviš s programatorjem, z Bascomom in programom nimajo zveze.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
tkuhar1
Mojster


Pridružen/-a: Sre Mar 2007 22:20
Prispevkov: 27

PrispevekObjavljeno: Ned Dec 28, 2008 10:29 pm    Naslov sporočila: Odgovori s citatom

Aha, hvala!
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
tkuhar1
Mojster


Pridružen/-a: Sre Mar 2007 22:20
Prispevkov: 27

PrispevekObjavljeno: Ned Dec 28, 2008 11:47 pm    Naslov sporočila: Odgovori s citatom

Vseeno bi še enkrat vprašal:

Kako potem Bascom AVR ve, oz. kaj moram nastaviti v Bascom AVR ali Mini pin, da bo vedel kdaj bom uporabil zunanji kristal 12MHz (tega imam slučajno doma).

Hvala
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika Časovni pas GMT + 1 ura, srednjeevropski - zimski č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
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group