Bascom AVR

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 18 10 2024  17:26:52      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Bascom AVR

    







BID = 61775

sme-bbg

Schriftsteller



Beiträge: 959
Wohnort: Bad Eilsen
Zur Homepage von sme-bbg ICQ Status  
 

  


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
Zur Homepage von ERDI-Soft ICQ Status  

 

  

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: 7155

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
Zur Homepage von sme-bbg ICQ Status  


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
Zur Homepage von sme-bbg ICQ Status  

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: 7155

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
Zur Homepage von sme-bbg ICQ Status  

Die Variablen sekunde , stunde und Sekunde sind aber global verfügbar und nicht nur in der sub ?

BID = 62032

Jornbyte

Moderator



Beiträge: 7155

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
Zur Homepage von sme-bbg ICQ Status  

ok funktioniert...mit einem lcde jetzt kommt nur noch die 7seg anzeigen


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 22 Beiträge im Durchschnitt pro Tag       heute wurden bisher 10 Beiträge verfasst
© x sparkkelsputz        Besucher : 182196662   Heute : 3070    Gestern : 4612    Online : 874        18.10.2024    17:26
6 Besucher in den letzten 60 Sekunden        alle 10.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.026603937149