Forum: Mikrocontroller und Digitale Elektronik A/D Wandlung werte über RS232 schicken


von Bobby 1987 (Gast)


Lesenswert?

Hi,

ich will mit einem Atmega8 Controller eine Spannung messen diese Wandeln
und per RS232 an Hyperterminal schicken. RS232 Kommunikation klappt.
Problem 10 bit A/D Wert 8 bit über RS232, wie löse ich das? Nacheinander
einlesen?
Weiteres Problem will z.B jede ms einen Messwert, mach ich das übern A/D
Wandler Takt oder per Interrupt?

von Robert S. (razer) Benutzerseite


Lesenswert?

> Problem 10 bit A/D Wert 8 bit über RS232, wie löse ich das? Nacheinander
> einlesen?

Die empfangenen daten am Hypertminal sind einzelne Zeichen. Wenn du den 
Messert als Wert (zB 785) am Hyperterminal sehen willst, musst du vorher 
im µC die Zahl in einen String umwandeln und den Schickst du dann über 
den UART raus.

> Weiteres Problem will z.B jede ms einen Messwert, mach ich das übern A/D
> Wandler Takt oder per Interrupt?

Was meinst du mit Interrupt genau?? Ich wrde einen Timer initialisieren, 
der alle 1ms einen Interrupt auslöst. Und in der Interruptroutine würde 
ich eine AD Wandlung starten. Oder nur ein Flag setzen und das Flag in 
der Main pollen.

mfg Robert

von Jörn P. (jonnyp)


Lesenswert?

Du must ACII-Zeichen senden. Such mal nach ASCII-Tabellen. Um den Wert 
785 zu übertragen musst du hex37, 38 und 35 senden.

von Lu K. (luke)


Lesenswert?

Wie du Variablen-Werte über die Uart senden kannst ist hier
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Der_UART sehr 
gut beschrieben.

von Bobby 1987 (Gast)


Lesenswert?

Jo VIelen Danlk für die Hilfe.

von Bobby 1987 (Gast)


Lesenswert?

Ach eins noch, das mit dem String senden werde ich dann wohl 
hinbekommen.
Wie kann ich denn jeden Wert in einen neue Zeile packen, so das ich mit 
Excel arbeiten kann? Kann ich dafür dir mir bekannten C-Befehle nutzen?

von Karl H. (kbuchegg)


Lesenswert?

Indem du, wie in C üblich, ein '\n' Zeichen einbaust.
Eventuell brauchst du auch die Sequenz "\r\n"

von Willi W. (williwacker)


Lesenswert?

Vorsicht mit Hyperterminal, wir hatten hier das Problem, dass das Teil 
ab und an mal ein paar Bytes verschluckt hat.

von Bobby 1987 (Gast)


Lesenswert?

Was kann man sonst empfehlen ausser Hyperterminal? Eventuell direkt 
Excel mittels VBA programmieren? Habti ihr euch auch eine Zeitachse 
senden lassen?

von Guest (Gast)


Lesenswert?

Viel schöner als das Windows-Hyperterminal: HTerm
Siehe http://www.der-hammer.info/terminal/index.htm

von Robert S. (razer) Benutzerseite


Lesenswert?

HTerm funktioniert wirklich super. Du kannst auch umstelleen in welchem 
Zahlenformat das empfangene Zeichen dargestellt werden soll...

von Bobby 1987 (Gast)


Lesenswert?

Noch eine Anmerkung zur Zeit: Da ich ja jede ms abtasten will, macht es 
ja Sinn jede ms einen Interrupt auszulösen, der die A/D Wandlung 
startet, nur die Wandlung selber dauert ja auch 250us? Wie kann ich 
diesen Einfluss reduzieren?

von Matthias (Gast)


Lesenswert?

Da gibts keine Einfluß zu reduzieren. Du kannst den Timer so einstellen, 
dass er zyklisch alle 1ms einen Interrupt auslöst. Sollte dieser Mode 
nicht vom Controller unterstützt werden, mußt Du als erstes den Timer in 
der Interruptroutine zurücksetzen und neu starten. Der Timer läuft ja 
weiter, so lange Deine Wandlung dauert, wenn es das ist, was Du 
befürchtest.

von Bobby 1987 (Gast)


Lesenswert?

Jo stimmt, somit hat die Wandlungszeit keinen Einfluß

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.