Hallo... mit dem I2C-Bus arbeite ich schon seit geraumer Zeit - und nun will ich mich mit Mikrocontrollern beschäftigen und miteinander verbinden. Ich habe sehr viel gelesen und das letzte Buch hat mich dann richtig verwirrt. Der Controller (80C31) auf deren Entwickler-Board lässt sich nicht programmieren (???) , also verwendet der Autor ein Ladeprogramm, welches in einem EPROM gebrannt ist, um das eigentliche Programm in einem RAM zu speichern und von dort auszuführen. Da ich ausschliesslich einen I2C-Bus steuern möchte, habe ich mich für einen Phillips-Controller P87LPC764 entschieden. Es ist ein 80C51-Controller mit 128 Byte RAM und 4KB OTP, ISP-fähig. Nun verratet mir doch mal bitte, wenn ich mein Programm seriell in den Controller lade : - wo wird es gespeichert - ist es dauerhaft gespeichert (Spannungsabhängig oder nicht) - ist es jederzeit löschbar bzw. überschreibbar Wen es interessiert Datenblatt gibts hier - ich kann leider Gottes kein englisch deshalb ist es für mich keine Hilfe !!! http://www.semiconductors.philips.com/acrobat_download/datasheets/P87LPC764_11.pdf
OTP ist nur einmal programmierbar ! Würde Dir einen Kontroller mit Flash empfehlen. Hält Daten bei Stromausfall aber lässt sich wieder umprogrammieren. MfG RuediW
Sich ganz ohne Englisch in der Welt der Elektrotechnik zu bewegen ist sehr schwierig, denn ich kenne keinen Hersteller (ich möchte nicht ausschließen, das es noch welche gibt), die ihre Dokumentation nicht auf Englisch schreiben. Versuch es doch einfach mal, ich würde sagen, jemand der ein Datenblatt auf Englisch versteht, muss nicht auch zwangsläufig wirklich englisch können. Der Spachstil ist ein technisches Englisch, einfach geschrieben und oftmals sagen Bilder auch mehr als tausend Wörter. Aber ganz ohne das Lesen von Datenblättern wird es nicht gehen, du brauchst sie immer wieder! So, das nur mal allgemein, und nun zu deinen Fragen. Erstmal ist das von dir zuletzt gelesene Buch sicherlich ein wenig älter oder? Der 80C31 gehört nicht mehr zu den neuesten Controllern und gerade die Entwicklung der Elektrotechnik schreitet schnell vorran. Der 80C31 hat keinen internen Programmspeicher, sondern das Programm wird extern in einem EPROM gespeichert Der von dir ausgewählte Controller hat ein internen Programmspeicher, der aber OTP (one time programmable) ausgeführt ist, das heißt, du kannst ihn nur einmal programmieren. Für die Entwicklung eines Programmes ist dies eher ungeeignet, dies nimmt man in der Massenproduktion, wenn das Programm steht und es auf jeden Cent ankommt (OTP Programmspeicher ist billiger). Was ich dir empfehlen würde, ist ein Controller mit internem Flash Speicher. Diese lassen sich fast beliebig oft neu programmieren. Den I2C Bus unterstützen mittlerweile die allermeisten Controller. Du kannst dich ja einfach mal auf den Homepages der gängigen Hersteller umschauen, was sie so im Angebot haben. Letztendlich wirst du viele Controller finden, die deine Anforderungen erfüllen. Und noch ein Tip für dich als Anfänger, ich würde an deiner Stelle einen Controller wählen, der häufig genutzt wird und zu dem man damit viel Support im Internet finden kann. Ich hoffe, ich konnte dir soweit erstmal helfen. Bei weiteren Fragen, frag nur :-) Michael
Und was hat das mit dem Hausbus gemeinsam? Omnibus ist auch ein Bus ':-)
@ Gerhard... sei nicht so ungeduldig, das war doch erst der Anfang, es geht bald weiter. Und Dank an die anderen "Schreiberlinge" für die Tipps. Ich verstehe schon einige Brocken englisch, nur manchmal reicht es eben nicht aus um den Zusammenhang zu verstehen ! Das Buch heisst übrigens "Das grosse 51er Anwendungsbuch" 2004 Bis bald Uwe
Hallo also nach einigem Suchen habe ich nun den AT Tiny 26 als möglichen Controller ins Auge gefasst. Mit Dip-20 ist er nicht so gross und hat ein Universal Serial Interface (USI). Ich hab gelesen es ist kompatibel zum I2C-Bus. Wäre der vielleicht besser geeignet? Gruss Uwe
Der sieht schon viel besser aus für erste Gehversuche in der Mikrokontrollerprogrammierung :-) Kannst du vielleicht nochmal genau beschreiben, was du entwickeln möchtest? Also bei einer Wetterstation möchtest du wahrscheinlich verschiedene Sensoren über I2C auslesen und die Daten dann auf irgendeine Art weiterverarbeiten (Display/PC?) oder? Erzähl doch einfach mal dein Konzept bitte... Gruß Michael
Übrigens nennt Atmel den I2C Bus aus Lizenzgründen anders, nämlich TWI (TwoWireInterface). Wenn du bei Atmel auf die Mikrokontrollerübersicht gehst (http://www.atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=part_no&Direction=ASC) dann siehst du da auch eine Spalte mit TWI. Also I2C bzw. TWI unterstützen die allermeisten Kontroller, und selbst wenn es nicht hardwaremäßig vom Kontroller unterstützt wird, kann man es noch softwaremäßig nachbilden, was aber dann ein wenig aufwendiger ist. Gruß Michael
Stop, bloß aufpassen! USI ist nicht gleich TWI! USI ist leider nur eine verkrüppelte Variante. Tu Dir also den Gefallen und lassen den Tiny sein und nimm einen Mega. Der hat eine richtige I2C-Schnittstelle drin. Viel mehr Beinchen hat einer der 8er Megas auch nicht.
Danke für den Tipp Andreas ! Mein Projekt: Ich will einige Sensoren (z.B. Feuchte, Temp, Windgeschw.) auslesen und die Daten in einem Eeprom speichern, dafür verwende ich einen 24C64. Wenn ich jede 1/2 Stunde eine Messung durchführe kann ich bei 8 Byte/Messung 3 Wochen speichern. Als zweiten Controller auf diesem Bus verwende ich einen PCF8584. Der ist über die LPT-Schnittstelle mit meinem PC verbunden (ist bereits in Betrieb). Nun kann ich ein mal in der Woche die Daten vom Eeprom auslesen und in einem Programm auswerten bzw. in einer Datenbank speichern. Dieses PC Programm schreibe ich in Delphi. Mal was anderes: Der Syntax in AVR-Studio ist nicht der selbe wie das einfache Assembler. Ich bekomme ständig Fehlermeldungen. Hat jemand für mich ein kleines Beispielprogramm, mit Studio4 geschrieben, sodas ich mal vergleichen kann? Gruss Uwe
Hi Uwe Lass das mit Studio 4 sein . Programme die nicht gerade zeitintensiv (im µs bereich)sind schreibst du leichter und schneller in BASCOM da hier bei weitem übersichtlicher gearbeitet wird. im übrigen kannst du auch das EEPROM vom Mega8 nutzen und den PCF8584 kannst du bei der Gelegenheit auch eliminieren und durch eine RS232 ersetzen weil die auch schon drin ist oder eben einen der Ports direkt an die Parallele Schnittstelle verweisen. Jetzt hab ich aber auch mal ne frage. Hast du mal ein link über Adressierung von I²C Master & Co. Ich hab noch keine Fahrkarte aber der Bus ist echt Interessant für mich. Ich möchte einige Mega8 an einen eigenen Bus klemmen .Uhrsprünglisch hatte ich ein CAN BUS vorgesehen, der mir aber zu teuer und mächtig Platz ergreifend wird.
Hallo... eine Liste aller I2C-Geräte gibts hier www.grifo.com/PRESS/DOC/Philips/ANGUIDE.pdf und die dazugehörigen Adressen gibts hier www.semiconductors.philips.com/acrobat_download/various/IC12_97_I2C_ALLO CATION.pdf Sven - ich hoffe, das wars was Du gesucht hast !! Nun wieder zurück zum Bus. Der Feuchte/Temperatur-Sensor SHT71 hat einen 2-Draht-Bus - und im Datenblatt schreiben die ausdrücklich er ist NICHT mit I2C kompatibel. Wenn ich mir aber mal die Start und Stop-Bedingung ansehe und die Art der Datenübertragung (Adressbyte, Datenbyte) kann ich keinen Unterschied finden. Ist das etwa auch so ein "Lizens-Trick" ? Wer weiss mehr ? Dieser Sensor wäre nämlich optimal für mein Projekt. Gruss Uwe
Danke Uwe ! Die Links haben 100% gepasst. Zu dem SHT . Mit der ausführlichen Beschreibung im Datenblatt sollte es nicht schwer sein das Teil über zwei x beliebige Ports vom µP anzusprechen .( sinnvoll wäre da SDA und SCL Probeweise ) Also ohne I²C. Warum das so ist darfst Du mich nicht fragen.
Hallo, da bin auch wieder... Ich denke der AtMega8 wäre eine gute Wahl für dich. Er beietet auch genug Flash Speicher für zukünftige Erweiterungen. Nichts ist nämlich ärgerlicher wenn der Cotroller auf einmal zu klein wird. In Bezug auf die Programmiersprache kann ich dir persönlich nur von Bascom abraten. Ich programmiere in C und wenns zeitkritisch wird in Assembler. Aber letztendlich musst du das natürlich auch selber für dich entscheiden. Und dann würde ich deine Busstruktur nochmal überdenken. Mit der seriellen Schnittstelle und deinem Mikrocontroller hast du zwei Masters, die u.u. auch gleichzeitig auf den Bus zugreifen können. Vielleicht ist es geschickter, den Mikrocontroller allein auf den I2C Bus zugreifen zu lassen um Messwerte abzufragen und sie abzuspeichern und dann die Daten bei Bedarf über die serielle Schnittstelle zum PC zu übertragen. Das bietet außerdem den Vorteil, das du mit jedem Terminalprogramm dir die Daten holen kannst. Nu so als Vorschlag, du kannst ja mal drüber nachdenken... Und dannn noch zum Sensirion Feuhtesensor. Wir haben ihn hier mal verwendet, lweider hat es mein Kollege gemacht, so das ich es dir nicht genau sagen kann. Aber im FAQ von Sensirion findest du: "Is your bi-directional 2-wire interface compatible with I2C ? No it is not. The difference is in the start/stop sequence (transition start with SHTxx) and how the SHTxx humidity sensor signals the end of a measurement. SHTxx should not share a I2C bus with I2C components. However sharing of the SKC line and using a dedicated DATA line for the SHTxx humidity sensor will work well." Das wäre natürlich ein bischen doof für dich, wenn du ein richtigen I2C Bus aufbauen möchtest. Aber vielleicht gibt es ja auch ähnliche Sensoren mit richtigem I2C Interface, und frag mich nicht warum Sensirion das gemacht hat ;-) So viel erstmal von mir... Gruß Michael
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.