diff --git a/README.md b/README.md index 36df8a1..eeac899 100644 --- a/README.md +++ b/README.md @@ -154,6 +154,7 @@ void loop() { - v1.1 - оптимизация, новый интерфейс, поддержка дешёвых синих модулей, работа в прерывании - v1.2 - улучшение качества связи, оптимизация работы в прерывании - v1.3 - добавлен вывод RSSI +- v1.4 - переделан FastIO ## Баги и обратная связь diff --git a/library.properties b/library.properties index 0f78849..3f71ba7 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=Gyver433 -version=1.3 +version=1.4 author=AlexGyver maintainer=AlexGyver sentence=Simple library for 433 MHz radio diff --git a/src/FastIO.h b/src/FastIO_v2.cpp similarity index 76% rename from src/FastIO.h rename to src/FastIO_v2.cpp index 7bba4a5..2e1ecdf 100644 --- a/src/FastIO.h +++ b/src/FastIO_v2.cpp @@ -1,17 +1,6 @@ -// Быстрый IO для AVR (для остальных будет digitalxxxxx) -// v1.0 +#include "FastIO_v2.h" -#ifndef FastIO_h -#define FastIO_h -#include - -bool fastRead(const uint8_t pin); // быстрое чтение пина -void fastWrite(const uint8_t pin, bool val); // быстрая запись -uint8_t fastShiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder); // быстрый shiftIn -void fastShiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t data); // быстрый shiftOut - -// ================================================================ -bool fastRead(const uint8_t pin) { +bool F_fastRead(const uint8_t pin) { #if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) if (pin < 8) return bitRead(PIND, pin); else if (pin < 14) return bitRead(PINB, pin - 8); @@ -32,8 +21,7 @@ bool fastRead(const uint8_t pin) { return 0; } - -void fastWrite(const uint8_t pin, bool val) { +void F_fastWrite(const uint8_t pin, bool val) { #if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) if (pin < 8) bitWrite(PORTD, pin, val); else if (pin < 14) bitWrite(PORTB, (pin - 8), val); @@ -56,8 +44,7 @@ void fastWrite(const uint8_t pin, bool val) { #endif } - -uint8_t fastShiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) { +uint8_t F_fastShiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) { #if defined(AVR) volatile uint8_t *_clk_port = portOutputRegister(digitalPinToPort(clockPin)); volatile uint8_t *_dat_port = portInputRegister(digitalPinToPort(dataPin)); @@ -81,8 +68,7 @@ uint8_t fastShiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) { #endif } - -void fastShiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t data) { +void F_fastShiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t data) { #if defined(AVR) volatile uint8_t *_clk_port = portOutputRegister(digitalPinToPort(clockPin)); volatile uint8_t *_dat_port = portOutputRegister(digitalPinToPort(dataPin)); @@ -104,6 +90,4 @@ void fastShiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t d #else shiftOut(dataPin, clockPin, bitOrder, data); #endif -} - -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/src/FastIO_v2.h b/src/FastIO_v2.h new file mode 100644 index 0000000..e83265c --- /dev/null +++ b/src/FastIO_v2.h @@ -0,0 +1,13 @@ +// Быстрый IO для AVR (для остальных будет digitalxxxxx) +// v1.0 + +#ifndef _FastIO_v2_h +#define _FastIO_v2_h +#include + +bool F_fastRead(const uint8_t pin); // быстрое чтение пина +void F_fastWrite(const uint8_t pin, bool val); // быстрая запись +uint8_t F_fastShiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder); // быстрый shiftIn +void F_fastShiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t data); // быстрый shiftOut + +#endif \ No newline at end of file diff --git a/src/Gyver433.h b/src/Gyver433.h index e67b621..c10cf5e 100644 --- a/src/Gyver433.h +++ b/src/Gyver433.h @@ -19,12 +19,13 @@ v1.1 - оптимизация, новый интерфейс, поддержка дешёвых синих модулей, работа в прерывании v1.2 - улучшение качества связи, оптимизация работы в прерывании v1.3 - добавлен вывод RSSI + v1.4 - переделан FastIO */ #ifndef Gyver433_h #define Gyver433_h #include -#include "FastIO.h" +#include "FastIO_v2.h" uint8_t G433_crc8(uint8_t *buffer, uint8_t size); // ручной CRC8 uint8_t G433_crc_xor(uint8_t *buffer, uint8_t size); // ручной CRC XOR @@ -107,28 +108,28 @@ public: // отправка сырого набора байтов void write(uint8_t* buf, uint16_t size) { for (uint16_t i = 0; i < TRAINING_PULSES; i++) { - fastWrite(TX_PIN, 1); + F_fastWrite(TX_PIN, 1); G433_DELAY(FRAME_TIME); - fastWrite(TX_PIN, 0); + F_fastWrite(TX_PIN, 0); G433_DELAY(FRAME_TIME); } - fastWrite(TX_PIN, 1); // старт + F_fastWrite(TX_PIN, 1); // старт G433_DELAY(START_PULSE); // ждём - fastWrite(TX_PIN, 0); // старт бит + F_fastWrite(TX_PIN, 0); // старт бит #ifdef G433_MANCHESTER G433_DELAY(HALF_FRAME); // ждём for (uint16_t n = 0; n < size; n++) { uint8_t data = buf[n]; for (uint8_t b = 0; b < 8; b++) { - fastWrite(TX_PIN, !(data & 1)); + F_fastWrite(TX_PIN, !(data & 1)); G433_DELAY(HALF_FRAME); - fastWrite(TX_PIN, (data & 1)); + F_fastWrite(TX_PIN, (data & 1)); G433_DELAY(HALF_FRAME); data >>= 1; } } - fastWrite(TX_PIN, 0); // конец передачи + F_fastWrite(TX_PIN, 0); // конец передачи #else bool flag = 0; for (uint16_t n = 0; n < size; n++) { @@ -136,7 +137,7 @@ public: for (uint8_t b = 0; b < 8; b++) { if (data & 1) G433_DELAY(FRAME_TIME); else G433_DELAY(HALF_FRAME); - fastWrite(TX_PIN, flag = !flag); + F_fastWrite(TX_PIN, flag = !flag); data >>= 1; } } @@ -231,7 +232,7 @@ public: private: bool pinChanged() { - bit = fastRead(RX_PIN); + bit = F_fastRead(RX_PIN); if (bit != prevBit) { prevBit = bit; return 1;