Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@2:af09cade52df, 2014-05-13 (annotated)
- Committer:
- piyamate
- Date:
- Tue May 13 10:38:10 2014 +0000
- Revision:
- 2:af09cade52df
- Parent:
- 1:1e577b8befeb
- Child:
- 3:1d0c09e43e22
OTP class
Who changed what in which revision?
| User | Revision | Line number | New 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 | 1:1e577b8befeb | 55 | pc.printf("\nInput new device ID in hex (0x80 to 0xFE): 0x"); |
| piyamate | 2:af09cade52df | 56 | pc.scanf("%x", &id); |
| piyamate | 1:1e577b8befeb | 57 | id &= 0xFC; |
| piyamate | 1:1e577b8befeb | 58 | if(id>=0x80 && id<=0xFE) |
| piyamate | 2:af09cade52df | 59 | { |
| piyamate | 1:1e577b8befeb | 60 | valid = 1; |
| piyamate | 2:af09cade52df | 61 | otp.set_id(id); |
| piyamate | 2:af09cade52df | 62 | } |
| piyamate | 1:1e577b8befeb | 63 | }while(valid==0); |
| piyamate | 1:1e577b8befeb | 64 | pc.printf("\n"); |
| piyamate | 1:1e577b8befeb | 65 | |
| piyamate | 2:af09cade52df | 66 | otp.setup(); |
| piyamate | 1:1e577b8befeb | 67 | pc.printf("OTP_write(0x%02X)\n", id); |
| piyamate | 2:af09cade52df | 68 | otp.write(); |
| piyamate | 2:af09cade52df | 69 | otp.exit(); |
| piyamate | 1:1e577b8befeb | 70 | pc.printf("\n"); |
| piyamate | 1:1e577b8befeb | 71 | |
| piyamate | 2:af09cade52df | 72 | otp.setup(); |
| piyamate | 1:1e577b8befeb | 73 | pc.printf("OTP_read()\n"); |
| piyamate | 2:af09cade52df | 74 | otp.read(); |
| piyamate | 2:af09cade52df | 75 | otp.exit(); |
| piyamate | 1:1e577b8befeb | 76 | pc.printf("\n"); |
| piyamate | 2:af09cade52df | 77 | |
| piyamate | 2:af09cade52df | 78 | otp.setup(); |
| piyamate | 2:af09cade52df | 79 | pc.printf("OTP_prog()\n"); |
| piyamate | 2:af09cade52df | 80 | otp.prog(); |
| piyamate | 2:af09cade52df | 81 | otp.exit(); |
| piyamate | 2:af09cade52df | 82 | pc.printf("\nDone.\n"); |
| piyamate | 0:d488d550469e | 83 | } |
| piyamate | 0:d488d550469e | 84 | } |