Hallo Marco

zur Kommunikation. Ich möchte diese zwischen den 2 mega8 nicht über I2C, RS232, usw. ausführen, sondern indem ein I/O Pin des einen mega8 direkt mit dem I/0 Pin des zweiten mega8 verbunden ist. Ausgetauscht werden keine Daten, sondern nur Signale! Hierfür muß der eine mega8 nur den Pegel an dem Pin ändern, der andere mega8 erkennt den neuen Pegel, bzw. die Flanke an seinem I/O Pin und ist damit informiert. So wird die schnellst möglich Reaktion erreicht. Bei RS232 oder I2C, usw. ist der ganze Protokollaufwand erfoderlich. Hier ein Beispiel. Der Inkrementalwertgeber meines Dunkermotors gibt 512 Impulstripel pro Umdrehung. Bei 60 Umdrehungen pro Sekunde 30720 Impulstripel pro Sekunde! Da bleiben zwischen Impulstripel und Impulstripel 520 Takte bei 16MHz. In dieser Zeit die Impulstripel auswerten, die internen Datentabellen pflegen und eine RS232 oder I2C Datenübertragung ausführen. Dann beim 2. mega8 die erhaltenen Daten auswerten und darauf hin die notwendige Reaktion auszuführen ist sicher nicht möglich.

Nach meiner Methode muß der erste mega8 statt eine RS232 oder I2C Kommunikation auszuführen nur den einen Befehl ausführen den Pegel am Pin z.B. von Low auf High zu setzen. Beim anderen mega8 kann ich entweder im Kode eine regelmäßige Abfrage einbauen, oder ich löse auf den Pegelwechsel ein Interrupt aus. Dieses Interrupt weiss dann weshalb es ausgeführt wurde und löst die gewünschte Aktion aus!

Da beide mega8 physikalisch auf einer Platine nah bei einander sind entsteht so der "virtuelle super mega8" mit wesentlich mehr I/O´s, 2 Ausführungseinheiten, usw! Klingt das schlüssig?