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;