Rev 41 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 41 | Rev 42 | ||
---|---|---|---|
1 | /*############################################################################ |
1 | /*############################################################################ |
2 | 2 | ||
3 | ############################################################################*/ |
3 | ############################################################################*/ |
4 | 4 | ||
5 | #include "main.h" |
5 | #include "main.h" |
6 | 6 | ||
7 | //############################################################################ |
7 | //############################################################################ |
8 | //Init ADC |
8 | //Init ADC |
9 | void ADC_Init(void) |
9 | void ADC_Init(void) |
10 | //############################################################################ |
10 | //############################################################################ |
11 | { |
11 | { |
12 | ADCSRA = 0xA5; // Free Run, 125 kHZ |
12 | ADCSRA = 0xA5; // Free Run, 125 kHZ |
13 | ADMUX = 7; // Kanal 7 |
13 | ADMUX = 7; // Kanal 7 |
14 | ADCSRA |= 0x40; // Start |
14 | ADCSRA |= 0x40; // Start |
15 | } |
15 | } |
16 | - | ||
17 | 16 | ||
18 | //############################################################################ |
17 | //############################################################################ |
19 | //Strom Analogwerte lesen |
18 | //Strom Analogwerte lesen |
20 | void AdConvert(void) |
19 | void AdConvert(void) |
21 | //############################################################################ |
20 | //############################################################################ |
22 | { |
21 | { |
23 | unsigned int i=0; |
22 | unsigned int i=0; |
24 | unsigned char sense; |
23 | unsigned char sense; |
25 | sense = ADMUX; // Sense-Kanal merken |
24 | sense = ADMUX; // Sense-Kanal merken |
26 | ADMUX = 0x06; // Kanal 6 |
25 | ADMUX = 0x06; // Kanal 6 |
27 | SFIOR = 0x00; // Analog Comperator aus |
26 | SFIOR = 0x00; // Analog Comperator aus |
28 | ADCSRA = 0xD2; // Converter ein, single, 1 MHz |
27 | ADCSRA = 0xD2; // Converter ein, single, 1 MHz |
29 | ADCSRA |= 0x10; // Ready löschen |
28 | ADCSRA |= 0x10; // Ready löschen |
30 | ADMUX = 0x06; // Kanal 6 |
29 | ADMUX = 0x06; // Kanal 6 |
31 | ADCSRA |= 0x40; // Start |
30 | ADCSRA |= 0x40; // Start |
32 | while (((ADCSRA & 0x10) == 0)); |
31 | while (((ADCSRA & 0x10) == 0)); |
33 | ADMUX = sense; // zurück auf den Sense-Kanal |
32 | ADMUX = sense; // zurück auf den Sense-Kanal |
34 | i = ADCW * 4; |
33 | i = ADCW * 4; |
35 | if(i > 200) i = 200; |
34 | if(i > 200) i = 200; |
36 | Strom = (i + Strom * 7) / 8; |
35 | Strom = (i + Strom * 7) / 8; |
37 | if (Strom_max < Strom) Strom_max = Strom; |
36 | if (Strom_max < Strom) Strom_max = Strom; |
38 | ADCSRA = 0x00; |
37 | ADCSRA = 0x00; |
39 | SFIOR = 0x08; // Analog Comperator ein |
38 | SFIOR = 0x08; // Analog Comperator ein |
40 | } |
39 | } |