Subversion Repositories BL-Ctrl

Rev

Rev 78 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 ingob 1
/*############################################################################
2
 
3
############################################################################*/
4
 
5
#include "main.h"
6
 
7
//############################################################################
8
//Init ADC
9
void ADC_Init(void)
10
//############################################################################
11
{
12
  ADCSRA = 0xA6;  // Free Run & 1MHZ
73 hbuss 13
  ADMUX = 7 | IntRef;      // Kanal 7
1 ingob 14
  ADCSRA |= 0x40; // Start
15
}
16
 
17
//############################################################################
18
//Strom Analogwerte lesen
19
void AdConvert(void)
20
//############################################################################
21
{
22
 unsigned int i=0;  
23
 unsigned char sense;
24
  sense = ADMUX;   // Sense-Kanal merken
73 hbuss 25
  ADMUX  =  0x06 | IntRef;  // Kanal 6
1 ingob 26
  SFIOR  =  0x00;  // Analog Comperator aus
27
  ADCSRA =  0xD3;  // Converter ein, single
28
  ADCSRA |= 0x10;  // Ready löschen
73 hbuss 29
  ADMUX  =  0x06 | IntRef;  // Kanal 6
1 ingob 30
  ADCSRA |= 0x40;  // Start
31
  while (((ADCSRA & 0x10) == 0));
32
  ADMUX = sense;   // zurück auf den Sense-Kanal
33
  i = ADCW * 4;
58 hbuss 34
//  if(i > 300) i = 300;
1 ingob 35
  Strom = (i + Strom * 7) / 8;
36
  if (Strom_max < Strom) Strom_max = Strom;
37
  ADCSRA = 0x00;  
38
  SFIOR = 0x08;  // Analog Comperator ein
39
}
40
 
50 holgerb 41
 
51 holgerb 42
 
50 holgerb 43
//############################################################################
44
//Strom Analogwerte lesen
51 holgerb 45
unsigned int MessAD(unsigned char channel)
50 holgerb 46
//############################################################################
47
{
48
 unsigned char sense;
49
  sense = ADMUX;   // Sense-Kanal merken
73 hbuss 50
  channel |= IntRef;
51 holgerb 51
  ADMUX  =  channel;  // Kanal 6
50 holgerb 52
  SFIOR  =  0x00;  // Analog Comperator aus
53
  ADCSRA =  0xD3;  // Converter ein, single
54
  ADCSRA |= 0x10;  // Ready löschen
51 holgerb 55
  ADMUX  =  channel;  // Kanal 6
50 holgerb 56
  ADCSRA |= 0x40;  // Start
57
  while (((ADCSRA & 0x10) == 0));
58
  ADMUX = sense;   // zurück auf den Sense-Kanal
51 holgerb 59
  ADCSRA = 0x00;  
60
  SFIOR = 0x08;  // Analog Comperator ein
61
return(ADCW);
62
}
63
 
64
//############################################################################
65
//Strom Analogwerte lesen
66
void FastADConvert(void)
67
//############################################################################
68
{
69
 unsigned int i=0;  
70
  i = MessAD(6) * 4;
71
//  i = ADCW * 4;
50 holgerb 72
  if(i > 200) i = 200;
73
  Strom = i;//(i + Strom * 1) / 2; 
74
  if (Strom_max < Strom) Strom_max = Strom;
75
  ADCSRA = 0x00;  
76
  SFIOR = 0x08;  // Analog Comperator ein
77
}