iss klar lol.
du musst statt reload auf 63 zu setzen es auf 192 setzen...
Martin
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
iss klar lol.
du musst statt reload auf 63 zu setzen es auf 192 setzen...
Martin
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
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
das verstehe ich jetzt nicht ganz
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
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/dl...le&file_id=169
Das generiert dir gleich den Code den du brauchst
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.???!
Das Programm ist in VisualBasic geschrieben.Warum braucht das Programm eigentlich Administratorechte ?!
(noch nicht installiert)
Könnte das nicht auch ohne gehen.???!
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.
Jetzt weiß ich, woher meine Abneigung gegen VB herstammt.
Lesezeichen