Hallo, ich möchte eine Uhr in ein Projekt einbauen und versuche einen Timer zu machen der z.B. jede Sekunde ein Signal gibt, welches ich dann mit einem Zähler intern zählen kann. (und wenn Zähler auf 60 -> Sekunden löschen und Zähler für Minuten +1 -> wenn Minuten auf 60, Minuten löschen und Stunden +1 usw.) Wie muss ich den Timer programmieren das er mit dem Quarz läuft("Systemtakt")? Ich hab einen Atmel AT90S2313 mit 3,6864 MHz Quarz den ich in Basic programmieren möchte. vielen Dank schon mal, Tobias
hi, hab ich mal für'n mega163 probiert, ging gut. ob's auf dem 2313 läuft weiss ich nich, musste probieren. wenn's nix funzt muss man per irq machen. ------------------------------------ ' einfacher test für date & time $crystal = 3686411 $baud = 9600 $regfile = "m163def.dat" Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2 Config Lcd = 16 * 2 Cursor Off Noblink Enable Timer1 ' Enable the timer interrupt Enable Interrupts Config Clock = Soft Config Date = Ymd , Separator = - Time$ = "02:20:00" Cls Do Lcd Time$ Locate 2 , 1 : Lcd Date$ Waitms 500 Cls ' lcd aus, damit man sieht, ob sich was tut Waitms 100 Loop End ----------------------------------- gruss, harry
Hi, vielen Dank! Leider stolpert der µC immer über den Befehl: Config Clock = Soft. warum weiss ich nicht :-( Aber ich hab das nun etwas anders gelöst. Trozdem vielen Dank für deine Bemühungen!!! Tobias '----------------------- schnipp -------------------------------- $regfile = "2313def.dat" 'AT90S2313-Deklarationen $crystal = 3686400 'Quarz: 3.6864 MHz $baud = 9600 'Baudrate der seriellen Schnittstelle ' 'LCD Dim Sresult As String * 16 At &H64 Overlay Dim Result(16) As Byte At &H64 On Timer1 Ontimer1overflow 'Timer1-Interruptroutine deklarieren ' Dim Stunden As Byte Dim Minuten As Byte Dim Sekunden As Byte '--------------------------------------------------------------------- 'LCD Anzeige '--------------------------------------------------------------------- Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.2 , Db7 = Portb.1 , E = Portd.6 , Rs = Portb.0 Cursor Off Noblink ' Cursor aus '------------------- Config Timer1 = Timer , Prescale = 1024 '3686400Hz/1024=3600Hz Enable Timer1 Timer1 = 65535 'Sofort Timer1-Überlauf (Bei 16 Bit: 65535+1=0) Enable Interrupts ' Do Gosub Anzeige 'Print Stunden ; ":" ; Minuten ; ":" ; Sekunden Loop ' Ontimer1overflow: 'Timer1-Interruptroutine 'Nächster Überlauf soll in einer Sekunde sein: Timer1 = 61936 'Überlauf nach 65535, also: 65535+1-3600=61936 ' Incr Sekunden If Sekunden = 60 Then Sekunden = 0 Incr Minuten If Minuten = 60 Then Minuten = 0 Incr Stunden If Stunden = 24 Then Stunden = 0 End If End If End If 'Print Stunden;":";Minuten;":";Sekunden Return Anzeige: Home Upper 'in die obere zeile gehen Cls : Lcd "U:" + Str(stunden) ; ":" + Str(minuten) ; ":" + Str(sekunden) 'Anzahl Türöffnungen Home Lower 'in die untere zeile gehen Lcd "Uhrzeit: ??? :-)" Return ' wichtig '----------------------- schnapp --------------------------------
na suppi, dass der compiler über den 'config clock' stolpert hängt mit der '2313def.dat' zusammen. in der wird alles deklariert was der avr so kann und hat. gruss, weiter so, harry
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.