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
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
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?action=2&projectid=59 Grüße Wolf
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
"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
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
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.
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
natürlich :-) Jetzt wo ich die Gänsefüsschen sehe fällt es mir auch wieder ein. Danke nochmal Stephan
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.