mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Software I²C Bus


Autor: Stephan Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute

Ich will einen I²C Bus aufbauen (Softwaremässig), da mein AT902313
keine I²C Hardwaremässig hat. Ich hab leider auch nicht rausfinden
können welcher AVR das schon integriert hat.
Mich interessiert es aber auch das eben über die Software zu machen.
100kHz ist wohl die obere Grenze, mit der ich den Bus fahren darf.
Ist das wirklich so und wenn, wie kann ich denn diesen Takte ab besten
und stabil erzeugen.
Ich hatte eigentlich vor einfach die Daten auf dir Leitunge zu legen
und dann eine SCL Impuls zu senden. Ungefähr einfach so

cbi (PORTD,2);  //SCL = LOW
sbi (PORTD,3);  //SDA Slave Adresse Bit 6
sbi (PORTD,2);  //SCL = High

Würde das meine Hardware danach akzeptieren? oder ist der regelmässige
Takt wichtig?
Dazu kommt noch, das der Bus ja dann wohl mit der Taktfrequenz der MCU
laufen würde, oder zumindest viel schneller als 100KHz.

Also eigentlich wollte ich einfach nach einem Beispiel zum Software I²C
fragen - hab leider nix gefunde im Forum.

Bis dann Stephan

Autor: leo9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1) googlen
2) suche
3) Datenblatt/blätter

*) Auf www.atmel.com gibts eine Übersicht aller (aktuellen) AVRs, die
mit X in der Spalte TWI haben einen hardware i2c-Bus (muß aus
lizenztechnischen Gründen anders benannt werden als bei Philips)

*) 100kHz sind absoluter Nonsens, entweder 10kHz oder 400kHz (hängt von
den Bauteilen ab mit denen du kommunizieren willst. Das sind jeweils
Max. Werte, langsamer ist immer erlaubt. Frequenzstabil braucht das
ganze überhaupt nicht zu sein. Kannst also ruhig in der main Routine
abarbeiten und dich jederzeit von Ints & Co aufhalten lassen.

*) zwischen sbi und cbi kommt ein rcall wait_routine, in der loopst du
halt ein paar hundert nops durch bis du auf tmin bist - oder du taktest
mit einem Uhren-Quarz (ca.32kHz), dann reichen zwei nops und du sparst
viel Strom ;-)

grüsse leo9

Autor: Wolf-Ruediger Juergens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Such mal nach General Driver Lib bei avrfreaks.net
Die Lib von Chris Efstathiou ist große Klasse und enthält nicht nur den
i2c Bus.
http://www.avrfreaks.net/Freaks/freakshow.php?acti...

Grüße
Wolf

Autor: Wolf-Ruediger Juergens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder du schaust gleich in die Procyon avrlib, da ist ein SW I2C Bus
Driver drin.

http://hubbard.engr.scu.edu/avr/avrlib/docs/html/index.html

Grüße
Wolf

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"100kHz sind absoluter Nonsens"

Diese Aussage ist absoluter Nonsens !

100kHz ist nämlich die übliche maximale Taktfreqeunz für I2C-Bausteine
von Philips, z.B. PCF8574 (IO-Expander), PCF8591 (ADC), PCF8583 (RTC)
usw.

Inzwischen gibt es aber auch neuere I2C-EEPROMS, die bis zu 400kHz oder
1MHz können.


Peter

Autor: leo9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Asche auf mein Haupt, die "alte" i2c-Spezifikation schreibt
tatsächlich 100kHz, ich hätte jede Wette verloren, dass nur 10kHz
erlaubt waren. Mittlerweile sind wohl die 400kHz Standard und
Neuentwicklungen können sogar 3,4MHz.

grüsse leo9

Autor: Stephan Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na vielen dank für die Infos

Ich hab mir die "Procyon avrlib" gezogen, das sieht da sehr
interessant aus. Leider stehe ich nun vor dem gleich Problem wie vor 2
Wochen. Ich weiss nicht, wie und wo ich den Suchpfad für die
Headerdateien im AVR GCC abändern kann.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Spezielle Header-Dateien fügt man am besten mit in das Projekt mit ein,
damit man das Projekt auch später noch fehlerfrei compilieren kann.

Und dann natürlich:

#include "myheader.h"


Peter

Autor: Stephan Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
natürlich :-)  Jetzt wo ich die Gänsefüsschen sehe fällt es mir auch
wieder ein.

Danke nochmal    Stephan

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.