Hallo zusammen, habe mal ne Frage zu AD Wandlern. Arbeite mit einem LPC2132 in C. Der interne AD Wandler bekommt einen analogen Spannungswert und soll diesen dann nach einer bestimmten mathematischen funktion weiterverarbeiten. Das Problem ist nun das die erste AD Wandlung nicht funktoniert. Ab der zweiten Wandlung funktionieren alle weiteren korrekt. Hat jemand eine Idee woran das liegen könnte...?Falls ihr noch ne genauere problembeschreibung oder den Quellcode benötigt, bitte auch melden. Danke schonmal
Zu meinem PCF.... steht im Datenblatt dass die erste Wandlung Müll ergibt. Vielleicht hast Du hier das gleiche Problem?
das kann eigentlich nicht sein.es steht zumindestens davon nichts im datenblatt...hat sonst noch jemand ne idee? häng mal nen stück code mit an, vielleicht ist es dann besser zu verstehen. // starts AD conversion AD0CR = 0x1200C04; // Übertragung des AD Wertes udi_ADCValue = AD0DR >> 6; udi_ADCValue = udi_ADCValue & 0x3FF; printf("relevantes Ergebnis der AD Wandlung %lx\n\r", udi_ADCValue); r_UVIS = udi_ADCValue * 12.96 * 0.001; printf("Betriebsspannung VIS Strahler %f\n\r", r_UVIS); wenn ich zwischen Zeile 1 AD0CR=0x1200C04 und der darauffolgende Zeile eine printf Anweisung einbaue funktioniert das Ganze. Kann es sein dass die Wandlung noch nicht abgeschlossen ist und ich trotzdem schon mit dem Wert(der dann nicht korrekt ist) weiterarbeite? Bin über jegliche Antworten dankbar...
Bevor das Signal auf den ADC geht ist ein Widerstand angebracht...meinst du es leigt eher an der hardware als an der software?
Du musst dem AD Wandler etwas mehr Zeit lassen die Wandlung auch durchzufuehren. Das dauert etwas laenger als einen C-Shift-Befehl. Koenntest z.B. auf das Interrupt Request Flag pollen oder das ganze vorneweg mit Interrupt machen. Du startest die Wandlung und liest sofort aus. Die Wandlung dauert aber min. 2+ usec. Bei printf dauert das lange genug damit der Wandler fertig ist. Der Ratschlag ist also, etwas mehr Geduld mit dem ADC ;-) Robert
danke, das habe ich mir schon gedacht...das einfachste wäre (wenn ich das richtig verstanden habe) ein flag abzufragen. Vor der Wandlung ist dies beispielsweise auf FALSE, sobald die Wandlung abgeschlossen ist, setze ich es auf TRUE. Danach mache ich eine Abfrage, ob das flag gesetzt ist. Wenn ja, kann ich mit dem Shift Befehl weiterarbeiten...Ist das so korrekt?
Das Bit ist im A/D Data Register zu finden, das sogenannte "DONE" bit (Kapitel 16 im User's Manual). Kannst fuer die erste Wandlung in einer Schleife abfragen, fuer die anderen Wandlungen muesste es soweiso schon gesetzt sein wenn Du das Ergebnis liest. Robert
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.