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?
> 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
Du must ACII-Zeichen senden. Such mal nach ASCII-Tabellen. Um den Wert 785 zu übertragen musst du hex37, 38 und 35 senden.
Wie du Variablen-Werte über die Uart senden kannst ist hier http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Der_UART sehr gut beschrieben.
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?
Indem du, wie in C üblich, ein '\n' Zeichen einbaust. Eventuell brauchst du auch die Sequenz "\r\n"
Vorsicht mit Hyperterminal, wir hatten hier das Problem, dass das Teil ab und an mal ein paar Bytes verschluckt hat.
Was kann man sonst empfehlen ausser Hyperterminal? Eventuell direkt Excel mittels VBA programmieren? Habti ihr euch auch eine Zeitachse senden lassen?
Viel schöner als das Windows-Hyperterminal: HTerm Siehe http://www.der-hammer.info/terminal/index.htm
HTerm funktioniert wirklich super. Du kannst auch umstelleen in welchem Zahlenformat das empfangene Zeichen dargestellt werden soll...
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?
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.
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.