Hallo just-lights,
Dein Code den du da oben gepostet hast sieht sehr simpel aus, ist das schon alles um die Startadresse zu shiften?
DmxTx.values[1] = DmxRx.values[0]; // shift first three channels
DmxTx.values[2] = DmxRx.values[1];
DmxTx.values[3] = DmxRx.values[2];
Ja, es ist Dank DMX-Bibliothek tatsächlich ziemlich einfach. Da ich mittlerweile ein digitales Speicheroszilloskop hier habe, konnte ich die Bibliothek auch nochmals etwas verbessern (jetzt seh ich was sie tut, vorher war ich "blind") - der Stand ändert sich momentan laufend, wenn du Interesse an der aktuellen Version hast gerne nachfragen!
Du musst am Anfang die Startadresse setzen (erste Zeile in main()), zählt von 1 an. Die Array-Keys (in eckigen Klammern) mit denen du in DmxRx und DmxTx auf die Werte zugreifst, zählen von null an - Kanal eins ist also Array-Key 0. Mit den Werten kannst du dann einfach arbeiten. Beim Empfänger (Rx) noch die Startadresse abziehen. Mit Startadresse 12 findest du Dmx-Kanal 13 also in DmxRx.values[1].
Dann könnte man z.B. auch so schreiben?:
DmxTx.values[60] = DmxRx.values[1]; // shift Channel 1 to Channel 60
DmxTx.values[80] = DmxRx.values[16]; // shift Channel 16 to Channel 80
DmxTx.values[100] = DmxRx.values[40]; // shift Channel 40 to Channel 100
Jein. Die beiden Konstanten, die oben gesetzt werden, bestimmen die Anzahl der zu empfangenden Kanäle ab Startadresse bzw. die Anzahl der zu sendenden Kanäle. Dazwischen kann nichts frei sein. Die Konstanten müsstest du also anpassen. Für zweimal 512 Kanäle (Senden und Empfangen) brauchst du davon abgesehen alleine dafür 1024Byte Speicher, also einen Controller mit min. 2KB SRAM. Das hat der Tiny2313 nicht. Es gibt aber andere, die das haben
Code:
#define CHANNEL_TO_RX 3 // number of DMX channels to be received
#define CHANNEL_TO_TX 5 // number of channels to be send
Dann müsste man aber auch Hardwaremässig ein 75179 als Eingang und ein 75179 als Ausgang nehmen.
hast du da einen Schaltplan?
Nein. Der 7517
6 Kann Senden oder Empfangen, aber nicht beides Zeitgleich. Das ist Praktisch für Stand-Alone fähige Geräte mit Master-Slave, da der Master hier von Empfangen auf Senden umschalten kann.
Der 7517
9 Kann nicht umschalten, hat dafür aber Sender und Empfänger (zeitgleich). Du brauchst also nur einen davon.
Beschaltung ist recht einfach:
VCC an 5V, GND an Masse/0V. An A-B und X-Y ist das DMX-Signal, A und X sind jeweils Data+. An D die Daten zum Senden (TX) anschliessen, an R kommen die Empfangenen Daten raus (RX). Schaltplan-Beispiel findest die
hier, nur das dort Empfänger und Sender durchverbunden sind.
Gerne weiter Fragen!!
Grüße
PS:
ich habe auch interesse an diesem Projekt, leider auch keine Kenntnisse im C programmieren.
Löten, AVR Programm daruf schreiben, Schaltplan lesen alles kein Problem.
Hast du AVRs schon in einer anderen Sprache programmiert? Oder wie kommts, dass du Flashen kannst?