Atmega8 und Timer2 im Asynchron - Modus
Moin, Moin,
Vielen Dank für diese ersten Antworten.
Wie begrüße ich euch den?
Unten findet ihr den Quelltext in Bascom.
Das Programm läuft.
Timer2 im asynchron Modus soll den Takt vorgeben
Ziel:
Der Takt aus dem asynchron Modus soll Basis für den Sekundentakt im normalen Timer2 sein
Im normalen Modus soll die aktuelle Tagesuhr im LCD abgebildet sein
Im normalen Modus soll eine Alarmzeitpunkt im LCD abgebildet sein.
Dieser Alarmzeitpunkt und aktuelle Tageszeit kann im Program vorgegeben werden
Benötige einen Schaltwert für eine Ansteuerung für ein Relais
Status:
Takt im asynchron Modus funktioniert.
LCD funktioniert auch
Takt im Standard Modus vom Timer 2 funktioniert auch
Einen Zähler für die Zeit habe ich auch, ist aber momentan nicht in der Software enthalten.
LCD zeigt in Zeile 2 bei verschiedenen Abfragen von Status Registern aus dem asynchron Modus
z.B. eine "3" oder "7" an.
Nach dem Eintrag im Forum kommt der Verdacht auf, dass das binäre Werte sind.welche umgewandelt werden müssen.
Das ist der aktuelle Stand.
Übrigens vielen Dank für die Antworten.
Mit der Zeit sollte ich auch in die korrekte Terminologie reinkommen.
Bin die nächsten zwei Stunden noch online.
Danach werde ich erst am Montag wieder im Forum nachsehen.
Vorab schönes Wochenende.
Grüße
Gerhard73
Quelltext:
'0701.BAS: Timer2, RTC-Beispiel: 1-Hz-LED-Blinker
'Hardware: 32768Hz-Quarz, RC-Oszillator aktiv
' PB0 an grüne LED, PB3/OC2 an rote LED
'----------------------------------------------------------
$regfile = "m8def.dat" 'ATmega8-Deklarationen
$crystal = 1000000 'Der AVR-Takt kommt vom RC-Oszillator
$baud = 19200
$hwstack = 100
$swstack = 100
$framesize = 100
Acsr.acd = 1 'Analogen Komparator ausschalten
Ddrb = &B00001001 'Pins PB0+PB3 sind Ausgang
Assr.as2 = 1 'Bit AS2=1: Asynchroner Timer2-Betrieb
Tccr2 = &B000010100 'Bits6+3=00: Nicht-PWM-Modus
'Bits5+4=01: Pin OC2 invertieren
'Bits2+1+0=100: Takt 32768Hz/64=512Hz
Waitms 1000 'Eine Sekunde warten bis Quarz schwingt
Dim S As Byte
Dim M As Byte 'DIM für sekunden ,minuten und stunden am LCD
Dim H As Byte
Dim Readtcnt2 As Byte 'DIM für Laufzeitvariable
S = 0 'Vorgabe für sekunden ,minuten und stunden für LCD
H = 21
M = 23
'----------------------------------------------------------
Do 'Hauptschleife
Portb.0 = Not Portb.0 'Grüne LED invertieren
Waitms 500 '500 Millisekunden warten
S = S + Ocf2
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
Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd H ; ":" ; M ; ":" ; S
Readtcnt2 = Ocf2 'Versuch einen Wert vom Asynchroner Timer2 auszulesen
Locate 2 , 1
Lcd Readtcnt2
Loop
'Ursprung [Listing zum AVR-Mikrocontroller-Lehrbuch von Roland Walter,
www.rowalt.de]