Forum: Mikrocontroller und Digitale Elektronik ATmega8A UART Problem


von Daniel (Gast)


Lesenswert?

Werte Kollegen,

Ich bin frisch in die uC Programmierung eingestiegen und habe mir dazu 
von myAVR das MK2 Board inkl. mySmartUSB MK2 besorgt sowie das LCD.

Das LCD hab ich zum laufen bekommen - nun versuche ich Zeichen vom PC 
(RealTerm) zu empfangen und diese auf dem LCD auszugeben. Es 
funktioniert aber nicht (arbeite nach dem Mikrocontroller Tutorial + 
Datenblatt).

Ein Fehler ist mir beim debuggen aufgefallen der mich beschäftigt:
1
ldi r20, (1<<TXEN)
2
out UCSRB, r20
3
4
ldi r20, (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0)
5
out UCSRC

Nach dem ersten "out" ist das TXEN-Bit gesetzt, nach dem 2. "out" sind 
die Bits im UCSRC nicht gesetzt.

Und hier weiß ich nicht weiter - ich verstehe nicht warum die Bits nicht 
gesetzt werden?

Weiß da vielleicht jemand eine Lösung?

Ich verwende Atmel Studio 6.

Danke.

von Peter II (Gast)


Lesenswert?

Daniel schrieb:
> out UCSRC

fehlt da nicht etwas?

von S. Landolt (Gast)


Lesenswert?

> arbeite nach dem Mikrocontroller Tutorial + Datenblatt
In Letzterem steht auch
UCSRC       URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL
Initial Value 1    0     0    0    0    1     1     0

Also ist die zweite Zuweisung ohnehin überflüssig.

von S. Landolt (Gast)


Lesenswert?

> nun versuche ich Zeichen vom PC (RealTerm) zu empfangen.
Sollte dann nicht eher RXEN gesetzt werden?

von Daniel (Gast)


Lesenswert?

Danke für die raschen Antworten.

Peter du hast recht, im Code steht das r20 - hab ich jetzt nur hier im 
Beitrag vergessen.

Und ja, Initial value ist das was ich machen will - es ist nur in der 
Simulation im Studio alles auf 0 - auch nach der Zuweisung.

Und ich hab beide Varianten versucht - also senden und empfangen.

Wenn ich z.B. versuche ein Zeichen vom PC zum Board zu senden, dann 
leuchten die LEDs des mySmartUSB - also offensichtlich kommt irgendwas 
an wenn ich Tasten drücke. Aber es wird mir nichts am LCD angezeigt.

von chris (Gast)


Lesenswert?

Daniel schrieb:
> Wenn ich z.B. versuche ein Zeichen vom PC zum Board zu senden, dann
> leuchten die LEDs des mySmartUSB - also offensichtlich kommt irgendwas
> an wenn ich Tasten drücke. Aber es wird mir nichts am LCD angezeigt.

1. Prüfe Baudrate
2. schicke selbses Zeichen zum PC zurück damit überprüfst du gleich 
Punkt 1.
3. wenn was ankommt und die Baud stimmt denn muss es an deiner 
Schnittstelle zum LCD in Software/Hardware liegen diese gilt es zu 
prüfen
4. Poste immer den gesammten Quelltext erleichtet die rumraterei

von Andreas S. (igel1)


Lesenswert?

Hi Daniel,

Mit Punkt 4. hat Chris schon recht: ohne vollständigen Code wird das 
eine mühsame Sache.

Evtl. liegt es auch gar nicht an Deinem Code, sondern am mySMART MKII - 
der hat nämlich mehrere Modi, in denen er arbeitet:

- Programmiermodus (AVR 910)
- Datenmodus (UART-USB Bridge)   <=   diesen Modus benötigst Du
- myMode
- Stumm

Den Modus kann man entweder per Software einstellen oder auch per
Hardware mit dem Mäuseklavier auf dem mySmartUSB MKII erzwingen.

Die genauen Details dazu findest Du hier (Seite 7/16 ff.):
http://download.zeitech.de/Documents/mySmartUSB_MK2_Manual.pdf

Viele Grüße

Igel1

: Bearbeitet durch User
von Daniel (Gast)


Lesenswert?

Danke für die zahlreichen Tipps!

@Andreas: das wars - danke für die Info. Nachdem ich den Taster umgelegt 
habe sind tatsächlich Zeichen angekommen. Nachdem ich dann noch den 
externen Quarz "aktiviert" habe sind dann sogar die richtigen Zeichen 
angekommen (auch in die andere Richtung).

LG

von Andreas S. (Gast)


Lesenswert?

Daniel schrieb:
> @Andreas: das wars - danke für die Info.

Gerne immer wieder :-)

Was die Zeichen angeht, so muß man ein wenig rechnen, aber dann findet 
man sehr schnell heraus, daß es bereits bei 9600 Baud schwierig wird, 
mit dem internen Oszillator (und den verfügbaren Teilern)  die 
notwendige Genauigkeit zu erreichen - so jedenfalls meine Erinnerung.

Gehört zu den vielen, gern diskutierten Themen ...
Siehe auch hier: 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART

Besonders gemein daran ist, daß viele Leute ganz stolz sind, wenn sie es 
trotzdem irgendwie hinbekommen haben, den UART ans Laufen zu bringen 
(ohne externen Quarz).

Spätestens bei der nächsten Hitzewelle im Sommer kommt dann die 
Überraschung: Ihre Schaltung funktioniert nicht mehr, weil der interne 
Oszillator halt nicht besonders stabil ist.

Du hast also genau die richtige Wahl getroffen - Glückwunsch zu Deinem 
Erfolg. Ich kann mich noch gut erinnern, als bei mir erstmals Zeichen 
vom AVR zum PC übertragen wurden: Glücksgefühle :-) Und wenn man diesen 
Dreh einmal raus hat, erweitert das enorm die (Bastel)Möglichkeiten.

Viele Grüße

Igel1

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.