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.
:
Gesperrt durch Moderator
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.