-         

Ergebnis 1 bis 10 von 10

Thema: Datum und Zeit auf LCD

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    15.11.2006
    Ort
    Bayern
    Alter
    34
    Beiträge
    90

    Datum und Zeit auf LCD

    Anzeige

    Servus an Alle,

    ich habe folgendes Problem:
    Ich möchte in einer Zeile eines LCD (4x16) das Datum und die Zeit mit Sekunden ausgeben. Ach ja, dabei werde ich unterstützt von einem ATmega8.
    Mein Problem hierbei ist nun, das ja mein eigentliches Programm parallel zum Zeitprog laufen sollte, da das Hauptprog unterschiedlich lange Zyklen hat. Würde ich allso nach jedem Zyklus einen Zähler incrementieren, so wäre die Uhr sehr ungenau!

    Wie allso kann ich das realisieren?

    Mit freundlichen Grüßen
    EagleStar

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Hast du keinen Timer mehr frei? Dort machst du Takte von 10 oder 100ms oder auch 1s. Die Eigentliche Ausgabe machst du in deinem Hauptprogramm.

    Ein Programm sollte übrigens so aufgebaut sein, daß es keine Warteschleifen enthält.
    Disclaimer: none. Sue me.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    15.11.2006
    Ort
    Bayern
    Alter
    34
    Beiträge
    90
    Timer? ich weiß das es die gibt, aber nicht wie ich auf die zugreif bzw wie ich mit den umzugehen habe.
    Kannst du mir vielleicht ein vereinfachtes Beispiel dafür geben?
    Ach ja, welches Problem würde sich aus der Kombination mit Warteschleifen ergeben? Warscheinlich nur die aktualisierung. Aber anstatt warteschl. könnte man ja dann mit dem Takt oder Timer arbeiten?

    MfG EagleStar

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Ein Beispiel für Timer-Programmierung hab ich im Wiki.

    http://www.roboternetz.de/wissen/ind...LED_blinken%29

    Das ist zwar C, aber das Vorgehen in Assembler ist das gleiche.

    Code:
        TCCR1A = 0;
    
        // Timer1 ist Zähler: Clear Timer on Compare Match (CTC, Mode #4)
        // Timer1 läuft mit vollem MCU-Takt: Prescale = 1
       TCCR1B = (1 << WGM12) | (1 << CS10);
    Im Assembler schreibst du also 0 nach TCCR1A und (1 << WGM12) | (1 << CS10) nach TCCR1B

    Mit den anderen SFRs wie TIMSK entsprechend. Falls dein Assembler diese Konstrukte nicht frisst (ich weiß net ob Atmel-Assembler so was kann, bei GNU-Assembler geht es. Dasz einfach ein #include <avr/io.h> machen).

    Falls es nicht geht muss eben im Manual schauen, wo sich diese Bits befinden. CS10 ist glaub bit 0 in TCCR1B. Das musst du eben setzen.
    Den Wert für OCR1A lässt du den Preprozessor (GNU) berechnen oder machst es von Hand aufm Tacshenrechner.

    In dem Beispiel benutze ich den OCR1A-Interrupt. GNU-Assembler trägt den in die VECTAB ein, bei Atmel-Assembler musst du das händisch machen. Ist im Wiki ASM-Tutorial beschrieben.

    Nach der Initialisierung der Timers kannst du IRQs aktivieren (sei). Die Interrupt-Routine musst du noch implementieren, also den COde, den er bei einem Interrupt ausführen soll.

    Das Problem mit Warteschleifen ist, daß während einer Schleife die Maschine brach liegt. Bei simplen Sachen ist das nicht schlimm, aber wenn es komplizierter wird und man hat das ganze Design drauf ausgelegt, wird's ätzend.

    Was die Timer angeht lies mal das Handbuch, das ist echt gut geschrieben. Zum Einstieg die Kapitelzusammenfassung oder Überblick über die Timer-Register.
    Disclaimer: none. Sue me.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    15.11.2006
    Ort
    Bayern
    Alter
    34
    Beiträge
    90
    Danke, ich glaub das Prinzip verstanden zu haben. Allerdings konnte ich mit der C-Code-Zeile absolut nix anfangen.
    Aber mir ist schon mal weitergeholfen, thx!

    MfG EagleStar

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    55
    Beiträge
    534
    .. oder nutz doch eine I2C-Realtime-Clock ... dann bleiben die Werte auch nach dem Aus- und wiederschalten erhalten .. oder dekodiere ein DCF77-Modul .. auch simpel zu machen - dann muß nix gespeichert werden ...
    Ich kann mir keine Signatur leisten - bin selbständig!

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    15.11.2006
    Ort
    Bayern
    Alter
    34
    Beiträge
    90
    I2C: klingt interessant aber damit habe ich noch nie gearbeitet. Gibt es da Beisiele für?

    DCF77 ist warscheinlich zu aufwendig!

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    55
    Beiträge
    534
    I2C - klar gibts Beispiele -> Suchfunktion
    I2C gibts auch Uhrenbausteine DS 1307, DS 1337, DS 1629S, DS 1672-33 bei Reichelt ...
    .. die Codierung von DCF77 ist auch kein Prob, den günstigesten Empfänger hierfür findest bei Conrad ... allerdings kann ich nur mit C-Programmbeispiele dienen
    Ich kann mir keine Signatur leisten - bin selbständig!

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.03.2006
    Beiträge
    138
    Hilft warscheinlich nich viel mehr aber im Downloadberich gibts auf Basic Beispiele.

    mfg

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    15.11.2006
    Ort
    Bayern
    Alter
    34
    Beiträge
    90
    Gut, ich hab mir grade mal die Datenblätter geholt und die Bsps runtergeladen. Ich schau mir das jetzt mal an und melde mich dann wieder wenn ich Probleme hab - ich melde mich sicher...

    Trotzdem schon mal danke!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •