Forum: Mikrocontroller und Digitale Elektronik ATmega16 - UART


von Klaus Eckenfellner (Gast)


Lesenswert?

hallo leute, habe folgendes problem. ich verwende ein stk500 mit einem
atmega16. hab mit den zugehörigen tools von internen rc oszi auf
externen hochfrequenz resonator umgeschaltet. wollte jetzt wie im
tutorial test über die rs232 senden. hab natürlich auch die dafür
nötigen adaptionen am testboard vorgenommen, doch ich erhalte nur
schrott.

einstellungen habe ich wie im tutorial getroffen und sogar mal probiert
anstatt 2 stopbits mal 1 stopbit. doch auch wieder nur schrott.

hab auch schon rx mit tx vertauscht, da kommt dann gar nichts.

betreffend der baudrate habe ich die oszillator frequenz mit dem avr
studio nachgemessen und eingetragen.

hat sonst jemand eine idee an was es liegen kann?

danke im voraus

Klaus Eckenfellner

von crazy horse (Gast)


Lesenswert?

Schrottzeichen deuten auf korrekte Hardware und fehlerhafte Software,
insbesonders Baudrate. Programm? Quarzfrequenz?

von Klaus Eckenfellner (Gast)


Angehängte Dateien:

Lesenswert?

programm ist das selbe wie im tutorial.(natürlich mit richtigen includes
für meinen controller.) ich hab jetzt den takt mal nachgemessen und der
ist 3.69MHz. und ist auch sehr stabil.

sonst noch jemand eine idee????

hier mal das programm

von crazy horse (Gast)


Lesenswert?

out SPL, temp
//SPH fehlt!!
sbi UCSRB,TXEN                   ;TX aktivieren
//üblicherweise stellt man erst alles ein und gibt daan erst
Sender/Empfänger frei, sollte aber für die Funktion unerheblich sein
ldi temp,1000000/(9600*16)-1   ;Baudrate 9600 einstellen
//hier musst du mit deiner aktuellen Taktfrequenz rechnen
out UBRR,temp
//hat der Mega16 nicht UBRRH und UBRRL? Dachte ich jedenfalls, aber da
hätte der Assembler ja meckern müssen.

von Tobi (Gast)


Lesenswert?

im tutorial ist auch ein programm für den atmega8, du hast das für den
4433 erwischt. das für den mega8 entspricht mehr dem was du brauchst
weil sph und spl verwendet werden und auch ubrrh/l. das anpassen der
quarzfrequenz trotzdem nicht vergessen

wenn das alles nicht hilft klemm mal einen 100nf kondensator zwischen
rx und tx, hat bei mir wunder gewirkt

von Klaus Eckenfellner (Gast)


Lesenswert?

welchen sinn macht ein 100nf kondensator?????

von Tobi (Gast)


Lesenswert?

ich hatte bei mir wohl ein zu langes stück ungeschrimte leitung. die
synchronisation mit mit dem pc hat dann wohl nicht mehr geklappt und es
ist dauerhaft nur zeichensalat angekommen. dann hab ich mal probiert tx
und rx mit einem kondensator zu verbinden und es hat sofort geklappt.
frag mich nicht warum aber das war das einziges was was gebracht hat,
sogar bei 300baud hat es nur fehler gegeben. vielleicht kann mir ja mal
einer erklären warum der fehler dann weg war...

von Klaus Eckenfellner (Gast)


Lesenswert?

ok, werd jetzt mal das neue programm verwenden.

von Klaus Eckenfellner (Gast)


Lesenswert?

fehler von mir:
1) der hauptfehler war, dass ich das falsche programm erwischt habe
2) habe bei der clockfrequenz 4MHz stehen lassen, obwohl es, laut einer
messung 3.69MHz sind. --> clock in programm umändern.

der 100nf kondensator war nicht nötig.

danke an alle die mir halfen.

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Habe ein Problem, dass mein Controller (ATMEGA16) keinen Mux macht,
wenn ich ein Zeichen per Rs232 an ihn sende. Den Code hab ich als
Anahng beigefügt. Habe den MAX232 durchgemessen, es liegt die
Versorgungsspannungen lt. Datenblatt an. Die Schnittstelle am PC und
das Kabel sind auch in Ordnung, weil ich mit meinem 8051 Kommunizieren
kann. Hat jemand ne Idee?? Ist mein Quellcode fehlerhaft???

Danke im Voraus!

Michael

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.