Ich nutze ein ATmega8 16MHz und wollte den ADC-Interrupt mal versuchen ihn umzusetzen ,nachdem ich das ADC-Tutorial erfolgreich umsetzen konnte. die Geschichte mit dem interrupt da happerts, ich bekomme als ausgabe nur immer Null anstatt den ADC-Wert. Die uart-funktionen hab ich jetzt mal nicht mit angehängt. vielleivht weiß einer von euch wass ich hier falsch mach
1 | uint16_t adcval; |
2 | volatile uint16_t ADC_wert; |
3 | |
4 | ISR(ADC_vect) |
5 | {
|
6 | ADC_wert = ADCW; |
7 | }
|
8 | |
9 | void ADC_Init(void) |
10 | {
|
11 | ADMUX = (0<<REFS1) | (1<<REFS0); |
12 | ADCSRA = (1<<ADEN) | (1<<ADSC) |(1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // Frequenzvorteiler auf 128 |
13 | }
|
14 | |
15 | int main(void) |
16 | {
|
17 | |
18 | uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); |
19 | |
20 | ADC_Init(); |
21 | |
22 | sei(); //Globale Interrupts Freigeben |
23 | |
24 | for (;;) |
25 | {
|
26 | adcval = ADC_wert; |
27 | |
28 | uint8_t HighBytex = adcval >> 8; |
29 | uint8_t LowBytex = adcval; |
30 | |
31 | uart_putc(HighBytex); //High-Byte? |
32 | uart_putc(LowBytex); //Low-Byte |
33 | }
|
34 | }
|