ATmega8A UART Problem

Gast #4052533
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.
Gast #4052701
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.
Gast #4052928
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
#4052963
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
Gast #4053640
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren