Hallo Ich versuche über Master die voradressierte Slaves, neu zu adressieren. Bevor ich irgend etwas mache und ahnungslos herumtreibe, wollte ich euch fragen, ob es ohne weiteres möglich ist. Ausgangspunkt: Die Slaves(4x Atmega 168)sind voradressiert.wenn Master (1x Atmega168) die Slaves erkannt hat, soll er die reihenfolge nach die Slaves neu adressieren. danke
Ich werf da mal ein Hä? in die Runde. Vielleicht stehe ich ja heute auch auf der Leitung, ich denke allerdings ernsthaft, dass du noch einen Versuch machen solltest, dein Problem zu beschreiben, diesmal aber auf eine verständliche Problembeschreibung Wert legen solltest.
Nochmal: Kontrolpanel = Atmega 168 als Master LED Panel = Atmega 168 als Slave --> davon habe ich 4 Idee = LED Tisch zu bauen, der aus 4 x LED Panels besteht. Istallations LED Panel:
1 | ________ _________ _________ _________ |
2 | | | | | | | | | |
3 | |1 |- |2 |- |3 |-|4 | |
4 | | | | | | | | | |
5 | -------- -------- -------- -------- |
6 | | |
7 | -------- |
8 | | | |
9 | | Mast | |
10 | -------- |
Mit Master habe ich die Möglichkeit, die Panels einzeln anzupsprechen und einzel zu dimmen. Problem: Die Panels sind austauschbar. D.h. wenn ich statt Panel 1, Panel 4 vorne habe will ich, dass der Master sich das merkt und die Panels neu adressiert. In dem Fall, soll Panel 4 --> adresse Panel 1 haben und Panel 1 --> die adresse Panel 4 haben.
:
Bearbeitet durch User
Tomie schrieb: > Problem: Die Panels sind austauschbar. D.h. wenn ich statt Panel 1, > Panel 4 vorne habe will ich, dass der Master sich das merkt und die > Panels neu adressiert. In dem Fall, soll Panel 4 --> adresse Panel 1 > haben und Panel 1 --> die adresse Panel 4 haben. Dann versteh ich aber das Problem noch nicht. Anstatt
1 | send_data_to_panel( 1, data ); |
steht dann eben im Code
1 | uint8_t pannelAddr[4] = { 1, 2, 3, 4 }; |
2 | |
3 | |
4 | ...
|
5 | |
6 | send_data_to_panel( pannelAddr[0], data ); |
also einfach nur ein Array, aus dem die Adresse des ersten, zweiten,
dritten, ... Pannels kommt. Im Array wird die tatsächliche Adresse
eingetragen.
Ob die Umsetzung der internen Nummerierung auf die tatsächliche Adresse
beim Aufrufer erfolgt, oder ob das in der jeweiligen Send Funktion
passiert, darüber kann man diskutieren. Aber das ändert am Grundprinzip
ja nicht viel, dass man intern mit logischen Pannelnummern arbeitet, die
auf der Ebene der tatsächlichen Ausgabe auf die physikalischen Pannels
dann auf die physikalisch richtigen Pannelnummern umgesetzt werden.
> D.h. wenn ich statt Panel 1, Panel 4 vorne habe
dann änderst du (zb über ein Benutzermenü)
1 | uint8_t pannelAddr[4] = { 4, 2, 3, 1 }; |
und wenn alles andere richtig programmiert ist, dann ist das auch schon die ganze Änderung, die in den Daten notwendig ist. Oder versteh ich dich, bzw. das Problem, jetzt falsch?
:
Bearbeitet durch User
Hallo Karl Heinz, Du hast das Problem richtig verstanden. Gestern abend ist mir die Idee mit Array auch gekommen. vielen Dank für die erklärung mfg
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.