Forum: Mikrocontroller und Digitale Elektronik Eigene Busadresse I²C Bus vergeben


von G. C. (gio)


Lesenswert?

Hallo,

ich bin neu hier im Forum und habe da mal eine Frage.
Meine Gruppe und ich bauen eine Platinenfräse mit Geber. Wir benutzen 
einen Atmega128 für die Steuerung der Fräse und der Berechnung der 
Gerberfiles und einen Atmega8 der über den I²C Bus mit den 
Inkrementalgebern für die X, Y und Z-Achse verbunden ist.
Das Problem was ich habe, ist wie man Software technisch die Adresse für 
den Bus einstellt. Wir benutzen nicht die Pins (27 & 28 Atmega8) die 
dafür vorgesehen sind, sondern PB4 und PB5 (Pin 18 & 19). Meine Frage 
ist jetzt, wie man die Adresse Software technisch vergibt und kann man 
die restlichen Eingänge von PortB anderweitig nutzen?

Vielen Dank schonmal für eure Antworten.

von Hmm (Gast)


Lesenswert?

Die Frage ist doch nicht ernst gemeint, oder?

Wie sollen wir bei einer unbekannten Software sagen, auf welche Weise 
die I2C Adresse eingestellt wird oder auf welche Weise die dafür in der 
Software vorgesehen Pins auf eine andere Pins umgestellt werden können?

von G. C. (gio)


Lesenswert?

Wir benutzen avr Code vision. Das Problem liegt darin das wir nicht 
wissen wie wir den i²c bus software technisch programmieren sollen.

die hardware i²c bus variante können wir leider nicht nutzen.

gibt es vielleicht irgendwelche funktionen die wir benutzen können.

um genau zu sein benötigen wir auch nur die lese funktion um drehgeber 
daten vom atmega 8 zum atmega 128 zu übertragen.

von Cyblord -. (cyblord)


Lesenswert?

G. C. schrieb:
> Wir benutzen avr Code vision. Das Problem liegt darin das wir nicht
> wissen wie wir den i²c bus software technisch programmieren sollen.
Ihr baut ne Fräse die Dinge per I2C abfragt aber habt keinen Plan von 
I2C? Sauber.

Denn sonst wüsstet ihr wie man dort "eine Adresse einstellt". Was ihr 
wollt ist doch ein Gerät adressieren. Also schmeist google an, setzt 
euch auf den Hosenboden und schaut euch an wie I2C eigentlich 
funktioniert. Das ist so trivial und simpel das hättet ihr in der Zeit 
machen können in der ihr hier einen Thread aufmacht und um libs bettelt.

Und btw. auch die I2C-HW möchte dass man I2C verstanden hat. Denn von 
alleine adressiert die auch nix.

gruß cyblord

von Spess53 (Gast)


Lesenswert?

Hi

>die hardware i²c bus variante können wir leider nicht nutzen.

Ist jetzt vom I2C-Master oder I2C-Slave die Rede?

MfG spess

von Cyblord -. (cyblord)


Lesenswert?

Spess53 schrieb:
> Hi
>
>>die hardware i²c bus variante können wir leider nicht nutzen.
>
> Ist jetzt vom I2C-Master oder I2C-Slave die Rede?
>
> MfG spess

> Atmega8 der über den I²C Bus mit den
> Inkrementalgebern für die X, Y und Z-Achse verbunden ist.

Hört sich für mich nach Master an.

Obwohl die Überschrift für das geschilderte Problem reichlich sinnfrei 
ist. Aber hier wurde wohl der I2C Bus nichtmal im Ansatz verstanden. Die 
ganze Terminologie ist da durcheinander.

gruß cyblord

von Hmm (Gast)


Lesenswert?

Man muss Dir, G.C. unklare Formulierung vorwerfen. Dein erstes Posting 
las sich so, als wenn bereits eine Software existiert:

>Wir benutzen nicht die Pins (27 & 28 Atmega8) die dafür vorgesehen sind,

wobei, wenn das nicht von einer schon vorhanden Software so vorgesehen 
ist, offen bliebe, durch wen oder was das so vorgesehen ist.

