RV 8564

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

    • Neu

      @michl Warum schreibst du in das controllregister &H00 eigentlich ein &H10 rein? Bit4 sollte immer =0 sein, bei dir ist es jetzt =1

      BASCOM-Quellcode

      1. Mb = Makebcd(m)
      2. Hb = Makebcd(h)
      3. I2cstart 'stellen
      4. I2cwbyte &HA2 'Adresse RV8564
      5. I2cwbyte 0 'Controlregister
      6. I2cwbyte &H10 'Minuten
      7. I2cstop
      8. I2cstart
      9. I2cwbyte &HA2
      10. I2cwbyte 2
      11. I2cwbyte 0
      12. I2cwbyte Mb
      13. I2cwbyte Hb
      14. I2cstop
      15. Waitms 20
      Alles anzeigen
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Neu

      Ich hab' jetzt das gefunden elektronik-labor.de/AVR/RTC.html
      Schaut auf den ersten Blick nicht viel anders aus, beim Uhr stellen ist ein Unterschied. Vergleiche doch selbst mal und probiere dein Programm zur Not mal mit einem anderen Kontroller.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Neu

      tschoeatsch schrieb:

      Schaut auf den ersten Blick nicht viel anders aus, beim Uhr stellen ist ein Unterschied. Vergleiche doch selbst mal und probiere dein Programm zur Not mal mit einem anderen Kontroller.
      Hallo,
      Vermute auch Kontroller.
      wie schon so oft erwähn immer erst Busteilnehmer testen ob sie sich melden. Erst wenn „JA“ dann geht die Fehlersuche weiter.
      Nun mal ein Testcode erstellt aber mit dem Attiny 4313 bekomme ich Syntaxfehler wenn ich die Hardware I²C einbinde „$lib "i2c_TWI.lib". Vermute B5 muss wohl in Fusse für SDA Freigabe gesetzt werden. Standart ist es SPI MOSI.
      Da ich kein 4313 habe, kann ich die Software I²C nicht testen.
      Kannst aber mal den Code mit Terminalausgabe probieren.

      Quellcode

      1. $regfile = "attiny4313.dat"
      2. $crystal = 1000000
      3. $swstack = 32
      4. $hwstack = 32
      5. $framesize = 40
      6. Config Sda = Portb.5 : Config Scl = Portb.7
      7. I2cinit
      8. Dim Chipaddress As Byte
      9. Dim Anzahl As Byte
      10. 'sind deine Angaben nicht geprüft
      11. 'Const RV8564 = &HA2
      12. 'Const SAA1064 = &H70
      13. Waitms 100
      14. 'Step 2 soll nur IC Addresse aufrufen "hast dich gemeldet"
      15. Print "I2C Scan start"
      16. For Chipaddress = 0 To 254 Step 2 'IC's am I²C-Bus erkennen
      17. I2cstart 'send start
      18. I2cwbyte Chipaddress 'sende Adresse
      19. If Err = 0 Then 'Chip gefunden
      20. Incr Anzahl
      21. Print "Hex-Adr " ; Hex(chipaddress) ; " b " ; Bin(chipaddress)
      22. Waitms 500
      23. End If
      24. 'zählt Teilnehmer
      25. Next
      26. Print "am I2C " ; Anzahl ; " Bus-Teilnehmer gefunden "
      Alles anzeigen


      Mit freundlichen Grüßen
    • Neu

      Pluto25 schrieb:

      könnte ich da eine Link kriegen? Ich finde nur die technischen
      microcrystal.com/fileadmin/Med…RV-8564-Cx_App-Manual.pdf
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Neu

      Pluto25 schrieb:

      Doch . Sie haben ein Universal Serial Interface daher die "i2c_usi.lib" ( #19)


      Vielen Dank. Dann war meine Vermutung doch nicht so falsch.

      Wenn ich richtig erkannt ist diese Lib speziell für folgende Kontroller geschrieben.
      Hier mal in Pin-Gruppen
      tiny2313 tiny4313
      tiny24 tiny44 tiny 84
      tiny25 tiny45 tiny 85 tiny26
      tiny261 tiny461 tiny861
      tiny87 tiny167
      tiny43U
      m169 m165 m325 m3250 m645 m6450 m329 m649

      Was mich nun noch interessieren würde, wie kann eine I²C Software- Version funktionieren. Oder wird da auch mit I2cinit die Pins SCL und SDA gleich auf Output gesetzt.
      Mit freundlichen Grüßen
    • Neu

      fredred schrieb:

      der wird da auch mit I2cinit die Pins SCL und SDA gleich auf Output gesetzt.
      So wie ich das verstehe richtet das init die Pins ein die vorher mit config s... festgelegt wurden. Vor einiger Zeit hatte ich einen 1323 (mangels besserem Wissens) mit Software i2c aber den Hardware Pinns betrieben.
      In Nachhinein betrachtet hätter ich beliebige Pinns nehmen können.
      Das init setzt sie als Eingang (daher die externen Pullup nicht vergessen) und nur bei Bedarf auf Ausgang.

      Ich hab die SW gerade mal auf nem M8 versucht mit Portb3/5 - geht problemlos
    • Neu

      Pluto25 schrieb:

      Das init setzt sie als Eingang (daher die externen Pullup nicht vergessen) und nur bei Bedarf auf Ausgang.
      Aber wie fragen wenn zuerst auf Antwort gewartet werden soll?
      Somit müsste die Software- Version mit tiny4313 problemlos funktionieren wenn nicht die SCL und SDA Pins benutzt werden aber nicht mit der Lib, denn da sind nur die Hardware- Pin zulässig, um eine seriellen Kommunikation aufzubauen.
      Praktisch ist keine Protokoll-Implementierung vorhanden. Muss wohl doch mit der Software implementiert werden, je nachdem, welchen Interface-Typ man nutzen will.
      z.B.
      Die Lib setzt Pullups anSDA,undSCL somit sind die Pins auf H. Der Slave zieht einmal beim Erkennen der Startbedingung die SCL Leitung runter. Nachdem der jeweilige Interrupt abgearbeitet wurde, wird die SCL wieder freigegeben. Macht aber auch der 16-de SCL Flankenwechsel und was wenn ein SPI den auslöst?
      Somit ist das USI Interface Register der genannten Kontroller Universal aber wohl nicht unbedingt für solche Anwendungen gedacht. Funktioniert. Aber ein anderen µC ist wohl doch leichter zu Händeln.
      Ist natürlich nur meine bescheidene Meinung.

      Nochmals vielen Dank für Diskussion. Ist schon erstaunlich auf was man alles achten muss.
      Ist ja das Gute an diesem Hobby. Wird nicht Langweilig.

      Mit freundlichen Grüßen
      Der Spaßvogel
    • Neu

      fredred schrieb:

      problemlos funktionieren wenn nicht die SCL und SDA Pins
      auch wenn sie genutzt werden. In dem Fall sind sie als normale Pinns zu betrachten

      fredred schrieb:

      die SCL Leitung runter
      Nur wenn er noch "überlegen" muß sonst eigendlich nur die SDA als Ack. Die internen alleine reichen meißt nicht da sind die externen 4k7 obligatorisch.


      fredred schrieb:

      Aber ein anderen µC ist wohl doch leichter zu Händeln.
      Da sehe ich keine Unterschiede? Wobei mir noch ein Weg fehlt den Usi takt kleiner zu kriegen. Er scheint nur zwei Speeds zuzulassen 100 und 400Khz. a_447_3df864b7

      Die Hardware wird dann zum Vorteil wenn das ganze über ints betrieben würde - Dann könnte die cpu was anderes tun als auf jedes Bit zu warten. a_481_60a3be70 Das scheint aber in der Form nicht in Bascom vorgesehen.


      @michl wie gehts dem Projekt? Das repstart mal probiert?
    • Neu

      Mit config I2Cdelay kannste verschiedene Speed einstellen.

      Config I2cdelay = 5 '1=1Mhz,5=200Khz,10=100Khz,15=66,66Khz
      'Wenn in Lcd keine Anzeige muß der Delaywert erhöht werden.Mit Wert 15 beginnen und dann langsam verringern , erspart.viel in der Fehlersuche. USI-lip wird nicht beim einsatz von I2Cdelay benötigt.
      I2cdelay funktioniert bei allen Attinys die keine TWI-lip funktionalität haben.
      Natürlich müssen auch die ports dazu aktiviert werden.
      zB:
      Config Scl = Portb.2
      Config Sda = Portb.0

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