Piyamate Wisanuvej / Mbed 2 deprecated NSE5310_programmer

Dependencies:   mbed

Committer:
piyamate
Date:
Tue May 13 13:54:32 2014 +0000
Revision:
4:1f708415c442
Parent:
3:1d0c09e43e22
working !

Who changed what in which revision?

UserRevisionLine numberNew contents of line
piyamate 0:d488d550469e 1 #include "mbed.h"
piyamate 2:af09cade52df 2 #include "OTP.h"
piyamate 0:d488d550469e 3
piyamate 0:d488d550469e 4 Serial pc(USBTX, USBRX);
piyamate 2:af09cade52df 5 OTP otp(p30, p29, p21, pc);
piyamate 0:d488d550469e 6
piyamate 0:d488d550469e 7 int read_temperature(I2C i2c, int addr, float *temperature)
piyamate 0:d488d550469e 8 {
piyamate 0:d488d550469e 9 char data[5];
piyamate 0:d488d550469e 10 int status = i2c.read(addr, data, 5);
piyamate 0:d488d550469e 11 *temperature = data[4]*0.667-75;
piyamate 0:d488d550469e 12 return status;
piyamate 0:d488d550469e 13 }
piyamate 0:d488d550469e 14
piyamate 0:d488d550469e 15 int scan_NSE5310()
piyamate 0:d488d550469e 16 {
piyamate 0:d488d550469e 17 I2C i2c(p28, p27);
piyamate 0:d488d550469e 18 int device_count = 0;
piyamate 0:d488d550469e 19 for(int addr=0x80; addr<0xFE; addr+=2)
piyamate 0:d488d550469e 20 {
piyamate 0:d488d550469e 21 float temperature;
piyamate 0:d488d550469e 22 //pc.printf("addr:0x%02X\n", addr);
piyamate 0:d488d550469e 23 if(read_temperature(i2c, addr, &temperature)==0)
piyamate 0:d488d550469e 24 {
piyamate 0:d488d550469e 25 pc.printf("Found device: 0x%02X, Temperature: %2.1fC\n", addr, temperature);
piyamate 0:d488d550469e 26 device_count++;
piyamate 0:d488d550469e 27 }
piyamate 0:d488d550469e 28 }
piyamate 0:d488d550469e 29 return device_count;
piyamate 0:d488d550469e 30 }
piyamate 0:d488d550469e 31
piyamate 0:d488d550469e 32 int main() {
piyamate 0:d488d550469e 33 pc.baud(115200);
piyamate 0:d488d550469e 34 pc.printf("Scanning for NSE5310 devices...\n");
piyamate 0:d488d550469e 35 int device_count = scan_NSE5310();
piyamate 0:d488d550469e 36 //pc.printf("device_count=%d\n", device_count);
piyamate 0:d488d550469e 37 if(device_count==0)
piyamate 0:d488d550469e 38 pc.printf("No device found. Completed.\n");
piyamate 0:d488d550469e 39 else if(device_count>1)
piyamate 0:d488d550469e 40 pc.printf("Found more than one device. Completed.\n");
piyamate 0:d488d550469e 41 else if(device_count==1)
piyamate 0:d488d550469e 42 {
piyamate 0:d488d550469e 43 pc.printf("Entering programming mode...\n");
piyamate 1:1e577b8befeb 44
piyamate 2:af09cade52df 45 otp.setup();
piyamate 1:1e577b8befeb 46 pc.printf("OTP_read()\n");
piyamate 2:af09cade52df 47 otp.read();
piyamate 2:af09cade52df 48 otp.exit();
piyamate 1:1e577b8befeb 49 pc.printf("\n");
piyamate 1:1e577b8befeb 50
piyamate 2:af09cade52df 51 uint8_t id = 0;
piyamate 1:1e577b8befeb 52 int valid = 0;
piyamate 1:1e577b8befeb 53 do
piyamate 1:1e577b8befeb 54 {
piyamate 3:1d0c09e43e22 55 pc.printf("Input new device ID in hex (0x80 to 0xFE): 0x");
piyamate 2:af09cade52df 56 pc.scanf("%x", &id);
piyamate 3:1d0c09e43e22 57
piyamate 1:1e577b8befeb 58 id &= 0xFC;
piyamate 1:1e577b8befeb 59 if(id>=0x80 && id<=0xFE)
piyamate 2:af09cade52df 60 {
piyamate 1:1e577b8befeb 61 valid = 1;
piyamate 4:1f708415c442 62 otp.clear_registers();
piyamate 2:af09cade52df 63 otp.set_id(id);
piyamate 2:af09cade52df 64 }
piyamate 1:1e577b8befeb 65 }while(valid==0);
piyamate 1:1e577b8befeb 66 pc.printf("\n");
piyamate 1:1e577b8befeb 67
piyamate 2:af09cade52df 68 otp.setup();
piyamate 1:1e577b8befeb 69 pc.printf("OTP_write(0x%02X)\n", id);
piyamate 2:af09cade52df 70 otp.write();
piyamate 2:af09cade52df 71 otp.exit();
piyamate 1:1e577b8befeb 72 pc.printf("\n");
piyamate 1:1e577b8befeb 73
piyamate 2:af09cade52df 74 otp.setup();
piyamate 1:1e577b8befeb 75 pc.printf("OTP_read()\n");
piyamate 2:af09cade52df 76 otp.read();
piyamate 2:af09cade52df 77 otp.exit();
piyamate 1:1e577b8befeb 78 pc.printf("\n");
piyamate 2:af09cade52df 79
piyamate 2:af09cade52df 80 otp.setup();
piyamate 2:af09cade52df 81 pc.printf("OTP_prog()\n");
piyamate 2:af09cade52df 82 otp.prog();
piyamate 2:af09cade52df 83 otp.exit();
piyamate 3:1d0c09e43e22 84 pc.printf("Done.\n");
piyamate 0:d488d550469e 85 }
piyamate 0:d488d550469e 86 }