Hallo zusammen, ich habe folgendes Problem. Ich benutze einen 2313 und kann keine Daten empfangen. Ich habe ein Testboard mit 8MHz laufen und da funzt es einwandfrei, aber bei dem Board mit 9,216 MHZ bekomme ich es einfach nicht zum Laufen. Normal sollte diese Frequenz ja noch besser bzgl. des Timings sein. Die Pins zum MAX232 habe ich auch schon überprüft, sind alle miteinander verbunden. Gibt es irgendwie eine Vorgehensweise mit der ich den Fehler herausfinden kann? Angeschlosse LED lassen sich schalten, so dass ich sicher bin, dass der µC funktioniert... Gruß Holger
der UBRR ist auf 14 @9,216 MHZ was ja 38400 Baud entspricht. Wenn ich den Controller mit Strom versorge, dann schickt er einen einmaligen Phantomwert. Nun habe ich mal Testweise eine Entlosschleife programmiert, die immer einen Konst. über den UART schickt. Es kommt zwar was an, aber sobald ich dann was schicke, und der Interupt aufgerufen werden müsste, bleibt das Programm stehen und es kommen keine Daten mehr an. In dem Fall springt er aus dem Interrupt nicht mehr zurück, oder wie soll man sich das vorstellen? Gruß Holger
also hast du kein Problem mit der UART, sondern mit deinem Programm. Und da es wiedermal fehlt, kann man dazu nichts sagen. Gibt viele Fehlermöglichkeiten, Stack, falsche Interrupt-Vektoren, fehlerhafte ISR etc.
ah ok, bin jetzt nur gerade unterwegs und kann somit den code nicht schicken... aber in interrupt mache ich nichts besonderes receice: in temp1, PortB ror temp1 out PortB,temp1 ret
Nochmal der Hinweis: ich finde es ja komisch, dass es auf einem anderen Board (8 MHz)funktioniert und auf diesem (9,216MHz) eben nicht. Auch wenn ich die Einstellungen für das 9MHz board mache, dann funzt es auf dem 8MHz Board, aber nicht auf dem anderen. Den MAX232 habe ich bei beiden Board auch schon mal getauscht.
Hallo Holger, müßte beim in-Kommando nicht PinB stehen und am Ende der Routine ein reti?
das mit dem reti stimmt schon, dass habe ich wohl auf die schnelle verwechselt (Motorola). Bei dem PortB will ich ja das ganze Register auslesen und dann einmal rotieren lassen und so dass ich sehen kann, dass er überhaupt was empfängt.
Ja ja, aber das heisst dann trotzdem PIND. Das hat nichts mit einzelnen Pins oder ganzen Register zu tun. Ich nehme mal an PIN heisst hier in etwa Port INput-Register oder was in der Art. Gruss Christian
Mit dem PinB Register lese ich doch die Eingänge ein, aber ich möchte ja die LEDs am dem PortB ansteuern, und die sollen eben um eins rotieren wenn ich mit dem Uart ein BYTE empfange. Nur nun habe ich schon wieder den Code vergessen und bin wieder nicht daheim.
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.