Fixed incorrect pin assignment

pull/13/head
jgromes 2019-05-13 15:03:09 +02:00
rodzic ba82497c8e
commit 7780c499a1
2 zmienionych plików z 31 dodań i 31 usunięć

Wyświetl plik

@ -6,7 +6,7 @@ Module::Module(int rx, int tx) {
_tx = tx; _tx = tx;
_int0 = -1; _int0 = -1;
_int1 = -1; _int1 = -1;
ModuleSerial = new SoftwareSerial(_rx, _tx); ModuleSerial = new SoftwareSerial(_rx, _tx);
} }
@ -19,14 +19,14 @@ Module::Module(int cs, int int0, int int1, SPIClass& spi) {
_spi = &spi; _spi = &spi;
} }
Module::Module(int cs, int rx, int tx, int int0, int int1, SPIClass& spi) { Module::Module(int cs, int int0, int int1, int rx, int tx, SPIClass& spi) {
_cs = cs; _cs = cs;
_rx = rx; _rx = rx;
_tx = tx; _tx = tx;
_int0 = int0; _int0 = int0;
_int1 = int1; _int1 = int1;
_spi = &spi; _spi = &spi;
ModuleSerial = new SoftwareSerial(_rx, _tx); ModuleSerial = new SoftwareSerial(_rx, _tx);
} }
@ -44,7 +44,7 @@ void Module::init(uint8_t interface, uint8_t gpio) {
case USE_I2C: case USE_I2C:
break; break;
} }
// select GPIO // select GPIO
switch(gpio) { switch(gpio) {
case INT_NONE: case INT_NONE:
@ -85,21 +85,21 @@ bool Module::ATsendData(uint8_t* data, uint32_t len) {
for(uint32_t i = 0; i < len; i++) { for(uint32_t i = 0; i < len; i++) {
ModuleSerial->write(data[i]); ModuleSerial->write(data[i]);
} }
ModuleSerial->print(AtLineFeed); ModuleSerial->print(AtLineFeed);
return(ATgetResponse()); return(ATgetResponse());
} }
bool Module::ATgetResponse() { bool Module::ATgetResponse() {
String data = ""; String data = "";
uint32_t start = millis(); uint32_t start = millis();
while (millis() - start < _ATtimeout) { while (millis() - start < _ATtimeout) {
while(ModuleSerial->available() > 0) { while(ModuleSerial->available() > 0) {
char c = ModuleSerial->read(); char c = ModuleSerial->read();
DEBUG_PRINT(c); DEBUG_PRINT(c);
data += c; data += c;
} }
if(data.indexOf("OK") != -1) { if(data.indexOf("OK") != -1) {
DEBUG_PRINTLN(); DEBUG_PRINTLN();
return(true); return(true);
@ -107,7 +107,7 @@ bool Module::ATgetResponse() {
DEBUG_PRINTLN(); DEBUG_PRINTLN();
return(false); return(false);
} }
} }
DEBUG_PRINTLN(); DEBUG_PRINTLN();
return(false); return(false);
@ -117,7 +117,7 @@ int16_t Module::SPIgetRegValue(uint8_t reg, uint8_t msb, uint8_t lsb) {
if((msb > 7) || (lsb > 7) || (lsb > msb)) { if((msb > 7) || (lsb > 7) || (lsb > msb)) {
return(ERR_INVALID_BIT_RANGE); return(ERR_INVALID_BIT_RANGE);
} }
uint8_t rawValue = SPIreadRegister(reg); uint8_t rawValue = SPIreadRegister(reg);
uint8_t maskedValue = rawValue & ((0b11111111 << lsb) & (0b11111111 >> (7 - msb))); uint8_t maskedValue = rawValue & ((0b11111111 << lsb) & (0b11111111 >> (7 - msb)));
return(maskedValue); return(maskedValue);
@ -127,12 +127,12 @@ int16_t Module::SPIsetRegValue(uint8_t reg, uint8_t value, uint8_t msb, uint8_t
if((msb > 7) || (lsb > 7) || (lsb > msb)) { if((msb > 7) || (lsb > 7) || (lsb > msb)) {
return(ERR_INVALID_BIT_RANGE); return(ERR_INVALID_BIT_RANGE);
} }
uint8_t currentValue = SPIreadRegister(reg); uint8_t currentValue = SPIreadRegister(reg);
uint8_t mask = ~((0b11111111 << (msb + 1)) | (0b11111111 >> (8 - lsb))); uint8_t mask = ~((0b11111111 << (msb + 1)) | (0b11111111 >> (8 - lsb)));
uint8_t newValue = (currentValue & ~mask) | (value & mask); uint8_t newValue = (currentValue & ~mask) | (value & mask);
SPIwriteRegister(reg, newValue); SPIwriteRegister(reg, newValue);
// check register value each millisecond until check interval is reached // check register value each millisecond until check interval is reached
// some registers need a bit of time to process the change (e.g. SX127X_REG_OP_MODE) // some registers need a bit of time to process the change (e.g. SX127X_REG_OP_MODE)
uint32_t start = micros(); uint32_t start = micros();
@ -144,7 +144,7 @@ int16_t Module::SPIsetRegValue(uint8_t reg, uint8_t value, uint8_t msb, uint8_t
return(ERR_NONE); return(ERR_NONE);
} }
} }
// check failed, print debug info // check failed, print debug info
DEBUG_PRINTLN(); DEBUG_PRINTLN();
DEBUG_PRINT(F("address:\t0x")); DEBUG_PRINT(F("address:\t0x"));
@ -164,7 +164,7 @@ int16_t Module::SPIsetRegValue(uint8_t reg, uint8_t value, uint8_t msb, uint8_t
DEBUG_PRINT(F("read:\t\t0b")); DEBUG_PRINT(F("read:\t\t0b"));
DEBUG_PRINTLN(readValue, BIN); DEBUG_PRINTLN(readValue, BIN);
DEBUG_PRINTLN(); DEBUG_PRINTLN();
return(ERR_SPI_WRITE_FAILED); return(ERR_SPI_WRITE_FAILED);
} }
@ -189,13 +189,13 @@ void Module::SPIwriteRegister(uint8_t reg, uint8_t data) {
void Module::SPItransfer(uint8_t cmd, uint8_t reg, uint8_t* dataOut, uint8_t* dataIn, uint8_t numBytes) { void Module::SPItransfer(uint8_t cmd, uint8_t reg, uint8_t* dataOut, uint8_t* dataIn, uint8_t numBytes) {
// start SPI transaction // start SPI transaction
_spi->beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0)); _spi->beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0));
// pull CS low // pull CS low
digitalWrite(_cs, LOW); digitalWrite(_cs, LOW);
// send SPI register address with access command // send SPI register address with access command
_spi->transfer(reg | cmd); _spi->transfer(reg | cmd);
// send data or get response // send data or get response
if(cmd == SPIwriteCommand) { if(cmd == SPIwriteCommand) {
for(size_t n = 0; n < numBytes; n++) { for(size_t n = 0; n < numBytes; n++) {
@ -206,10 +206,10 @@ void Module::SPItransfer(uint8_t cmd, uint8_t reg, uint8_t* dataOut, uint8_t* da
dataIn[n] = _spi->transfer(0x00); dataIn[n] = _spi->transfer(0x00);
} }
} }
// release CS // release CS
digitalWrite(_cs, HIGH); digitalWrite(_cs, HIGH);
// end SPI transaction // end SPI transaction
_spi->endTransaction(); _spi->endTransaction();
} }

