Es geschehen noch Zeichen und Wunder, aber ich habe nun tatsächlich etwas weiter am Würfel gerabeitet. Die Hardware ist soweit komplett fertig und ich arbeite nun an der Software.
Entschieden habe ich mich dazu anstatt einem Router oder AP nun einen Raspberry Pi zu verwenden und dort die Dateien abzulegen die geladen werden sollen. Das aktuelle Frame wird als byte Array der Größe 375 an den Master (Atmega 644p) geschickt, der dann die Mosfets durchschaltet (Multiplexing) und bei jedem Umschalten die aktuell relevanten 5*15 Bytes an die Slaves schickt, die dann jeweils die 15 8 bit PWM Kanale mit den empfangenen Werten ansteuern. Ich plane die 8 bit PWM Routine aus dem Wiki zu verwenden und diese von 8 auf 15 Kanäle auszubauen.
Auf allen Mikrocontrollern läuft Arduino. Das ist für mich als Informatiker eine sehr intuitive Art und Weise zu programmieren. I2C funktioniert soweit
Und Nachrichten über UDP kann ich mittlerweile ebenfalls vom Raspberry Pi empfangen. Auf dem Raspberry Pi läuft ein Processing Sketch.
Ein Problem gibt es aktuell dennoch:

Das Sketch sendet alle Sekunde (momentan) ein Byte Array der Größe 375.
Mit folgendem C Code kann ich das auf dem X86 Testweise auch empfangen:

n = recvfrom(sock, buf, 1024, 0, (struct sockaddr *) &from, (socklen_t *)&fromlen);
for(int i=0;i<256;i++){
unsigned int number=uint8_t(buf[i]);
}



Auf dem Master verwende ich die hypermedia UDP library.
nachdem ich hier mein Char Array empfangen habe:

word len = ether.packetReceive();
word pos = ether.packetLoop(len);

if (pos) {
char * pixels=(char *)&ether.buffer[pos];
for(int i=0;i<256;i++){
unsigned int number=uint8_t(pixels[i]);
Serial.println(number);
Serial.println(" ");
if(number%10==0){
Serial.println("\n");
}
}

}
Gibt die Konsole am x86 leider nur quatsch aus. Wenn ich einen String als char array sende ist die Konsolenausgabe allerdings vollkommen korrekt.
Ich vermute ein Problem bei der Endianness. Hatte da mal jemand ein ähnliches Problem?

Viele Grüße,
Tim