mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
0.1.15 MultiSpeedI2CScanner
This commit is contained in:
parent
65a4d58fb9
commit
e764caa61b
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 <Arduino.h>
|
||||
#include <Wire.h>
|
||||
|
||||
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 --
|
||||
|
||||
|
@ -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
|
||||
|
||||
```
|
||||
<speeds = 50 100 150 200 250 300 350 400 >
|
||||
|
||||
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``` ?
|
||||
|
||||
|
@ -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 <Arduino.h>
|
||||
#include <Wire.h>
|
||||
|
||||
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 --
|
@ -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 <Arduino.h>
|
||||
#include <Wire.h>
|
||||
|
||||
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 --
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
// -- END OF FILE --
|
||||
|
||||
|
@ -32,15 +32,19 @@ unittest_setup()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
unittest_teardown()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
unittest(test_constructor)
|
||||
{
|
||||
assertEqual(1, 1);
|
||||
}
|
||||
|
||||
|
||||
unittest_main()
|
||||
|
||||
|
||||
// --------
|
||||
|
Loading…
Reference in New Issue
Block a user