PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6 und Asuro kombinierbar?!?



Joggel84
10.02.2011, 08:55
Guten Morgen Zusammen

Da ich mittlerweile meinen Asuro kaum noch nutze, da ich voll mit meinem kleinen RP6 zufrieden bin ist mir der Gedanke gekommen das man den Asuro doch theoretisch als quasi "Porterweiterung" auf dem RP6 betreiben könnte.

Ich dachte da an die Komunikation über I2C, was ja eigentlich machbar sein sollte.

Nun zu meiner eigentlichen Frage.
Ich habe mich in die I2C Sachen was ich finden konnte auch Programmbeispiele mal eingelesen und bin der Meinung das soweit Verstanden zuhaben, nur verstehe ich nicht ganz wie das mit der Addressierung ist da so wie ich das verstanden habe Jedes I2C fähige IC eine Addresse besitzt.
Nur woher kenn ich in meinem Fall z.b. Die Adresse das Atmega 8 vom Asuro??
Und kann ich die I2C ansteuerung beim Asuro so umsetzen wie hier bei der Porterweiterung :http://www.asurowiki.de/pmwiki/pmwiki.php/Main/I2CPorterweiterung

Hoffe ihr könnt mir bei meinen Fragen weiterhelfen da ich nach langem Suchen im Forum und bei Google nicht die richtige Antwort gefunden habe .

Danke schonmal im Voraus

MfG
Joggel84

RolfD
10.02.2011, 10:03
Hallo Joggel84
i2c ist deutlich komplexer als UART, daher:
http://www.nxp.com/acrobat_download2/literature/9398/39340011.pdf
Da findest du alles wissenswerte u.a. auch zum Timing und Adressen. Das Prozessordatenblat isz auch informativ.
Dein Asuroboard müsste also als Slave laufen. Das läuft ähnlich wie eine M32 auf einem RP6 Baseboard und ist durchaus machbar. In den Beispielen zum RP6 findet sich z.B. ein Slave Treiber für den RP6. In dem Fall wäre der RP6 aber Master und das Asuro Board Slave... also den Code für den Asuro umschreiben... es steht schon alles da, du musst es nur noch zusammen suchen.
LG Rolf

Joggel84
10.02.2011, 10:33
Hallo Rolf
Also der PDF-File ist wunderbar alles schön zusammen gefasst was man brauch. Danke :)
Die Beispiele vom M32 hab ich mir auch schonmal angeschaut, nur entweder bin ich Blind oder ich denke falsch.
Weil ich bin der Meinung das jedes IC schon Hardwareseitig eine I2C Adresse hat die ich ja dann für die Komunikation benutzen muss und noch Ergänzen kann damit eventuell mehrere gleiche IC's an einem Bus laufen.
Nur finde oder erkenne ich in den Beispielprogrammen z.b. auch nicht die Adresse des RP6-Base.
Falls ich was falsch verstanden habe was die Adressen angeht hoffe ich ihr könnt mich in die richtige Richtung weisen. :)

RolfD
10.02.2011, 10:44
Also in der RP6Base_I2CSlave.c steht groß und breit:

#define RP6BASE_I2C_SLAVE_ADR 10

Als Master braucht man quasi keine Adresse... Portexpander und "dumme" Bausteine haben eine meist fest gelegte Adresse, die man wie beim SRF08 mit gefummel auch ändern kann... da ein Prozessor ein Stück schlauer ist, kann man die Adresse selbst belegen, man muss allerdings auch das Protokoll selbst schreiben... aber wie gesagt, das meiste kannst du dir aus den vorhandenen Sources raussuchen und ist beim AVR Dank I2C Hardware nur bissel Bit-schubserei.

Ansonsten schau mal hier:
http://www.ultratechnik.de/claudius/masterslave/
LG Rolf

Joggel84
10.02.2011, 12:27
8-[ Ich sags ja immer wieder Manchmal sieht man die Lösung einfach nicht.
Sry mein fehler hab die #define Zeile iwie überlesen *schäm*
Aber so bin ich schon mal ein ganzes stück weiter :)
Nun noch die Frage woher ersehe ich den die Adressen von den "dummen" Bausteinen die ja Vorgegeben sind wie z.b. der Porteexpander.

