mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hardware TWI / I2C Mega16


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ich möchte gerne Hardware I2C auf einem Mega16 proggen.
Ich programmiere in C. Ein byte auf einen PCF8574 schreiben geht ohne
Probleme, code nach datenblatt S.183.
Doch das lesen geht nicht. Leider ist nirgensbeschrieben, wie mann ein
byte vom bus liest, oder wie mann ein NACK generieren lässt.

Kann mit jemand weiterhelfen?

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn du lesen willst mußt du das letzte bit der adresse auf 1 setzten

start-->(7 bit adresse+ rw(0|1)) 1=lesen 0=schreiben

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das ist mir schon klar.
Zuerst schreibe ich die Slaveadresse + Readbit. Danach will ich die
Daten vom Bus lesen. Doch das klappt irgendwie nicht. Ich vermute dass
es am NACK bit scheitert. Ich habe im Datenblatt nirgens gefunden, wie
man es generiert...

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das NACK ist ähnlich dem ack

ein takt mit sda auf 0 oder 1 (0 ack und 1 nack)
 irgendwo steht das. guck dir mal die application notes von atmel dazu
an http://atmel.com/dyn/resources/prod_documents/doc2564.pdf

seite 3

An Acknowledge (ACK) is signaled by the receiver
pulling the SDA line low during the ninth SCL cycle. If the receiver
leaves the SDA
line high, a NACK is signaled.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, aber mir ist nicht klar, wie ich das von der Hardware generieren
lasse. Ich hab mal auf einem 8051er software i2c geschrieben, da war es
kein Problem ein NACK zu proggen ;-)

Aber kennst du kein Beispiel wo I2C über die Hardware Register genutzt
wird?

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besten Dank für die APPNOTE!
Wollte die Library: I2C_Master testen, doch mein compiler will mir
keine Hex datei rausspucken (ICCAVR). Er bringt ca 5 Errors in der
library!

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seite 189 im Datenblatt, in der Tabelle:
z.B:
"$40 SLA+R has been transmitted, ACK has been received."
Wenn in dieser Situation TWEA = 0 dann "Data byte will be received and
NOT ACK will be returned".

Ich würde empfehlen, Seite 170 bis 198 nicht nur unters Kopfkissen zu
legen, sondern auch zu lesen. Da ist alles beschrieben. Ehrlich.

Schönen Gruß
Thomas

Autor: AxelR. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe die Hardware I2C-Schnittstelle interruptgesteuert in FastAVR
abgebildet.
Da ich mir sowas auch nicht aus den Fingern sauge - hier habe ich es
her:
http://hubbard.engr.scu.edu/embedded/avr/avrlib/do...

Im prinzip war es dann doch alles ziemlich einfach. Der TWI-INT. kommt
bei jedem Pup aufm I2C. Im TWI Status register sieht man als erstes
nach, welcher wert da drinn steht, und verzweigt mit einer Switch
anweisung zum eigentlichen geschehen. Ist die notwendige Aktion
erledigt, muss man die entsprechenden Bits(Acknowledge, Stop, Start
etc.) im TWCR setzen und den Int. verlassen.

Ich habe den o.g. Link jetzt vom Papier abgetippt, hoffe, der geht
noch...

AxelR.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag zusammen!
Danke für eure Bemühungen!!

Manchmal ist die Welt schon böse... als ich am Abend das Datenblatt zum
xten mal gelsen hatte, war es mir plötzlich klar ;-)

Hab nun mein eigenes funktionierendes script.

Einen schönen Tag noch!

Martin

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.