Hallo, wo ist in meinem Code ein Fehler? Denn ich habe das Problem, dass die AD-Wandlung nicht abschließt, er also im Code in der While-Schleife hängen bleibt. Die Hardware sollte stimmen -> AGND, AREF, AVCC sind correct angeschlossen.
1 | int main(void) |
2 | {
|
3 | uint16_t temp; |
4 | char text[40]; |
5 | |
6 | uart_Init(); |
7 | |
8 | ADMUX = 0x00; //ex reference, no channel selected |
9 | ADCSRA = 0xA7; //0b1010 0111, division factor: 128, free running |
10 | ADMUX |= ((1<<MUX0)|(1<<MUX1)); |
11 | ADMUX &= ~(1<<ADLAR); |
12 | |
13 | uart_puts("STARTED\n"); |
14 | while(1) |
15 | {
|
16 | |
17 | ADCSRA |= (1<<ADSC); |
18 | while(ADCSRA & (1<<ADSC)) |
19 | ;
|
20 | |
21 | temp = ADCW; |
22 | sprintf(text,"ADC: %d\n",temp); |
23 | uart_puts(text); |
24 | _delay_ms(100); |
25 | }
|
26 | }
|
Vielen Dank!