style: big renaming
This commit is contained in:
1 parent
cb5c29518b
commit
e334aec37f
3 files changed
+53
-53
No files matched your search
+6
-6
@@ -12,7 +12,7 @@ upload_flags =
|
|||||||
-Pusb
|
-Pusb
|
||||||
-e
|
-e
|
||||||
lib_deps =
|
lib_deps =
|
||||||
https://github.com/aZholtikov/zh_rf_config#dev
|
https://github.com/aZholtikov/zh_nrf24_config#dev
|
||||||
|
|
||||||
[env:ATmega168P]
|
[env:ATmega168P]
|
||||||
platform = atmelavr
|
platform = atmelavr
|
||||||
@@ -28,7 +28,7 @@ upload_flags =
|
|||||||
-Pusb
|
-Pusb
|
||||||
-e
|
-e
|
||||||
lib_deps =
|
lib_deps =
|
||||||
https://github.com/aZholtikov/zh_rf_config#dev
|
https://github.com/aZholtikov/zh_nrf24_config#dev
|
||||||
|
|
||||||
[env:ATmega168PB]
|
[env:ATmega168PB]
|
||||||
platform = atmelavr
|
platform = atmelavr
|
||||||
@@ -44,7 +44,7 @@ upload_flags =
|
|||||||
-Pusb
|
-Pusb
|
||||||
-e
|
-e
|
||||||
lib_deps =
|
lib_deps =
|
||||||
https://github.com/aZholtikov/zh_rf_config#dev
|
https://github.com/aZholtikov/zh_nrf24_config#dev
|
||||||
|
|
||||||
[env:ATmega328]
|
[env:ATmega328]
|
||||||
platform = atmelavr
|
platform = atmelavr
|
||||||
@@ -60,7 +60,7 @@ upload_flags =
|
|||||||
-Pusb
|
-Pusb
|
||||||
-e
|
-e
|
||||||
lib_deps =
|
lib_deps =
|
||||||
https://github.com/aZholtikov/zh_rf_config#dev
|
https://github.com/aZholtikov/zh_nrf24_config#dev
|
||||||
|
|
||||||
[env:ATmega328P]
|
[env:ATmega328P]
|
||||||
platform = atmelavr
|
platform = atmelavr
|
||||||
@@ -76,7 +76,7 @@ upload_flags =
|
|||||||
-Pusb
|
-Pusb
|
||||||
-e
|
-e
|
||||||
lib_deps =
|
lib_deps =
|
||||||
https://github.com/aZholtikov/zh_rf_config#dev
|
https://github.com/aZholtikov/zh_nrf24_config#dev
|
||||||
|
|
||||||
[env:ATmega328PB]
|
[env:ATmega328PB]
|
||||||
platform = atmelavr
|
platform = atmelavr
|
||||||
@@ -92,4 +92,4 @@ upload_flags =
|
|||||||
-Pusb
|
-Pusb
|
||||||
-e
|
-e
|
||||||
lib_deps =
|
lib_deps =
|
||||||
https://github.com/aZholtikov/zh_rf_config#dev
|
https://github.com/aZholtikov/zh_nrf24_config#dev
|
||||||
+29
-29
@@ -7,7 +7,7 @@
|
|||||||
#include "util/delay.h"
|
#include "util/delay.h"
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "stdbool.h"
|
#include "stdbool.h"
|
||||||
#include "zh_rf_config.h"
|
#include "zh_nrf24_config.h"
|
||||||
|
|
||||||
#if defined(__AVR_ATmega328PB__)
|
#if defined(__AVR_ATmega328PB__)
|
||||||
#ifndef SPCR
|
#ifndef SPCR
|
||||||
@@ -295,11 +295,11 @@ static float zh_get_battery_voltage(void);
|
|||||||
static volatile uint8_t send_request = false;
|
static volatile uint8_t send_request = false;
|
||||||
static volatile uint8_t nrf_event = false;
|
static volatile uint8_t nrf_event = false;
|
||||||
|
|
||||||
zh_rf_sensor_transmitted_data_t transmitted_data = {0};
|
zh_nrf24_sensor_transmitted_data_t transmitted_data = {0};
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
transmitted_data.type = ZH_RF_SENSOR_TOUCH_SWITCH;
|
transmitted_data.type = ZH_NRF24_SENSOR_TOUCH_SWITCH;
|
||||||
MCUSR &= ~(1 << WDRF);
|
MCUSR &= ~(1 << WDRF);
|
||||||
wdt_disable();
|
wdt_disable();
|
||||||
cli();
|
cli();
|
||||||
@@ -315,8 +315,8 @@ int main(void)
|
|||||||
}
|
}
|
||||||
transmitted_data.id = (int16_t)device_id;
|
transmitted_data.id = (int16_t)device_id;
|
||||||
{
|
{
|
||||||
uint8_t probe[ZH_RF_MAX_PAYLOAD_SIZE];
|
uint8_t probe[ZH_NRF24_MAX_PAYLOAD_SIZE];
|
||||||
if (zh_rf_sensor_build_payload(&transmitted_data, probe, sizeof(probe)) == 0)
|
if (zh_nrf24_sensor_build_payload(&transmitted_data, probe, sizeof(probe)) == 0)
|
||||||
{
|
{
|
||||||
zh_enter_final_sleep();
|
zh_enter_final_sleep();
|
||||||
}
|
}
|
||||||
@@ -329,8 +329,8 @@ int main(void)
|
|||||||
send_request = false;
|
send_request = false;
|
||||||
sei();
|
sei();
|
||||||
transmitted_data.battery = (int16_t)lroundf(zh_get_battery_voltage() * 100.0);
|
transmitted_data.battery = (int16_t)lroundf(zh_get_battery_voltage() * 100.0);
|
||||||
uint8_t payload[ZH_RF_MAX_PAYLOAD_SIZE];
|
uint8_t payload[ZH_NRF24_MAX_PAYLOAD_SIZE];
|
||||||
uint8_t size = zh_rf_sensor_build_payload(&transmitted_data, payload, sizeof(payload));
|
uint8_t size = zh_nrf24_sensor_build_payload(&transmitted_data, payload, sizeof(payload));
|
||||||
if (size > 0)
|
if (size > 0)
|
||||||
{
|
{
|
||||||
zh_nrf24_send(payload, size);
|
zh_nrf24_send(payload, size);
|
||||||
@@ -594,25 +594,25 @@ static uint16_t zh_get_random_token(void)
|
|||||||
static uint8_t zh_do_pairing(void)
|
static uint8_t zh_do_pairing(void)
|
||||||
{
|
{
|
||||||
uint16_t token = zh_get_random_token();
|
uint16_t token = zh_get_random_token();
|
||||||
zh_rf_sensor_pairing_data_t pairing_request;
|
zh_nrf24_sensor_pairing_data_t pairing_request;
|
||||||
pairing_request.type = (uint8_t)transmitted_data.type;
|
pairing_request.type = (uint8_t)transmitted_data.type;
|
||||||
pairing_request.magic = ZH_RF_PAIRING_REQ_MAGIC;
|
pairing_request.magic = ZH_NRF24_PAIRING_REQ_MAGIC;
|
||||||
pairing_request.token_hi = (uint8_t)(token >> 8);
|
pairing_request.token_hi = (uint8_t)(token >> 8);
|
||||||
pairing_request.token_lo = (uint8_t)(token & 0xFF);
|
pairing_request.token_lo = (uint8_t)(token & 0xFF);
|
||||||
pairing_request.id = 0;
|
pairing_request.id = 0;
|
||||||
zh_nrf24_interrupt_init();
|
zh_nrf24_interrupt_init();
|
||||||
zh_rf_sensor_pairing_state_t state = ZH_RF_PAIR_SEND;
|
zh_nrf24_sensor_pairing_state_t state = ZH_NRF24_PAIR_SEND;
|
||||||
uint8_t attempts = 0;
|
uint8_t attempts = 0;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case ZH_RF_PAIR_SEND:
|
case ZH_NRF24_PAIR_SEND:
|
||||||
nrf_event = false;
|
nrf_event = false;
|
||||||
zh_nrf24_send_no_wait((uint8_t *)&pairing_request, ZH_RF_PAIRING_PACKET_SIZE);
|
zh_nrf24_send_no_wait((uint8_t *)&pairing_request, ZH_NRF24_PAIRING_PACKET_SIZE);
|
||||||
state = ZH_RF_PAIR_TX_WAIT;
|
state = ZH_NRF24_PAIR_TX_WAIT;
|
||||||
break;
|
break;
|
||||||
case ZH_RF_PAIR_TX_WAIT:
|
case ZH_NRF24_PAIR_TX_WAIT:
|
||||||
if ((PIND & (1 << PD2)) == 0)
|
if ((PIND & (1 << PD2)) == 0)
|
||||||
{
|
{
|
||||||
nrf_event = true;
|
nrf_event = true;
|
||||||
@@ -636,19 +636,19 @@ static uint8_t zh_do_pairing(void)
|
|||||||
if ((status & NRF_STATUS_TX_DS) != 0)
|
if ((status & NRF_STATUS_TX_DS) != 0)
|
||||||
{
|
{
|
||||||
zh_nrf24_enter_rx();
|
zh_nrf24_enter_rx();
|
||||||
state = ZH_RF_PAIR_RX_WAIT;
|
state = ZH_NRF24_PAIR_RX_WAIT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
state = ZH_RF_PAIR_BACKOFF;
|
state = ZH_NRF24_PAIR_BACKOFF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
state = ZH_RF_PAIR_BACKOFF;
|
state = ZH_NRF24_PAIR_BACKOFF;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ZH_RF_PAIR_RX_WAIT:
|
case ZH_NRF24_PAIR_RX_WAIT:
|
||||||
if ((PIND & (1 << PD2)) == 0)
|
if ((PIND & (1 << PD2)) == 0)
|
||||||
{
|
{
|
||||||
nrf_event = true;
|
nrf_event = true;
|
||||||
@@ -671,27 +671,27 @@ static uint8_t zh_do_pairing(void)
|
|||||||
if ((status & NRF_STATUS_RX_DR) != 0)
|
if ((status & NRF_STATUS_RX_DR) != 0)
|
||||||
{
|
{
|
||||||
uint8_t width = zh_nrf24_read_payload_width();
|
uint8_t width = zh_nrf24_read_payload_width();
|
||||||
if (width > ZH_RF_MAX_PAYLOAD_SIZE)
|
if (width > ZH_NRF24_MAX_PAYLOAD_SIZE)
|
||||||
{
|
{
|
||||||
zh_nrf24_send_command(NRF_CMD_FLUSH_RX);
|
zh_nrf24_send_command(NRF_CMD_FLUSH_RX);
|
||||||
zh_nrf24_write_register(NRF_REG_STATUS, NRF_STATUS_RX_DR);
|
zh_nrf24_write_register(NRF_REG_STATUS, NRF_STATUS_RX_DR);
|
||||||
state = ZH_RF_PAIR_BACKOFF;
|
state = ZH_NRF24_PAIR_BACKOFF;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (width != ZH_RF_PAIRING_PACKET_SIZE)
|
if (width != ZH_NRF24_PAIRING_PACKET_SIZE)
|
||||||
{
|
{
|
||||||
uint8_t dummy[ZH_RF_MAX_PAYLOAD_SIZE];
|
uint8_t dummy[ZH_NRF24_MAX_PAYLOAD_SIZE];
|
||||||
zh_nrf24_read_payload(dummy, width);
|
zh_nrf24_read_payload(dummy, width);
|
||||||
zh_nrf24_write_register(NRF_REG_STATUS, NRF_STATUS_RX_DR);
|
zh_nrf24_write_register(NRF_REG_STATUS, NRF_STATUS_RX_DR);
|
||||||
zh_nrf24_send_command(NRF_CMD_FLUSH_RX);
|
zh_nrf24_send_command(NRF_CMD_FLUSH_RX);
|
||||||
state = ZH_RF_PAIR_BACKOFF;
|
state = ZH_NRF24_PAIR_BACKOFF;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
zh_rf_sensor_pairing_data_t pairing_response;
|
zh_nrf24_sensor_pairing_data_t pairing_response;
|
||||||
zh_nrf24_read_payload((uint8_t *)&pairing_response, width);
|
zh_nrf24_read_payload((uint8_t *)&pairing_response, width);
|
||||||
zh_nrf24_write_register(NRF_REG_STATUS, NRF_STATUS_RX_DR | NRF_STATUS_TX_DS | NRF_STATUS_MAX_RT);
|
zh_nrf24_write_register(NRF_REG_STATUS, NRF_STATUS_RX_DR | NRF_STATUS_TX_DS | NRF_STATUS_MAX_RT);
|
||||||
zh_nrf24_send_command(NRF_CMD_FLUSH_RX);
|
zh_nrf24_send_command(NRF_CMD_FLUSH_RX);
|
||||||
if (pairing_response.magic == ZH_RF_PAIRING_ACK_MAGIC && pairing_response.type == pairing_request.type &&
|
if (pairing_response.magic == ZH_NRF24_PAIRING_ACK_MAGIC && pairing_response.type == pairing_request.type &&
|
||||||
pairing_response.token_hi == pairing_request.token_hi && pairing_response.token_lo == pairing_request.token_lo &&
|
pairing_response.token_hi == pairing_request.token_hi && pairing_response.token_lo == pairing_request.token_lo &&
|
||||||
pairing_response.id != 0 && pairing_response.id != DEVICE_ID_UNASSIGNED)
|
pairing_response.id != 0 && pairing_response.id != DEVICE_ID_UNASSIGNED)
|
||||||
{
|
{
|
||||||
@@ -701,14 +701,14 @@ static uint8_t zh_do_pairing(void)
|
|||||||
return pairing_response.id;
|
return pairing_response.id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
state = ZH_RF_PAIR_BACKOFF;
|
state = ZH_NRF24_PAIR_BACKOFF;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
state = ZH_RF_PAIR_BACKOFF;
|
state = ZH_NRF24_PAIR_BACKOFF;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ZH_RF_PAIR_BACKOFF:
|
case ZH_NRF24_PAIR_BACKOFF:
|
||||||
zh_nrf24_enter_power_down();
|
zh_nrf24_enter_power_down();
|
||||||
nrf_event = false;
|
nrf_event = false;
|
||||||
zh_wdt_start(WDT_T_4S);
|
zh_wdt_start(WDT_T_4S);
|
||||||
@@ -722,7 +722,7 @@ static uint8_t zh_do_pairing(void)
|
|||||||
{
|
{
|
||||||
zh_enter_final_sleep();
|
zh_enter_final_sleep();
|
||||||
}
|
}
|
||||||
state = ZH_RF_PAIR_SEND;
|
state = ZH_NRF24_PAIR_SEND;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-18
@@ -25,12 +25,12 @@
|
|||||||
|
|
||||||
Прошивка не использует динамическое выделение памяти. Все данные хранятся в статической области и регистрах микроконтроллера.
|
Прошивка не использует динамическое выделение памяти. Все данные хранятся в статической области и регистрах микроконтроллера.
|
||||||
|
|
||||||
Пакет формируется в глобальной переменной `transmitted_data` типа `zh_rf_sensor_transmitted_data_t` из внешней библиотеки `zh_rf_config` и сериализуется функцией `zh_rf_sensor_build_payload()` перед передачей.
|
Пакет формируется в глобальной переменной `transmitted_data` типа `zh_nrf24_sensor_transmitted_data_t` из внешней библиотеки `zh_nrf24_config` и сериализуется функцией `zh_nrf24_sensor_build_payload()` перед передачей.
|
||||||
|
|
||||||
| Поле | Тип | Описание |
|
| Поле | Тип | Описание |
|
||||||
| ------ | ----- | ---------- |
|
| ------ | ----- | ---------- |
|
||||||
| `id` | `int16_t` | Идентификатор устройства, присвоенный шлюзом при сопряжении |
|
| `id` | `int16_t` | Идентификатор устройства, присвоенный шлюзом при сопряжении |
|
||||||
| `type` | `int16_t` | Тип устройства (`ZH_RF_SENSOR_TOUCH_SWITCH`) |
|
| `type` | `int16_t` | Тип устройства (`ZH_NRF24_SENSOR_TOUCH_SWITCH`) |
|
||||||
| `battery` | `int16_t` | Напряжение батареи × 100 (например, 330 = 3.30 В) |
|
| `battery` | `int16_t` | Напряжение батареи × 100 (например, 330 = 3.30 В) |
|
||||||
|
|
||||||
### Конфигурационные макросы
|
### Конфигурационные макросы
|
||||||
@@ -144,10 +144,10 @@
|
|||||||
|
|
||||||
Конечный автомат `zh_do_pairing()` работает в четырёх состояниях:
|
Конечный автомат `zh_do_pairing()` работает в четырёх состояниях:
|
||||||
|
|
||||||
1. **`ZH_RF_PAIR_SEND`** — генерируется псевдослучайный токен, формируется пакет запроса (`zh_rf_sensor_pairing_data_t` с `magic = ZH_RF_PAIRING_REQ_MAGIC`), выполняется неблокирующая передача через `zh_nrf24_send_no_wait()`.
|
1. **`ZH_NRF24_PAIR_SEND`** — генерируется псевдослучайный токен, формируется пакет запроса (`zh_nrf24_sensor_pairing_data_t` с `magic = ZH_NRF24_PAIRING_REQ_MAGIC`), выполняется неблокирующая передача через `zh_nrf24_send_no_wait()`.
|
||||||
2. **`ZH_RF_PAIR_TX_WAIT`** — ожидание прерывания IRQ (завершение передачи). Если пин IRQ уже низкий — событие считается наступившим. Иначе — переход в сон с watchdog-таймером 250 мс. При флаге `TX_DS` — переход в приём, при `MAX_RT` — в backoff.
|
2. **`ZH_NRF24_PAIR_TX_WAIT`** — ожидание прерывания IRQ (завершение передачи). Если пин IRQ уже низкий — событие считается наступившим. Иначе — переход в сон с watchdog-таймером 250 мс. При флаге `TX_DS` — переход в приём, при `MAX_RT` — в backoff.
|
||||||
3. **`ZH_RF_PAIR_RX_WAIT`** — ожидание ответа шлюза. При получении пакета проверяется: длина равна `ZH_RF_PAIRING_PACKET_SIZE`, `magic == ZH_RF_PAIRING_ACK_MAGIC`, тип совпадает, токен совпадает, `id != 0` и `id != DEVICE_ID_UNASSIGNED`. При успехе — сохранение `id` в EEPROM и возврат.
|
3. **`ZH_NRF24_PAIR_RX_WAIT`** — ожидание ответа шлюза. При получении пакета проверяется: длина равна `ZH_NRF24_PAIRING_PACKET_SIZE`, `magic == ZH_NRF24_PAIRING_ACK_MAGIC`, тип совпадает, токен совпадает, `id != 0` и `id != DEVICE_ID_UNASSIGNED`. При успехе — сохранение `id` в EEPROM и возврат.
|
||||||
4. **`ZH_RF_PAIR_BACKOFF`** — переход в Power Down, ожидание 4 с через watchdog. После `PAIRING_TIMEOUT_ATTEMPTS` (7) неудачных попыток — переход в `zh_enter_final_sleep()`.
|
4. **`ZH_NRF24_PAIR_BACKOFF`** — переход в Power Down, ожидание 4 с через watchdog. После `PAIRING_TIMEOUT_ATTEMPTS` (7) неудачных попыток — переход в `zh_enter_final_sleep()`.
|
||||||
|
|
||||||
### Алгоритм измерения напряжения батареи
|
### Алгоритм измерения напряжения батареи
|
||||||
|
|
||||||
@@ -195,10 +195,10 @@
|
|||||||
#include "avr/wdt.h"
|
#include "avr/wdt.h"
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "stdbool.h"
|
#include "stdbool.h"
|
||||||
#include "zh_rf_config.h"
|
#include "zh_nrf24_config.h"
|
||||||
|
|
||||||
static volatile uint8_t send_request = false;
|
static volatile uint8_t send_request = false;
|
||||||
zh_rf_sensor_transmitted_data_t transmitted_data = {0};
|
zh_nrf24_sensor_transmitted_data_t transmitted_data = {0};
|
||||||
|
|
||||||
ISR(INT1_vect)
|
ISR(INT1_vect)
|
||||||
{
|
{
|
||||||
@@ -207,7 +207,7 @@ ISR(INT1_vect)
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
transmitted_data.type = ZH_RF_SENSOR_TOUCH_SWITCH;
|
transmitted_data.type = ZH_NRF24_SENSOR_TOUCH_SWITCH;
|
||||||
MCUSR &= ~(1 << WDRF);
|
MCUSR &= ~(1 << WDRF);
|
||||||
wdt_disable();
|
wdt_disable();
|
||||||
cli();
|
cli();
|
||||||
@@ -231,8 +231,8 @@ int main(void)
|
|||||||
send_request = false;
|
send_request = false;
|
||||||
sei();
|
sei();
|
||||||
transmitted_data.battery = (int16_t)lroundf(zh_get_battery_voltage() * 100.0);
|
transmitted_data.battery = (int16_t)lroundf(zh_get_battery_voltage() * 100.0);
|
||||||
uint8_t payload[ZH_RF_MAX_PAYLOAD_SIZE];
|
uint8_t payload[ZH_NRF24_MAX_PAYLOAD_SIZE];
|
||||||
uint8_t size = zh_rf_sensor_build_payload(&transmitted_data, payload, sizeof(payload));
|
uint8_t size = zh_nrf24_sensor_build_payload(&transmitted_data, payload, sizeof(payload));
|
||||||
if (size > 0)
|
if (size > 0)
|
||||||
{
|
{
|
||||||
zh_nrf24_send(payload, size);
|
zh_nrf24_send(payload, size);
|
||||||
@@ -273,7 +273,7 @@ int main(void)
|
|||||||
// Измените адрес и канал под ваш шлюз
|
// Измените адрес и канал под ваш шлюз
|
||||||
#define GATEWAY_CHANNEL 120
|
#define GATEWAY_CHANNEL 120
|
||||||
#define GATEWAY_ADDRESS 0xDDEEFF
|
#define GATEWAY_ADDRESS 0xDDEEFF
|
||||||
// Тип устройства задаётся перечислением ZH_RF_SENSOR_TOUCH_SWITCH из zh_rf_config
|
// Тип устройства задаётся перечислением ZH_NRF24_SENSOR_TOUCH_SWITCH из zh_nrf24_config
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -286,9 +286,9 @@ int main(void)
|
|||||||
| --------- | ----------- |
|
| --------- | ----------- |
|
||||||
| Нулевое показание АЦП | `zh_get_battery_voltage()` возвращает `0.0` |
|
| Нулевое показание АЦП | `zh_get_battery_voltage()` возвращает `0.0` |
|
||||||
| Превышение таймаута передачи (100 мс) | Передача прерывается, пакет теряется |
|
| Превышение таймаута передачи (100 мс) | Передача прерывается, пакет теряется |
|
||||||
| Неверная длина принятого пакета при сопряжении | Пакет отбрасывается, переход в `ZH_RF_PAIR_BACKOFF` |
|
| Неверная длина принятого пакета при сопряжении | Пакет отбрасывается, переход в `ZH_NRF24_PAIR_BACKOFF` |
|
||||||
| Превышение числа попыток сопряжения (7) | `zh_enter_final_sleep()` — сон до сброса |
|
| Превышение числа попыток сопряжения (7) | `zh_enter_final_sleep()` — сон до сброса |
|
||||||
| `zh_rf_sensor_build_payload()` возвращает 0 | Передача пропускается, переход в `zh_enter_final_sleep()` |
|
| `zh_nrf24_sensor_build_payload()` возвращает 0 | Передача пропускается, переход в `zh_enter_final_sleep()` |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -308,7 +308,7 @@ int main(void)
|
|||||||
|
|
||||||
- PlatformIO с плагином `platform-atmelavr`
|
- PlatformIO с плагином `platform-atmelavr`
|
||||||
- AVR-GCC (входит в состав PlatformIO)
|
- AVR-GCC (входит в состав PlatformIO)
|
||||||
- Библиотека `zh_rf_config` (подключается через `lib_deps` в `platformio.ini`)
|
- Библиотека `zh_nrf24_config` (подключается через `lib_deps` в `platformio.ini`)
|
||||||
- Программатор USBasp (или совместимый)
|
- Программатор USBasp (или совместимый)
|
||||||
- Фьюзы: LFUSE=`0xE2`, HFUSE=`0xDF`, EFUSE=`0x07` (8 МГц, без делителя)
|
- Фьюзы: LFUSE=`0xE2`, HFUSE=`0xDF`, EFUSE=`0x07` (8 МГц, без делителя)
|
||||||
|
|
||||||
@@ -326,12 +326,12 @@ pio run -e ATmega328P -t upload
|
|||||||
|
|
||||||
### Подключение в проекте
|
### Подключение в проекте
|
||||||
|
|
||||||
Компонент является самодостаточной прошивкой — не подключается как библиотека. Для интеграции в другой проект скопируйте `src/main.c`, добавьте зависимость `zh_rf_config` и адаптируйте макросы конфигурации.
|
Компонент является самодостаточной прошивкой — не подключается как библиотека. Для интеграции в другой проект скопируйте `src/main.c`, добавьте зависимость `zh_nrf24_config` и адаптируйте макросы конфигурации.
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
; platformio.ini
|
; platformio.ini
|
||||||
lib_deps =
|
lib_deps =
|
||||||
https://github.com/aZholtikov/zh_rf_config
|
https://github.com/aZholtikov/zh_nrf24_config
|
||||||
```
|
```
|
||||||
|
|
||||||
### Подключение заголовков в коде
|
### Подключение заголовков в коде
|
||||||
@@ -347,5 +347,5 @@ lib_deps =
|
|||||||
#include "util/delay.h"
|
#include "util/delay.h"
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "stdbool.h"
|
#include "stdbool.h"
|
||||||
#include "zh_rf_config.h"
|
#include "zh_nrf24_config.h"
|
||||||
```
|
```
|
||||||
Reference in new issue
Block a user