Soo... Die erste Schnapsidee sieht so aus:
Die Prozessoren sind über Zwei Pins Miteinander Verbunden. Im folgenden werden die Pins so bezeichnet:
Atmega1,Pin1:Pin11 (Interrupteingang!)
Atmega2,Pin1:Pin21 (Interrupteingang!)
Atmega1,Pin2:Pin12
Atmega2,Pin2:Pin22
Die erste Verbindung (Zwischen Pin11 und Pin21) ist für den Sendestatus, die Zweite für die daten.
Zum Ánfang beginne ich mit bitweisem senden von daten. das ist nicht sonderlich effektiv, aber reduziert die fehlerquote.
Im Standartzustand Liegen alle Pins auf LOW. Pin11 und Pin21 werden als Interrupteingang geschaltet. Jeder Prozessor macht seine Arbeit.
Beispiel: Prozessor 1 Will eine Logische 1 an Prozessor2 Senden. Dazu macht er folgendes:
Er setzt den DATENpin (Pin12) auf High (um eine 1 zu senden, low um eine 0 zu senden).
DANN setzt er den Statuspin(Pin11) auch auf high und wartet ca 1ms.
Dadurch wird bei Prozessor2 ein interrupt ausgelöst. Er Liest seinen Pin22 aus, findet heraus, dass strom anliegt und speichert eine 1 (wäre pin12 auf low geblieben, hätte er eine 0 gespeichert). DANN WARTET AUCH ER EINE millisekunde, damit er nicht nochmal das gleiche empfängt.
NAchdem Prozessor1 gewartet hat, schalteter den pin11 wieder auf low. beide prozessoren machen weiter das, was sie sollen. evtl kann in der isr noch eine Variable "datenempfangen" gesetzt werden, dann kann der prozessor2 die daten gleich verarbeiten.
genauso gehts umgekehrt.
nochmal in kurzfassung:
Sendender Prozessor legt auf den datenpin das, was er senden will (high für 1, low für 0). dann legt er den statuspin auf high.
beim empfangende prozessor wird ein interrupt ausgelöst, dieser liest den status des datenpins aus und speichert eine 0 oder 1.
prozessor1 setzt nach kurzer wartezeit seinen statuspin wieder auf low und macht weiter mit dem was er vorher auch gemacht hat. prozessor zwei wartet auch kurz, und macht dann mit dem wieiter was er vorher gemacht hat, oder verarbeitet das bit was gerade angekommen ist, oder...
was sagt ihr dazu? immerhin eine übertragungsrate von fast 1000 Baud, wenn die Prozessoren wirklich nix anderes zu tun habenn... =)
Lesezeichen