-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.c
124 lines (106 loc) · 2.67 KB
/
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <stdint.h>
#include <inttypes.h>
#include <stdarg.h>
#include "board.h"
#include "uart.h"
#include "ownet.h"
#include "findtype.h"
#include "temp42.h"
#include "eep43.h"
#define MAXDEVICES 10
#define ONEWIRE_PORT 0
void _irq_entry(void) {}
void DisplaySerialNum(uchar sn[8]);
void msDelay(int msecs) {
int i;
for(i = msecs * CPU_CLOCK/4; i > 0; i--)
asm("# noop");
}
void scu_init()
{
uchar FamilySN[MAXDEVICES][8];
int current_temp;
int c_frac;
int i = 0;
int j = 0;
int cnt = 0;
int NumDevices = 0;
SMALLINT didRead = 0;
uchar read_buffer[32];
uchar write_buffer[32];
owInit();
uart_init();
uart_write_string("SCU\n");
//use port number for 1-wire
uchar portnum = ONEWIRE_PORT;
j = 0;
// Find the device(s)
NumDevices = 0;
NumDevices += FindDevices(portnum, &FamilySN[NumDevices], 0x42, MAXDEVICES-NumDevices);
NumDevices += FindDevices(portnum, &FamilySN[NumDevices], 0x20, MAXDEVICES-NumDevices);
NumDevices += FindDevices(portnum, &FamilySN[NumDevices], 0x43, MAXDEVICES-NumDevices);
if (NumDevices)
{
mprintf("\r\n");
// read the temperature and print serial number and temperature
for (i = NumDevices; i; i--)
{
mprintf("(%d) ", j++);
DisplaySerialNum(FamilySN[i-1]);
if (FamilySN[i-1][0] == 0x43) {
// if(!Write43(portnum, FamilySN[i-1], write_buffer))
// mprintf("write failed!\n");
owLevel(portnum, MODE_NORMAL);
if (ReadMem43(portnum, FamilySN[i-1], read_buffer))
{
for(cnt = 0; cnt < 32; cnt++)
{
mprintf("read_buffer[%x]: %x\n",cnt, read_buffer[cnt]);
}
}
continue;
}
if (FamilySN[i-1][0] == 0x42) {
didRead = ReadTemperature42(portnum, FamilySN[i-1],¤t_temp,&c_frac);
}
if (didRead)
{
mprintf(" %d",current_temp);
if (c_frac)
mprintf(".5");
else
mprintf(".0");
mprintf(" deegree celsius\r\n");
}
else
{
mprintf(" Convert failed. Device is");
if(!owVerify(portnum, FALSE))
mprintf(" not");
mprintf(" present.\r\n");
#ifdef SOCKIT_OWM_ERR_ENABLE
while(owHasErrors())
mprintf(" - Error %d\r\n", owGetErrorNum());
#endif
}
}
}
else
mprintf("No temperature devices found!\r\n");
}
// -------------------------------------------------------------------------------
// Read and print the serial number.
//
void DisplaySerialNum(uchar sn[8])
{
int i;
for (i = 7; i>=1; i--)
mprintf("%x:", (int)sn[i]);
mprintf("%x", (int)sn[0]);
}
int main(void)
{
scu_init();
while(1) {
}
}