Falls das nun einfach in eurem Belieben steht, dann müsstet ihr 
jedenfalls wissen wie man überhaupt Ports einliest, in Variablen 
speichert und wieder ausgibt.

Wie man nun im zweiten Post liest, wollt ihr überhaupt erst eine 
Software schreiben und habt von nichts ne Ahnung. Weder von einfachem 
Transport von Daten von Porst in Variablen in Peripherie-Register noch 
von I2C. Das aber sind einfach Grundlagen.

Das ganze ist also eine trojanische Frage. Sie kommt daher als: "Wie 
ändert man ein Detail?" und lautet eigentlich: "Wie macht man das 
Ganze?".

Weisst Du wie sowas ankotzt?

von Spess53 (Gast)


Lesenswert?

Hi

>Hört sich für mich nach Master an.

Aber am Master stellt man aber keine Adresse oder bei zwei Bit 
eigentlich Subadresse ein. Aber der Post ist eh mehr etwas für die 
Glaskugelfraktion.

MfG Spess

von Cyblord -. (cyblord)


Lesenswert?

Spess53 schrieb:
> Hi
>
>>Hört sich für mich nach Master an.
>
> Aber am Master stellt man aber keine Adresse oder bei zwei Bit
> eigentlich Subadresse ein. Aber der Post ist eh mehr etwas für die
> Glaskugelfraktion.
>
> MfG Spess

Exakt. Die eigentliche Frage ist nämlich:

> Das Problem was ich habe, ist wie man Software technisch die Adresse für
> den Bus einstellt.

Und was soll man zu so einem Gestammel sagen?

gruß cyblord

von G. C. (gio)


Lesenswert?

Wie man Ports einliest oder definiert weiss ich ja, nur komme ich  nicht 
klar mit der Adressierung vom Bus (Slave). Im I-Net habe ich geschaut, 
teilweise auch verstanden wie das Funktioniert, nur halt mit der 
Softwareadressierung nicht.

von Steffen H. (avrsteffen)


Lesenswert?

Will er jetzt die Adresse des Inkrementalgebers wissen, oder was?

@ G.C.
Warum ist denn überhaupt der HW-TWI belegt? Und wie wollt Ihr die Daten 
vom mega8 zum mega128 versenden? Welche Schnittstelle habt Ihr euch da 
ausgedacht?


I2C ist eigentlich nicht schwer zu verstehen. Schaut euch mal das 
Protokoll zum I2C des Inkrementalgebers an. Da sollte schon alles drin 
beschrieben sein. Und genau da steht auch die I2C Adresse des 
Slaves(Inkrementalgeber) drin.

Steffen

von Hmm (Gast)


Lesenswert?

Ich glaube ja nicht, das Du die Frage beantworten kannst, aber erkläre 
doch mal im Detail und im I2C Kontext was Du an der Adressierung nicht 
verstehst.

von amateur (Gast)


Lesenswert?

Die Kommunikation via I²C ähnelt dem Unterricht in einer gut 
"dressierten" Klasse.

Der Lehrer (Master) ruft einen Schüler auf.
Der Schüler (Slave) antwortet oder ist nicht da.
Keiner Quatscht dazwischen (Störung)!
Keiner Quatscht ungefragt!

Damit das Ganze aber funktionieren kann, sind natürlich folgende, 
einfache Bedingungen zu erfüllen:

1. Der Lehrer muss die Namen aller seiner Schüler kennen. Natürlich.
2. Es sollte jeder Schüler wissen, wie sein Name lautet. Natürlich.
3. Es gibt keinen Namenlosen in der Klasse.
4. Es gibt keine zwei Peter in der Klasse.

Meist ist nach dem obigen Bild der Computer der Master. Das heißt: Er 
muss wissen wer im System ist. Die angesprochenen Geräte müssen 
eindeutige Adressen haben.
Ersteres wird normalerweise Programmiert, letzteres ist meist in der 
Hardware (Jumper, Lötbrücken) verankert. Manche Chips haben auch vom 
Hersteller vorgegebene Adressen.

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.