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 | //------------------------------------------------------------------------------
|