Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Datasheet: http://ww1.microchip.com/downloads/en/devicedoc/21935a.pdf */
- void main(void){
- setup_init();
- lcd_init();
- tcn75_init();
- stdout = _H_USER; // Set STDOUT to user defined function
- while(1){
- lcd_set_cursor(2, 1);
- printf("%4d", read_tcn75());
- Delay10KTCYx(200); // Delay
- }
- }
- int read_tcn75(void){
- // int data;
- short msb, lsb;
- SWStartI2C(); // Start
- SWPutcI2C(0x90); // Address byte (write)
- SWAckI2C();
- SWPutcI2C(0x00); // Pointer (temp)
- SWAckI2C();
- SWRestartI2C(); // Restart
- SWPutcI2C(0x91); // Address byte (read)
- SWAckI2C();
- msb = SWGetcI2C(); // Get MSB
- SWAckI2C();
- lsb = SWGetcI2C(); // Get LSB
- SWNotAckI2C();
- SWStopI2C(); // Stop
- // data = lsb | (msb << 8);
- return lsb; // Always returns 255, MSB is returned as expected
- }
- void tcn75_init(void){
- /*
- 00 - temp
- 01 - config (0x60)
- 10 - hyst
- 11 - temp limit
- */
- SWStartI2C(); // Start
- SWPutcI2C(0x90); // Address byte (write)
- SWAckI2C();
- SWPutcI2C(0x01); // Pointer (config)
- SWAckI2C();
- SWPutcI2C(0x60); // Data (12bit A/D conversion)
- SWAckI2C();
- SWStopI2C(); // Stop
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement