- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 11

Thema: Bascom und die aktuelle Uhrzeit

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    Hmm, erstmal vielen dank für die Ideen. Also ich werde mir wohl einen DS1307 kaufen müssen. Das scheint einfacher als die DCF77 Metode zu sein. Alternativ hab ich überlegt einen kleinen Attiny für die Uhr zu nehmen, den hab ich auch da, ich würde es jedoch nicht hibekommen den per I2C zu koppeln, da ich hier 0 Erfahrung habe

    Die Sache ist, das ich mit dem Mega32 die Steuerung von meinem Aquarium regeln möchte. Momentan ersmal nur das Licht, bzw. den LED Leuchtbalken.

    Dieser soll morgens aufdimmen und abends abdimmen. Zu bestimmten eingestellten Zeiten und das ganze nicht linear damit es schöner aussieht. Das dimmen hab ich per PWM realisiert und da sind halt viele Wait befehle drinnen. Der PWM Wert wird etwas erhöht und dann wird. 36 Sekunden gewartet. Dannach wird der Wert wieder erhöht und wieder 36 sek. gewartet. Das ganze läuft in 2 Sub funktionen ab.

    Den Code zeigen, muss ich mal sehn wie ich das anstelle, da ich auf nem alten Pentium II Rechner mit Win95 ohne USB programmiere. Ich werd es aber versuchen.

    Gibt es sonst vieleicht noch ideen und möglichkeiten?

    Gruß Dominik

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Wie gesagt....für Zeitmessung ist eine DS1307 eigentlich richtig gut.
    Anbindung über 4 Leitungen, brauch kaum Zusatzhardware und den 1Hz Takt kannst du prima für Interrupts nutzen.
    Und du hast da eigentlich auch einen kompletten Kalender drin.
    Du kannst dann z.B. deinen µC schlafen legen und den durch den RTC Interrupt wach werden lassen und dann die Uhrzeit auslesen und dann wieder schlafen legen.
    So hat er kaum was zu tun und du machst den ganzen Kram quasi Interruptgesteuert (was eine super Methode ist!).
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    Klingt gut, kann der DS1307 auch zu bestimmten Uhrzeiten einen zusätzlichen Interput ausgeben? Weil sonst kann ich den Mega ja nicht schlafen legen, da er sonst das auf und abdimmen verpassen würde.

    Das einzigste was für mich eine kleine Hürde sein könnte ist die Kommunikation via I2C, da hab ich überhaubt keine Ahnung von und das scheint auch etwas komplexer zu sein.

  4. #4
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von Dominik009 Beitrag anzeigen
    Klingt gut, kann der DS1307 auch zu bestimmten Uhrzeiten einen zusätzlichen Interput ausgeben? Weil sonst kann ich den Mega ja nicht schlafen legen, da er sonst das auf und abdimmen verpassen würde.

    Das einzigste was für mich eine kleine Hürde sein könnte ist die Kommunikation via I2C, da hab ich überhaubt keine Ahnung von und das scheint auch etwas komplexer zu sein.
    Hey,

    ne das kann sie nicht.
    Aber da du den Controller ja jede Sekunde aufweckst, wirst du die Zeit wohl nicht verpassen oder sehe ich das falsch ?
    Das tolle an der DS1307 ist, dass es dazu massig Beispiele im Netz gibt (in C, Bascom und allem anderen).
    Ansonsten hilft dir hier jeder gerne weiter! (selbige gilt für mich ....das Prinzip was ich da beschreibe verwende ich bei meiner Röhrenuhr).
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von Dominik009 Beitrag anzeigen
    Gibt es sonst vieleicht noch ideen und möglichkeiten?
    Hallo Dominik,
    bevor ich zusätzliche Hardware anschließe, würde ich es erst mal mit den Bordmitteln probieren und sehen, welche Genauigkeit damit zu erreichen ist. Auch mit einem normalen Quarz kommst du bei 50ppm auf max 4 sec Abweichung pro Tag, macht 2 min / Monat oder 12min im halben Jahr. Dann steht die Sommerzeit Umstellung an, wo du eh die Zeit neu setzen musst
    Also würde ich mir einen Timer nehmen, der in bestimmten Interval überläuft. Daraus leitest du dir die Sekunden ab.
    Z.B. so
    Code:
    $crystal 16000000
    Config Timer0 = Timer , prescale=256, clear_timer=1
    Compare0=249                 'macht 250 Timer-Takte, also 16.000.000/256/250=250, also bei 250 ist eine Sekunde rum
    On Compare0 sek_isr
    ...
    Enable Compare0
    Enable Interrupts
    Do
       If sek_flag=1 then
           'hier zählst du die Sekunden, Minuten, Stunden, Tage usw. hoch
           'und machst deine Zeitvergleiche, schaltest Ausgänge usw.
           'und du zählst eine Variable hoch bis 36, dann änderst du den PWM Wert entsprechend ab
          sek_flag=0
       End If
       ...
    Loop
    End
    sek_isr:
       Incr 4ms
       If 4ms = 250 Then
          sek_flag=1
          4ms=0
       End If
    return
    Da wartet dann nichts mehr.
    Wenn das nicht genau genug ist, kannst du den Timer2 auch asynchron über einen 32KHz Quarz an den TOSC Eingängen betreiben. Diese Quarze haben in der Regel ein max. Abweichung von 20ppm, sodass du unter eine Minute im Monat kommen kannst.

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Zitat Zitat von Dominik009 Beitrag anzeigen
    Dieser soll morgens aufdimmen und abends abdimmen. Zu bestimmten eingestellten Zeiten und das ganze nicht linear damit es schöner aussieht. Das dimmen hab ich per PWM realisiert und da sind halt viele Wait befehle drinnen. Der PWM Wert wird etwas erhöht und dann wird. 36 Sekunden gewartet. Dannach wird der Wert wieder erhöht und wieder 36 sek. gewartet. Das ganze läuft in 2 Sub funktionen ab.
    Und warum musst du unbedingt mit Wait 36 Sekunden warten? Meiner Ansicht nach liegt das einzige Problem dass du hast genau daran.
    Du kannst auch jede Sekunde per Timer-Interrupt eine Variable hochzählen und bei 36 dann eine Aktion ausführen. Das wäre hundertmal eleganter, als die ganzen Wait-Befehle. Denn die sollten nämlich in keinem Programm vorhanden sein.
    Grüße
    Thomas

Ähnliche Themen

  1. Aktuelle Bascom-Version (2.0.7.4 BETA oder 2.0.7.5)
    Von Thomas E. im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 22.09.2012, 15:38
  2. Drehgeber - MBed - Borland - Wie kann ich die aktuelle Position anzeigen?
    Von boorstii im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 0
    Letzter Beitrag: 31.05.2011, 07:00
  3. wie bekommt man die aktuelle "build" PC-Zeit
    Von jar im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 25.05.2007, 21:09
  4. Wie lautet die aktuelle BASCOM Version ?
    Von lumilux im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 05.03.2006, 19:00
  5. Was is die aktuelle Bascom (Full) Version ?
    Von PicNick im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 68
    Letzter Beitrag: 12.01.2006, 18:40

Berechtigungen

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

12V Akku bauen