11//
22// FILE: AS56000.cpp
33// AUTHOR: Rob Tillaart
4- // VERSION: 0.4.0
4+ // VERSION: 0.4.1
55// PURPOSE: Arduino library for AS5600 magnetic rotation meter
66// DATE: 2022-05-28
77// URL: https://github.com/RobTillaart/AS5600
@@ -79,6 +79,32 @@ bool AS5600::begin(int dataPin, int clockPin, uint8_t directionPin)
7979#endif
8080
8181
82+ #if defined (ARDUINO_ARCH_STM32)
83+
84+ bool AS5600::begin (int dataPin, int clockPin, uint8_t directionPin)
85+ {
86+ _directionPin = directionPin;
87+ if (_directionPin != AS5600_SW_DIRECTION_PIN)
88+ {
89+ pinMode (_directionPin, OUTPUT);
90+ }
91+ setDirection (AS5600_CLOCK_WISE);
92+
93+ if ((dataPin < 255 ) && (clockPin < 255 ))
94+ {
95+ _wire->setSDA (dataPin);
96+ _wire->setSCL (clockPin);
97+ _wire->begin ();
98+ } else {
99+ _wire->begin ();
100+ }
101+ if (! isConnected ()) return false ;
102+ return true ;
103+ }
104+
105+ #endif
106+
107+
82108bool AS5600::begin (uint8_t directionPin)
83109{
84110 _directionPin = directionPin;
@@ -331,7 +357,7 @@ uint16_t AS5600::rawAngle()
331357 int16_t value = readReg2 (AS5600_RAW_ANGLE) & 0x0FFF ;
332358 if (_offset > 0 ) value = (value + _offset) & 0x0FFF ;
333359
334- if ((_directionPin == AS5600_SW_DIRECTION_PIN) &&
360+ if ((_directionPin == AS5600_SW_DIRECTION_PIN) &&
335361 (_direction == AS5600_COUNTERCLOCK_WISE))
336362 {
337363 value = (4096 - value) & 0x0FFF ;
@@ -345,7 +371,7 @@ uint16_t AS5600::readAngle()
345371 uint16_t value = readReg2 (AS5600_ANGLE) & 0x0FFF ;
346372 if (_offset > 0 ) value = (value + _offset) & 0x0FFF ;
347373
348- if ((_directionPin == AS5600_SW_DIRECTION_PIN) &&
374+ if ((_directionPin == AS5600_SW_DIRECTION_PIN) &&
349375 (_direction == AS5600_COUNTERCLOCK_WISE))
350376 {
351377 value = (4096 - value) & 0x0FFF ;
0 commit comments