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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.