1 | if (PINA & (1<<IN_ANFORDERUNG))
|
2 | {
|
3 | testheizen=0;
|
4 | if (testheizenaus<10)
|
5 | {
|
6 | testheizenaus++;
|
7 | }
|
8 | else
|
9 | {
|
10 | anforderung = FALSE;
|
11 | }
|
12 | }
|
13 | else
|
14 | {
|
15 | testheizenaus=0;
|
16 | if (testheizen<10)
|
17 | {
|
18 | testheizen++;
|
19 | }
|
20 | else
|
21 | {
|
22 | anforderung = TRUE;
|
23 | }
|
24 | }
|
25 | if (!anforderung||reset_Mischer)
|
26 | {
|
27 |
|
28 | if (!einmal)
|
29 | {
|
30 | if (!reset_Mischer )
|
31 | {
|
32 | resetzeit = INIT_ZEIT;
|
33 | PORTA |= (1<<OUT_MISCHER_AUF);// sicherstellen das nicht geöffnet wird!
|
34 | PORTA &= ~(1<<OUT_MISCHER_ZU);
|
35 | reset_Mischer =TRUE;
|
36 | }
|
37 | if( (resetzeit==0)&&(reset_Mischer) )
|
38 | {
|
39 | PORTA |= (1<<OUT_MISCHER_ZU);
|
40 | state=0;
|
41 | reset_Mischer = FALSE;
|
42 | einmal = TRUE;
|
43 | }
|
44 | }
|
45 | PORTA |= (1<< OUT_PUMPE);
|
46 | heizen = FALSE;
|
47 | }
|
48 | else
|
49 | {
|
50 | einmal = FALSE;
|
51 | heizen = TRUE;
|
52 | }
|
53 |
|
54 |
|
55 |
|
56 |
|
57 | if (heizen) // Anforderung Raumtermostate
|
58 | {
|
59 | switch(state)
|
60 | {
|
61 | case 0:
|
62 | {
|
63 | if ( !(umwaelzen) ) // es wird nich nicht umgewälzt
|
64 | {
|
65 | umwaelzen = TRUE;
|
66 | umwelzzeit = MENU_VARIABLE[VorUmwaelzzeit];
|
67 | PORTA &= ~(1<<OUT_PUMPE);
|
68 | printf_P(buffer,"Umwälzen für%2i Sekunden\n\r",umwelzzeit);
|
69 | uart_puts(buffer);
|
70 |
|
71 | }
|
72 | if ( (umwelzzeit==0)&&(umwaelzen) )
|
73 | {
|
74 | umwaelzen = FALSE;
|
75 | PORTA |= (1<<OUT_PUMPE);
|
76 | state = 1;
|
77 | }
|
78 | break;
|
79 | }
|
80 | case 1:
|
81 | {
|
82 | //PORTA &= ~(1<<OUT_PUMPE);
|
83 | if(Temp_array[VORLAUF]< (MENU_VARIABLE[SollTempVorlauf]-MENU_VARIABLE[Hysterese]))
|
84 | {
|
85 | if ( !(move_mischer) )
|
86 | {
|
87 | move_mischer = TRUE;
|
88 | regelzeit = MENU_VARIABLE[Regelzeit_Auf];
|
89 | PORTA |= (1<<OUT_MISCHER_ZU);// sicherstellen das nicht geschloßen wird!
|
90 | PORTA &= ~(1<<OUT_MISCHER_AUF);
|
91 | }
|
92 | if( (regelzeit==0)&&(move_mischer) )
|
93 | {
|
94 | move_mischer = FALSE;
|
95 | PORTA |= (1<<OUT_MISCHER_AUF);
|
96 | state = 2;
|
97 | }
|
98 | }
|
99 | else if (Temp_array[VORLAUF]> (MENU_VARIABLE[SollTempVorlauf]+MENU_VARIABLE[Hysterese]))
|
100 | {
|
101 | if ( !(move_mischer) )
|
102 | {
|
103 | move_mischer = TRUE;
|
104 | regelzeit = MENU_VARIABLE[Regelzeit_Zu];
|
105 | PORTA |= (1<<OUT_MISCHER_AUF);// sicherstellen das nicht geöffnet wird!
|
106 | PORTA &= ~(1<<OUT_MISCHER_ZU);
|
107 | }
|
108 | if ( (regelzeit==0)&&(move_mischer) )
|
109 | {
|
110 | move_mischer = FALSE;
|
111 | PORTA |= (1<<OUT_MISCHER_ZU);
|
112 | state = 2;
|
113 | }
|
114 | }
|
115 | else
|
116 | {
|
117 | state=2;
|
118 | }
|
119 | break;
|
120 | }
|
121 | case 2:
|
122 | {
|
123 | //PORTA &= ~(1<<OUT_PUMPE);
|
124 | if(! (delayreaktion) )
|
125 | {
|
126 | delayreaktion = TRUE;
|
127 | regelzeit = MENU_VARIABLE[Regelintervall];
|
128 | }
|
129 | if( (regelzeit ==0)&&(delayreaktion) )
|
130 | {
|
131 | delayreaktion =FALSE;
|
132 | state =1;
|
133 | }
|
134 | break;
|
135 | }
|
136 | }
|
137 | if (!(umwaelzen))
|
138 | {
|
139 | if (Temp_array[PUFFER]>(MENU_VARIABLE[PufferMinTemp])) // Kontrolle Temperatur Puffer!
|
140 | {
|
141 | PORTA &= ~(1<<OUT_PUMPE);
|
142 | puffertemp_to_lo = FALSE;
|
143 | }
|
144 | else if(Temp_array[PUFFER]<((MENU_VARIABLE[PufferMinTemp])-2))
|
145 | {
|
146 |
|
147 | PORTA |= (1<<OUT_PUMPE);
|
148 | puffertemp_to_lo = TRUE;
|
149 | }
|
150 | }
|
151 | }
|
152 | else // Keine Heizungs anforderung!
|
153 | {
|
154 | state=0;
|
155 | PORTA |= (1<< OUT_PUMPE);
|
156 | }
|
157 | ISR (TIMER0_OVF_vect) // every 1ms
|
158 | {
|
159 | TCNT0 = (unsigned char)(signed short)-(F_CPU / 1024 * 10e-4 + 0.5); // preload for 1mer
|
160 | encoder();
|
161 | prellhelp--;
|
162 | if (prellhelp == 0)
|
163 | {
|
164 | prellhelp=10;
|
165 | entprell();
|
166 | }
|
167 | runtimer--;
|
168 | if (runtimer == 0)
|
169 | {
|
170 | runtimer = runperiod;
|
171 | PORTD ^= 1<<7;
|
172 |
|
173 | }
|
174 | sec--;
|
175 | if (sec == 0)
|
176 | {
|
177 | toggle++;
|
178 | sec = SEC;
|
179 | if (umwelzzeit!=0)umwelzzeit--;
|
180 | if (regelzeit!=0)regelzeit--;
|
181 | if (resetzeit!=0)resetzeit--;
|
182 | }
|