PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Simulation unter BASCOM



Sauerbruch
14.02.2007, 20:31
Liebe ATMEL-Experten,

kann es vielleicht sein, dass die Simulation in BASCOM nicht immer so ganz 100% wirklichkeitsgetreu ist?

Oder kann man sich 100% darauf verlassen, dass die Dinge, die man virtuell sieht, im richtigen µC auch genauso laufen (speziell bei den Tiny´s)?

Obwohl ich gerade erst anfange, dieses Tool zu benutzen, beschleichen mich nämlich langsam ernste Zweifel... wie sind denn Eure Erfahrungen damit?

helimike0705
15.02.2007, 17:47
hallo , welche zweifel hast du den genau,stelle deine code ein und
wir können simulieren,jeder kann dann seine resultate dann berichten.
bei mir macht sich eins (bin gerade beim programmieren) bemerkbar.
die lcd anzeige mit 40 * 4 ist nicht wie es sein soll.kann aber hardware-
technisch noch nichts sagen, da ich auf dieses display noch warte,ob
sich dies auch am prozessor so verhält.

gruß mike

Sauerbruch
15.02.2007, 23:06
HI Mike,

gute Idee - ich mach´ das mal so früh ich kann; bin gerade im Job etwas eingespannt...

Konkret geht´s um das starten und stoppen von einem Timer: Die Befehle "start timer 0" (bzw. 1) und stop nimmt Bascom bei mit für den Tiny45 nicht an. Hab´s also mit TCCR1=3 (Prescaler = 8 ) und TCCR1=0 (stop) probiert. Obwohl das Regsiter in der Simulation die Werte korrekt annimmt, zählt TCNT1 kein bisschen hoch.

Ich stell´ das mal rein und lass mich überraschen, was andere Simulatoren daraus machen!

Gruß,

Daniel

Sauerbruch
19.02.2007, 09:38
Hi Mike,

hier ist mein kleines Listing: Es fragt PinB.3 ab, der normalerweise über den PullUp auf 1 steht. Wird er vom Taster auf 0 gezogen, soll der Timer 1 starten (Prescale = 8 ), und über den regelmäßigen Interrupt einen Ton an B.4 erzeugen.


$regfile = "ATTiny45.dat"
$crystal = 1000000

Ddrb.4 = 1 'PortB.4 steuert Lautsprecher an
Ddrb.3 = 0 'PortB.3 fragt Taster ab...
Portb.3 = 1 '...über ´nen PullUp.

Config Timer1 = Timer
Enable Timer1
Enable Interrupts
On Timer1 Ton

Do
If Pinb.3 = 0 Then Tccr1 = 3 Else Tccr1 = 0 'Timer 1 starten, wenn Taster gedrückt
Loop

Ton:
Toggle Portb.4 'Ton-Erzeugung über Timer-Overflow.
Return


Bei mir zählt der Timer aber schon mal garnicht los, auch wenn TCCR1=3. Das lässt mich natürlich daran zweifeln, wie realistisch diese Vorführung ist...

Sauerbruch
19.02.2007, 09:38
Hi Mike,

hier ist mein kleines Listing: Es fragt PinB.3 ab, der normalerweise über den PullUp auf 1 steht. Wird er vom Taster auf 0 gezogen, soll der Timer 1 starten (Prescale = 8 ), und über den regelmäßigen Interrupt einen Ton an B.4 erzeugen.


$regfile = "ATTiny45.dat"
$crystal = 1000000

Ddrb.4 = 1 'PortB.4 steuert Lautsprecher an
Ddrb.3 = 0 'PortB.3 fragt Taster ab...
Portb.3 = 1 '...über ´nen PullUp.

Config Timer1 = Timer
Enable Timer1
Enable Interrupts
On Timer1 Ton

Do
If Pinb.3 = 0 Then Tccr1 = 3 Else Tccr1 = 0 'Timer 1 starten, wenn Taster gedrückt
Loop

Ton:
Toggle Portb.4 'Ton-Erzeugung über Timer-Overflow.
Return


Bei mir zählt der Timer aber schon mal garnicht los, auch wenn TCCR1=3. Das lässt mich natürlich daran zweifeln, wie realistisch diese Vorführung ist...