Forum: Mikrocontroller und Digitale Elektronik UART macht Probleme beim Empfang


von Holger Fürstenberger (Gast)


Lesenswert?

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

von Aleksej Kiselev (Gast)


Lesenswert?

Wie hast de den UBRR eingestellt?

von Holger (Gast)


Lesenswert?

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

von crazy horse (Gast)


Lesenswert?

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.

von Holger (Gast)


Lesenswert?

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

von Holger (Gast)


Lesenswert?

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.

von Hubi (Gast)


Lesenswert?

Hallo Holger,
müßte beim in-Kommando nicht PinB stehen und am Ende der Routine ein
reti?

von Holger (Gast)


Lesenswert?

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.

von Christian Schifferle (Gast)


Lesenswert?

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

von Christian Schifferle (Gast)


Lesenswert?

Sorry, heisst natürlich PINB.

von Holger (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.