Autor |
|
|
|
BID = 61775
sme-bbg Schriftsteller
Beiträge: 959 Wohnort: Bad Eilsen
|
|
wie bekomme ich es hin das ich jede 10tel sekunde eine Bestimmte schleife ausführen kann ???
Wollte ne kleine Uhr Proggen doch irgendwie will das net... |
|
BID = 61777
ERDI-Soft Stammposter
Beiträge: 200 Wohnort: Offenburg
|
|
Hab noch nie mit Bascom gearbeitet, aber allgemein geht das so:
Du mußt dir nen Timer aussuchen (z.B. Timer0)und den auf deine Zeit einstellen. (Möglich, dass Bascom da schon was mitliefert, um das zu berechnen. Ansonsten Datenblatt lesen.)
Wenn du alles richtig eingestellt hast (TimerInterrupt, Globales Interrupt Enable...) dann erzeugt der Timer immer nach der Zeit, die du eingestellt hast, nen Interrupt.
Dabei springt der µController an die entsprechende IRQ-Einsprungadresse. Da kannst du dein Programm hinschreiben, das ausgeführt werden soll. |
|
BID = 61838
Jornbyte Moderator
Beiträge: 7178
|
Versuchs mal damit.
$regfile = "m8def.dat"
$crystal = 14000000
Config Timer1 = Timer , Prescale = 1024
Dim Sekunde As Byte
Dim Minute As Byte
Dim Stunde As Byte
On Timer1 Timer1int
Load Timer1 , 13900
Enable Interrupts
Enable Timer1
Start Timer1
Do
'Haupschleife
'z.B. Uhr stellen mit Tastenabfrage
Loop
Timer1int:
Load Timer1 , 13900 '1ne Sekunde
Sekunde = Sekunde + 1
If Sekunde = 60 Then
Sekunde = 0
Minute = Minute + 1
If Minute = 60 Then
Minute = 0
Stunde = Stunde + 1
If Stunde = 24 Then Stunde = 0
End If
End If
'Hier kommt noch die Ausgabe rein, z.B. das LCD
Return
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
BID = 61917
sme-bbg Schriftsteller
Beiträge: 959 Wohnort: Bad Eilsen
|
Zitat :
Jornbyte hat am 27 Mär 2004 17:31 geschrieben :
|
Versuchs mal damit.
$regfile = "m8def.dat"
$crystal = 14000000
Config Timer1 = Timer , Prescale = 1024
Dim Sekunde As Byte
Dim Minute As Byte
Dim Stunde As Byte
On Timer1 Timer1int
Load Timer1 , 13900
Enable Interrupts
Enable Timer1
Start Timer1
Do
'Haupschleife
'z.B. Uhr stellen mit Tastenabfrage
Loop
Timer1int:
Load Timer1 , 13900 '1ne Sekunde
Sekunde = Sekunde + 1
If Sekunde = 60 Then
Sekunde = 0
Minute = Minute + 1
If Minute = 60 Then
Minute = 0
Stunde = Stunde + 1
If Stunde = 24 Then Stunde = 0
End If
End If
'Hier kommt noch die Ausgabe rein, z.B. das LCD
Return
|
Jau genau sowas habe ich gemeint... bilicke nur bei den Internen interrups noch net so durch ...
wie sieht das ganze denn für einen qurz mit 8MhZ aus? (ne formel?)
|
BID = 61918
tixiv Schreibmaschine
Beiträge: 1492 Wohnort: Gelsenkirchen
|
Ist ganz einfach:
Code : |
.....
$crystal = 8000000
....
|
|
Und der Reload Wert für Timer 1 ist dann ca.
Quarzfrequenz/Prescalerwert
Also bei 8MHz 8000000/1024 = 7812.
Das ganze ist aber noch ein bisschen was komplizierter, da der Timer ja in der Zeit nicht Zählt, die es dauert, bis in den Interrupt gesprungen wurde, und der Timer neu geladen wurde. Dass heisst die Zeit wird ein wenig länger sein als berechnet. Desswegen muss man sich das entweder genau überlegen oder ausprobieren, welcher Wert der richtige ist.Das Datenblatt vom AVR dabei zu konsultieren ist durchaus empfehlenswert.
Hat der Timer nicht sogar einen Reload Modus, wo er automatisch sofort neu geladen wird, sowie er abgelaufen ist?? In dem Fall währe dann natürlich eine Quarz Frequenz empfehlenswert, die durch 1024 Teilbar ist wie 8,192 MHz z.B..
[ Diese Nachricht wurde geändert von: tixiv am 28 Mär 2004 4:10 ]
|
BID = 61961
sme-bbg Schriftsteller
Beiträge: 959 Wohnort: Bad Eilsen
|
Sehe ich das letzt richtig das die interrupt sub 1 mal pro sekunde ausgeführt wird ???
wenn ja dann muß ich die ausgane in die hauptschleife packen (Zwischen DO / LOOP) da ich 6 7segmet anzeigen im multipexbetrieb ansteuere.
|
BID = 61991
Jornbyte Moderator
Beiträge: 7178
|
Ja, so ist es. Die Schleife wird aller 1 Sekunde ausgeführt.
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
BID = 62021
sme-bbg Schriftsteller
Beiträge: 959 Wohnort: Bad Eilsen
|
Die Variablen sekunde , stunde und Sekunde sind aber global verfügbar und nicht nur in der sub ?
|
BID = 62032
Jornbyte Moderator
Beiträge: 7178
|
Ja, die sind Global, sonst würde in einer Sub Local Sekunde As Byte stehen.
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
BID = 63463
sme-bbg Schriftsteller
Beiträge: 959 Wohnort: Bad Eilsen
|
ok funktioniert...mit einem lcde jetzt kommt nur noch die 7seg anzeigen
|