PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Zähler für Millisekunden



enzo
16.11.2004, 17:06
Hallo zusammen,
es ist nicht so, daß ich nicht selber dran gesessen wäre.
Wahrscheinlich haltet ihr mich für bekloppt aber da gingen schon viele
Stunden drauf um zu recherchieren.

Im unteren Code komme ich trotzdem nicht auf mein gewünschtes Ergebnis
der Millisekundenzählung.
Timer0 setzt bei Erreichung von 255 den Interrupt. Bei einem Prescale
von 64 bei 4MHz, ergibt sich ein Reload von 4000/64 = 63 damit er
alle 1ms einen Interrupt erzeugt, und die Variable 'Millisekunden'
inkrementiert.

Achtung: Load Timer0, Relaod zählt dann von 192 auf 255 rauf, also 63 mal, dann efolgt der Interrupt.

In der Do/Loop Schleife sollte ich dann alle
Millisekunden einen Wert angezeigt bekommen, durch die Verzögerung der
Darstellung natürlich nicht notwenig, aber die dargestellten Zeiten
sollten in ms dargestellt analog der Realzeit sein.

Nur die Zeit bzw die Werte die dargestellt werden zählen viel zu
langsam. Dafür das es Milliskeunden sind, müßte pro Sekunde der Wert um 1000 steigen. Tut er aber nicht, ca um den Faktor 100 zu langsam.

Was mache ich falsch ?


$regfile = "m8def.dat"
$crystal = 4000000

Dim Millisekunden As Long
Dim K As Long

Const Reload = 63
Config Timer0 = Timer , Prescale = 64

On Timer0 Timer1int
Enable Interrupts
Enable Timer0

Do
Print Millisekunden
End If
Loop


Timer1int:
Load Timer0 , Reload
Incr Millisekunden
Return

x-ryder
16.11.2004, 18:02
iss klar lol.

du musst statt reload auf 63 zu setzen es auf 192 setzen...

Martin

enzo
16.11.2004, 20:02
IM AVR SIMULATOR ERHALTE ICH.

0
0
1
1
2
2
3
4
5
6
6
7
7
8
9
etc

statt zB.:
1000
2125
3125
4147
etc

WARUM ?????

lG

x-ryder
16.11.2004, 20:03
das verstehe ich jetzt nicht ganz

Frank
16.11.2004, 21:28
Die do loop Schleife im Hauptprogramm ist ja nicht synchronisiert mit der Timer Routine, von daher kann manchmal ein Wert mehrfach ausgegeben werden

Wegen der Timerberechnung lad dir mal das Programm runter
https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=169

Das generiert dir gleich den Code den du brauchst

Roberto
30.11.2004, 21:16
Hallo Frank

Habe mir dein Programm mal runtergeladen und endpackt.
Dazu eine Frage.
Warum braucht das Programm eigentlich Administratorechte ?!
(noch nicht installiert)

Könnte das nicht auch ohne gehen.???!

recycle
30.11.2004, 22:59
Warum braucht das Programm eigentlich Administratorechte ?!
(noch nicht installiert)

Könnte das nicht auch ohne gehen.???!

Das Programm ist in VisualBasic geschrieben.

Um Visual Basic Programme auszuführen braucht man die Visual Basic Runtime Umgebung und gegebenenfalls diverse ActiveX Komponenten und DLL-Dateien die im Programm verwendet werden.
Wenn man mit Visual Basic eine Installationsroutine zusammenstellt, wird automatisch das ganze Zeugs dazu gepackt und um das zu installieren braucht man Administratorrechte.
Die VBRuntime Umgebung braucht man aber nur einmal zu installieren und nicht mit jedem VB-Programm.
D.h. wenn die bei dir schon installiert ist, brauchst du nicht die setup.exe ausführen, sondern kannst dir aus dem CAB-File einfach nur mit Winzip oder einem anderen Packprogramm die rnAvr.exe (das ist das eigentliche Programm) extrahieren und starten. Dafür brauchst du dann auch keine Administratorrechte.
Sollte das Programm beim Start meckern, dass irgendwelche Dateien fehlen, reicht es oft, wenn du die ebenfalls aus dem CAB exrahierst und in demselben Ordner speicherst wie die rnAVR.exe.

Ob das bei dir klappt, hängt davon ab, ob du die VB Runtime schon mal irgendwann alleine oder zusammen mit einem anderen Visual Basic programm installiert hast. Auf meinem Rechner reicht die rnAVR.exe alleine völlig aus.

Thomson
01.12.2004, 00:42
Jetzt weiß ich, woher meine Abneigung gegen VB herstammt. ;)