Hardware TWI / I2C Mega16

Gast #147243
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?
Gast #147246
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.
Gast #147250
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
Gast #147251
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/docs/html/i2c_8c-source.html

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren