Forum: Projekte & Code Prescaler ADC


von Gast (Gast)


Lesenswert?

Hallo,

#define F_CPU      8000000              //  8 Mhz
#define F_ADC       160000              // 160Khz Wunsch Abtastrate

uint8_t AdcCalcPrescaler(void)
{
 uint8_t Teil = (F_CPU / F_ADC);

 return(
         Teil <=  2 ? 1 : Teil <=  4 ? 2 : Teil <=  8 ? 3 :
         Teil <= 16 ? 4 : Teil <= 32 ? 5 : Teil <= 64 ? 6 : 7
       );
}

Laut Datenblatt soll die Abtastrate zwischen 50 und 200 Khz liegen.
Die obige Berechnung sollte den besten Teiler ermitteln.

Nebenwirkungen und Folgen bitte hier Posten.
MfG

von Benedikt K. (benedikt)


Lesenswert?

Gast schrieb:

> Laut Datenblatt soll die Abtastrate zwischen 50 und 200 Khz liegen.

Nein, nicht die Abtastrate, sondern der ADC Takt. Die Abtastrate ist um 
den Faktor 13 niedriger!

von Basti M. (counterfeiter)


Lesenswert?

Nette Idee, find ich sehr gut!

Kann man ja auch Wunderbar für Timerinterrupts verwenden, wenn man beim 
Debuggen noch oft zwischen den CPU Frequenzen wechselt!

von Martin L. (Gast)


Lesenswert?

return (1<<Teil) täte es auch, nicht?

von Gast (Gast)


Lesenswert?

Hallo,

@Benedigt
> Nein, nicht die Abtastrate ...
Stimmt.

> return (1<<Teil) täte es auch, nicht?

würde 1,2,4,8,16... erzeugen!

MfG

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
Noch kein Account? Hier anmelden.