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!

    • Normalerweise ist das dann 'toter code' bzw unbenutzter code, den man löschen kann. Klappt aber nicht immer 100%ig mit dem Ausgrauen. Zur Sicherheit erstmal auskommentieren und dann neu kompilieren. Wenn ohne Fehler, dann kann man diese Zeilen auch ganz löschen.
      Ich hab' jetzt dein Programm nicht in den bascomeditor geladen und sehe dadurch keine Farbgestaltung. Sind es die Konstanten für Adressen der Rtc? Ich sehe nicht, wo die verwendet werden.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Sub Rtc_write_control_reg(byval Value As Byte)
      I2cstart ' START-Sequenz senden
      I2cwbyte Rtc_address_write ' Daten schreiben initiieren
      I2cwbyte Rtc_address_control ' Adresse übertragen
      I2cwbyte Value ' Byte 1 übertragen
      I2cstop ' STOP-Sequenz
      End Sub


      Function Rtc_read_control_reg() As Byte
      I2cstart ' START-Sequenz senden
      I2cwbyte Rtc_address_write ' Daten schreiben initiieren
      I2cwbyte Rtc_address_control ' Adresse übertragen
      I2cstart ' START-Sequenz erneut senden
      I2cwbyte Rtc_address_read ' Daten lesen initiieren
      I2crbyte Temp_byte_1 , Nack ' Byte 1 lesen
      I2cstop ' STOP-Sequenz
      ' Datenbyte als Rückgabewert übergeben
      Rtc_read_control_reg = Temp_byte_1
      End Function

      Dieser ganze Teil (Zeile 504 bis 522) ist ausgegraut!
    • @avralfred diese sub/function wird nicht benötigt. Was du brauchst ist das Schreiben der aktuellen Zeit in die Rtc und das Lesen der Zeit aus der Rtc. Die beiden subs sind ja entsprechend benannt. Was ich immer ganz gerne mache, ist ein Hinweis, dass ein gültiges Zeittelegramm empfangen wurde. Dazu kann man dcf_status.7 verwenden. Ist das gesetzt, dann wird bei dir jetzt die aktuelle Zeit un die Rtc geschrieben. Jetzt könntest du zusätzlich einen Zähler mit zB 300 laden, der mit jeder Sekunde bis auf 0 decrementiert wird, es sei denn bit7 vom dcf_status wurde wieder gesetzt. Dieses bit musst du natürlich auch zurück setzen. Ist jetzt dieser Zähler >0, dann kannst du in deiner Anzeige ein kleines Symbol anzeigen lassen. So weißt du dann, wenn das sichtbar ist, war in den letzten 5 Minuten ein gültiger Dcf-Empfang.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Dein 'A=600', das du bei erfolgtem Dcf-Empfang setzt würde ich aus der sub 'Anzeige' raus nehmen und in der Hauptschleife einbauen, da, wo du die Rtc mit der gültigen Zeit setzt. Da, wo auch dcf_status.7 zurück gesetzt wird.
      Raum für Notizen

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

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

      Dein 'A=600', das du bei erfolgtem Dcf-Empfang setzt würde ich aus der sub 'Anzeige' raus nehmen und in der Hauptschleife einbauen, da, wo du die Rtc mit der gültigen Zeit setzt. Da, wo auch dcf_status.7 zurück gesetzt wird.
      Zuerst habe ich es so wie du vorschlägst gehabt!
      Nur zu meinem Verständnis. (Es funktionieren ja beide Varianten.)
      Warum ist das besser wenn das in der Hauptschleife steht?
    • Es sollte meiner Meinung nach da stehen, wo das dcf_status.7 zurück gesetzt wird, das ist bei dir in der Hauptschleife. Oder du lässt in der Hauptschleife die ganze Abfragerei nach dem bit weg (ist auch bisschen übertrieben ausgeführt) und resetest es in der sub 'Anzeigen', nachdem du es als gesetzt erkannt hast und du A=600 geschrieben hast.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Hallo zusammen!
      War doch nicht die letzte Version am 29.01. :D
      Habe nun noch die Beleuchtungszeiten via Tastatur veränderbar dazuprogrammiert! Mir genügt die stündliche Schaltmöglichkeit vollauf.

      Ich hätte nur gerne gewusst ob ich die Schleife "Licht_zeiten:" im Fall eines "Autoreturn" zur Hauptschleife richtig verlasse? (z.B.: Zeile 1038 - 1042)
      Habe vor "Gosub Main" einmal ein "Exit Do" probiert! Funktioniert zwar, aber das "Gosub Main" ist dann ausgegraut! Was auch verständlich ist.

      Kann ich das so lassen wie es jetzt ist ohne wieder Probleme mit dem Stack zu bekommen?

      AQ_all_in_one.bas
    • Sauber ist das meiner Meinung nach nicht, weil das 'return' nicht ausgeführt wird, wodurch ja wieder die gemerkte Adresse vom stack geholt wird. In deinem Fall wäre ein goto zu einem label vor dem return möglich, wodurch der restliche Summs der sub einfach übersprungen wird, oder du machst eine 'echte' sub draus, die mit call angesprungen wird und auch mitten drin mit 'end sub' beendet werden kann.
      bei sowas

      BASCOM-Quellcode

      1. Wahl:
      2. Cls
      3. Waitms 200
      4. Gosub Lcd_led_an
      5. X = 0
      6. Do
      7. If Minus_taster = 0 Or Plus_taster = 0 Then X = 0 'sobald eine Taste gedrueckt wird - Zaehler fuer Autoreturn zuruecksetzen
      8. Flag_x = 1
      9. Lcd_aktualisieren = 237
      10. Gosub Anzeigen
      11. Debounce Minus_taster , 0 , Wassertemp_aendern , Sub '"TEMP" Taster druecken um Soll-Wassertemperatur zu aendern
      12. Debounce Set_taster , 0 , Main , Sub 'gehe zurueck zur Hauptschleife
      13. Debounce Plus_taster , 0 , Licht_zeiten , Sub '"ZEIT" Taster druecken um Beleuchtungszeiten zu aendern
      14. If X = T_autoreturn Then Gosub Main
      15. Delay
      16. Loop Until Minus_taster = 0 Or Set_taster = 0 Or Plus_taster = 0
      17. Delay
      18. Return
      Alles anzeigen
      kannst du Zeile 21, die ja so ein Problemfall ist, in die loop (Zeile 24) verlagern, indem du den loop eben auch verlässt, wenn x=T_autoreturn ist.
      Raum für Notizen

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

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

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

    • It is important that you exit a SUB or FUNCTION with EXIT. ^^

      Wenn man weiter liest
      When you use EXIT SUB or EXIT FUNCTION, the compiler will create a jump to a label with the sub/function name, prefixed with two underscores.
      For example your Sub routine is named Test(), and you use Exit Sub, a label will be created with the name __TEST:
      erkennt man, das bascom da einen goto-Sprung bastelt ;)

      avrhelp.mcselec.com/exit.htm
      Raum für Notizen

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

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

      tschoeatsch schrieb:

      oder du machst eine 'echte' sub draus, die mit call angesprungen wird und auch mitten drin mit 'end sub' beendet werden kann.
      OK.. habe ja nur noch mal desswegen nachgefragt
      a_45_132ca9f5 a_45_132ca9f5 a_45_132ca9f5 a_169_53178177
      Raum für Notizen

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

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