www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verwendung des TWI/I2C


Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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
 TWCR = TWINT | TWSTA | TWEN;

sollte doch etwas zu messen sein, oder nicht?

Gruss,
Michael

Autor: Matthias (Gast)
Datum:

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

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

mfg

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...?)

Autor: Psiyou ... (psiyou)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Psiyou ... (psiyou)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

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

Autor: Psiyou ... (psiyou)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Atmega 8

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Psiyou ... (psiyou)
Datum:

Bewertung
0 lesenswert
nicht 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

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.