Guest User

TCN75A Code

a guest
Aug 24th, 2011
224
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Datasheet: http://ww1.microchip.com/downloads/en/devicedoc/21935a.pdf */
  2.  
  3. void main(void){
  4.  
  5.     setup_init();
  6.     lcd_init();
  7.     tcn75_init();
  8.  
  9.     stdout = _H_USER;               // Set STDOUT to user defined function
  10.  
  11.     while(1){      
  12.  
  13.         lcd_set_cursor(2, 1);  
  14.         printf("%4d", read_tcn75());
  15.  
  16.         Delay10KTCYx(200);          // Delay
  17.     }
  18.  
  19. }
  20.  
  21. int read_tcn75(void){
  22.     // int data;
  23.     short msb, lsb;
  24.  
  25.     SWStartI2C();               // Start
  26.     SWPutcI2C(0x90);            // Address byte (write)
  27.     SWAckI2C();
  28.     SWPutcI2C(0x00);            // Pointer (temp)
  29.     SWAckI2C();
  30.     SWRestartI2C();             // Restart
  31.  
  32.     SWPutcI2C(0x91);            // Address byte (read)
  33.     SWAckI2C();
  34.     msb = SWGetcI2C();          // Get MSB
  35.     SWAckI2C();
  36.     lsb = SWGetcI2C();          // Get LSB
  37.     SWNotAckI2C();
  38.  
  39.     SWStopI2C();                // Stop
  40.    
  41.     // data = lsb | (msb << 8);
  42.     return lsb;             // Always returns 255, MSB is returned as expected
  43. }
  44.  
  45. void tcn75_init(void){
  46. /*
  47. 00 - temp
  48. 01 - config (0x60)
  49. 10 - hyst
  50. 11 - temp limit
  51. */
  52.  
  53.     SWStartI2C();               // Start
  54.     SWPutcI2C(0x90);            // Address byte (write)
  55.     SWAckI2C();
  56.     SWPutcI2C(0x01);            // Pointer (config)
  57.     SWAckI2C();
  58.     SWPutcI2C(0x60);            // Data (12bit A/D conversion)
  59.     SWAckI2C();
  60.     SWStopI2C();                // Stop
  61. }
RAW Paste Data