Добрый день! Уважаемые фррумчане подскажите пожалуйста куда копать. Столкнулся с проблемой сканирования частоты 2,4 ГГц по 127 каналам. Использую стандартный скетч из примера библиотеки rf24. Скетч модифицирован:
-закоментирована библиотека "printf.h" и все что с ней связано.
- изменена строка
на
при сканировании всех 127 частот, контроллер перегружается.
Копия порта:
Если указать не верную скорость порта, то циклично выдается данное сообщение:
Если начать сканировать менее 40 портов, то сканирование работает.
Загружаемый скетч:
Мое предположение, что происходит переполнение памяти и контроллер уходит в рст, а что с этим делать и куда копать, в силу своей не компетенции,"самообучаемости" и новизны для меня, я незнаю. Помогите пожалуйста разобраться.
Заранее спасибо!
-закоментирована библиотека "printf.h" и все что с ней связано.
- изменена строка
Код:
printf("%x", min(0xf, values[i]));
Код:
printf("%x", min<int>(0xf, values[i]));
Копия порта:
Код:
RF24/examples/scanner/
STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0xe7e7e7e7e7 0xc2c2c2c2c2
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xe7e7e7e7e7
RX_PW_P0-6 = 0x00 0x00 0x00 0x00 0x00 0x00
EN_AA = 0x00
EN_RXADDR = 0x03
RF_CH = 0x4c
RF_SETUP = 0x07
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 1MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MAX
000000000000000011111111111111112222222222222222333333333333333344444444444444445555555555555555666666666666666677777777777777
0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcd
Soft WDT reset
>>>stack>>>
ctx: cont
sp: 3ffffdc0 end: 3fffffc0 offset: 01b0
3fffff70: 4010019c 0000005b 3ffee4f8 40202f2c
3fffff80: 3ffe8579 0000007e 0000005b 4020253b
3fffff90: feefeffe feefeffe feefeffe 3ffee590
3fffffa0: 3fffdad0 00000000 3ffee560 40203960
3fffffb0: feefeffe feefeffe 3ffe84f4 40100a05
<<<stack<<<
Код:
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v951aeffa
~ld
Загружаемый скетч:
Код:
#define D5 14 // SCK
#define D6 12 // MISO
#define D7 13 // MOSI
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
//#include "printf.h"
//
// Hardware configuration
//
// Set up nRF24L01 radio on SPI bus plus pins 7 & 8
RF24 radio(D4, D8);
//
// Channel info
//
const uint8_t num_channels = 126;
uint8_t values[num_channels];
//
// Setup
//
void setup(void)
{
//
// Print preamble
//
Serial.begin(9600);
//printf_begin();
Serial.println(F("\n\rRF24/examples/scanner/"));
//
// Setup and configure rf radio
//
radio.begin();
radio.setAutoAck(false);
// Get into standby mode
radio.startListening();
radio.stopListening();
radio.printDetails();
// Print out header, high then low digit
int i = 0;
while ( i < num_channels )
{
printf("%x", i >> 4);
++i;
}
Serial.println();
i = 0;
while ( i < num_channels )
{
printf("%x", i & 0xf);
++i;
}
Serial.println();
}
//
// Loop
//
const int num_reps = 100;
void loop(void)
{
// Clear measurement values
memset(values, 0, sizeof(values));
// Scan all channels num_reps times
int rep_counter = num_reps;
while (rep_counter--)
{
int i = num_channels;
while (i--)
{
// Select this channel
radio.setChannel(i);
// Listen for a little
radio.startListening();
delayMicroseconds(128);
radio.stopListening();
// Did we get a carrier?
if ( radio.testCarrier() ) {
++values[i];
}
}
}
// Print out channel measurements, clamped to a single hex digit
int i = 0;
while ( i < num_channels )
{
printf("%x", min<int>(0xf, values[i]));
++i;
}
Serial.println();
}
// vim:ai:cin:sts=2 sw=2 ft=cppagjvjubnt
Заранее спасибо!