Ich habe den Sourcecode vom Tutorial zusammenkopiert(Anhang), sodass ich senden und empfangen kann. Dabei kann ich allerdings nur senden und nicht empfangen. Die Tutorials einzeln funktionieren. --> kein Hardwarefehler Wo liegt der Fehler?
di überschreibst deinen empfangenen wert immer gleich wieder mit ldi temp, 255 die befehlszeile ist eingerückt (übersehen?!) zu finden ist sie im empfangsinterrupt...
Das liegt daran das ich am Port D keine LEDs sondern ein Relais habe, welches ich klicken höre. Da das Relais nicht bei jedem Zeichencode eingeschaltet würde, habe ich die erwähnte Zeile geschrieben. Bei einem C-Programm mit WinAVR, tritt das gleiche Problem auf, obwohl ich dort das ankommende Zeichen auf einem Display ausgebe. Am ATMega16 (8 Mhz) liegt's auch nicht, den habe ich schon testweise ausgetauscht. Danke für's angucken
verstehe ich nich. wenn du alle anderen pins ausser den des relais schalten willst müsstest du das aussortieren. aber so wie du´s jetz machst hat temp in der zeile out PORTD, temp immer den wert 255. es wird keine rücksicht auf den eingelesenen wert genommen, er wird sofort wieder überschrieben. wenn du dir erhoffst durch ein empfangenes byte das relais einmal klacken zu hören müsstest du den pin wenigstens einmal mit dem empfangenen wert setzen. würde jedoch auch nichts helfen, denn so schnell wie der prozessor mit 8mhz ist, hätte das relais eine zu grosse trägkeit um kurz abzufallen / anzuziehen. das kann innerhalb von 125ns nicht klappen. egal was du machen willst, der fehler liegt in der zeile ldi temp, 255 oder der darunter. int_rxc: push temp ; temp auf dem Stack sichern in temp, UDR ldi temp, 255 out PORTD, temp pop temp ; temp wiederherstellen reti ; Interrupt beenden
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.