Wyświetl plik

@ -12,50 +12,50 @@ class Module {
Module(int tx, int rx); Module(int tx, int rx);
Module(int cs, int int0, int int1, SPIClass& spi = SPI); Module(int cs, int int0, int int1, SPIClass& spi = SPI);
Module(int cs, int int0, int int1, int rx, int tx, SPIClass& spi = SPI); Module(int cs, int int0, int int1, int rx, int tx, SPIClass& spi = SPI);
SoftwareSerial* ModuleSerial; SoftwareSerial* ModuleSerial;
uint32_t baudrate = 9600; uint32_t baudrate = 9600;
const char* AtLineFeed = "\r\n"; const char* AtLineFeed = "\r\n";
uint8_t SPIreadCommand = 0b00000000; uint8_t SPIreadCommand = 0b00000000;
uint8_t SPIwriteCommand = 0b10000000; uint8_t SPIwriteCommand = 0b10000000;
void init(uint8_t interface, uint8_t gpio); void init(uint8_t interface, uint8_t gpio);
void term(); void term();
void ATemptyBuffer(); void ATemptyBuffer();
bool ATgetResponse(); bool ATgetResponse();
bool ATsendCommand(const char* cmd); bool ATsendCommand(const char* cmd);
bool ATsendData(uint8_t* data, uint32_t len); bool ATsendData(uint8_t* data, uint32_t len);
int16_t SPIgetRegValue(uint8_t reg, uint8_t msb = 7, uint8_t lsb = 0); int16_t SPIgetRegValue(uint8_t reg, uint8_t msb = 7, uint8_t lsb = 0);
int16_t SPIsetRegValue(uint8_t reg, uint8_t value, uint8_t msb = 7, uint8_t lsb = 0, uint8_t checkInterval = 2); int16_t SPIsetRegValue(uint8_t reg, uint8_t value, uint8_t msb = 7, uint8_t lsb = 0, uint8_t checkInterval = 2);
void SPIreadRegisterBurst(uint8_t reg, uint8_t numBytes, uint8_t* inBytes); void SPIreadRegisterBurst(uint8_t reg, uint8_t numBytes, uint8_t* inBytes);
uint8_t SPIreadRegister(uint8_t reg); uint8_t SPIreadRegister(uint8_t reg);
void SPIwriteRegisterBurst(uint8_t reg, uint8_t* data, uint8_t numBytes); void SPIwriteRegisterBurst(uint8_t reg, uint8_t* data, uint8_t numBytes);
void SPIwriteRegister(uint8_t reg, uint8_t data); void SPIwriteRegister(uint8_t reg, uint8_t data);
void SPItransfer(uint8_t cmd, uint8_t reg, uint8_t* dataOut, uint8_t* dataIn, uint8_t numBytes); void SPItransfer(uint8_t cmd, uint8_t reg, uint8_t* dataOut, uint8_t* dataIn, uint8_t numBytes);
int getCs() const { return(_cs); } int getCs() const { return(_cs); }
int getInt0() const { return(_int0); } int getInt0() const { return(_int0); }
int getInt1() const { return(_int1); } int getInt1() const { return(_int1); }
int getRx() const { return(_rx); } int getRx() const { return(_rx); }
int getTx() const { return(_tx); } int getTx() const { return(_tx); }
SPIClass* getSpi() const { return(_spi); } SPIClass* getSpi() const { return(_spi); }
private: private:
int _cs; int _cs;
int _tx; int _tx;
int _rx; int _rx;
int _int0; int _int0;
int _int1; int _int1;
SPIClass* _spi; SPIClass* _spi;
uint32_t _ATtimeout = 15000; uint32_t _ATtimeout = 15000;
}; };