M16c/6N4 als I2c Slave

Gast #1779944
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
Gast #1780110
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
Gast #1780315
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
Gast #1780439
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
#1780654
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
Gast #1780787
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
Gast #1780932
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....
Gast #1781153
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren