Forum: Mikrocontroller und Digitale Elektronik XMEGA I2C Problem beim Stop Signal


von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich verwende einen XMEGA256A3U Mikrocontroller von Atmel. An dem 
Mikrocontroller ist ein Schrttmotor per I2C angeschlossen. Es gibt nur 
einen Master am Bus und das ist mein XMEGA256A3U.

Ich schreibe Testdaten in den Slave (siehe Sreenshot). Zuerst erzeuge 
ich den Start-Pulse, anschließend übertrage ich die Adresse vom Slave 
und das Bit 0 für schreiben. Dies wird auch alles richtig übertragen und 
ich erhalte ein ACK vom Slave zurück. Anschließend übertrage ich die 
Testdaten 0xAA, 0xFF und 0xDD. Alle Testdaten werden richtig übertragen 
und werden vom Slave mit einem ACK quitiert.

Doch nun zu meinem Problem. Nach erfolgreicher Übertragung sende ich die 
Stop Bedingung doch wie man im zweiten Screenshot sehen kann ist dieser 
nur sehr kurz und wird daher nicht erkannt.

Der XMEGA besitzt das CTRLC (Control Register C) Register. Ich habe in 
Bit 0 und 1 0b11 reingeschrieben. Durch diesen Befehl soll der 
XMEGA256A3U automatisch einen Stop Bedingung erzeugen. Ich habe extern 
zwei Pullups am SDA und SCL angeschlossen.

Es sind auch keine Fehler bei der Datenübertragung aufgetreten ich habe 
das RXACK, ARBLOST und BUSERR Flag geprüft.

von Martin (Gast)


Lesenswert?

Ich habe den Fehler gefunden :-)

Ich habde direkt nach den Stop Befehl den I2C Kern deaktiviert :-)

Dies sollte man nicht machen :-))))

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.