AD - Wandlerproblem - Fehler gefunden Es gibt Situationen, wo selbst Leuten, die schon länger mit Assembler programmieren, unglaubliche Fehler unterlaufen - peinlich, peinlich Das Problem war, Werte wurden ausgelassen, die LSB also fielen weg, so daß bei steigender Eingangsspannung die Reihe z.B. so aussah: 181,182,184,192,193,195. Genau dieses Problem hatte ich in früheren Arbeiten bereits gelöst, indem ich den Prescaler das AD-Wandlers entsprechend eingestellt habe, damit die Wandlerfrequenz 200 kHz nicht übersteigt (Siehe Datenblatt). (4MHz Division Factor z.B. 64, bei 8MHz etwa 128) Genau das tat ich auch diesmal mit dem 2333 und dennoch, die Werte fehlten. Da ich kaum mit dem Simulator arbeite ist mir der wirklich peinliche Fehler nicht aufgefallen. Erst beim Simulieren merkte ich, daß der Prescaler immer auf 1 gestellt war, egal welchen Wert ich ins Register schrieb. Und da dämmerte es mir ...... und tatsächlich. Ich vergaß einfach nur die 0b vor der Dualzahl zu schreiben. ;AD-Wandler ldi temp,00000111 ;Teiler = 128 out ADCSR,temp richtig ist 0b00000111 Ist es nicht zum Verzweifeln? Vielen Dank für Eure Hinweise.
Hai,
Tippfehler sind viel gemeiner als Programmfehler :)
>richtig ist 0b00000111
wie schreibt man binäre Zahlen im GCC?
hab aus Verzweiflung schon mit
#define bin00000000 0
#define bin00000001 1
#define bin00000002 2
angefangen
Hallo, das geht auch leider nicht anders. Kannst ja die Zahlen in Hex schreiben, da ist die Umrechnung einfacher als bei dezimal. MfG Andreas
Hai Andreas,
>Kannst ja die Zahlen in Hex schreiben, da ist die Umrechnung einfacher als bei
dezimal.
normalerweise nehme ich ja auch hex, nur bei Zeichensätzen oder
Bitmasken währe es im Listing sehr viel übersichtlicher.
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.