Fehlermeldungen bei RTC Ergänzung (DCF77 mit DS1307)

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Fehlermeldungen bei RTC Ergänzung (DCF77 mit DS1307)

      Hallo!
      Möchte meine schon bekannte Aquaruimsteuerung dahingehend Erweitern dass auch das Licht und die Filterpumpe gesteuert werden.
      Dazu habe ich bereits eine Uhr mit DCF77 erfolgreich verwirklicht. (Schaltet in der Testphase nur eine LED)
      Um die "Totzeit" nach Stromunterbrechungen zu vermeiden habe ich nun vor einen DS1307 als RTC in mein Programm einzubinden.
      Habe mehrere Varianten probiert und immer das gleiche Ergebnis beim Compilieren: viele Error Fehlermeldungen die ich alle nicht verstehe!!!
      Aktuell habe ich eine SW-Variante von Markus Fulde.
      Sobald ich die config Sda und Scl (Zeilen 95,96) einfüge bekomme ich die Fehlermeldungen! Ohne den beiden Zeilen alles OK.

      Wo liegt mein Fehler?

      dcf_all_in_one_140118.bas

      Gruß
      Alfred
    • Dein Programm lässt sich bei mir ohne Fehler programmieren.


      avralfred schrieb:

      Sobald ich die config Sda und Scl (Zeilen 95,96) einfüge bekomme ich die Fehlermeldungen! Ohne den beiden Zeilen alles OK.
      In deinem Programm wird überhaupt kein I2C verwendet und in den betreffenden Zeilen steht auch nichts ähnliches.

      Hast du das falsche Programm im Anhang?
    • Hm, in deinem Programm hab' ich jetzt nix von i2c entdeckt. Kannst du nicht mal eine Version zeigen, die Fehlermeldungen erzeugt?

      Was mir aber aufgefallen ist, um Zeiträume zwischen 2 Zeiten zu selektieren, vergleichst du ob der string einer Uhrzeit zwischen den strings 2er Uhrzeiten liegt und das mit if string1>string2 then... Das wundert mich jetzt, dass das ohne Fehler geht. Wann ist ein string größer als ein anderer, jetzt vom Wert her gesehen, vor allem wenn auch Doppelpunkte drin sind.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch schrieb:

      Was mir aber aufgefallen ist, um Zeiträume zwischen 2 Zeiten zu selektieren, vergleichst du ob der string einer Uhrzeit zwischen den strings 2er Uhrzeiten liegt und das mit if string1>string2 then... Das wundert mich jetzt, dass das ohne Fehler geht. Wann ist ein string größer als ein anderer, jetzt vom Wert her gesehen, vor allem wenn auch Doppelpunkte drin sind.
      Ja das funktioniert! Die Kontroll-LED beginnt genau um 8:00 zu leuchten und schaltet sich um 12:00 aus! Von 13:00 bis 20:00 geht ebenfalls ohne Probleme!
    • Michael schrieb:

      Du musst schon was eintragen bei Config SDA und SCL, da muss was hin wie z.B. PortC.1
      Weiter unten kommen alias für diese Bezeichner. Ich bin mir nicht sicher, ob die alias früher gemacht werden müssen, damit sie bei den config-Zeilen schon bekannt sind.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • avralfred schrieb:

      tschoeatsch schrieb:

      Was mir aber aufgefallen ist, um Zeiträume zwischen 2 Zeiten zu selektieren, vergleichst du ob der string einer Uhrzeit zwischen den strings 2er Uhrzeiten liegt und das mit if string1>string2 then... Das wundert mich jetzt, dass das ohne Fehler geht. Wann ist ein string größer als ein anderer, jetzt vom Wert her gesehen, vor allem wenn auch Doppelpunkte drin sind.
      Ja das funktioniert! Die Kontroll-LED beginnt genau um 8:00 zu leuchten und schaltet sich um 12:00 aus! Von 13:00 bis 20:00 geht ebenfalls ohne Probleme!
      Ok, hätte ich jetzt nicht gedacht. Wieder was gelernt.
      Ich könnte mir vorstellen, dass das intern mit der Funktion val() gemacht wird, dann dürfte wegen den Doppelpunkten so ein Vergleich bei kleinen Uhrzeiten, wenn die Stunde=0 ist, nicht mehr sauber funktionieren.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von tschoeatsch ()

    • avralfred schrieb:

      Michael schrieb:

      (oder ein vorher festgelegter Alias)
      Habe ich leider auch Überlesen!Auch dir mein Dank für die rasche Hilfe.
      a_57_04ef5ee8
      Kam erst später dazu, sonst hätte ich das auch gelesen und wäre in meinem Zitat enthalten.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • @avralfred dein Programm wirkt auf mich in der Hauptschleife mit diesen ganzen dcf-Variablen sehr kompliziert. Du braucht doch deine Rtc nur für eine gültige Startzeit beim Einschalten der Steuerung. Das kannst du doch leichter lesbar so gestalten, dass du bei jedem gültigen dcf-Empfang (dcf_status.7=1) deine Rtc aktualisierst und halt beim Programmstart ein mal die Zeit von der Rtc holst (wie jetzt auch). Dazu langen dann die Sytemvariablen für _hour, _min,_sec.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch schrieb:

      @avralfred dein Programm wirkt auf mich in der Hauptschleife mit diesen ganzen dcf-Variablen sehr kompliziert. Du braucht doch deine Rtc nur für eine gültige Startzeit beim Einschalten der Steuerung. Das kannst du doch leichter lesbar so gestalten, dass du bei jedem gültigen dcf-Empfang (dcf_status.7=1) deine Rtc aktualisierst und halt beim Programmstart ein mal die Zeit von der Rtc holst (wie jetzt auch). Dazu langen dann die Sytemvariablen für _hour, _min,_sec.
      Eines meiner vielen Probleme ist unter anderem dass ich den genzen Programmteil des DS1307 nicht wirklich durchschaue. Daher tue ich mir extrem schwer hier Änderungen zu machen.
      Köntest du mir bitte deine o.a. Empfehlungen etwas genauer beschreiben bzw. wo ich welche Programmteile einfügen bzw. weggeben soll!
      Leider habe ich den DS1307 noch nicht und kann daher nicht damit Testen.
    • Dein Programm läuft doch mit dem dcf, ohne Rtc. Es braucht halt, bis mit einem gültigen Empfang die richtige Uhrzeit eingestellt wird. Das erkennst du am dcf_status.7, das ändert sich von 0 zu 1. Wenn du das erkennst, kannst du die Rtc mit der aktuellen Uhrzeit setzen. Das ist es schon. Damit du das auch nutzen kannst, am Programmanfang die Uhrzeit aus der Rtc lesen und damit die softclock, die von config dcf angelegt wird, stellen. Also 2 subs, eine zum Setzen der Rtc mit den Systemvariablen der softclock _hour, _min, usw, und eine sub zum Lesen der Rtc, die die Systemvariablen setzt.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • .... und den ganzen Teil in der Hauptschleife vergessen?


      Dcf77_hour = Makebcd(_hour)
      Dcf77_min = Makebcd(_min)
      Dcf77_sec = Makebcd(_sec)
      'Lcd Bcd(dcf77_hour) ; ":" ; Bcd(dcf77_min) ; ":" ; Bcd(dcf77_sec)
      Dcf77_weekday = Makebcd(_weekday)
      Cls
      Locate 1 , 1
      Lcd Lookupstr(dcf77_weekday , Wochentag)
      Dcf77_day = Makebcd(_day)
      Dcf77_month = Makebcd(_month)
      Dcf77_year = Makebcd(_year)
      Lftag = Dayofyear()
      Incr Lftag
    • Ja, wobei, irgendwo müssen die Systemvariablen mit makebcd gewandelt werden um an die Rtc übergeben werden zu können (äh, Satzbau ungenügend!) Das würde ich in der sub machen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------