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.
Dependents: rohm-bh1745-hello rohm-tileshield-6sensor-demo GR-PEACH_IoT_Platform_HTTP_sample
Fork of rohm-rpr0521 by
Revision 2:2b4a1b49998d, committed 2016-09-14
- Comitter:
- MikkoZ
- Date:
- Wed Sep 14 07:04:40 2016 +0000
- Parent:
- 1:64629eee9eab
- Commit message:
- Added stricter part id checks to prevent SAD collision go unnoticed. Same SADs are used in RPR0521(0x38) and BH1726(0x39).
Changed in this revision
| source/bh1745_driver.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 64629eee9eab -r 2b4a1b49998d source/bh1745_driver.cpp
--- a/source/bh1745_driver.cpp Mon Sep 12 12:31:40 2016 +0000
+++ b/source/bh1745_driver.cpp Wed Sep 14 07:04:40 2016 +0000
@@ -31,32 +31,41 @@
uint8_t partid;
DEBUG_printf("Manufacturer: %u\n\r", id);
- read_bytes = read_register(SAD, BH1745_SYSTEM_CONTROL, &partid, 1);
- if ( read_bytes > 0 ){
- DEBUG_printf("Part ID: %u\n\r", (partid & 0b00111111) );
- return(partid);
- }
- else{
- DEBUG_print("Part ID read failed.\n\r");
+ if (id == 0xe0){
+ read_bytes = read_register(SAD, BH1745_SYSTEM_CONTROL, &partid, 1);
+ partid = partid & 0b00111111;
+ if ( read_bytes > 0 ){
+ DEBUG_printf("Part ID: %u\n\r", partid);
+ if (partid == 0x0b){//OK
+ return(partid);
+ } else {
+ DEBUG_print("Wrong part ID for this driver.\n\r");
+ return 255;
+ }
+ } else {
+ DEBUG_print("Part ID read failed.\n\r");
+ return 255;
+ }
+ } else {
+ DEBUG_print("Wrong manufacturer Id for this driver.\n\r");
return 255;
}
- }
- else{
+ } else {
DEBUG_print("Manufacturer read failed.\n\r");
return 255;
}
}
void bh1745_wait_until_found(){
- uint8_t id;
+ uint8_t id;
- id = bh1745_readId();
- while (id == 255){
- wait(100);
id = bh1745_readId();
+ while (id == 255){
+ wait(100);
+ id = bh1745_readId();
}
- return;
- }
+ return;
+}
void bh1745_soft_reset(){
change_bits(SAD, BH1745_MODE_CONTROL1, BH1745_SYSTEM_CONTROL_SW_RESET_MASK, BH1745_SYSTEM_CONTROL_SW_RESET_START);
@@ -99,10 +108,9 @@
data16[2] = (data[4]) | (data[5] << 8); //blue
data16[3] = (data[6]) | (data[7] << 8); //clear
return false;
- }
- else{
+ } else {
DEBUG_printf("Read error. Read %d bytes\n\r", read_bytes);
return true;
- }
+ }
- }
+}

Rohm BH1745NUC | RGB Color Sensor