mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer in Basic mit Atmel


Autor: Tobias Blome (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobias Blome (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 --------------------------------

Autor: harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.