void StartReadRom() {
owbuf[0] = CMD_ROM;
nwrite = 1;
nread = 8;
ow_start();
}
|
#define OW_OUTPUT (LPC_GPIO0->DIR |= (1 << OW_PIN)) #define OW_INPUT (LPC_GPIO0->DIR &= ~(1 << OW_PIN)) #define OW_LOW (LPC_GPIO0->CLR = 1 << OW_PIN) #define OW_HIGH (LPC_GPIO0->SET = (1 << OW_PIN)) #define OW_SENSE (LPC_GPIO0->PIN & (1 << OW_PIN)) |
__task void pdoTask (void) // on of the RTOS tasks
{
...
for(;;)
{
os_dly_wait (delay);
ow_read_temp(&temperature, NULL);
...
}
...
}
...
int main (void)
{
...
LPC_IOCON->R_PIO0_11 = (1<<0);
ow_init();
ow_find_devices();
...
os_sys_init(init); // RTOS call
}
|
#define SENSORS 3
RomType t_sensor[SENSORS];
unsigned short t_val; //temperature value
short temperature[SENSORS]; //temperature *10 (to avoid float)
unsigned char result=0; //result
volatile unsigned int msTicks; //ms counter
unsigned char sensor_counter; //counter for sensor loop
void SysTick_Handler(void) //Interrupt handler
{
msTicks++;
}
int main(void)
{
...
SysTick_Config(SystemCoreClock / 1000);//SysTick Timer 1 msec interrupts
UARTInit(115200); //uart init 115k
printf("LPC11_DS18S20 Init..."__DATE__" "__TIME__"\n");
ow_init(); //init ow
ow_find_devices(); //find devices and show 64-Bit Serial Code
printf("...done\n");
t_sensor[0].l = 0xe900080225bd2a10ull; //64-Bit Serial Code sensor #1
t_sensor[1].l = 0x8c00080225dbb910ull; //64-Bit Serial Code sensor #2
t_sensor[2].l = 0x9200080225f7ff10ull; //64-Bit Serial Code sensor #3
...
while(1)
{ //loop
...
//read sensors
for(sensor_counter=0;sensor_counter<SENSORS;sensor_counter++)
{
if(ow_read_temp(&t_val,&t_sensor[sensor_counter]))
{
printf("Error Sensor %d\n",(sensor_counter+1));
}
else
{
temperature[sensor_counter] = (t_val *5); //read uint to int
printf("Temperature #%d: %d\n",sensor_counter+1,temperature[sensor_counter]);
}
} //end sensor loop
...
} //end loop
return 0 ;
}
|