Forum: Mikrocontroller und Digitale Elektronik M16c/6N4 als I2c Slave


von Memory (Gast)


Lesenswert?

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

von Olaf (Gast)


Lesenswert?

> 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

von Memory (Gast)


Lesenswert?

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

von Max D. (Firma: No RISC, no fun.) (metalfan)


Lesenswert?

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....

von Memory (Gast)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

> 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

von Peter D. (peda)


Lesenswert?

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

von Olaf (Gast)


Lesenswert?

> 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

von Memory (Gast)


Lesenswert?

@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....

von Olaf (Gast)


Lesenswert?

> 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

von Peter D. (peda)


Lesenswert?

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

von Memory (Gast)


Lesenswert?

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

von Memory (Gast)


Lesenswert?


von Peter D. (peda)


Lesenswert?

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
Noch kein Account? Hier anmelden.