Timer in Basic mit Atmel

Gast #96255
Lesenswert?
• ▲
▼
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
Gast #96256
Lesenswert?
• ▲
▼
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
Gast #96257
Lesenswert?
• ▲
▼
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 --------------------------------

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.