1 | //***************************************************************
|
2 | uint16_t overflow =0;
|
3 | uint16_t LED_Freq = 3125;
|
4 |
|
5 | ISR(TIMER0_OVF_vect)
|
6 | {
|
7 | if (overflow <= LED_Freq)
|
8 | {
|
9 | overflow ++;
|
10 | }
|
11 | else
|
12 | {
|
13 | PORTA ^= (1<<PA4);
|
14 | overflow =0;
|
15 | }
|
16 | }
|
17 | //***************************************************************
|
18 |
|
19 |
|
20 | int main (void)
|
21 | {
|
22 | uart_init();
|
23 | I2C_Init(F_SCL);
|
24 |
|
25 | lcd_init(Display_1);
|
26 | lcd_init(Display_2);
|
27 |
|
28 | lcd_light(Display_1, true);
|
29 | lcd_light(Display_2, true);
|
30 |
|
31 | //******** Timer 0 für Funktion des IC's Laufes**********************
|
32 | TIMSK |= (1<<TOIE0); //Overflow Interrupt aktivieren
|
33 | TCCR0 |= (1<<CS01); // Prescaler auf 1 setzen, Takt = 8MHz
|
34 | sei();
|
35 |
|
36 |
|
37 | /***Search Tempsensor*********************************************************************************************************************/
|
38 | Dallas_suchen_an();
|
39 | /***Search Tempsensor end*****************************************************************************************************************/
|
40 | /***Feste Seriennummer********************************************************************************************************************/
|
41 | int zaehler = 2;
|
42 | for (int e = 0; e <8; e++)
|
43 | {
|
44 | Tempfuehler1[e] = FeuhlerArray[1][zaehler+1];
|
45 | Tempfuehler2[e] = FeuhlerArray[2][zaehler+1];
|
46 | Tempfuehler3[e] = FeuhlerArray[3][zaehler+1];
|
47 | Tempfuehler4[e] = FeuhlerArray[4][zaehler+1];
|
48 | Tempfuehler5[e] = FeuhlerArray[5][zaehler+1];
|
49 | Tempfuehler6[e] = FeuhlerArray[6][zaehler+1];
|
50 | Tempfuehler7[e] = FeuhlerArray[7][zaehler+1];
|
51 | Tempfuehler8[e] = FeuhlerArray[8][zaehler+1];
|
52 | Tempfuehler9[e] = FeuhlerArray[9][zaehler+1];
|
53 | Tempfuehler10[e] = FeuhlerArray[10][zaehler+1];
|
54 | Tempfuehler11[e] = FeuhlerArray[11][zaehler+1];
|
55 | Tempfuehler12[e] = FeuhlerArray[12][zaehler+1];
|
56 | Tempfuehler13[e] = FeuhlerArray[13][zaehler+1];
|
57 | Tempfuehler14[e] = FeuhlerArray[14][zaehler+1];
|
58 | zaehler = zaehler+ 1;
|
59 | }
|
60 | /***Vergebene ID Nummer*******************************************************************************************************************/
|
61 | ID1 = FeuhlerArray[1][0];
|
62 | ID2 = FeuhlerArray[2][0];
|
63 | ID3 = FeuhlerArray[3][0];
|
64 | ID4 = FeuhlerArray[4][0];
|
65 | ID5 = FeuhlerArray[5][0];
|
66 | ID6 = FeuhlerArray[6][0];
|
67 | ID7 = FeuhlerArray[7][0];
|
68 | ID8 = FeuhlerArray[8][0];
|
69 | ID9 = FeuhlerArray[9][0];
|
70 | ID10 = FeuhlerArray[10][0];
|
71 | ID11 = FeuhlerArray[11][0];
|
72 | ID12 = FeuhlerArray[12][0];
|
73 | ID13 = FeuhlerArray[13][0];
|
74 | ID14 = FeuhlerArray[14][0];
|
75 | /*****************************************************************************************************************************************/
|
76 | /***while Schleife************************************************************************************************************************/
|
77 | uint8_t Send1, Send;
|
78 | char test =0;
|
79 |
|
80 | int FuehlerID, FuehlerArrayID;
|
81 |
|
82 | while(1)
|
83 | {
|
84 |
|
85 |
|
86 |
|
87 | /*****Ausgänge I2C-Bus setzten************************************************************************************************************/
|
88 | I2C_Start_Wait(Ausgaenge, I2C_WRITE);
|
89 | I2C_Write(test);
|
90 | I2C_Stop();
|
91 |
|
92 | /*****Ausgänge I2C-Bus setzten ende*******************************************************************************************************/
|
93 | /*****Eingänge I2C-Bus lesen**************************************************************************************************************/
|
94 |
|
95 | I2C_Start_Wait(Eingaenge, I2C_READ);
|
96 | Send1= I2C_ReadAck();
|
97 | I2C_Stop();
|
98 | /*****Eingänge I2C-Bus lesen ende*********************************************************************************************************/
|
99 |
|
100 | itoa(Send1,test,10);
|
101 | /*if (Send1 == 255)
|
102 | {
|
103 | Send1 =0;
|
104 | }
|
105 | Send1 = Send1 +1 ;
|
106 | */
|
107 |
|
108 | Bus_Reset();
|
109 | Byte_Schreiben(Skip_Rom);
|
110 | Byte_Schreiben(Convert_T);
|
111 |
|
112 | Temperatur_Messung(Temp1, Tempfuehler1, ID1);
|
113 | Temperatur_Messung(Temp1, Tempfuehler2, ID2);
|
114 | Temperatur_Messung(Temp1, Tempfuehler3, ID3);
|
115 | Temperatur_Messung(Temp1, Tempfuehler4, ID4);
|
116 | Temperatur_Messung(Temp1, Tempfuehler5, ID5);
|
117 | Temperatur_Messung(Temp1, Tempfuehler6, ID6);
|
118 | Temperatur_Messung(Temp1, Tempfuehler7, ID7);
|
119 | Temperatur_Messung(Temp1, Tempfuehler8, ID8);
|
120 | Temperatur_Messung(Temp1, Tempfuehler9, ID9);
|
121 | Temperatur_Messung(Temp_Zimmer, Tempfuehler10, ID10);
|
122 | Temperatur_Messung(Temp_Sonne, Tempfuehler11, ID11);
|
123 | Temperatur_Messung(Temp_Schatten, Tempfuehler12, ID12);
|
124 | Temperatur_Messung(Temp_Photovoltaik, Tempfuehler13, ID13);
|
125 | Temperatur_Messung(Temp1, Tempfuehler14, ID14);
|
126 |
|
127 |
|
128 | lcd_gotolc(Display_2, 1,1);
|
129 | lcd_print(Display_2, "Zimmer:");
|
130 | lcd_gotolc(Display_2, 1,12);
|
131 | lcd_print(Display_2, Temp_Zimmer);
|
132 |
|
133 | lcd_gotolc(Display_2, 2,1);
|
134 | lcd_print(Display_2, "Sonne:");
|
135 | lcd_gotolc(Display_2, 2,12);
|
136 | lcd_print(Display_2, Temp_Sonne);
|
137 |
|
138 | lcd_gotolc(Display_2, 3,1);
|
139 | lcd_print(Display_2, "Schatten:");
|
140 | lcd_gotolc(Display_2, 3,12);
|
141 | lcd_print(Display_2, Temp_Schatten);
|
142 |
|
143 | lcd_gotolc(Display_2, 4,1);
|
144 | lcd_print(Display_2, "Photo:");
|
145 | lcd_gotolc(Display_2, 4,12);
|
146 | lcd_print(Display_2, Temp_Photovoltaik);
|
147 | }
|
148 |
|
149 | }
|