diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml new file mode 100644 index 0000000..06d5ccb --- /dev/null +++ b/.github/workflows/compile-examples.yml @@ -0,0 +1,106 @@ +name: Compile Examples + +on: + pull_request: + paths: + - ".github/workflows/compile-examples.yml" + - "examples/**" + - "src/**" + push: + paths: + - ".github/workflows/compile-examples.yml" + - "examples/**" + - "src/**" + +jobs: + build: + runs-on: ubuntu-latest + + env: + SKETCHES_REPORTS_PATH: sketches-reports + + strategy: + fail-fast: false + + matrix: + board: + - fqbn: arduino:avr:uno + platforms: | + - name: arduino:avr + - fqbn: arduino:samd:mkr1000 + platforms: | + - name: arduino:samd + - fqbn: arduino:samd:mkrzero + platforms: | + - name: arduino:samd + - fqbn: arduino:samd:mkrwifi1010 + platforms: | + - name: arduino:samd + - fqbn: arduino:samd:mkrfox1200 + platforms: | + - name: arduino:samd + - fqbn: arduino:samd:mkrwan1300 + platforms: | + - name: arduino:samd + - fqbn: arduino:samd:mkrwan1310 + platforms: | + - name: arduino:samd + - fqbn: arduino:samd:mkrgsm1400 + platforms: | + - name: arduino:samd + - fqbn: arduino:samd:mkrnb1500 + platforms: | + - name: arduino:samd + - fqbn: arduino:samd:mkrvidor4000 + platforms: | + - name: arduino:samd + - fqbn: arduino:mbed_rp2040:pico + platforms: | + - name: arduino:mbed_rp2040 + - fqbn: arduino:mbed_portenta:envie_m7 + platforms: | + - name: arduino:mbed_portenta + - fqbn: arduino:mbed_portenta:envie_m4 + platforms: | + - name: arduino:mbed_portenta + - fqbn: arduino:mbed_nano:nano33ble + platforms: | + - name: arduino:mbed_nano + - fqbn: arduino:mbed_nano:nanorp2040connect + platforms: | + - name: arduino:mbed_nano + - fqbn: arduino:mbed_edge:edge_control + platforms: | + - name: arduino:mbed_edge + - fqbn: esp32:esp32:esp32 + platforms: | + - name: esp32:esp32 + source-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json + - fqbn: rp2040:rp2040:rpipico + platforms: | + - name: rp2040:rp2040 + source-url: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Install ESP32 platform dependencies + if: startsWith(matrix.board.fqbn, 'esp32:esp32') + run: pip3 install pyserial + + - name: Compile examples + uses: arduino/compile-sketches@v1 + with: + fqbn: ${{ matrix.board.fqbn }} + platforms: ${{ matrix.board.platforms }} + enable-deltas-report: true + sketches-report-path: ${{ env.SKETCHES_REPORTS_PATH }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Save memory usage change report as artifact + if: github.event_name == 'pull_request' + uses: actions/upload-artifact@v3 + with: + name: ${{ env.SKETCHES_REPORTS_PATH }} + path: ${{ env.SKETCHES_REPORTS_PATH }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8111780 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +# IDE related files +.vscode/ +.idea/ + +# Build related folders +build/ \ No newline at end of file diff --git a/README.md b/README.md index df03d53..e422626 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ # MagAlpha library +[![Compile Examples](https://github.com/monolithicpower/MagAlpha-Arduino-Library/actions/workflows/compile-examples.yml/badge.svg)](https://github.com/monolithicpower/MagAlpha-Arduino-Library/actions/workflows/compile-examples.yml) + Arduino library for the MPS MagAlpha magnetic angle sensor. ## About diff --git a/examples/edit-magalpha-config/edit-magalpha-config.ino b/examples/edit-magalpha-config/edit-magalpha-config.ino index 1273744..3d29f7b 100644 --- a/examples/edit-magalpha-config/edit-magalpha-config.ino +++ b/examples/edit-magalpha-config/edit-magalpha-config.ino @@ -25,7 +25,7 @@ void loop() { uint16_t angleRaw16; uint8_t angleRaw8; - Serial.println("Read Angle using differents methods:"); + Serial.println("Read Angle using different methods:"); //Read the angle in degree (Read 16-bit raw angle value and then convert it to the 0-360 degree range) angle = magAlpha.readAngle(); @@ -49,7 +49,7 @@ void loop() { //Read the angle (16-bit raw angle value) and check the parity bit to detect possible communication error bool error; - angleRaw16 = magAlpha.readAngleRaw16(&error); + angleRaw16 = magAlpha.readAngleRaw(&error); Serial.print(" magAlpha.readAngleRaw16(&error) = "); Serial.print(angleRaw16, DEC); if (error == true){ diff --git a/library.properties b/library.properties index 7ef9ac5..33a6805 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=MagAlpha Angle Sensor Library -version=1.0.1 +version=1.0.2 author=Mathieu Kaelin, Monolithic Power Systems maintainer=Mathieu Kaelin sentence=Arduino library for the MPS MagAlpha magnetic angle sensor. diff --git a/src/MagAlpha.cpp b/src/MagAlpha.cpp index b35a7b3..793eaee 100644 --- a/src/MagAlpha.cpp +++ b/src/MagAlpha.cpp @@ -36,6 +36,7 @@ void MagAlpha::begin(int32_t spiSclkFrequency, uint8_t spiMode, uint8_t spiChip } void MagAlpha::end(){ + SPI.endTransaction(); SPI.end(); } @@ -132,12 +133,14 @@ uint8_t MagAlpha::writeRegister(uint8_t address, uint8_t value){ void MagAlpha::setSpiClockFrequency(uint32_t speedMaximum){ _speedMaximum = speedMaximum; + SPI.endTransaction(); SPI.beginTransaction(SPISettings(_speedMaximum, MSBFIRST, _spiMode)); } void MagAlpha::setSpiDataMode(uint8_t spiMode){ _spiMode = spiMode; - SPI.setDataMode(_spiMode); + SPI.endTransaction(); + SPI.beginTransaction(SPISettings(_speedMaximum, MSBFIRST, _spiMode)); } void MagAlpha::setSpiChipSelectPin(uint8_t spiChipSelectPin){ @@ -167,6 +170,7 @@ void MagAlphaSSI::begin(int32_t ssiSsckFrequency){ } void MagAlphaSSI::end(){ + SPI.endTransaction(); SPI.end(); } @@ -234,6 +238,7 @@ uint16_t MagAlphaSSI::readAngleRaw(bool* error){ void MagAlphaSSI::setSsiClockFrequency(uint32_t speedMaximum){ _speedMaximum = speedMaximum; + SPI.endTransaction(); SPI.beginTransaction(SPISettings(_speedMaximum, MSBFIRST, SSI_MODE)); }