APS Lab
/
mbed-os-cog-adt7420
Test
main.cpp
- Committer:
- APS_Lab
- Date:
- 2019-05-14
- Revision:
- 1:b7f576b50a32
- Parent:
- 0:00acc05bf822
File content as of revision 1:b7f576b50a32:
/* mbed Microcontroller Library * Copyright (c) 2018 ARM Limited * SPDX-License-Identifier: Apache-2.0 */ #include "mbed.h" #include "stats_report.h" #define ADT7420 0x48 #define RESET_REG 0x2F #define TEMP_REG 0x00 #define ID_REG 0x0B DigitalOut led1(LED1); DigitalOut sensor(D8); I2C Myi2c(I2C_SDA, I2C_SCL); Serial pc(USBTX, USBRX); void ADT7420_reset(void); char ADT7420_GetID(void); int ADT7420_GetTemp(void); int main() { float status; int res; sensor=1; //configure for UART pc.baud(115200); pc.printf("I2C ADT7420 Demo\n"); //configure for I2C @100KHz //Myi2c.init(); Myi2c.frequency(10000); //configure for ADT7420 Myi2c.lock(); pc.printf("[RESET ] ADT7420\n"); ADT7420_reset(); wait(0.5); pc.printf("[CHECK ID] ADT7420\n"); ADT7420_GetID(); while (true) { led1 = 0; pc.printf("[Get Temp] ADT7420\n"); res = ADT7420_GetTemp(); if(res & 0x1000) { status = (float)(res * 0.0625 * -1.0); } else { status = (float)(res * 0.0625); } pc.printf("Current Temp %.4f C\n", status); wait(0.5); led1 = 1; wait(0.5); } } void ADT7420_reset(void) { char cmd_reset; cmd_reset = RESET_REG; Myi2c.write(ADT7420); if(Myi2c.write(0xFF)) { pc.printf("Ack \n"); } else { pc.printf("Nack \n"); } Myi2c.write(ADT7420); if(Myi2c.write(cmd_reset)) { pc.printf("Reset Done\n"); } else { pc.printf("Reset Failure\n"); } } char ADT7420_GetID(void) { char cmd_id, read_val; int sts; cmd_id=ID_REG; //Myi2c.write(ADT7420, &cmd_id, 1, 0); sts = Myi2c.read(ADT7420, &cmd_id, 1, 0); if(sts==0) { pc.printf("ID ACK\n"); } else { pc.printf("ID NACK\n"); pc.printf("Return Value STS %d \n", sts); } Myi2c.stop(); pc.printf("ID REG %02x\n", cmd_id); return cmd_id; } int ADT7420_GetTemp(void) { char cmd_temp[1], read_val[2]; int temp=0; cmd_temp[0]=TEMP_REG; Myi2c.start(); Myi2c.write(ADT7420, cmd_temp, 2); wait(0.2); Myi2c.read(ADT7420, read_val, 3); pc.printf("Temp Upper %02x\n", read_val[0]); pc.printf("Temp Lower %02x\n", read_val[1]); temp = (int)((read_val[0] << 8) | read_val[1]); temp >>= 3; return temp; }