Gibt es eine möglichkeit den ADC Vorteiler vom Präprosessor berechnen zu lassen und dann entsprechend des Ergebnisses den Vorteiler zu setzen. Ene Warning würde ja auch schon reichen.
bei einem ADC muss doch der Frequenzvorteiler zwischen 50kHz und 200KHz sein. Je nach Frequenz des µC (z.b. ATmega32 mit 16MHz --> Vorteiler 128) muss dieser doch angepasst werden.
Naja, du könntest es mit einer Kette von #if #elif #else machen, etwa so:
1 | #ifndef F_ADC_MAX
|
2 | # define F_ADC_MAX 200000
|
3 | #endif
|
4 | |
5 | #if (F_CPU) / 2ul <= F_ADC_MAX
|
6 | # define ADPSCALE (_BV(ADPS0))
|
7 | #elif (F_CPU) / 4ul <= F_ADC_MAX
|
8 | # define ADPSCALE (_BV(ADPS1))
|
9 | #elif (F_CPU) / 8ul <= F_ADC_MAX
|
10 | # define ADPSCALE (_BV(ADPS1) | _BV(ADPS0))
|
11 | #elif (F_CPU) / 16ul <= F_ADC_MAX
|
12 | # define ADPSCALE (_BV(ADPS2))
|
13 | #elif (F_CPU) / 32ul <= F_ADC_MAX
|
14 | # define ADPSCALE (_BV(ADPS2) | _BV(ADPS0))
|
15 | #elif (F_CPU) / 64ul <= F_ADC_MAX
|
16 | # define ADPSCALE (_BV(ADPS2) | _BV(ADPS1))
|
17 | #elif (F_CPU) / 128ul <= F_ADC_MAX
|
18 | # define ADPSCALE (_BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0))
|
19 | #else
|
20 | # warning "No suitable value for ADPSCALE found."
|
21 | # define ADPSCALE (_BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0))
|
22 | #endif
|
thx, genau sowas hab ich gesucht, hab mit dem präprozessor noch nicht so viel gemacht (außer ein paar #define)
Du kannst übrigens damit auch den ADC schneller betreiben (wenn man bspw. nur 8 Bit Auflösung braucht):
1 | #define F_ADC_MAX 1000000
|
2 | #include "adpscale.h" |
3 | |
4 | static void |
5 | adc_init(void) |
6 | {
|
7 | ADCSRA = _BV(ADEN) | ADPSCALE; |
8 | }
|
Hallo alle miteinander, wie erhalte ich meinen Frequenzvorteiler um eine maximale Auflösung zu erhalten. Ich habe einen Systemtakt von 8 MHz. (Der Arbeitsfrequenzbereich liegt bei 50kHZ bis 200kHZ) Teilungsfaktor vorhanden 2,4,8,16,2,64,128. Meine Vermutung 8000000hz/64 =125 kHZ oder doch : 8000000hz/128 =62,5 kHZ Welcher Wert ist besser um eine maximale Auflösung mit dem AD-Wandler zu erhalten ? DIRK
Dirk aus NRW schrieb: > Welcher Wert ist besser um eine maximale Auflösung mit dem AD-Wandler zu > erhalten ? Ist egal, denn der Takt soll zwischen 50 und 200 kHz liegen. Dafür musstest du extra einen 10 Jahre alten Thread ausgraben?
Jörg W. schrieb: > Dafür musstest du extra einen 10 Jahre alten Thread ausgraben? sry dachte der passt gut zu dem Thema.... Eine Frage zum Thema AD Wandler hätte ich dann doch noch : Welchen Nutzen hat die Interne Referenzspannung von 2,56 V ? VIELEN DANK DIRK
Bitte in einem neuen Thread. Wenn wir alle Fragen zu "ADC" in einem Thread sammeln würden, könnte den keiner mehr lesen.