mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Serielle Schnittstelle atmega unlesbare Zeichen


Autor: Volker Knobe (prefekt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich beschäftige mich zum ersten Mal mit den AVR Microcontrollern, 
speziell mit dem ATMEGA8. Ich habe den Prozessor mit der seriellen 
Schnittstelle des Rechners verbunden. Die Daten kommen auch an, sind 
aber nicht lesbar!
Ich vermute es stimmt etwas mit dem Timing nicht oder die Bits sind 
verschoben!
Die Schnittstelle ist mit 9600 8N1 im HyperTerminal konfiguriert, im 
Atmel:
#define F_CPU 8000000UL  // 8 MHz
#define BAUD_RATE 38400
UCSRB=(1 << TXEN);
UBRRL=(F_CPU / (BAUD_RATE * 16L) - 1);

Zwischen dem Atmel und dem PC ist ein MAX232 als Schnittstellenwandler 
eingesetzt.

Geschickt werden an den PC nur Zahlen heraus kommen z.B. die Hex Werte: 
20,94,54,39 ... also alles Andere nur nicht das was ich schicke!
Hat jemand eine Idee, was nicht stimmt, oder woran es liegen kann, und 
wie ich das Problem lösen kann?

Viele Grüße
Volker

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es wäre interessant zu wissen, was du schickst.
Zeige mal ein wenig Code.
Das Benutzen von Glaskugeln zu Ostern ist Blasphemie.

Autor: Christopher G. (cbg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub nicht, dass das dein gesamter Code ist. Muss an Zeile 42 
liegen.

Autor: Thi Lo (flothi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Volker Knobe schrieb:
> Die Schnittstelle ist mit 9600 8N1 im HyperTerminal konfiguriert, im
> Atmel:
> #define F_CPU 8000000UL  // 8 MHz
> #define BAUD_RATE 38400

Ja wasn nu? 9600 oder 38400?

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quarz oder intern?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>#define F_CPU 8000000UL  // 8 MHz

Wenn die 8Mhz vom internen RC-Oszillator kommen, nicht verwunderlich.

MfG Spess

Autor: horst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Volker Knobe schrieb:
> Die Schnittstelle ist mit 9600 8N1 im HyperTerminal konfiguriert, im
> Atmel:
> #define F_CPU 8000000UL  // 8 MHz
> #define BAUD_RATE 38400

Dir sollte klar sein das nur Datenmüll ankommen muss, wenn beide 
Schnittstellen mit unterschiedlicher Baudrate arbeiten.

Autor: Michael M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Volker Knobe schrieb:
> UBRRL=(F_CPU / (BAUD_RATE * 16L) - 1);
kann der compiler das? UBBRL ist ein 8bit register, du willst 16 bit 
laden.
das klappt vllt mit der datenrate, aber sicher nicht garantiert mit 
jeder.

Autor: Thomas Schattat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du auch einen Pegelwandler und Inverter in der Verbindung 
(Stichwort MAX232 z.B.) ?

Autor: Michael M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die inverter hat jeder pegelwandler für die serielle schnittstelle 
integriert...
machs doch nicht so kompliziert.

Autor: Volker Knobe (prefekt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

sorry, das 38400 war flasch, war noch von einem Versuch.
Es war der MAX232 schuld, der hat wohl einen Macken. Nach dem Tausch 
gegen einen neuen funktioniert das wunderbar :-)

Danke trotzdem für die Hilfe, prima Forum :-)

Gruß
Volker

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Spendiere den seriellen Datenleitungen  12V- oder 15V-VDRs 
(Überspannungsableiter), dann leben die Pegelwandler länger.

So lange es nur leicht ausgauschbare MAXe sind, geht es noch, was aber, 
wenn er auf dem Mainboard sitzt?

Oftmals wird zuerst eine Datenleitung verbunden, dann Gnd. 
Potentialunterschiede werden über Signalleitungen  ausgeglichen, das 
geht oft nicht gut.

Ein häufig übersehener Punkt ist bei HyperTerminal  das Handshake = 
none.

Autor: Volker Knobe (prefekt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
danke für den Tip.

Das Problem am Anfang ist halt immer, das man nie weiß wo man mit der 
Fehlersuche ansetzten soll. Neuer Microcontroller, neue Kabel, neuer 
Pegelwander, neuer Programmer, neues Programm...
Wenn es einmal läuft hat man eine Referenz wo man vergleichen kann .

Gruß Volker

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.