Forum: Mikrocontroller und Digitale Elektronik AT32UC3A TWI Repeated Start


von Max (Gast)


Lesenswert?

Hallo zusammen,

ich muss gerade eine TWI-Kommunikation mit einem AT32UC3A als Master 
aufbauen. Der Slave in der Kommunikation hat sowohl Schreib-, Lese- als 
auch Funktionsaufrufe. Das Problem tritt bei den Funktionsaufrufen auf, 
da der Master zuerst schreiben und direkt danach auch lesen soll. Der 
Slave verlangt hierbei, dass zwischen Schreib- und Lesevorgang ein 
Repeated Start gesendet wird.
Leider habe ich keine Möglichkeit gefunden, einen erfolgreichen 
Funktionsaufruf mit dem AT32UC3A durchzuführen.

Ist es mit diesem Mikrocontroller überhaupt möglich einen solchen 
Funktionsaufruf durchzuführen und wenn ja, welche Register muss ich 
dafür in welcher Reihenfolge setzen.

Vielen Dank im Voraus

von W.S. (Gast)


Lesenswert?

Max schrieb:
> ich muss gerade eine TWI-Kommunikation mit einem AT32UC3A als Master
> aufbauen.

Aha. Eine TWI-Kommunikation. Ich vermute mal, daß damit eigentlich ein 
I2C Bus gemeint ist.

Also: Der Verkehr auf einem I2C Bus erfolgt etwa so:
1. ein/der Master appliziert eine Start-Kondition
2. der Master sendet ein Adressierungsbyte, was die Adresse des 
anzusprechenden Slaves und ein Bit zum Unterscheiden, ob es im folgenden 
ein Lesen oder Schreiben sein soll, enthält.
3. der Master sendet/empfängt Bytes. Der jeweilige Empfänger quittiert 
jedes Byte mit einem ACK oder er rührt sich nicht, was NAK bedeutet.
4. der Master appliziert eine Stop-Kondition

Normalerweise darf sich das Datensignal (SDA) nur dann ändern, wenn das 
Clock-Signal (SCL) auf LOW liegt. Ändert man SDA, während SCL auf High 
ist, dann ist das eine Start- bzw. Stop-Kondition wie folgt:
SCL LOW-->HIGH = Stop
SCL HIGH-->LOW = Start
Und ein repeated Start ist nix anderes als eine erneute Start-Kondition 
ohne zuvorige Stop-Kondition.
Das ist eigentlich alles - was den I2C betrifft. Sowas wie Busherrschaft 
gewinnen oder abgeben lassen wir hier mal außen vor.

Zu diversen µC: oftmals haben die ein I2C-Interface eingebaut. 
Allerdings reicht deren Qualität von 'benutzbar' bis 'Katastrophe'.
Manche erzeugen bei jedem Zustandswechsel einen Interrupt und überlassen 
das eigentliche Handeln dem Programmierer der ISR. Ist häßlich, aber 
benutzbar.
Andere wollen ganz besonders oberschlau sein und alles selber machen. 
Ist zwar besonders genial gedacht, aber meistens so gut wie unbenutzbar. 
Wenn du an so einen µC geraten bist, dann laß das I2C-Interface links 
liegen und mache deine Abläufe in Software. Das ist übersichtlicher und 
benutzbarer.

W.S.

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.