1 | #include <avr/io.h>
|
2 | #include <stdint.h>
|
3 | #include <stdlib.h>
|
4 | #include <util/delay.h>
|
5 | #include <avr/interrupt.h>
|
6 | #define F_CPU 4000000UL
|
7 |
|
8 |
|
9 | unsigned int pump=0;
|
10 |
|
11 | ISR(TIMER1_COMP1_vect)
|
12 | {
|
13 | pump=1;
|
14 | }
|
15 |
|
16 | int main(void)
|
17 | {
|
18 | DDRD=0x01; //Ausgang
|
19 | DDRB=0x00; //Eingang
|
20 | TIMSK|=(1<<OCIE1A); //Timer compare Interrupt enable
|
21 | TCCR1B=(1<<CTC1)|(1<<CS12)|(1<<CS11)|(1<<CS10); //Timer1 automatisch rücksetzten, CLK extern steigende Flanke
|
22 |
|
23 | unsigned int vorwahl;
|
24 |
|
25 | vorwahl=PINB; //Vorgewählte Stufe
|
26 |
|
27 | if(vorwahl==0)
|
28 | {
|
29 | OCR1AH=208;
|
30 | OCR1AL=7; //2000 Umdrehungen = ca.4000m
|
31 |
|
32 | }
|
33 | else if(vorwahl==1)
|
34 | {
|
35 | OCR1AH=202;
|
36 | OCR1AL=8; //2250 Umdrehungen = ca.4500m
|
37 |
|
38 | }
|
39 | else if(vorwahl==2)
|
40 | {
|
41 | OCR1AH=196;
|
42 | OCR1AL=9; //2500 Umdrehungen = ca.5000m
|
43 |
|
44 | }
|
45 | else if(vorwahl==3)
|
46 | {
|
47 | OCR1AH=190;
|
48 | OCR1AL=10; //2750 Umdrehungen = ca.5500m
|
49 |
|
50 | }
|
51 | else if(vorwahl==4)
|
52 | {
|
53 | OCR1AH=11;
|
54 | OCR1AL=184; //3000 Umdrehungen = ca.6000m
|
55 |
|
56 | }
|
57 | else if(vorwahl==5)
|
58 | {
|
59 | OCR1AH=12;
|
60 | OCR1AL=178; //3250 Umdrehungen = ca.6500m
|
61 |
|
62 | }
|
63 | else if(vorwahl==6)
|
64 | {
|
65 | OCR1AH=13;
|
66 | OCR1AL=172; //3500 Umdrehungen = ca.7000m
|
67 |
|
68 | }
|
69 | else if(vorwahl==7)
|
70 | {
|
71 | OCR1AH=29;
|
72 | OCR1AL=166; //3750 Umdrehungen = ca.7500m
|
73 |
|
74 | }
|
75 | else if(vorwahl==8)
|
76 | {
|
77 | PORTD|=(1<<PB0); //diehnt als überprüfung ob die else If Anweisungen durchlaufen werden
|
78 | OCR1AH=15;
|
79 | OCR1AL=160; //4000 Umdrehungen = ca.8000m
|
80 |
|
81 | }
|
82 | else if(vorwahl==9)
|
83 | {
|
84 | OCR1AH=0;
|
85 | OCR1AL=20; //Test
|
86 |
|
87 | }
|
88 | SREG|=(1<<7);
|
89 | //sei();
|
90 |
|
91 | while(1)
|
92 | {
|
93 | if(pump==1)
|
94 | {
|
95 | PORTD|=(1<<PB0);
|
96 | //_delay_ms(250);
|
97 | //PORTD|=(0<<PB0);
|
98 | pump=0;
|
99 | }
|
100 | }
|
101 |
|
102 | }
|