Forum: Mikrocontroller und Digitale Elektronik UART sendet anderes Zeichen zurück


von Markus (Gast)


Lesenswert?

Hi Leute!

Ich versuche schon die ganze Zeit das Beispiel von getchar und putchar
der Hilfe von codevisionavr nachzuvollziehen. Aber irgendwie bin ich zu
doof dazu!

Mit dem Wizard erstelle ich das Projekt: UART RX und TX, 9600 Bit/s, 8
Datenbits, 1 Stopbit. In der main steht dann:

char k;

...

while(1)
{
  k=getchar();
  putchar(k);
}

Bei 3,6864 MHz onboard STK500 ist das UBRR=0x17; Auch mit der Formel
ergibt sich, daß falsche Werte zurück kommen. Zum Senden/empfangen
benutze ich Docklight Scripting. Alle Settings scheinen ok!

Was übersehe ich?

Danke und Gruß Markus

von Markus (Gast)


Lesenswert?

Anmerkung!

sende ich den Ihnhalt des UDR direkt zurück, dann funzt es!

...
putchar(UDR);
...

M.

von Rahul (Gast)


Lesenswert?

bei WinAVR bringt "volatile" meist etwas...

von Markus (Gast)


Lesenswert?

was mir nichts sagt...

von Rahul (Gast)


Lesenswert?

volatile bringt den Compiler dazu, das "k" nicht wegzuoptimieren, weil
er keinen Verwendungszweck für die Variable im Programm findet.
Sonst wäre das gcc-Forum wohl besser für solche Fragen geeignet.

von Markus (Gast)


Lesenswert?

Wobwi ich mit CodeVisionAVR Programmier. Soweit ich weiß, gibt es da
doch Unterschiede zu gcc. Dabei gleich mal eine Frage: Kennst du ein
Forum für Codevision?

THX Markus

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.