Forum: Mikrocontroller und Digitale Elektronik Uart; Anfängerproblem


von olli (Gast)


Lesenswert?

Hallo zusammen,

beschäftige mich gerade mit der UART und komme einfach nicht weiter:

1. Habe ein STK500 Board mit einem 8515. Finde in den Datasheets leider 
keinen Hinweis darauf, hinter welchen Pins sich beim 8515 Txd und Rxd 
verstecken. Habe aus dem User Guide entnommen, dass es sich um die Pins 
0 und 1 des Ports D handeln soll. Ist das korrekt?

2. Habe gelesen, dass man die Pins 0 und 1 des Ports D mit den Stiften 
Rxd und Txd verbinden soll, um die Uart CTRL nutzen zu können. Muß noch 
irgendetwas anderes gemacht werden?

3. Habe darauf geachtet, dass Pin 0 mit Txd und Pin 1 mit Rxd verbunden 
wurden.

4. Habe mir mittlerweile 3 Beispiele aus dem Netz geholt, aber beim 
obigen Aufbau bekomme ich keine Verbindung mit dem Rechner. Glaube aber 
nicht, dass es an der Rechnerseite liegt, da beim ´gleichen Aufbau mit 
z.B. der CControl das ganze problemlos läuft.

P.s. Habe am Rechner 8,N,1 mit 9600 Baud eingestellt.

Hat jemand ne Idee?

Olli

von Matthias (Gast)


Lesenswert?

Hallo Olli,

ich habe auch das STK500 und hatte auch erst Probleme:

1. Ich hatte auf der PC-Seite das falsche Protokoll ausgesucht.
2. Ich habe nach dem ISP-Programmieren kein RESET des AVRs durchgeführt, 
dieser sendet dadurch nur Müll

Hast du mal an TxD gemessen?

von olli (Gast)


Lesenswert?

Hi Matthias,

habe das Problem mittlerweile gelöst.

Einerseits lag es daran, dass ich immer davon ausgegangen bin, dass das 
STK 500 einen 4MHZ Quarz besitz, wodurch ich den Bauteiler auf 25 
eingestellt hatte. Es wurden so zwar alle Bytes an den Computer gesandt, 
allerdings waren sie fehlerhaft. So sollte z.B. &H30 gesendet werden und 
am Rechner kam &H60 raus usw.

Mit einem Baudteiler von nunmehr 24 funktioniert die Übertragung sehr 
gut.

Interessanter Weise mußte ich aber auch die Schnittstelle am Rechner 
wechseln. Programmiere ich den AVR z.B. mit dem AVR Studio über COM1, 
dann kann ich - trotz reseten und neustarten des Controllers - nur über 
die COM2 kommunizieren. Versuche ich eine Kommunikation über die COM1, 
solange wie das AVR Studio läuft, kommt nichts an. Das Programm scheint 
die ganze Zeit die COM1 zu belegen.

Gruß

Olli

von Matthias (Gast)


Lesenswert?

Das Problem mit den offenen Anschlüssen liegt an der Windows-Version.

Für welche Baudrate verwendest du den Baudteiler 24? Für 9600 Baud bei 
3,69MHz must du den Baudteiler 23 verwenden.


Gruß Matthias

von olli (Gast)


Lesenswert?

Hi Matthias,

verwende 24 bei 9600 baud. Rechnerisch ergibt sich daraus ne 
Taktfrequenz von 3,8.. Mhz. Der AVr auf dem Board funktioniert damit 
schon ein paar Tage ohne Fehler.
Frage mich aber bitte nicht, welche Taktfrequenz auf dem Board 
eingestellt ist. Bin leider Newbie und hab noch nicht geschnallt, wie 
ich das rausfinde.
Den Baudteiler habe ich durchs experimentieren rausgefunden. Damit war 
die Fehlerhäufigkeit gleich null. Mit anderen Teilern hat es bei der 
jetzigen Einstellung nicht funktioniert. Fast jedes Byte war fehlerhaft.

Olli

von Matthias (Gast)


Lesenswert?

Hallo Olli,

falls du das AVR-Studio verwendest (davon gehe ich aus), kannst du, wenn 
du auf das AVR-Symbol klickst, öffnet sich das STK500 Frontend.
Dort kannst du auf der Seite "Board" in dem Auswahlfenster "Oszillator" 
die Taktfrequenz des STK500 einstellen. Die Werte, die du dort 
einstellen kannst sind auf 2 Nachkommastellen gerundet. D.h. du suchst 
dort 3.69MHz aus, und es wird 3,6864MHz eingestellt. Die 
Baudraten-Teiler und die genauen Frequenzen kannst du dem Datenblatt 
entnehmen. Ich habe sie aus dem Datenblatt des AT90S8515 aus dem Kapitel 
des UART entnommen (Seite 58).

Hast du sonst noch irgendwelche Probleme mit den AVR's?

Gruß Matthias

von Axel(ojojo) (Gast)


Lesenswert?

Hallo,

ich habe auch eine Frage zum UART.
Ich habe das SENDEN schon hinbekommen (so wie im Tutorial beschrieben)
Aber wie empfange ich daten ?
Ist das auch so einfach?

jo
Axel

von olli (Gast)


Lesenswert?

Hi Axel,

das Empfangen von Daten ist eigentlich auch sehr einfach. Wenn Du 
Probleme hast, frag einfach nach.

Olli

von olli (Gast)


Lesenswert?

Hi Matthias,

richtige Probleme habe ich derzeit - glücklicherweise - nicht. Bin 
darüber sehr überrascht. Hatte mir den Umstieg von der CControll auf den 
AVR (und Assembler) viel schwieriger vorgestellt. Muß aber auch sagen, 
dass der Support hier übers Forum echt gut ist.
Versuche mich als nächstes mal am DCF Empfänger. Befürchte, dass dann 
wieder die problemlose Zeit vorbei ist....

Olli

von Axel(ojojo) (Gast)


Lesenswert?

OK. Bitte erklärt mir, wie man empfängt!

Senden ist ja wirklich einfach:

sbi UCSRB,TXEN                           ;TX aktivieren
ldi temp,4000000/(1200*16)-1   ;Baudrate 1200 einstellen
out UBRR,temp

; Ein "A" senden

ldi temp, 'A'

wait:
sbis UCSRA,UDRE   ;Warten, bis UDR bereit ist
rjmp wait
out UDR, temp

jo
Axel

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Schau mal in die Codesammlung.

von Matthias (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Axel,

im Anhang befindet sich ein von mir erstelltes Assemblerprogramm zum 
senden und empfangen über den UART. Es empfängt ASCII-Zeichen("1..8") 
und schalten die auf Leds, und sendet den Status der Taster.


Gruß Matthias

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.