Pluto25 schrieb:
ca 100 byte mehr
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!
-
-
@michl Warum schreibst du in das controllregister &H00 eigentlich ein &H10 rein? Bit4 sollte immer =0 sein, bei dir ist es jetzt =1
Raum für Notizen
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------- -
tschoeatsch schrieb:
Du stellst doch den RV ein. Werden diese Werte dann auch angezeigt?
michl -
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
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------- -
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.
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
- $regfile = "attiny4313.dat"
- $crystal = 1000000
- $swstack = 32
- $hwstack = 32
- $framesize = 40
- Config Sda = Portb.5 : Config Scl = Portb.7
- I2cinit
- Dim Chipaddress As Byte
- Dim Anzahl As Byte
- 'sind deine Angaben nicht geprüft
- 'Const RV8564 = &HA2
- 'Const SAA1064 = &H70
- Waitms 100
- 'Step 2 soll nur IC Addresse aufrufen "hast dich gemeldet"
- Print "I2C Scan start"
- For Chipaddress = 0 To 254 Step 2 'IC's am I²C-Bus erkennen
- I2cstart 'send start
- I2cwbyte Chipaddress 'sende Adresse
- If Err = 0 Then 'Chip gefunden
- Incr Anzahl
- Print "Hex-Adr " ; Hex(chipaddress) ; " b " ; Bin(chipaddress)
- Waitms 500
- End If
- 'zählt Teilnehmer
- Next
- Print "am I2C " ; Anzahl ; " Bus-Teilnehmer gefunden "
Mit freundlichen Grüßen -
-
fredred schrieb:
Syntaxfehler wenn ich die Hardware I²C einbinde „$lib "i2c_TWI.lib"
ftelektro schrieb:
haben die Attiny kein TWI-lip funktionalität
michl schrieb:
das Datenblatt
-
Pluto25 schrieb:
könnte ich da eine Link kriegen? Ich finde nur die technischen
Raum für Notizen
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------- -
Beim lesen erwartet sie ein repeat start oder Stop/Start.
Versuch mal zeile 42 (i2cstart) gegen i2crepstart zu ersetzen.
Eine err Abfrage würde zeigen ob sie überhaupt reagiert - vielleicht nach Zeile 25
If Err = 0 Then
? "RV vorhanden"
26
27...
35
else
? "kein Chip ?"
end if
36 -
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 -
fredred schrieb:
der wird da auch mit I2cinit die Pins SCL und SDA gleich auf Output gesetzt.
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 -
Pluto25 schrieb:
Das init setzt sie als Eingang (daher die externen Pullup nicht vergessen) und nur bei Bedarf auf Ausgang.
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 -
fredred schrieb:
problemlos funktionieren wenn nicht die SCL und SDA Pins
fredred schrieb:
die SCL Leitung runter
fredred schrieb:
Aber ein anderen µC ist wohl doch leichter zu Händeln.
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. Das scheint aber in der Form nicht in Bascom vorgesehen.
@michl wie gehts dem Projekt? Das repstart mal probiert? -
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.0Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ftelektro ()
-
ftelektro schrieb:
Mit config I2Cdelay kannste verschiedene Speed einstellen.
-
Nun habe ich mein Programm auf LCD-Anzeige geändert (entsprechend Anregung bascomforum.de/index.php?user/13-tschoeatsch/). I2C ist jetzt allerdings per Software eingebunden. Und es läuft. Warum es mit dem SAA1064 zuletzt nicht wollte, bleibt mir rätselhaft.
michl