Hallo zusammen, ich habe heute den ganzen Tag versucht, die Fehler zu finden aber komme leider nicht weiter. die Code läuft aber ich bekomme immer falsche Ergebnisse.Eingangsspannung ist 1.3 V. kann jemand mir schreiben, was das Problem ist. meine Code : --------------------------------------------------------------- #include "avr/interrupt.h" volatile int ADC_ergebnisse; volatile uint8_t AD_Flag; int main() { init(); Serial.begin(9600); ADCSRA |= (1 << ADEN); // AD-Wandler aktivieren ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Prescaler: Teilungsfaktor auf 128 einstellen ADMUX &= ~(1 << MUX0); ADMUX |= (1 << REFS0); // Intern 5.05 V ADCSRA |= (1 << ADATE); // Autotrigger einschalten ADCSRA &= ~((1 << ADTS2) | (1 << ADTS1) | (1 << ADTS0)); ADCSRA |= (1 << ADIE) | (1 << ADSC); sei(); while (1) { delay(500); Serial.print(" ADC="); Serial.println(ADC_ergebnisse); AD_Flag = 0; } } ISR(ADC_vect) { ADC_ergebnisse = ADC; ADCSRA |= (1 << ADSC); } ----------------------------------------------------------------------- Ergebnisse: ADC=510 ADC=1022 ADC=511 ADC=1022 ADC=1023 ADC=1023 ADC=511 ADC=1022 ADC=934 ADC=511 ADC=1022 ADC=1023 ADC=511 ADC=1023 ADC=511 ADC=511 ADC=511 ADC=511 ADC=959 ADC=1023 ADC=511 ADC=1022 ADC=991 ADC=895 ADC=959 ADC=1023 ADC=1023 ADC=415 ADC=511 ADC=511 ADC=958 ADC=511 ADC=1023
Da können wir nur raten? Wie kommen die 1,3V an den Eingang? Welche Betriebsspannung? Ist die stabilisiert? Welche Referenzspannung wird benutzt? Ist die gefiltert? Mit ein paar genaueren Angaben könnte es eher etwas mit der Hilfe werden... LG Hermann
Bei einem Schaltplan und viele gut Bilder vom Aufbau - vielleicht.
hobbyflieger schrieb: > volatile int ADC_ergebnisse; Grrrr, immer diese signed integer in Arduino Codes -.- Tu dir einen Gefallen und mach da ein uint16_t draus...
> ADCSRA &= ~((1 << ADTS2) | (1 << ADTS1) | (1 << ADTS0));
ADCSRB &= ~((1 << ADTS2) | (1 << ADTS1) | (1 << ADTS0));
Die Kombination aus: Serial.println(ADC_ergebnisse); und ADC_ergebnisse = ADC; wird wohl das Problem sein. ADC ist 10 bit, wird dann einem int zugewiesen (und welche Dimension int hat, ist häufig nicht festgelegt) und dann zu println geschickt (und println weiss gar nicht, was es da als Parameter bekommt). Ich würde erstmal ADLAR setzen und Serial.println(ADCH) versuchen. Wenn da plausible Ergebnisse bei rauskommen, kann man ohne ADLAR weitercoden.
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.