Hallo Ich habe zwei M16c/6N4 per I2c verbunden (+ Ein paar ADCs ect..). Bis her waren beide Master(Multimaster was auch funktioniert hatte) nun soll einer als Slave umgebaut werden. Leider lässt sich das Manual nicht darüber aus, wie ich eine gesendete Adresse auf dem Bus bestätige. Auch andere Slave-Funtionalitäten fehlen. In App. Notes finde ich nur etwas über Master und Multi Master. Hatte jemand schon mal das Problem und hat eine Lösung dafür? Gruß Memory
> Hatte jemand schon mal das Problem und hat eine Lösung dafür?
Hm..ich hab bis jetzt nur einen R8C/29 als Slave genutzt. Das geht
eigentlich total unauffaellig und sollte bei deinem M16 ja genauso
gehen.
Allerdings habe ich mindestens 10 graue Haare bekommen bis das ganze
zuverlaessig war. Du musst in deiner I2C-routine oefter kontrollieren
das sich die Statemachine in der Hardware der CPU nicht weghangen hat.
Das machen die schonmal und das muss auch nicht Schuld der CPU sein,
sonder
kann auch durch externe Stoerungen auf dem Bus kommen.
Olaf
Hallo Olaf Danke für die Antwort. Mein Problem ist schon die Vorgangsweise nachzuvollziehen. Bei anderen Prozesoren kann eine Adresse hinterlegt werden auf welche der Prozessor reagieren soll. Aber hier gibt es nichts der Gleichen. Wenn ich den Vorgang wüste, würde das auch schon viel helfen. Gruß Memory
wenn du da zwei so dinger als multimaster hast, und die auch miteinander reden, dann muss doch iwie schon eine I2C Verbindung da sein.... also auch ein verbindungsaufbau per adresse....
Schon beim Multimaster reden die beiden M16c mit den anderen Busteilnehmern und nicht miteinander. Ich würde auch das Protokoll ändern aber das mögen die anderen Busteilnehmer nicht.
> Bei anderen Prozesoren kann eine Adresse hinterlegt > werden auf welche der Prozessor reagieren soll. Vielleicht reden wir ja anneinander vorbei weil ich einen anderen Prozessor benutzt habe, aber normalerweise verbaut Renesas ja auch immer dieselbe Hardware in den Prozessoren. Mein R8C29 hat ein SAR Register fuer die Slaveadresse auf die er anspringen soll. BTW: Wenn deiner so neu ist da es da noch keine Applikation fuer gibt, man kann oft auch die eines anderen Processors verwenden. Man muss dann nur mal genau alle Register vergleichen. Meist ist bei den neueren Prozessoren dann nur noch irgendwo 1 oder 2 Bit dazugekommen weil sie die Funktionalitaet verbessert haben. Bist du eigentlich sicher das deiner ueberhaubt I2C/Slave kann? Ich habe gerade mal schnell das Datenblatt ueberflogen, aber da stand nur was vom normalen simplified I2C-Modul. Was genau laesst dich glauben der Controller wuerde I2C-Slave unterstuetzen? Olaf
Memory schrieb: > Bis her waren beide Master(Multimaster was auch funktioniert hatte) nun > soll einer als Slave umgebaut werden. Multimaster heißt, der, der zuerst sendet, ist der Master und logischer Weise dann der andere der Slave. Du mußt also schon die Slavefunktion implementiert haben, sonst kann Multimaster noch nie funktioniert haben. Peter
> Multimaster heißt, der, der zuerst sendet, ist der Master und > logischer Weise dann der andere der Slave. Ach? Und wenn zwei Master mit einem auch am Bus haengenden 24C02 abwechselnd reden? Multimaster heisst doch erstmal nur das ein Master es erkennt wenn der Bus bereits belegt ist und die Finger davon laesst. Olaf
@Peter: Siehe Olaf. @Olaf: Im Datenblatt gibt es eine Tabelle (Register to Be Used and Settings in I2C Mode). Dort gibt es eine Spalte für Master und für Slave. Aber genau so ein SAR Register fehlt hier. Das Problem ist halt das System exestiert schon für die eine Anwendung und nun soll mit der selben Platine eine andere Aufgaben erledigt werden. Sicher bin ich mir nicht mehr....
> Sicher bin ich mir nicht mehr.... Dann schau doch mal hier: http://www.renesasrulz.com/index.jspa Die Bedienung von der Oberflaeche schwankt zwar zwischen extrem schlecht und einem Schmerz im A..., aber da haengen Leute rum die dir sofort sagen koennen ob es ueberhaubt geht. Olaf
Olaf schrieb: > Ach? Und wenn zwei Master mit einem auch am Bus haengenden 24C02 > abwechselnd reden? Ich hatte das so verstanden, daß die MCs auch untereinander kommunizieren. Alles andere halte ich für ziemlich sinnfrei. Wenn Du mal nen Link zum Datenblatt postest, kann ich ja mal reingucken. Peter
Hallo Also RENESAS hat auch keine Idee, von dem her gib ich es auf und suche eine andere Lösung. Es gibt aber M16c-Derivate welche I2c Slave richtig unterstützen. Die M16C/6N Group auf jedenfall nicht. Danke für Eure Hilfe. Gruß Memory
@ Peter Datenblatt des Prozessors: http://documentation.renesas.com/eng/products/mpumcu/rej09b0009_16c6n4hm.pdf
Hast Du schon in der Appnote nachgesehen? http://documentation.renesas.com/eng/products/mpumcu/apn/m16c/rej05b1361_m16cap.pdf 4.4 Slave Reception 4.5 Slave Transmission http://www.renesas.eu/support/downloads/download_results/C1000000-C9999999/mpumcu/m16c/an_rej05b1361_m16c_iic.jsp Memory schrieb: > Die M16C/6N Group auf jedenfall nicht. In der Appnote steht M16C/6C. Peter
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.