Hallo,
bin gerade mit einem kleinen Projekt beschäftigt, bei welchem das
auslesen und anzeigen diverser Temperaturen eine Teilaufgabe ist.
Habe es schon geschafft die Temperatur vom LM75 auszulesen und
anzuzeigen, allerdings wollte ich den vorhandenen Code etwas umändern
und für zukünftige Projekte komfortabler schreiben.
Habe hierfür eine Header und Code Datei erstellt.
1 | /******************************************************************************
|
2 | * File: lm75.h Date: 30.11.2015 *
|
3 | * *
|
4 | * Version: 01 *
|
5 | ******************************************************************************/
|
6 |
|
7 |
|
8 | #include <avr/io.h>
|
9 | #include <stdint.h>
|
10 | #include <stdlib.h>
|
11 | #include "i2cmaster.h"
|
12 | #include "lcd.h"
|
13 |
|
14 | #define LM75R 0b10010100 /* write address - RoomTemp */
|
15 | #define LM75W 0b10010010 /* write address - WaterTemp */
|
16 |
|
17 |
|
18 |
|
19 | /* buffers */
|
20 |
|
21 | char BufferR[9]; /* Buffer for room value converting */
|
22 | char BufferW[9]; /* Buffer for water value converting */
|
23 |
|
24 |
|
25 |
|
26 | /* structures */
|
27 |
|
28 |
|
29 | struct str_temp
|
30 |
|
31 | {
|
32 | int8_t tempH;
|
33 | uint8_t tempL;
|
34 | }room, water;
|
35 |
|
36 |
|
37 |
|
38 | /* LM75 functions */
|
39 |
|
40 |
|
41 | void read_roomtemp(struct str_temp* room); /* read the room temperature */
|
42 |
|
43 | void read_watertemp(struct str_temp* water); /* read the water temperature */
|
44 |
|
45 | void show_roomtemp(struct str_temp* room); /* display the room temperature */
|
46 |
|
47 | void show_watertemp(struct str_temp* water); /* display the water temperature */
|
1 | /******************************************************************************
|
2 | * File: lm75.c Date: 30.11.2015 *
|
3 | * *
|
4 | * Version: 01 *
|
5 | *******************************************************************************
|
6 | * *
|
7 | * Author: *
|
8 | * Controller: ATmega32 *
|
9 | * Description: *
|
10 | * *
|
11 | *******************************************************************************
|
12 | * Changes: *
|
13 | * *
|
14 | ******************************************************************************/
|
15 |
|
16 |
|
17 | #include "lm75.h"
|
18 |
|
19 |
|
20 |
|
21 | /* LM75 functions */
|
22 |
|
23 |
|
24 | void read_roomtemp(struct str_temp* room)
|
25 |
|
26 | {
|
27 | i2c_start(LM75R+I2C_READ);
|
28 | room->tempH = i2c_readAck;
|
29 | room->tempL = i2c_readNak;
|
30 | i2c_stop();
|
31 | }
|
32 |
|
33 |
|
34 | void read_watertemp(struct str_temp* water)
|
35 |
|
36 | {
|
37 | i2c_start(LM75W+I2C_READ);
|
38 | water->tempH = i2c_readAck;
|
39 | water->tempL = i2c_readNak;
|
40 | i2c_stop();
|
41 | }
|
42 |
|
43 |
|
44 | void show_roomtemp(struct str_temp* room)
|
45 |
|
46 | {
|
47 | lcd_puts("+");
|
48 | itoa(room->tempH, BufferR, 10);
|
49 | lcd_puts(BufferR);
|
50 | lcd_puts(".");
|
51 |
|
52 | if(room->tempL >= 128)
|
53 | {
|
54 | lcd_puts("5");
|
55 | }
|
56 |
|
57 | else
|
58 | {
|
59 | lcd_puts("0");
|
60 | }
|
61 |
|
62 | lcd_putc(0b11011111);
|
63 | lcd_puts("C");
|
64 | }
|
65 |
|
66 |
|
67 | void show_watertemp(struct str_temp* water)
|
68 |
|
69 | {
|
70 | lcd_puts("+");
|
71 | itoa(water->tempH, BufferW, 10);
|
72 | lcd_puts(BufferW);
|
73 | lcd_puts(".");
|
74 |
|
75 | if(water->tempL >= 128)
|
76 | {
|
77 | lcd_puts("5");
|
78 | }
|
79 |
|
80 | else
|
81 | {
|
82 | lcd_puts("0");
|
83 | }
|
84 |
|
85 | lcd_putc(0b11011111);
|
86 | lcd_puts("C");
|
87 | }
|
Wenn ich das ganze nun aber compiliere, werden mir 4 Warnungen
ausgegeben:
../lm75.c:XX: warning: assignment makes integer from pointer without a
cast
Diese Warnungen werden an den Stellen generiert, wo ich versuche die
Werte vom LM75 mittels Strukturpointer abzuspeichern.
Konnte im Netz zwar diverse Dinge finden, hat mir allerdings nicht
wirklich geholfen.
Hoffe hier kann mir eventuell jemand helfen. Finde den Fehler leider
nicht selber.
Liebe Grüße
Manuel