Servus, mit diesem code:
1 | void adc_init(void) |
2 | {
|
3 | uint16_t result; |
4 | //ADMUX |= (1<<REFS0);
|
5 | ADCSRA |= (1<<ADEN); |
6 | ADCSRA |= (1<<ADSC); |
7 | while (ADCSRA & (1<<ADSC) ){}; |
8 | result = ADCW; |
9 | |
10 | }
|
11 | |
12 | uint16_t get_adc() |
13 | {
|
14 | uint8_t i; |
15 | uint16_t result = 0; |
16 | |
17 | for(i=0;i<10;i++) { |
18 | ADCSRA |= (1<<ADSC); // eine Wandlung "single conversion" |
19 | while (ADCSRA & (1<<ADSC) ){}; |
20 | result += ADCW; |
21 | }
|
22 | result = result/10; |
23 | return result; |
24 | }
|
versuche ich die an ADC0 anliegende Spannung bei einem ATMega8 auszulesen, die Spannung beträgt 1,9V. Der Wert den ich erhalte ist aber immer 1023. Sind in meinem Code Fehler oder muss ich den Fehler woanders suchen? Beste Grüße Franz