Forum: Mikrocontroller und Digitale Elektronik Verwendung des TWI/I2C


von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Hallo,

leider konnte ich trotz Codebeispielen nicht herausfinden, ob es in 
irgendeiner Form von Entscheidung ist, wie ich die SDA und SDC pins 
konfigurieren muss um TWI zu verwenden. Im Datenblatt steht, dass man 
die internen Pullups verwenden kann um in manchen die Verwendung der 
externen zu vermeiden. Das heisst doch aber auch dass die 
Portkonfiguration von Entscheidung ist. Wie sollte ich unter verwendung 
von externen Pullups also diese Pins konfigurieren? Sollte an SDC nach 
dem Setzen des Taktes nicht ein entsprechender Takt zu messen sein? Oder 
messe ich falsch wenn ich zwischen GND und SDC messe?

Spaetestens mit
1
 TWCR = TWINT | TWSTA | TWEN;

sollte doch etwas zu messen sein, oder nicht?

Gruss,
Michael

von Matthias (Gast)


Lesenswert?

wenn du ein Register mit den Gespeicherten Namen beschreiben willst, 
musst du das so machen :

TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);

mfg

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

oh man ich Idiot... kommt davon wenn man am Sonntag arbeitet.
OK dann die urspruengliche Frage: Wie isses mit der Portkonfiguration? 
Kann man da was falsch machen oder wird das vom entsprechenden Subsystem 
sowieso unterschrieben?

Hat TWI eigentlich vorgeschriebene Spannungen oder kann man das je nach 
Schaltung selber festlegen (mal 5V mal 3.3V...?)

von Psiyou .. (Gast)


Lesenswert?

Clock ist nur vorhanden Wenn auch Daten übertragen werden. Idle Zustand 
beider Bus-Leitungen ist High.
Port Konfiguration ist bis auf Pull Up/Down egal. PORTxn Register muss 
halt gesetzt/nicht gesetzt sein.

Gruß

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

OK das heisst konkret wenn ich nen externen Pullup vewende sollte ich 
den internen auf jeden Fall ausschalten?

von Andreas K. (a-k)


Lesenswert?

In Datasheet steht für jedes einzelne Portbit sehr genau drin, inwieweit 
welche Portsteuerfunktionen wirksam sind, wenn das Portbit für ein 
Funktionsmodul wie UART,SPI,... verwendet wird. Ist nur nicht ganz so 
leicht zu lesen, weil nicht in Prosa.

von Psiyou .. (Gast)


Lesenswert?

Michael G. wrote:
> Hat TWI eigentlich vorgeschriebene Spannungen oder kann man das je nach
> Schaltung selber festlegen (mal 5V mal 3.3V...?)

Ist egal, müssen nur halt alle Busteilnehmer mit der Spannung betrieben 
werden ;) Ansonsten hab ich hier auch schon mal eine Umsetzung 5V<->3.3V 
für TWI gesehen (suche benutzen) wenn unterschiedliche Busteilnehmer zum 
Einsatz kommen.

PS: Wenn externe Pullups vorhanden sind, dürfen die internen natürlich 
nicht gestzt werden ;)
Mit den Internen sollte der Takt auch nicht zu hoch sein, siehe 
Datenblatt. Verwende selbst zum testen immer 10kHz damit gehts super :)

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Das mal wieder typisch... anstatt einfach mal ne klare Antwort (hier: 
ja, nein) zu geben wird sich nur wieder profiliert und der Fragende als 
Idiot hingestellt.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Psiyou ... wrote:
> Michael G. wrote:

> Mit den Internen sollte der Takt auch nicht zu hoch sein, siehe
> Datenblatt. Verwende selbst zum testen immer 10kHz damit gehts super :)

10KHz kannste nicht konfigurieren bei nem Systemtakt von 8MHz, das fasst 
das Register nicht.

von Andreas K. (a-k)


Lesenswert?

Michael G. wrote:

> Das mal wieder typisch... anstatt einfach mal ne klare Antwort (hier:
> ja, nein) zu geben wird sich nur wieder profiliert und der Fragende als
> Idiot hingestellt.

Ich halte es bei solchen Fragestellungen für zielführender, auf die 
Stelle hinzuweisen wo man sowas findet. Dann brauchst du das nächste Mal 
nicht mehr zu fragen.

Das hat nichts mit "Idiot" zu tun. Sorry, wenn das so rübergekommen sein 
sollte. Wenn ich mich damit freilich als "wieder so'n scheiss Lehrer" 
profiliert haben sollte - damit kann ich leben.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Nur dass Du das nicht getan hast. "Im Datenblatt" ist keine Stelle. Dann 
kannste auch "im Internet" schreiben.

von Psiyou .. (Gast)


Lesenswert?

Michael G. wrote:
> 10KHz kannste nicht konfigurieren bei nem Systemtakt von 8MHz, das fasst
> das Register nicht.

Naja, hängt vom TWSR Register ab, da kannst den Prescaler wählen...
Es sollten auch mehr als 10kHz gehen, aber wenn ich mich recht zurück 
erinnere ging es mit den internen pullups nicht bis 100kHz hoch, war 
irgendwo vorher Schluss.

von Andreas K. (a-k)


Lesenswert?

Ich würde gerne auf die Stelle hinweisen. Das wird aber erheblich 
leichter, wenn ich weiss für welches Datasheet ich die Seite angeben 
soll. Dazu fehlt leider die Angabe, um welchen Controller es sich genau 
handelt.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

OK ich benutze jetzt die externen und habe die internen ausgeschalten. 
Hab im Datenblatt gelesen dass die Pullups mit dem Takt zu waehlen sind. 
Ich hoffe ich hab mit 10k nicht komplett danebengegriffen?

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Atmega 8

von Andreas K. (a-k)


Lesenswert?

Im Datasheet der AVRs gibt es unter "I/O Ports" ein Kapitel "Alternate 
Port Functions". Darin werden zuerst eine Reihe von internen 
Portsteuersignalen beschrieben wie PUOE,PVOE. Weiter hinten sind dann 
Tabellen in denen für jedes Portbit steht, welche dieser Steuersignale 
von welchem Steuerbit abhängig sind.

Mega8: Seiten 56f und 62 in Datasheet Revision 08/07.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

"These pins interface the AVR TWI with the rest of the MCU system. The 
output drivers contain a slew-rate limiter in order to conform to the 
TWI specification. The input stages contain a spike suppression unit 
removing spikes shorter than 50 ns. Note that the internal pull-ups in 
the AVR pads can be enabled by setting the PORT bits corresponding to 
the SCL and SDA pins, as explained in the I/O Port section. The internal 
pull-ups can in
some systems eliminate the need for external ones."

Das ist alles was ich gefunden habe, da steht aber nichts von der 
Richtung.

von Psiyou .. (Gast)


Lesenswert?

So schwer zu sagen, hängt davon ab was noch so alles am Bus hängt.
Auf jeden Fall mal mit dem Scope schauen, und  vor allem von unten an 
die gewünschte Taktrate heran arbeiten :)

@ Andreas Kaiser (a-k)
Wo steht das den z.B. für den mega8? Habe das aus Interesse gerade mal 
gesucht und bin beim "drüber fliegen" nicht drüber  gestolpert.
--> hat sich erledigt, war zu langsam. Danke

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.