From e764caa61b7b625c9c67290ea6488998167ce850 Mon Sep 17 00:00:00 2001 From: rob tillaart Date: Wed, 22 Dec 2021 13:02:30 +0100 Subject: [PATCH] 0.1.15 MultiSpeedI2CScanner --- .../MultiSpeedI2CScanner/.arduino-ci.yml | 6 +- .../.github/workflows/arduino_test_runner.yml | 10 ++- libraries/MultiSpeedI2CScanner/LICENSE | 2 +- .../MultiSpeedI2CScanner.ino | 70 ++++++++++++------ libraries/MultiSpeedI2CScanner/README.md | 28 +++++-- .../I2C_bus_counter/I2C_bus_counter.ino | 62 ++++++++++++++++ .../MultiSpeedI2CScanner.ino | 70 ++++++++++++------ .../examples/MultiSpeedI2CScanner/readme.txt | 2 +- .../MultiSpeedI2CScanner/releaseNotes.md | 74 ++++++++++++------- .../test/unit_test_001.cpp_no_test | 4 + 10 files changed, 243 insertions(+), 85 deletions(-) create mode 100644 libraries/MultiSpeedI2CScanner/examples/I2C_bus_counter/I2C_bus_counter.ino diff --git a/libraries/MultiSpeedI2CScanner/.arduino-ci.yml b/libraries/MultiSpeedI2CScanner/.arduino-ci.yml index ff5659b9..3e496624 100644 --- a/libraries/MultiSpeedI2CScanner/.arduino-ci.yml +++ b/libraries/MultiSpeedI2CScanner/.arduino-ci.yml @@ -2,6 +2,10 @@ compile: # Choosing to run compilation tests on 2 different Arduino platforms platforms: - uno - - leonardo - due - zero + - leonardo + - m4 + - esp32 + - esp8266 + - mega2560 diff --git a/libraries/MultiSpeedI2CScanner/.github/workflows/arduino_test_runner.yml b/libraries/MultiSpeedI2CScanner/.github/workflows/arduino_test_runner.yml index 476456bb..096b975b 100644 --- a/libraries/MultiSpeedI2CScanner/.github/workflows/arduino_test_runner.yml +++ b/libraries/MultiSpeedI2CScanner/.github/workflows/arduino_test_runner.yml @@ -4,10 +4,14 @@ name: Arduino CI on: [push, pull_request] jobs: - arduino_ci: + runTest: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: Arduino-CI/action@master - # Arduino-CI/action@v0.1.1 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.6 + - run: | + gem install arduino_ci + arduino_ci.rb diff --git a/libraries/MultiSpeedI2CScanner/LICENSE b/libraries/MultiSpeedI2CScanner/LICENSE index 39d07e31..c9bd779a 100644 --- a/libraries/MultiSpeedI2CScanner/LICENSE +++ b/libraries/MultiSpeedI2CScanner/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2013-2021 Rob Tillaart +Copyright (c) 2013-2022 Rob Tillaart Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/libraries/MultiSpeedI2CScanner/MultiSpeedI2CScanner.ino b/libraries/MultiSpeedI2CScanner/MultiSpeedI2CScanner.ino index 62245f00..fb0e6316 100644 --- a/libraries/MultiSpeedI2CScanner/MultiSpeedI2CScanner.ino +++ b/libraries/MultiSpeedI2CScanner/MultiSpeedI2CScanner.ino @@ -1,19 +1,20 @@ // // FILE: MultiSpeedI2CScanner.ino // AUTHOR: Rob Tillaart -// VERSION: 0.1.13 +// VERSION: 0.1.15 // PURPOSE: I2C scanner at different speeds // DATE: 2013-11-05 // URL: https://github.com/RobTillaart/MultiSpeedI2CScanner // URL: http://forum.arduino.cc/index.php?topic=197360 // + #include #include -TwoWire *wi; +TwoWire *wire; -const char version[] = "0.1.13"; +const char version[] = "0.1.15"; // INTERFACE COUNT (TESTED TEENSY 3.5 AND ARDUINO DUE ONLY) @@ -21,7 +22,7 @@ int wirePortCount = 1; int selectedWirePort = 0; -// scans devices from 50 to 800KHz I2C speeds. +// scans devices from 50 to 800 KHz I2C speeds. // speed lower than 50 and above 400 can cause problems long speed[10] = { 100, 200, 300, 400 }; int speeds; @@ -65,8 +66,8 @@ void setup() Serial.begin(115200); #if defined (ESP8266) || defined(ESP32) - uint8_t sda = 21; - uint8_t scl = 22; + uint8_t sda = 14; // 21 + uint8_t scl = 15; // 22 Wire.begin(sda, scl, 100000); // ESP32 - change config pins if needed. #else Wire.begin(); @@ -84,8 +85,16 @@ void setup() Wire3.begin(); wirePortCount++; #endif +#if defined WIRE_IMPLEMENT_WIRE4 || WIRE_INTERFACES_COUNT > 4 + Wire4.begin(); + wirePortCount++; +#endif +#if defined WIRE_IMPLEMENT_WIRE5 || WIRE_INTERFACES_COUNT > 5 + Wire5.begin(); + wirePortCount++; +#endif - wi = &Wire; + wire = &Wire; Serial.println(); setSpeed('9'); @@ -107,21 +116,31 @@ void loop() switch (selectedWirePort) { case 0: - wi = &Wire; + wire = &Wire; break; #if defined WIRE_IMPLEMENT_WIRE1 || WIRE_INTERFACES_COUNT > 1 case 1: - wi = &Wire1; + wire = &Wire1; break; #endif #if defined WIRE_IMPLEMENT_WIRE2 || WIRE_INTERFACES_COUNT > 2 case 2: - wi = &Wire2; + wire = &Wire2; break; #endif #if defined WIRE_IMPLEMENT_WIRE3 || WIRE_INTERFACES_COUNT > 3 case 3: - wi = &Wire3; + wire = &Wire3; + break; +#endif +#if defined WIRE_IMPLEMENT_WIRE4 || WIRE_INTERFACES_COUNT > 4 + case 4: + wire = &Wire4; + break; +#endif +#if defined WIRE_IMPLEMENT_WIRE5 || WIRE_INTERFACES_COUNT > 5 + case 5: + wire = &Wire5; break; #endif } @@ -247,11 +266,11 @@ void setSpeed(char sp) speed[0] = 800; speeds = 1; break; - case '9': // limited to 400KHz + case '9': // limited to 400 KHz speeds = 8; for (int i = 1; i <= speeds; i++) speed[i - 1] = i * 50; break; - case '0': // limited to 800KHz + case '0': // limited to 800 KHz speeds = 8; for (int i = 1; i <= speeds; i++) speed[i - 1] = i * 100; break; @@ -308,7 +327,7 @@ void displayHelp() Serial.print(wirePortCount); Serial.print(F(" Current: Wire")); Serial.println(selectedWirePort); - Serial.println(F("\t@ = toggle Wire - Wire1 - Wire2 [TEENSY 3.5 or Arduino Due]")); + Serial.println(F("\t@ = toggle Wire - Wire1 .. Wire5 [e.g. TEENSY or Arduino Due]")); Serial.println(F("Scan mode:")); Serial.println(F("\ts = single scan")); @@ -323,18 +342,18 @@ void displayHelp() Serial.println(F("\ta = toggle address range, 0..127 - 8..119 (default)")); Serial.println(F("Speeds:")); - Serial.println(F("\t0 = 100..800 Khz - step 100 (warning - can block!!)")); + Serial.println(F("\t0 = 100..800 KHz - step 100 (warning - can block!!)")); Serial.println(F("\t1 = 100 KHz")); Serial.println(F("\t2 = 200 KHz")); Serial.println(F("\t4 = 400 KHz")); - Serial.println(F("\t9 = 50..400 Khz - step 50 < DEFAULT >")); + Serial.println(F("\t9 = 50..400 KHz - step 50 < DEFAULT >")); Serial.println(); Serial.println(F("\t!! HIGH SPEEDS - WARNING - can block - not applicable for UNO")); Serial.println(F("\t8 = 800 KHz")); Serial.println(F("\tM = 1000 KHz")); Serial.println(F("\tN = 3400 KHz")); - Serial.println(F("\tO = 5000 Khz")); - Serial.println(F("\tP = 100 400 1000 3400 5000 Khz (standards)")); + Serial.println(F("\tO = 5000 KHz")); + Serial.println(F("\tP = 100 400 1000 3400 5000 KHz (standards)")); Serial.println(F("\n\t? = help - this page")); Serial.println(); } @@ -361,6 +380,7 @@ void I2Cscan() Serial.print(F("--------")); } Serial.println(); + delay(100); } for (uint8_t address = addressStart; address <= addressEnd; address++) @@ -371,7 +391,7 @@ void I2Cscan() for (uint8_t s = 0; s < speeds ; s++) { - yield(); // keep ESP happy + yield(); // keep ESP happy #if ARDUINO < 158 && defined (TWBR) uint16_t PREV_TWBR = TWBR; @@ -380,13 +400,13 @@ void I2Cscan() { Serial.println("ERROR: not supported speed"); TWBR = PREV_TWBR; - return; + return; } #else - wi->setClock(speed[s] * 1000UL); + wire->setClock(speed[s] * 1000UL); #endif - wi->beginTransmission (address); - found[s] = (wi->endTransmission () == 0); + wire->beginTransmission (address); + found[s] = (wire->endTransmission () == 0); fnd |= found[s]; // give device 5 millis if (fnd && delayFlag) delay(RESTORE_LATENCY); @@ -423,8 +443,10 @@ void I2Cscan() Serial.print(stopScan - startScan); Serial.println(F(" milliseconds.")); } - + interrupts(); } + // -- END OF FILE -- + diff --git a/libraries/MultiSpeedI2CScanner/README.md b/libraries/MultiSpeedI2CScanner/README.md index 7335cc69..38d928b4 100644 --- a/libraries/MultiSpeedI2CScanner/README.md +++ b/libraries/MultiSpeedI2CScanner/README.md @@ -1,12 +1,16 @@ [![Arduino CI](https://github.com/RobTillaart/MultiSpeedI2CScanner/workflows/Arduino%20CI/badge.svg)](https://github.com/marketplace/actions/arduino_ci) +[![Arduino-lint](https://github.com/RobTillaart/MultiSpeedI2CScanner/actions/workflows/arduino-lint.yml/badge.svg)](https://github.com/RobTillaart/MultiSpeedI2CScanner/actions/workflows/arduino-lint.yml) +[![JSON check](https://github.com/RobTillaart/MultiSpeedI2CScanner/actions/workflows/jsoncheck.yml/badge.svg)](https://github.com/RobTillaart/MultiSpeedI2CScanner/actions/workflows/jsoncheck.yml) [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/MultiSpeedI2CScanner/blob/master/LICENSE) [![GitHub release](https://img.shields.io/github/release/RobTillaart/MultiSpeedI2CScanner.svg?maxAge=3600)](https://github.com/RobTillaart/MultiSpeedI2CScanner/releases) # Arduino MultiSpeed I2C Scanner -## Version: 0.1.13 + +## Version: 0.1.15 + ## Description @@ -17,12 +21,13 @@ The scanner provides an overview of which addresses can be found at which speed. This allows one to optimize the I2C performance of many devices above the standard 100KHz speed. + ## Menu dialog ``` -Arduino MultiSpeed I2C Scanner - 0.1.13 +Arduino MultiSpeed I2C Scanner - 0.1.15 I2C ports: 1 Current: Wire0 @ = toggle Wire - Wire1 - Wire2 [TEENSY 3.5 or Arduino Due] @@ -37,22 +42,23 @@ Output: h = toggle header - noHeader. a = toggle address range, 0..127 - 8..119 (default) Speeds: - 0 = 100..800 Khz - step 100 (warning - can block!!) + 0 = 100..800 KHz - step 100 (warning - can block!!) 1 = 100 KHz 2 = 200 KHz 4 = 400 KHz - 9 = 50..400 Khz - step 50 < DEFAULT > + 9 = 50..400 KHz - step 50 < DEFAULT > !! HIGH SPEEDS - WARNING - can block - not applicable for UNO 8 = 800 KHz M = 1000 KHz N = 3400 KHz - O = 5000 Khz - P = 100 400 1000 3400 5000 Khz (standards) + O = 5000 KHz + P = 100 400 1000 3400 5000 KHz (standards) ? = help - this page ``` + ## Functions ### I2C ports @@ -74,6 +80,7 @@ Only needed sometimes. **i** toggles disable/enable interrupts, use with care. + ### Output selection **p** toggles printAll and printFound. @@ -85,6 +92,7 @@ PrintFound will only generate a line if an I2C device is found on that address. **a** toggles the range of addresses scanned, default the range 8 .. 119 is scanned, but one can extend this range to 0 .. 127. **Note:** some addresses are reserved. + ### Speeds All options here select a single speed or a range of speeds. @@ -97,3 +105,11 @@ NOTE: not all processors will support these higher speeds. This can show up as blocking or it can even look like it is working. Check your datasheet to see which speeds are applicable for the processor in use. + +## Future + +- add watchdog reset (at least AVR - 8 seconds 0.2.0 ) +- create an I2CScanner class +- r = reset (defaults) +- non-AVR command behind a ```#ifdef``` ? + diff --git a/libraries/MultiSpeedI2CScanner/examples/I2C_bus_counter/I2C_bus_counter.ino b/libraries/MultiSpeedI2CScanner/examples/I2C_bus_counter/I2C_bus_counter.ino new file mode 100644 index 00000000..9c8029b9 --- /dev/null +++ b/libraries/MultiSpeedI2CScanner/examples/I2C_bus_counter/I2C_bus_counter.ino @@ -0,0 +1,62 @@ +// +// FILE: I2C_bus_counter.ino +// AUTHOR: Rob Tillaart +// PURPOSE: I2C bus counter +// DATE: 2021-11-10 +// URL: https://github.com/RobTillaart/MultiSpeedI2CScanner +// URL: http://forum.arduino.cc/index.php?topic=197360 + + +#include +#include + +const char version[] = "0.1.0"; + +int wirePortCount = 1; + + +/////////////////////////////////////////////////// +// +// MAIN CODE +// +void setup() +{ + Serial.begin(115200); + Serial.println(); + Serial.print(__FILE__); + Serial.print("\t"); + Serial.println(version); + delay(1000); + +#if defined WIRE_IMPLEMENT_WIRE1 || WIRE_INTERFACES_COUNT > 1 + Wire1.begin(); + wirePortCount++; +#endif +#if defined WIRE_IMPLEMENT_WIRE2 || WIRE_INTERFACES_COUNT > 2 + Wire2.begin(); + wirePortCount++; +#endif +#if defined WIRE_IMPLEMENT_WIRE3 || WIRE_INTERFACES_COUNT > 3 + Wire3.begin(); + wirePortCount++; +#endif +#if defined WIRE_IMPLEMENT_WIRE4 || WIRE_INTERFACES_COUNT > 4 + Wire4.begin(); + wirePortCount++; +#endif +#if defined WIRE_IMPLEMENT_WIRE5 || WIRE_INTERFACES_COUNT > 5 + Wire5.begin(); + wirePortCount++; +#endif + + Serial.print("I2C bus count: "); + Serial.println(wirePortCount); +} + + +void loop() +{ +} + + +// -- END OF FILE -- diff --git a/libraries/MultiSpeedI2CScanner/examples/MultiSpeedI2CScanner/MultiSpeedI2CScanner.ino b/libraries/MultiSpeedI2CScanner/examples/MultiSpeedI2CScanner/MultiSpeedI2CScanner.ino index 62245f00..fb0e6316 100644 --- a/libraries/MultiSpeedI2CScanner/examples/MultiSpeedI2CScanner/MultiSpeedI2CScanner.ino +++ b/libraries/MultiSpeedI2CScanner/examples/MultiSpeedI2CScanner/MultiSpeedI2CScanner.ino @@ -1,19 +1,20 @@ // // FILE: MultiSpeedI2CScanner.ino // AUTHOR: Rob Tillaart -// VERSION: 0.1.13 +// VERSION: 0.1.15 // PURPOSE: I2C scanner at different speeds // DATE: 2013-11-05 // URL: https://github.com/RobTillaart/MultiSpeedI2CScanner // URL: http://forum.arduino.cc/index.php?topic=197360 // + #include #include -TwoWire *wi; +TwoWire *wire; -const char version[] = "0.1.13"; +const char version[] = "0.1.15"; // INTERFACE COUNT (TESTED TEENSY 3.5 AND ARDUINO DUE ONLY) @@ -21,7 +22,7 @@ int wirePortCount = 1; int selectedWirePort = 0; -// scans devices from 50 to 800KHz I2C speeds. +// scans devices from 50 to 800 KHz I2C speeds. // speed lower than 50 and above 400 can cause problems long speed[10] = { 100, 200, 300, 400 }; int speeds; @@ -65,8 +66,8 @@ void setup() Serial.begin(115200); #if defined (ESP8266) || defined(ESP32) - uint8_t sda = 21; - uint8_t scl = 22; + uint8_t sda = 14; // 21 + uint8_t scl = 15; // 22 Wire.begin(sda, scl, 100000); // ESP32 - change config pins if needed. #else Wire.begin(); @@ -84,8 +85,16 @@ void setup() Wire3.begin(); wirePortCount++; #endif +#if defined WIRE_IMPLEMENT_WIRE4 || WIRE_INTERFACES_COUNT > 4 + Wire4.begin(); + wirePortCount++; +#endif +#if defined WIRE_IMPLEMENT_WIRE5 || WIRE_INTERFACES_COUNT > 5 + Wire5.begin(); + wirePortCount++; +#endif - wi = &Wire; + wire = &Wire; Serial.println(); setSpeed('9'); @@ -107,21 +116,31 @@ void loop() switch (selectedWirePort) { case 0: - wi = &Wire; + wire = &Wire; break; #if defined WIRE_IMPLEMENT_WIRE1 || WIRE_INTERFACES_COUNT > 1 case 1: - wi = &Wire1; + wire = &Wire1; break; #endif #if defined WIRE_IMPLEMENT_WIRE2 || WIRE_INTERFACES_COUNT > 2 case 2: - wi = &Wire2; + wire = &Wire2; break; #endif #if defined WIRE_IMPLEMENT_WIRE3 || WIRE_INTERFACES_COUNT > 3 case 3: - wi = &Wire3; + wire = &Wire3; + break; +#endif +#if defined WIRE_IMPLEMENT_WIRE4 || WIRE_INTERFACES_COUNT > 4 + case 4: + wire = &Wire4; + break; +#endif +#if defined WIRE_IMPLEMENT_WIRE5 || WIRE_INTERFACES_COUNT > 5 + case 5: + wire = &Wire5; break; #endif } @@ -247,11 +266,11 @@ void setSpeed(char sp) speed[0] = 800; speeds = 1; break; - case '9': // limited to 400KHz + case '9': // limited to 400 KHz speeds = 8; for (int i = 1; i <= speeds; i++) speed[i - 1] = i * 50; break; - case '0': // limited to 800KHz + case '0': // limited to 800 KHz speeds = 8; for (int i = 1; i <= speeds; i++) speed[i - 1] = i * 100; break; @@ -308,7 +327,7 @@ void displayHelp() Serial.print(wirePortCount); Serial.print(F(" Current: Wire")); Serial.println(selectedWirePort); - Serial.println(F("\t@ = toggle Wire - Wire1 - Wire2 [TEENSY 3.5 or Arduino Due]")); + Serial.println(F("\t@ = toggle Wire - Wire1 .. Wire5 [e.g. TEENSY or Arduino Due]")); Serial.println(F("Scan mode:")); Serial.println(F("\ts = single scan")); @@ -323,18 +342,18 @@ void displayHelp() Serial.println(F("\ta = toggle address range, 0..127 - 8..119 (default)")); Serial.println(F("Speeds:")); - Serial.println(F("\t0 = 100..800 Khz - step 100 (warning - can block!!)")); + Serial.println(F("\t0 = 100..800 KHz - step 100 (warning - can block!!)")); Serial.println(F("\t1 = 100 KHz")); Serial.println(F("\t2 = 200 KHz")); Serial.println(F("\t4 = 400 KHz")); - Serial.println(F("\t9 = 50..400 Khz - step 50 < DEFAULT >")); + Serial.println(F("\t9 = 50..400 KHz - step 50 < DEFAULT >")); Serial.println(); Serial.println(F("\t!! HIGH SPEEDS - WARNING - can block - not applicable for UNO")); Serial.println(F("\t8 = 800 KHz")); Serial.println(F("\tM = 1000 KHz")); Serial.println(F("\tN = 3400 KHz")); - Serial.println(F("\tO = 5000 Khz")); - Serial.println(F("\tP = 100 400 1000 3400 5000 Khz (standards)")); + Serial.println(F("\tO = 5000 KHz")); + Serial.println(F("\tP = 100 400 1000 3400 5000 KHz (standards)")); Serial.println(F("\n\t? = help - this page")); Serial.println(); } @@ -361,6 +380,7 @@ void I2Cscan() Serial.print(F("--------")); } Serial.println(); + delay(100); } for (uint8_t address = addressStart; address <= addressEnd; address++) @@ -371,7 +391,7 @@ void I2Cscan() for (uint8_t s = 0; s < speeds ; s++) { - yield(); // keep ESP happy + yield(); // keep ESP happy #if ARDUINO < 158 && defined (TWBR) uint16_t PREV_TWBR = TWBR; @@ -380,13 +400,13 @@ void I2Cscan() { Serial.println("ERROR: not supported speed"); TWBR = PREV_TWBR; - return; + return; } #else - wi->setClock(speed[s] * 1000UL); + wire->setClock(speed[s] * 1000UL); #endif - wi->beginTransmission (address); - found[s] = (wi->endTransmission () == 0); + wire->beginTransmission (address); + found[s] = (wire->endTransmission () == 0); fnd |= found[s]; // give device 5 millis if (fnd && delayFlag) delay(RESTORE_LATENCY); @@ -423,8 +443,10 @@ void I2Cscan() Serial.print(stopScan - startScan); Serial.println(F(" milliseconds.")); } - + interrupts(); } + // -- END OF FILE -- + diff --git a/libraries/MultiSpeedI2CScanner/examples/MultiSpeedI2CScanner/readme.txt b/libraries/MultiSpeedI2CScanner/examples/MultiSpeedI2CScanner/readme.txt index fc3bb2de..46cb5060 100644 --- a/libraries/MultiSpeedI2CScanner/examples/MultiSpeedI2CScanner/readme.txt +++ b/libraries/MultiSpeedI2CScanner/examples/MultiSpeedI2CScanner/readme.txt @@ -6,5 +6,5 @@ It is placed here to give Arduino-CI something to compile. On the long term an I2C scanner class should be made which will have this application as an example. -As teh application os working rather well this has no urgency +As the application is working rather well this has no urgency or priority. diff --git a/libraries/MultiSpeedI2CScanner/releaseNotes.md b/libraries/MultiSpeedI2CScanner/releaseNotes.md index 4cfb83a0..e07813e3 100644 --- a/libraries/MultiSpeedI2CScanner/releaseNotes.md +++ b/libraries/MultiSpeedI2CScanner/releaseNotes.md @@ -1,65 +1,89 @@ + # Release Notes MultiSpeedI2CScanner +https://github.com/RobTillaart/MultiSpeedI2CScanner + + ## Version -0.1.13 +0.1.15 + + +### 0.1.15 2021-12-22 + +- change Khz =>KHz +- update license + + +### 0.1.14 2021-11-10 + +- update Arduino-CI build process +- add badges to readme.md +- updated readme.md +- support up to 5 Wire buses +- added an I2C bus counter sketch (very minimal) +- minor edits release notes. + ### 0.1.13 2020-12-12 -Add arduino-ci build process. -Added a dummy examples folder with the same .ino source. -This shows that the sketch compiles well. +- Add Arduino-CI build process. +- Added a dummy examples folder with the same .ino source. +- This shows that the sketch compiles well. + ### 0.1.12 2020-12-12 -FIx #4, default address range = 08...119 (0-7 and 120-127 are special) +- Fix #4, default address range = 08...119 (0-7 and 120-127 are special) ### 0.1.11 2018-07-20 -+ Fix failing TWBR setting -+ added yield() during scan to improve ESP behavior. -+ added disable interrupts flag -+ refactor / cleanup +- Fix failing TWBR setting +- added yield() during scan to improve ESP behaviour. +- added disable interrupts flag +- refactor / clean up ### 0.1.10 2018-04-02 -+ Fix #152 -+ improved support for ESP32 -+ changed multispeed ranges a bit (option 0 and 9) -+ refactor -+ added experimental high speeds 1000, 3400, 5000 KHz. +- Fix #152 +- improved support for ESP32 +- changed multispeed ranges a bit (option 0 and 9) +- refactor +- added experimental high speeds 1000, 3400, 5000 KHz. verified on UNO and ESP32, note the latter one must adjust the pins in the code. ### 0.1.9 2018-04-02 -+ '9' command to scan up to 400 KHz only to prevent blocking -+ changed "scan up to 400 KHz" as default at startup +- '9' command to scan up to 400 KHz only to prevent blocking +- changed "scan up to 400 KHz" as default at startup ### 0.1.8 2017-08-03 -+ DUE support +- DUE support ### 0.1.7 2017-07-17 -+ TEENSY support - multiple I2C ports -+ '@' command to select I2C Port -+ changed # speeds steps of 100 +- TEENSY support - multiple I2C ports +- '@' command to select I2C Port +- changed # speeds steps of 100 ### 0.1.6 2015-03-29 -+ Wire.setClock as more portable way to set I2C clock +- Wire.setClock as more portable way to set I2C clock ### 0.1.5 2014-07-06 -+ void setSpeed() - more control about what is scanned -+ void setAddress() - address range -+ extended help +- void setSpeed() - more control about what is scanned +- void setAddress() - address range +- extended help ### older versions not documented +(started 2013-11-05 ?) -// END OF FILE \ No newline at end of file +// -- END OF FILE -- + diff --git a/libraries/MultiSpeedI2CScanner/test/unit_test_001.cpp_no_test b/libraries/MultiSpeedI2CScanner/test/unit_test_001.cpp_no_test index 62770ef3..7ca1a2f2 100644 --- a/libraries/MultiSpeedI2CScanner/test/unit_test_001.cpp_no_test +++ b/libraries/MultiSpeedI2CScanner/test/unit_test_001.cpp_no_test @@ -32,15 +32,19 @@ unittest_setup() { } + unittest_teardown() { } + unittest(test_constructor) { assertEqual(1, 1); } + unittest_main() + // --------