Piyamate Wisanuvej / Mbed 2 deprecated NSE5310_programmer

Dependencies:   mbed

main.cpp

Committer:
piyamate
Date:
2014-05-13
Revision:
2:af09cade52df
Parent:
1:1e577b8befeb
Child:
3:1d0c09e43e22

File content as of revision 2:af09cade52df:

#include "mbed.h"
#include "OTP.h"

Serial pc(USBTX, USBRX);
OTP otp(p30, p29, p21, pc);

int read_temperature(I2C i2c, int addr, float *temperature)
{
    char data[5];
    int status = i2c.read(addr, data, 5);
    *temperature = data[4]*0.667-75;
    return status;
}

int scan_NSE5310()
{
    I2C i2c(p28, p27);
    int device_count = 0;
    for(int addr=0x80; addr<0xFE; addr+=2)
    {
        float temperature;
        //pc.printf("addr:0x%02X\n", addr);
        if(read_temperature(i2c, addr, &temperature)==0)
        {
            pc.printf("Found device: 0x%02X, Temperature: %2.1fC\n", addr, temperature);
            device_count++;
        }
    }
    return device_count;
}

int main() {
    pc.baud(115200);
    pc.printf("Scanning for NSE5310 devices...\n");
    int device_count = scan_NSE5310();
    //pc.printf("device_count=%d\n", device_count);
    if(device_count==0)
        pc.printf("No device found. Completed.\n");
    else if(device_count>1)
        pc.printf("Found more than one device. Completed.\n");
    else if(device_count==1)
    {
        pc.printf("Entering programming mode...\n");
        
        otp.setup();
        pc.printf("OTP_read()\n");
        otp.read();
        otp.exit();
        pc.printf("\n");
        
        uint8_t id = 0;
        int valid = 0;
        do
        {
            pc.printf("\nInput new device ID in hex (0x80 to 0xFE): 0x");
            pc.scanf("%x", &id);
            id &= 0xFC;
            if(id>=0x80 && id<=0xFE)
            {
                valid = 1;
                otp.set_id(id);
            }
        }while(valid==0);
        pc.printf("\n");
        
        otp.setup();
        pc.printf("OTP_write(0x%02X)\n", id);
        otp.write();
        otp.exit();
        pc.printf("\n");
        
        otp.setup();
        pc.printf("OTP_read()\n");
        otp.read();
        otp.exit();
        pc.printf("\n");
        
        otp.setup();
        pc.printf("OTP_prog()\n");
        otp.prog();
        otp.exit();
        pc.printf("\nDone.\n");
    }
}