Probleme mit UART und ADC mit Atmega8

OP #1723026
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/9e/Adc_connection.png/300px-Adc_connection.png
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?
Angehängte Dateien:
Persönliche Seite #1730921
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.