Hmmmm, bei 400 kHz sind die Impulse ~0,0000025 s Lang
oder 2,5 µs auf was hast Du die Zeitbasis stehen? Lege PC2 nicht nur über einen Pull Up auf Vcc, setze zusätzlich einen 100nF gegen GND. Kann
sein das der sonst dauend Resettet..
Gruß Richard
Druckbare Version
Hmmmm, bei 400 kHz sind die Impulse ~0,0000025 s Lang
oder 2,5 µs auf was hast Du die Zeitbasis stehen? Lege PC2 nicht nur über einen Pull Up auf Vcc, setze zusätzlich einen 100nF gegen GND. Kann
sein das der sonst dauend Resettet..
Gruß Richard
Hi!
Poste mal deinen Code und wenns geht nen Bild vom Osci, 2 Kanal SCK/SDA wär am schönsten :)
Also hier sind die Bilder, bei SDA&SCK ist das obere Signal SCK und der Code ist auch dabei.
SDA und SCK passen vom Takt her gar nicht zusammen...
Die clock läuft, aber es werden keine Daten auf SDA rausgeshifted. Imho zieht da irgendas von aussen sda auf low nach dem start.
Überprüf noch mal was du da geätzt hast, gib dem Bus mehr Zeit zwischen den Nachrichten um sich zu fangen und mach das alles für den Anfang mal was langsamer.
Ih habe jetzt eher gedacht das zwischen RESET und SCK eine verbindung besteht die nicht sein soll. Soll RESET wirklich so aussehen?
Ja ich werde heute nochmal die Platine nach Fehlern untersuchen, langsamer ist schwer, da die Slaves eine Mindesfrequenz von 100kHz haben.
Leute! Die übertragung steht :)
Es liegen schöne Signale an :)
Jetzt muss ich nur noch die richtigen Adressen finden ;)
lg und Danke für Alles, ihr habt mir sehr geholfen
Naja, wenn du PC2 auf high setzt, zieht ja der AVR und der Pullup die Leitung auf 5V. Wenn du PC2 auf low setzt, wird die Leitung vom AVR aus auf GND gezogen, der Pullup hat dann quasi nichts mehr zu melden.
Also wenn du die Reset-Leitung benutzen willst, musst du statt zwischen
High und Low (PORT) zwischen Input und Output (DDR) umschalten.
Low und Input: Hochohmig, Pullup zieht Leitung auf 5V.
Low und Output: Leitung wird vom AVR auf GND gezogen.
High und Input: gleiche wirkung wie Low und Input.
High und Output: geht nur solange gut, bis jemand anders die Leitung auf GND zieht => Kurzschluss.
EDIT: Scheinbar wurde der letzte Beitrag gerade editiert, so dass die Antwort von mir jetzt wohl nicht mehr gebraucht wird. Lass ich aber trotzdem mal da.
Ja entschuldigung, ich hatte im Programm ein DDRC = 0xff versteckt. Aber danke das ist sehr interessant.
Witzig ist das ich nun verschiedene Adressen ausprobiert habe, aber keine Leds leuchten:|
I²C Adressen haben 7 Bit, das 8. Bit ist das schreib lese Bit.
Deshalb können nur Adresse 2,4,......128 als Adressen benutzt
werden. An den Port Expandern können die Adressen Hartware
mäßig geändert werden. Möglich das Dui deshalb Probleme hast?
Gruß Richard
Bo ich weiß nicht, also meine Adressen
Slave suchen: 1100000(0) schreiben
register: 10010100: Ledout0 register
Led: 01010101
ack vom slave und ende.
so ist auch das Beispiel im Datenblatt Seite 25.