Guten Morgen,

ich beschäftige mich mit dem Senden von Daten zwischen zwei ATMega8.
Ich habe den Quelltext jetzt nicht hier, den liefere ich nach.

Ich arbeite mir config serialin und serialout.
Versuche also so zu arbeiten, dass ich den Chip nicht durch warten auf Empfang blockiere.

Die beiden Programme sind komplett identisch. Nur der eine Chip sendet als Auslöser der Kommunikation eine "0".

Der Ablauf ist wie folgt:
Chip1 sendet eine "0".
Chip2 wartet auf einen String.
In der Interrupt Routine wird eine flag gesetzt, dass ein String empfangen wurde, gleichzeitig wird der Inhalt des Puffers in eine Variable geschrieben.
Beim nächsten Durchlauf der Hauptschleife wird geprüft ob ein String empfangen wurde, wenn ja wird der String mit Val() in eine Integer umgewandelt, eine 1 hinzugerechnet und mit print an Chip1 zurückgesandt.
Es erfolgt eine Ausgabe des empfangenen und des gesendeten Strings auf einem LCD.
Das gleiche passiert dann auf Chip1.
Theoretisch sollten sich die beiden Chips einen immer um 1 erhöhten Wert zusenden.

Jetzt tritt aber folgendes auf:
Der erste Versandt, und die Addition funktionieren dann allerdings wird dem String ein Zeichen vorangestellt (eins, oder mehrere, das weiß ich nicht): auf dem LCD wird es so ausgegeben ||| , dahinter steht dann noch eine 1.
Die Ausgabe ist also |||1

Wenn ich das ganze mit einem Computer und einem Chip mache funktioniert es einwandfrei!
Es ist das selbe Programm auf dem Chip und ich sende per Hyperterminal eine Zahl, dann bekomme ich immer eine um 1 erhöhte zurück!!!


Ich verstehe absolut nicht wo das Problem liegen könnte.
Das ganze läuft auf 1Mhz ohne externen Quarz bei 4800Baut.

danke für eure Hilfe!
Quelltext folgt!

Crypi