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


von Thomas D. (kelnoc)


Angehängte Dateien:

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?

von Stefan B. (stefan) Benutzerseite


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.

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.