www.mikrocontroller.net

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


Autor: Sebstian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Axel R. (axelr) Flattr this
Datum:

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

vielleicht hilfts

AxelR.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Im Datenblatt sind Codebeispiele in Assembler und C enthalten.

MfG Spess

Autor: Sebstian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Axel: Danke ich werd mir das mal reinziehen.

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

Danke

Gruß Sebastian

Autor: Sebstian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Joerg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kalle (Gast)
Datum:
Angehängte Dateien:

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

Autor: Sebstian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

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

Danke aber für die Hilfe.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Sebstian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Joerg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Joerg X. (Gast)
Datum:

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

Autor: Sebstian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebstian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sorry verafft

Autor: Sebastian Schreiner (nomex)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Joerg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.