Hallo! Ich möchte in einem zyklisch wiederauftretenden Zeitraum mehrere Zeichen von einem Mega8 zu einem anderen übersenden. Probiere schon ewig herum, es funktioniert auch soweit ich nicht zu viele Zeichen übersende. Wenn es mehr als 3 sind werden die ersten 3 Zeichen beim ersten zyklus übersendet und die anderen, dann wenn der nächste zyklus anfängt. Desweiteren werden einige davon verschluckt. Somit fehlen mir von dem 2. Zyklus die Zeichen und die von ersten sind nicht komplett. Es müsste doch möglich sein mehr als 3 Zeichen aufs mal zu übertragen, hab mal den Quellcode angehängt, vielleicht kann mir ja Jemand helfen! Im Code werden die 3 Zeichen 3 mal gesendet solagne der PinD 7 aktiv ist empfangen wird aber "a b b c a b b b c" auch nur wenn der PIND7 mal aktiv war. Besten Dank! Benjamin
Nun, ich vermute mal, es liegt daran, dass der Master ja nicht weiß, ob der Slave das empfangene Zeichen überhaupt schon verarbeiten konnte und einfach drauflos sendet. Wenn Du jedes Mal ein empfangenes Zeichen sofort ausgibst, und während der Ausgabe ein neues Zeichen eintrifft, dann geht das verloren. Du solltest das Empfangen im Slave am besten Interrupt-gesteuert machen und einen Empfangspuffer anlegen.
Ok, probier ich mal aus. Leutet ein und erklärt auch warum die Zeichen verloren gehen, nur nicht warum er 2 Zyklen braucht um alle (9) Zeichen zu senden.
>Im Code werden die 3 Zeichen 3 mal gesendet solagne der PinD 7 aktiv ist >empfangen wird aber "a b b c a b b b c" auch nur wenn der PIND7 mal >aktiv war. neee eben nicht. hier "while(!(PIND & (1<<PIND7)));" wartest du ja nur solange PIND7 = 0 ist und verlässt beim wechsel auf 1 deine while. danach ist es egal was PIND7 macht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.