Gast
#3938565
Guten Abend Zusammen Ich wundere mich gerade über die Wandlungszeit des ADC von meinem AVR32. Ich habe ihn im Freeruning mode und die ADC Frequenz ist auf 125kHz. Laut Datenblatt braucht der ADC 13 Cycles für eine Wandlung. Jedes mal wenn der Interrupt vom ADC kommt, übertrage ich das Resultat seriell. Die Zeitdifferenz zwischen den einzelnen Startbits variiert aber ganz anständig (Sollwert 0,104 ms) und ist nur selten einigermassen konstant --> siehe Plot (Zeitdifferenz zwischen den Startbits auf der y-achse). Warum ist das so? sollte die nicht ungefähr konstant sein? Dann habe ich noch eine Frage zu meinem Code weiter unten... Geht das decodieren eines Integer in Zeile 7 irgendwie schneller bzw. die serielle Übertragung ist noch nicht wirklich das Gelbe vom Ei, gibts da prinzipiell bessere Varianten? ISR(ADC_vect) { PORTD |= (1<<4); //set high, start bit ADCold = ADC; for(int i=0; i<10; i++) //10bit int { datasave[i] = ((ADCold >> i) & 1); //decode int } for(int i=0; i<10; i++) //send ADC value { if(datasave[i] == 1) PORTD |= (1 << 4); //set high else PORTD &= ~(1<<4); //set low _delay_us(5); //pause } PORTD &= ~(1<<4); //set low } Vielen Dank für jegliche Hinweise! Gruss bastler