RolfD
10.02.2011, 12:33
Die stehen in den Datenblättern der Bausteine oder entsprechenden Tabellen, Treiber Code Schnipsel usw. Einfach mal googeln.
http://www.elektronik-magazin.de/page/i2c-bus-adressliste-23
Schau doch mal da rein... das beantwortet viele Fragen.
http://www.rn-wissen.de/index.php/I2C

LG Rolf

Joggel84
10.02.2011, 12:44
In das Tolle Rn-wissen Lexikon hab ich auch schon sehr oft reingeschaut und muss sagen super sache :) auch den Punkt mit dem i2c fand ich sehr Übersichtlich und gut erklärt.
Aber wie gesagt hatte ich noch die Verständnis Probleme mit den Adressen

Nun ist nur noch die letzte Frage übrig ob das Funktioniert mit der Asuro Verkabelung wenn ich das genauso Aufbau wie zum Portexpander nur halt dafür den RP6 dran henge da das ja eigentlich ADC Kanäle sind und nicht die eigentliche SCL und SDA Leitungen des Atmega.

Ich weis ich hab komische Fragen aber beseitige gern alle unklarheiten bevor ich Anfang und dann zu sehr ins Stolpern komme und eventuell was kaputt geht :)

MfG
Joggel84

RolfD
10.02.2011, 13:13
Ich kenne mich mit der Portbelegung des Asuro Prozessor (ATMega8?) nicht aus aber grundsätzlich haben Ports oft Mehrfachfunktionen im Prozessor und die muss man per Register im Prozessor freischalten/setzen. Die Ports sind so beschaltet, das eigentlich nichts schief gehen kann wenn man nicht grade direkt gegen Masse oder + treibt. ADCs sind Eingänge und damit sozusagen hochohmig. Auch da hilft aber das Datenblatt der CPU weiter, dort nennt sich das TWI. Du kannst beruhigt slc, sda und einen gemeinsamen Minuspol anklemmen. Wenn du das besagte i2c slave Programm auf dem RP6 lädst, musst du nur noch ein Treiber auf dem Asuro schreiben der als i2c-Master läuft. und schon solltest du Daten vom RP6 auslesen können. Natürlich muss man das später umdrehen.. also Slave auf Asuro und Master auf RP6. Aber zum testen und fürs Verständnis reicht wohl erst mal "falsch rum".
Der RP6 verhält sich mit dem Slaveprogramm wie ein dummer Baustein. Die Belegung von Registern ergibt sich dabei aus dem Quellcode des Slaves. Man kann aber auch das ganze berührungslos per IR machen indem man sich passende Treiber schreibt. Allerdings gibts da keine I2C-hardware und man muss sich wirklich um alles selbst kümmern.. wie bei den RC5-Codes. Mir wäre das zu umständlich aber gehen tut es im Prinzip.
LG Rolf

Joggel84
10.02.2011, 13:23
Ok dann bedanke ich mich schonma.
Ich liebe dieses Forum ^^ immer schnelle und Top antworten bin echt begeistert grosses Lob :)

Werd mich dann mal hinsetzen entweder heute noch oder am We und mir ne Adapterplatine Basteln um den Asuro auf den RP6 zu Docken und dann mal ans Programmiern denken.
Wenn interesse Besteht kann ich euch meine Erfolge /miss Erfolge gerne schreiben :)

MfG
Joggel84

RolfD
10.02.2011, 14:03
Also interessieren täte es mich schon... vor allem die Softwareseite. Technisch macht man nichts anderes wenn man ein Zusatzboard wie die M32 oder M128 auf dem RP6 aufsteckt... das halte ich nicht für das Problem.
Besorg dir mal noch zusätzlich die Software "RP6 Remotrol 1.3" hier aus dem Forum, dort sind auch Master und Slave Sources für i2c Datenübertragung enthalten. Das M32 Masterprogramm könnte ggf. mit wenigen Änderungen auch auf dem Asuro laufen.
Viel Erfolg
LG Rolf

AsuroPhilip
08.03.2011, 13:30
@Joggel84 Hast du es geschafft? Würde mich auch mal interessieren.