adc.c


1
*******************************************************************************/
2
3
// Einbinden von bestehenden Modulen
4
#include <avr/io.h>        // ATtiny45 Register
5
6
//------------------------------------------------------------------------------
7
// Makros 
8
9
#define BitSet(Register, Bit) Register = (Register | (0x01 << Bit))    
10
#define BitClr(Register, Bit) Register = (Register & (0X01 << Bit))
11
#define BitCom(Register, Bit) Register = (Register ^ (0x01 << Bit))
12
#define BitTst(Register, Bit) Register = (Register & (0x01 << Bit))
13
14
uint16_t adwert;
15
int adwertL;
16
int adwertH;
17
18
19
//------------------------------------------------------------------------------
20
// Funktionen
21
void SysInit(void){                      //Funktion Systeminitialisierung
22
  DDRB = 0x14;                      //Pin als Ein- und Ausgänge definieren
23
  
24
  ADMUX = 0x23;                      //Interne Referenzspannung / ADC3 einschalten
25
  ADCSRA = 0xCE;                      //ADC-Enable/Free-running/Interrupt enable/Chanel 3
26
  adwert=0;
27
  counter=0;
28
  adwertL=0;
29
  adwertH=0;
30
}
31
32
33
void adwandler(void){                      //ADC Werte Register auwerten
34
  if((BitTst(ADCSRA,4)) != 0){
35
    adwertL = ADCL;
36
    adwertH = ADCH;
37
    adwert = ((adwertH << 8) + adwertL);
38
    BitSet(ADCSRA,4);
39
  }
40
}
41
void leuchten(void){
42
  if(adwert <= 500){
43
    BitSet(PORTB,2);
44
  }
45
  if((adwert > 500) && (adwert <= 1023)){
46
    BitClr(PORTB,2);
47
  }
48
}
49
50
51
//------------------------------------------------------------------------------
52
// Hauptfunktion (wird beim Start ausgeführt) 
53
int main(void){
54
    SysInit();                      //Funktion Systeminitialisierung
55
    while(1){                      //Endlosschlaufe
56
      adwandler();                    //Funktion AD-Wandler
57
      leuchten();                    //Funktion optische augabe
58
    }
59
return 0;
60
}
61
//------------------------------------------------------------------------------