Hallo, ich will ein PCF8574 über TWI/O2C mit dem Mega8 ansteuern. Das ganze soll aber Hardwaremäßig erfolgen (Kein Software I2C). Ich möchte auch in Assembler bleiben! Ich finde echt nichts Vernünftiges. Mit einer gescheiten Anleitung wie ich das anstellen muss bin ich zufrieden, ich verlange noch nicht mal fertigen Quellcode (währe auch cool). Danke Sebastian PS: mit dem Datenblatt bin ich noch nicht weitergekommen.
iss nich in ASM- -leider aber "einigermaßen" ;-)) erklärt Beitrag "Re: Blutrausch wegen i2c" vielleicht hilfts AxelR.
Hi Im Datenblatt sind Codebeispiele in Assembler und C enthalten. MfG Spess
@ Axel: Danke ich werd mir das mal reinziehen. @ spess53: Hab ich gesehen aber da fehlt mir was gescheites zu Initialisierung. Danke Gruß Sebastian
Hi, ich habe mich durchs Datenblatt gewühlt und das Ergebniss im Anhang erziehlt! Leider bekomme ich keinen Acknowledge. Kann mir einer BITTE helfen?? Danke Sebastian
wenn das soo aus dem Datenblatt kommt, hast du aber 'merkwürdig' abgeschrieben, schau mal nach 'using the TWI' und der Tabelle dazu (bei dem datenblatt von 02/06) S.177 wird TWSR mit 'MT_SLA_ACK'= 0x38 -> AVR sendet (bzw 'MR_SLA_ACK' = 0x40 -> AVR liest) verglichen und nicht mit "TWEA" (was btw. was ganz anderes ist) HTH. Jörg
Hab hier einen Bootloader für TWI in Assembler. Vielleicht ist etwas braucbares drin für dein Vorhaben.
Hi, hab ein paar Kommentare eingefügt. Wurde wo anders bemängelt. Danke aber für die Hilfe.
Lies mal im Online-Buch von Rowalt nach, da wird HW-TWI ganz gut erklärt. Und zwar so, dass auch der (noch Detail-unwissende) ASM-Programmierer davon profitieren kann. Ich fand's beim Überfliegen recht interessant, habe aber auch noch nix mit TWI gemacht, bin da auch noch unwissend. ...
Hi, du meinst ich müsste den Block 5 und 7 so lassen wie er iss und nur MT_SLA_ACK bzw. MT_DATA_ACK durch 0x38 bzw. 0x40 ersetzen? und dann die richtigen daten schicken und das ding antwortet? Gruß Sebastian
Klar funktioniert das , wenn du alles richtig anschließt und richtig programmierst :-P Aber wir bräuchten ja dieses Forum nicht, wenn DAS so einfach wäre... SCNR du musst das TWSR immer mit den richtigen Status-codes vergleichen, nicht mit den Bit Nummern des TWCR (machst du nach der Start-condition auch). Die "Figure 79. Formats and States in the Master Transmitter Mode" S.181 zeigt die Statuscodes auch gut.
ach ja, hast du mal in der Codesammlung gesucht? -> Beitrag "TWI / I2C einf. MASTER SLAVE Beispiel(Assembler) ATmega8"
Hi Leute, ich habs geschafft. Im Anhang findet ihr die TWI-Beispiel-Routine aus dem Datenblatt des Mega8 (Rev.:2486M–AVR–10/06) um einen PCF 8574(P) anzusteuern. Habs mit nem MyAVR Board ausprobiert und im AVR-Studio Assembliert. Müsste auf allen Mega8 so laufen. Danke für eure Hilfe grüße Sebastian
Hi, kann mir jetzt einer noch sagen wie ich vom pcf8574 auch was empfangen kann? Habfolgende Daten aus dem Datenblatt genommen: Adresse: 0x41 MT_SLA_ACK: 0x40 MT_DATA_ACK: 0x50 Beim MT_DATA_ACK von 50 geht der in ne Fehlerschleife, bei 58 gehts weiter. Aber es kommt nur mist zurück. Was mach ich falsch? DANKE
Lesen geht als "Master-Receiver"-> Slave Adresse mit gesetztem (R-\W-) LSB schicken, danach nochmal TWEN, TWIE im TWCR setzen (und falls du mehr als ein Byte lesen willst, auch TWEA - und TWEA wieder löschen bevor_ das letzte _Byte gelesen wird). Nach der Adresse auf die MR_... Statuscodes achten. hth. (dt.: hdeh) -Jörg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.