Ich möchte einen Call- By Reference Funktionsaufruf 
starten....eigentlich kein Thema. Nur wenn ich die Adresse übergeben 
will, meckert er:
passaging argument 1 of 'check_ADC' from incompatible pointer type
meine Programm im groben sieht so aus:
1  | #include <avr/io.h>
  | 
2  | #include <util/delay.h>
  | 
3  | #include <stdint.h>
  | 
4  | #include <stdlib.h>
  | 
5  | #include <inttypes.h>
  | 
6  | #include <math.h>
  | 
7  |   
  | 
8  | //prototypes
  | 
9  | void check_ADC(double *temp_x,uint8_t port,double left, double right);
  | 
10  | double ADC_read(uint8_t channel);
  | 
11  | void ADC_init(void);
  | 
12  | uint8_t ERR = 0;
  | 
13  | 
  | 
14  | int main(void)
  | 
15  | {
 | 
16  |     ADC_init();
  | 
17  |     double *temp1;
  | 
18  |     [...]
  | 
19  | 
  | 
20  |     check_ADC (&temp1, 3 ,2.3 ,2.6);
  | 
21  | 
  | 
22  |     [...]
  | 
23  | 
  | 
24  | }
  | 
25  | 
  | 
26  | void check_ADC(double *temp_x,uint8_t port,double left, double right)
  | 
27  | {
 | 
28  |     *temp_x=ADC_read(port);
  | 
29  |     _delay_ms(100);
  | 
30  | 
  | 
31  |     if(*temp_x < left || *temp_x > right)
  | 
32  |        ERR += 1;
  | 
33  | }
  | 
34  | 
  | 
35  | // initialize ADC
  | 
36  | void ADC_init(void)
  | 
37  | {
 | 
38  |   uint16_t result;  
  | 
39  | 
  | 
40  |   ADMUX = (1<<REFS0);    // reference voltage = AVCC (5V)
  | 
41  |   ADCSRA |= (1<<ADEN);    //activate ADC
  | 
42  | 
  | 
43  | //"dummy-readout"
  | 
44  |   ADCSRA |= (1<<ADSC);        
  | 
45  |   while(ADCSRA & (1<<ADSC));
  | 
46  |   result = ADCW;
  | 
47  | }
  | 
48  | 
  | 
49  | double ADC_read(uint8_t channel)
  | 
50  | {
 | 
51  |   // Function gets voltage at given ADC-PORT
  | 
52  |   // and returns the value in volts.
  | 
53  |   //
  | 
54  |   ADMUX = (ADMUX &=~(0x1F)) | (channel & 0x1F);// PORT of multiplexer (choose channel)
  | 
55  |   ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
  | 
56  |   ADCSRA |= (1<<ADSC);            // single conversion
  | 
57  |   while(ADCSRA &(1 << ADSC));         // wait for result
  | 
58  |   return (ADCW/1023.0)*5.0;          // return result
  | 
59  | }
  | 
Das Problem ist der Funktionsaufruf "check_ADC". Dort kommt diese 
Fehlermeldung, wenn ich temp1 mit der Adresse übergebe (also einem " & " 
davor). Sobald ich das " & " wegnehme ist der Fehler nicht mehr da. Wie 
kommt das?