?lang_form?
?lang_select?
?lang_submit?
?lang_endform?
{HEADER END}
{FILE START}
library
?curdirlinks? - Rev 6
?prevdifflink? - Blame - ?getfile?
//*****************************************************************************
// File Name : ds1631test.c
//
// Title : example usage of DS1631 library functions
// Revision : 1.0
// Notes :
// Target MCU : Atmel AVR series
// Editor Tabs : 4
//
// Revision History:
// When Who Description of change
// ----------- ----------- -----------------------
// 20-Feb-2004 pstang Created the program
//*****************************************************************************
//----- Include Files ---------------------------------------------------------
#include <avr/io.h> // include I/O definitions (port names, pin names, etc)
#include <avr/interrupt.h> // include interrupt support
#include "global.h" // include our global settings
#include "uart.h" // include uart function library
#include "rprintf.h" // include printf function library
#include "timer.h" // include timer function library (timing, PWM, etc)
#include "vt100.h" // include VT100 terminal support
#include "i2c.h" // include i2c support
#include "ds1631.h" // include DS1631 support
void ds1631test(void);
//----- Begin Code ------------------------------------------------------------
int main(void)
{
// initialize our libraries
// initialize the UART (serial port)
uartInit();
uartSetBaudRate(115200);
// make all rprintf statements use uart for output
rprintfInit(uartSendByte);
// initialize the timer system
timerInit();
// clear terminal screen
vt100ClearScreen();
vt100SetCursorPos(1,1);
// print a little intro message so we know things are working
rprintf("\r\nWelcome to DS6131 test!\r\n");
// run tests
ds1631test();
return 0;
}
void ds1631test(void)
{
s16 T=0;
// initialize i2c function library
i2cInit();
i2cSetBitrate(100);
// initialize
if(ds1631Init(DS1631_I2C_ADDR))
{
rprintf("DS1631 detected and initialized!\r\n");
}
else
{
rprintf("Cannot detect DS1631!\r\n");
return;
}
// set config
ds1631SetConfig(DS1631_I2C_ADDR, 0x0F);
// set the temperature limit registers
ds1631SetTH(DS1631_I2C_ADDR, 35<<8);
ds1631SetTL(DS1631_I2C_ADDR, 30<<8);
// read them back for verification
rprintf("TH is set to: %d\r\n",ds1631GetTH(DS1631_I2C_ADDR)>>8);
rprintf("TL is set to: %d\r\n",ds1631GetTL(DS1631_I2C_ADDR)>>8);
while(1)
{
// start convert
ds1631StartConvert(DS1631_I2C_ADDR);
// wait until done
// this works but seems to take forever (5-10 seconds)
//while(!(ds1631GetConfig(DS1631_I2C_ADDR) & DS1631_CONFIG_DONE));
// 12-bit conversion are only suppored to take this long
timerPause(750);
// read temp
T = ds1631ReadTemp(DS1631_I2C_ADDR);
// Print the raw temperature reading
rprintf("Raw Temp: %d ", T);
// Print the formatted temperature reading
rprintf("Real Temp is: ");
rprintfNum(10, 4, TRUE , ' ', T>>8);
rprintf(".");
rprintfNum(10, 4, FALSE, '0', (10000*((u32)(T&0x00FF)))/256 );
rprintf(" degrees C\r\n");
timerPause(50);
}
}
|
{FILE END}
{FOOTER START}
Powered by WebSVN v2.8.3