PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Überwachung des Datenaustauches zwischen USART0 und USART1



jiodatsinga
06.06.2012, 11:06
Hallo,

Ich arbeite mit dem Mikrocontrollerboard 644P und versuche vor einigen
Tagen den datenaustauch zwischen dem USART0 und USART1 zu aufbauen bzw
zu überwachen.Ich habe im Puffer UDR0 von USART0 ein Zeichen 'b'
geschrieben und habe wieder dieses Zeichen zum Puffer UDR1 übertragen.

Als ich mein C-Code compiliere, läuft das Programm einwandfrei. Aber
die Puffer UDR0 und UDR1 bekommen nicht das Zeichen im Laufe der Simulation.
Außerdem wird mein Interrupt Routine im Laufe der Simulation überhaupt
nicht verarbeitet. Ich verstehe nicht, was schieflauft.

Bitte,kann jemand mir was vorschlagen ?

Mein C-Code befindet sich im Anhang.

Danke im Voraus.

mfg jiodatsinga

Hubert.G
06.06.2012, 12:34
Es fehlt das sei(); um die ISR freizugeben. Mehr habe ich mir allerdings nicht genauer angeschaut.

jiodatsinga
06.06.2012, 14:52
Hallo nochmal,

danke schön für deinen Tipp Hubert. Ich habe nochmal mein C-Code geändert. Aber ich sehe trotzdem nicht im Laufe der Compilierung das
Zeichen 'b' im Register UDR0 als auch im Register UDR1. Außerdem reagiert mein Interrupt Routine wieder nicht im laufe der Compilierung.

Was mache ich denn falsch ? Übrigens, ich bin kein Profi und mache mein besten, damit sie mir weiterhelfen.

Mein Code liegt im Anhang.

Danke im Voraus.

mfg jiodatsinga

Hubert.G
06.06.2012, 20:31
Du hast ein Durcheinander mit den RX und TX.
ISR(USART1_RX_vect) aber den TX Interrupt enabled.

jiodatsinga
07.06.2012, 09:45
Danke für die Rückmeldung Hubert. Ich werde deine Bemerkung auf jedenfalls berücksichtigen.
ich melde mich später, wenn alles klappt.

mfg jiodatsinga

jiodatsinga
07.06.2012, 15:37
Hallo nochmal,

ich bedanke mich erstmal bei Hubert für seine Ratschläge. ich habe deine Anweisung befolgt und bin ziemlich gut voran gegangen.

Eigentlich war es möglich für mich durch den simulator das Zeichen 'b' im Register UDR0 zu schreiben. Dafür habe ich manuel die Parameter RXC0 (receive complete), TXC0 (transmit complete)und RXC1 (receive complete) auf High gesezt.

Aber der Register UDR1 empfängt immer nicht das Zeichen 'b'. Ich habe verschidene Variante probiert, aber das klappt einfach nicht.

Woran liegt das ?

Anbei liegt mein C-Code.

Danke im Voraus.

mfg jiodatsinga.

Hubert.G
07.06.2012, 21:11
Im Simulator hast du das Problem das du keine Verbindung zwischen TX0 und RX1 machen kannst. Damit kannst du auch nichts empfangen.
Der Simulator ist nun mal nur eine Krücke.

jiodatsinga
08.06.2012, 12:55
Moin,

danke schön für die Hinweise Hubert. Wenn ich noch Fragen habe, werde ich mich bei dir melden.

Schönes Wochenende.

MFG jiodatsinga