mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Uart; Anfängerproblem


Autor: olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Axel(ojojo) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Axel,

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

Olli

Autor: olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Axel(ojojo) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal in die Codesammlung.

Autor: Matthias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.