diff --git a/cores/arduino/SERCOM.h b/cores/arduino/SERCOM.h index 12dc5c7f709027955eb3c93b58d878a8e178f1a7..98bf6f466621385eae199f0c641c7bcf4922d3eb 100644 --- a/cores/arduino/SERCOM.h +++ b/cores/arduino/SERCOM.h @@ -76,10 +76,10 @@ typedef enum typedef enum { - SPI_MODE_0 = 0, // CPOL : 0 | CPHA : 0 - SPI_MODE_1, // CPOL : 0 | CPHA : 1 - SPI_MODE_2, // CPOL : 1 | CPHA : 0 - SPI_MODE_3 // CPOL : 1 | CPHA : 1 + SERCOM_SPI_MODE_0 = 0, // CPOL : 0 | CPHA : 0 + SERCOM_SPI_MODE_1, // CPOL : 0 | CPHA : 1 + SERCOM_SPI_MODE_2, // CPOL : 1 | CPHA : 0 + SERCOM_SPI_MODE_3 // CPOL : 1 | CPHA : 1 } SercomSpiClockMode; typedef enum diff --git a/libraries/SPI/SPI.cpp b/libraries/SPI/SPI.cpp index a2a55c83814e7b48e8b746dfda26a69017054933..76292014c977cdb9bab9bc2273ec6fd0420b02ff 100644 --- a/libraries/SPI/SPI.cpp +++ b/libraries/SPI/SPI.cpp @@ -10,22 +10,22 @@ #include "SPI.h" -SPIClass::SPIClass(SERCOM *sercom) +SPIClass::SPIClass(SERCOM *s) { - this->sercom = sercom; + sercom = s; } void SPIClass::begin() { // Default speed set to 4Mhz, SPI mode set to MODE 0 and Bit order set to MSB first. - sercom->initSPI(PAD_0_SCK_1, PAD_2, 8_BITS, MSB_FIRST); - sercom->initClock(MODE_0, 4000000); + sercom->initSPI(SPI_PAD_0_SCK_1, SERCOM_RX_PAD_2, SPI_CHAR_SIZE_8_BITS, MSB_FIRST); + sercom->initClock(SERCOM_SPI_MODE_0, 4000000); } void SPIClass::end() { sercom->resetSPI(); } -void setBitOrder(BitOrder order) +void SPIClass::setBitOrder(BitOrder order) { if(order == LSBFIRST) sercom->setDataOrderSPI(LSB_FIRST); @@ -33,24 +33,24 @@ void setBitOrder(BitOrder order) sercom->setDataOrderSPI(MSB_FIRST); } -void setDataMode(uint8_t mode) +void SPIClass::setDataMode(uint8_t mode) { switch(mode) { case SPI_MODE0: - sercom->setClockModeSPI(MODE_0); + sercom->setClockModeSPI(SERCOM_SPI_MODE_0); break; case SPI_MODE1: - sercom->setClockModeSPI(MODE_1); + sercom->setClockModeSPI(SERCOM_SPI_MODE_1); break; case SPI_MODE2: - sercom->setClockModeSPI(MODE_2); + sercom->setClockModeSPI(SERCOM_SPI_MODE_2); break; case SPI_MODE3: - sercom->setClockModeSPI(MODE_3); + sercom->setClockModeSPI(SERCOM_SPI_MODE_3); break; default: @@ -58,12 +58,12 @@ void setDataMode(uint8_t mode) } } -void setClockDivider(uint8_t div) +void SPIClass::setClockDivider(uint8_t div) { sercom->setBaudrateSPI(div); } -byte SPIClass::transfer(uint8_t _data) +byte SPIClass::transfer(uint8_t data) { //Can writing new data? while(!sercom->isDataRegisterEmptySPI()); diff --git a/libraries/SPI/SPI.h b/libraries/SPI/SPI.h index 9f3830bf03397d16c40cebc46ea303ef9a0117bd..195723a76656d66f6064d1b9eb59b81b91f2ce43 100644 --- a/libraries/SPI/SPI.h +++ b/libraries/SPI/SPI.h @@ -13,14 +13,20 @@ #include "variant.h" #include "SERCOM.h" +#include "wiring_constants.h" #include <stdio.h> +#define SPI_MODE0 0x02 +#define SPI_MODE1 0x00 +#define SPI_MODE2 0x03 +#define SPI_MODE3 0x01 + class SPIClass { public: - SPIClass(SERCOM *sercom); + SPIClass(SERCOM *s); - byte transfer(uint8_t _data); + byte transfer(uint8_t data); // SPI Configuration methods void attachInterrupt(); diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index e64d47f186f3eaac6d7e4545ad0bde510d5d169f..8f830527a4c2d3ac61ec23ea918b3753c0861f9e 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -24,9 +24,9 @@ extern "C" { #include "Wire.h" -TwoWire::TwoWire(SERCOM * sercom) +TwoWire::TwoWire(SERCOM * s) { - this->sercom = sercom; + this->sercom = s; transmissionBegun = false; } diff --git a/libraries/Wire/Wire.h b/libraries/Wire/Wire.h index c8d3200cf0a28927ef0c65bd564d2e69ebb55ec6..3e3a755e39b14ad67cb2bd7d75ff3ca8eab5b557 100644 --- a/libraries/Wire/Wire.h +++ b/libraries/Wire/Wire.h @@ -21,7 +21,7 @@ #ifndef TwoWire_h #define TwoWire_h -#include <include/twi.h> +//#include <include/twi.h> #include "Stream.h" #include "variant.h" @@ -33,7 +33,7 @@ class TwoWire : public Stream { public: - TwoWire(SERCOM *sercom); + TwoWire(SERCOM *s); void begin(); void begin(uint8_t);