www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit UART und ADC mit Atmega8


Autor: Thomas D. (kelnoc)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

für ein Studienprojekt müssen wir eine mobile Schaltung bauen, die den 
Herzschlag misst, das Signal via Funk an eine andere Schaltung sendet, 
die mit einem Computer verbunden ist. Für die Hardware wollen wir einen 
uC gebrauchen. Da sich keiner so recht mit uC auskennt wurde ich dafür 
jetzt auserkoren >.<

Ich habe so weit es möglich war die Tutorials bearbeitet (aus 
zeitgründen nur die, die für uns von Belang sind).

Jedoch habe ich jetzt ein Problem mit dem UART in Verbindung mit dem 
ADC. Solange ich nur einen Charakter versende, funktioniert alles 
einwandfrei. Sobald ich jedoch die Werte vom ADC nehmen möchte, bekomme 
ich nur Müll auf dem PC wiedergegeben. Ich habe bereits diverse 
Vorschläge aus ähnlichen Forumsbeiträgen ausprobiert, jedoch hat nichts 
geholfen.

Die Schaltung ist aufgebaut nach diesen Schemas:
http://www.mikrocontroller.net/wikifiles/thumb/9/9...
http://www.mikrocontroller.net/wikifiles/e/ee/AVR-RS232.png

Compiler ist AVR Studio 4

In der Hoffnung das ihr mir helfen könnt,
Kelnoc

Edit 1: Die stelle im Code "adc_result =+ 1;" muss "adc_result = 
get_adc();" heißen. Hatte ich für Testzwecke geändert.

Edit 2: Zudem zeigt mir RealTerm einen break & framing error an. Was 
können die Ursachen dafür sein?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie erkennt ihr das Ende eines Wertes auf der Empfängerseite? Ich würde 
z.B. nach jedem Wert einen Zeilenvorschub und/oder Wagenrücklauf als 
Zeilenendekennung mitsenden. Ist aber eine Feinheit und nicht 
wesentlich.

Was passiert, wenn ihr das System weniger komplex macht? Ich würde dazu 
die Funkübertragung aussen vor lassen und erstmal mit einer klassischen 
RS232 Drahtverbindung arbeiten. Das würde klären, ob die 
Übertragungsparameter zwischen µC und PC grundsätzich passend 
eingestellt sind.

Wenn es zum Funk geht - habt ihr ein Feedback vom Funkmodul, ob das 
bereit ist weitere Zeichen zu versenden? Möglichweise lassen sich die 
break & framing errors in den Griff bekommen, wenn ihr die einzelnen 
Zeichen vom µC zum Funkmodul nur auf Anforderung des Funkmoduls sendet 
oder - brute force - eine paar ms Verzögerung zwischen den gesendeten 
Zeichen in der uart_putc() einbaut.

Den Atmega8 würde ich auf jeden Fall mit einer genauen externen 
Taktquelle betreiben, also z.B. einem Quarz. Optimalerweise ggf. ein 
Baudratenquarz für  die geplante Baudrate. Die Gründe dafür sind 
megatausendfach hier im Forum erzählt worden.

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.