RV 8564

    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!

    • ich bin dabei, eine Uhr zu bauen mit dem RV 8564 als Zeitgeber. Nun habe ich bereits zweimal Uhren mit diesem IC gebaut und es funktionierte. Jetzt wollte ich im Baufortschritt die Funktion testen, aber es kommen nur Zeichen heraus, die sich auch über längere Zeit nicht ändern. Ich hänge das Testprogramm an, aber wie gesagt, in den vorigen Programmen funktionierten diese Teile. Sie waren nur erweitert um beliebiges Stellen bzw. Rückmeldung bei bestimmter Zeit. Ich hoffe auf guten Rat.
      rv8564test.bas
    • Nur mal so als Tipp
      Das

      BASCOM-Quellcode

      1. If M = Ma Then 'nur bei neuer Minute
      2. Goto Sprung:
      3. Else
      4. Gosub Anzeige
      5. End If
      6. Sprung:
      7. Ma = M
      würde ich durch

      BASCOM-Quellcode

      1. If M = Ma Then 'nur bei neuer Minute
      2. Ma = M
      3. Else
      4. Gosub Anzeige
      5. End If
      ersetzen.
      In deiner Version würde nach dem End If immer Ma = M gesetzt werden, da das Label Sprung: ignoriert wird und du hast kein Goto mehr drin.
      Falls du aber immer am Ende Ma = M setzen willst/musst dann geht es auch ohne die If-Abfrage.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • @djmsc wenn M=Ma ist, dann brauch ich das nicht eine Zeile später wieder gleichsetzen :P Diese Abfrage soll doch eine neue Minute erkennen um dann einmalig zur Anzeige zu springen.

      Das goto muss man aus meiner Sicht nicht eliminieren, solange Sprung und Ziel so nahe beieinander liegen, dass man das beim Lesen immer gleichzeitig im Blick hat. Wenn das Ziel erst nach 5 Seiten code käme, würde ich das auch nicht als schön empfinden.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • michl schrieb:

      If M = Ma
      Das muß vermutlich if m <> ma heißen sonst würde er nie zur Anzeige kommen (nur einmal beim Programmstart)
      Oder soll er nur einmal pro Minute Anzeigen dann das Ma=M zwischen else und endif.
      Oder ganz ohne Spriung und else:
      If m<>ma then
      Gosub Anzeige
      M=ma
      end if


      Möglicherweise stimmt mit dem Timing was nicht versuch mal:
      Config I2cdelay = 20
      bzw
      Config Twi = 50000 (Bei 1Mhz Takt wird er über 60000 unzuverlässig)

      Hat der 4313 nicht 4Mhz standartmäßig ?
      Dann müste
      $crystal = 4000000 heißen sonst macht der Compiler "seltsames"
    • Ich finde das Programm ok

      BASCOM-Quellcode

      1. Do
      2. I2cstart 'lesen
      3. I2cwbyte &HA2 'Adresse RV8564
      4. I2cwbyte 3 'Minutenregister
      5. I2cstart
      6. I2cwbyte &HA3
      7. I2crbyte Mb , Ack 'Minuten lesen
      8. I2crbyte Hb , Nack 'Stunden lesen
      9. I2cstop
      10. Waitms 10
      11. M = Makedec(mb)
      12. H = Makedec(hb)
      13. M1 = M / 10 : M2 = M Mod 10
      14. H1 = H / 10 : H2 = H Mod 10
      15. If M = Ma Then 'nur bei neuer Minute
      16. Goto Sprung:
      17. Else
      18. Gosub Anzeige
      19. End If
      20. Sprung:
      21. Ma = M
      22. Loop
      23. End
      Alles anzeigen
      Nur wenn eine neue Minute M eingelesen wird, dann wird zur Anzeige gesprungen, das ist der else-Teil also wenn alte Minute <> neuer Minute
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Hallo michl,

      wie kommst Du auf die Idee innerhalb einer Do- Loop ein Gotobereich „abzuarbeiten“
      Wenn überhaupt dann vor Do als neue Startschleifenbedingung oder direkt nach Do um Parameter im „Schleifendurchlauf“ zu übernehmen.
      Bitte beachte. If Then Else ist sauber. Aber „Spring mal hier oder dahin“, sollte in einer „Dauerschleife“ vermieden werden. Dafür sind die AVR- Register nicht ausgelegt.

      Wie bekannt Bascom ist eine „Zeilenabarbeitung“. Heißt wenn alle Registereinstellungen Zeile für Zeile mit Systemtakt abgearbeitet werden, ist alles perfekt. Na klar ist es nur Theorie. Wenn etwas Zeit ist Springe man natürlich immer da hin, wo schon was registriert wurde. Ist ja der Controllereffekt. Also Zeitverlust wird ausgeglichen. Das geniale der Dinger ist ihr „Eigenleben“, wie Timer usw. Oft werden unüberlegt, diese ISR verballert, mehr Schaden als Nutzen.
      Kurz gesagt hau dies Goto (Sprung:) raus.

      Weis hier im Forum habe ich„verschissen“, wenn das Thema „Sprungadressierung“ kommt.
      Mach deine eigenen Erfahrungen.

      Mit freundlichen Grüßen
      der Spaßvogel
    • fredred schrieb:

      Aber „Spring mal hier oder dahin“, sollte in einer „Dauerschleife“ vermieden werden. Dafür sind die AVR- Register nicht ausgelegt.
      Wo hast du diese Erkenntnis her? Haben die Register eine eingeschränkte Haltbarkeit?

      fredred schrieb:

      wie kommst Du auf die Idee innerhalb einer Do- Loop ein Gotobereich „abzuarbeiten“
      ist die Idee schlecht, so wie er es gemacht hat?

      fredred schrieb:

      Wenn etwas Zeit ist Springe man natürlich immer da hin, wo schon was registriert wurde.
      wann wurde was registriert?
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Oh, oje.

      @ tschoeatsch „Wo hast du diese Erkenntnis her? Haben die Register eine eingeschränkte Haltbarkeit?“
      Nicht eingeschränkt aber während des Prozesses schon.

      @ tschoeatsch „ist die Idee schlecht, so wie er es gemacht hat?“
      Ja

      @ tschoeatsch „wann wurde was registriert?“
      Mit Programmierung und Ereignisabfrage.

      Falsch ausgelegt nicht Moorhuhn, Spaßvogel........
      Aber wenn die Jagdgenossenschaft den Spaßvogel als Moorhuhn erklärt und somit zum Abschuss freigibt, hat der Spaßvogel es verdient.
      Wär er nur in seinem Nest geblieben.
      Hoffe das dies eine Lehre an die immer weniger werden Spaßvögel ist, haltet den Schnabel wenn einige Genossen eurer Laut nicht mögen.
      Die haben die Flinte und du nur Federn über die dünne Haut, die sehr schnell zerflettert werden kann. Nennt man akademisches Wissen. Wer dies hat ist heutzutage der „Macher“ und die Praktiker müssen sich unterwerfen oder werden abgeschossen.

      Tschüß
    • Pluto25 schrieb:

      Ist die Forumszeit korrect? Ich hab doch keine 13 Minuten geschrieben?
      Die Forumszeit kannste vergessen, die mehr als relativer Anhaltspunkt zu betrachten. Das Forumsdatum stimmt zumindest einen Großteil des Tages. Geh mal mit der Maus über das 'vor xx Minuten'. :D
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Ein Zwischenbericht:
      1. Natürlich habe ich pull-up-Widerstände (4,7k, auch mit 2,2k probiert). Der SAA geht ja auch.
      2. Der ATtiny hat intern 8 MHz, die mit 8 geteilt sind.
      3. Delay habe ich auf 20 gesetzt ohne Wirkung.
      4. Die Pausenzeit ist jetzt 100 ms ohne Wirkung.
      5. Die if-then-Abfrage werde ich ändern.
      6. Jetzt habe ich noch den RV durch einen anderen ersetzt: ohne Wirkung.
      michl