Forum: Mikrocontroller und Digitale Elektronik TWI/I2C für Mega8 in Assembler


von Sebstian (Gast)


Lesenswert?

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.

von Axel R. (Gast)


Lesenswert?

iss nich in ASM- -leider
aber "einigermaßen" ;-)) erklärt
Beitrag "Re: Blutrausch wegen i2c"

vielleicht hilfts

AxelR.

von spess53 (Gast)


Lesenswert?

Hi

Im Datenblatt sind Codebeispiele in Assembler und C enthalten.

MfG Spess

von Sebstian (Gast)


Lesenswert?

@ Axel: Danke ich werd mir das mal reinziehen.

@ spess53: Hab ich gesehen aber da fehlt mir was gescheites zu 
Initialisierung.

Danke

Gruß Sebastian

von Sebstian (Gast)


Angehängte Dateien:

Lesenswert?

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

von Joerg X. (Gast)


Lesenswert?

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

von Kalle (Gast)


Angehängte Dateien:

Lesenswert?

Hab hier einen Bootloader für TWI in Assembler.
Vielleicht ist etwas braucbares drin für dein Vorhaben.

von Sebstian (Gast)


Lesenswert?

Hi,

hab ein paar Kommentare eingefügt. Wurde wo anders bemängelt.

Danke aber für die Hilfe.

von Hannes L. (hannes)


Lesenswert?

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.

...

von Sebstian (Gast)


Lesenswert?

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

von Joerg X. (Gast)


Lesenswert?

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.

von Joerg X. (Gast)


Lesenswert?

ach ja, hast du mal in der Codesammlung gesucht?
-> Beitrag "TWI / I2C einf. MASTER SLAVE Beispiel(Assembler) ATmega8"

von Sebstian (Gast)


Lesenswert?

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

von Sebstian (Gast)


Angehängte Dateien:

Lesenswert?

Sorry verafft

von Sebastian S. (nomex)


Lesenswert?

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

von Joerg X. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.