Mega+SDCard+nrf24l01+enc28J60

sonmax
Offline
Зарегистрирован: 30.06.2013

Всем привет!

Проблема уже поднималась, но решение для себя я так и не нашел.

Начал с SD и NRF24. библиотеки стандартные SD и nRF24L01.h. Подключаю так.

SD: MISO-50, MOSI-51, SCK-52, CS-4, +5V, GND.

NRF24: MISO-50, MOSI-51, SCK-52, CE-8, CSN-7, +3V, GND.

Код для всех модулей общий, если включаю девайсы по отдельности все работает, подключаю вместе, SD-работает, NRF-нет(вернее инициализируется вроде нормально, что-то отсылает, а принимает нули). Отключаю SD все работает прекрасно. Пробовал экперементировать с питанием (все питать от 3V или от 5V - не рабоет, взял отдельное питание, ни один модуль вообще не запустился). 

Какие можно еще варианты попробовать? 

Подразумеваю, что с Ethernet будет также.

 

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

конечно будет, пока вы не поймете что и как работает. интересно какие еще варианты вы ожидаете? могу предложить завязать провода бантиком, вдруг заработает.. :)

sonmax
Offline
Зарегистрирован: 30.06.2013

Завязал бантиком -не заработало. Что еще должен понять? Везде в описании по SPI написано, MISO, MOSI, SCK одинаковые, управляющие пины - разные. Я так и сделал.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

sonmax пишет:

Завязал бантиком -не заработало. Что еще должен понять? Везде в описании по SPI написано, MISO, MOSI, SCK одинаковые, управляющие пины - разные. Я так и сделал.

давай попробуй думать... пины общие... управляющие разные... тоесть в один момент времени сколько устройств может работать?

sonmax
Offline
Зарегистрирован: 30.06.2013

солнышко, тепло -думается как-то не очень:). Ну попробую.

В один момент времени работает только одно устройство. соответственно остальные я должен как-то отключить, например: 

digitalWrite(4,HIGH); // останавливаю SD
digitalWrite(7,LOW);  // запускаю nrf

правильно?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

sonmax пишет:

солнышко, тепло -думается как-то не очень:). Ну попробую.

В один момент времени работает только одно устройство. соответственно остальные я должен как-то отключить, например: 

digitalWrite(4,HIGH); // останавливаю SD
digitalWrite(7,LOW);  // запускаю nrf

правильно?

угу. как то так... если взять нормальные библиотеки, то там это все реализовано в функциях... главное не забывать заканчивать сеанс связи с одним устроством прежде чем начать общаться с другим... труба то для общения одна на всех..

sonmax
Offline
Зарегистрирован: 30.06.2013

Код чуток кривоватый, пока в стадии отладки, но все работает

#include "SPI.h"
#include "Mirf.h"
#include "nRF24L01.h"
#include "MirfHardwareSpiDriver.h"
//*************************************************
#include <SD.h> 
File myFile;
unsigned long timer =0, timer5min =0;

void setup(){
  Serial.begin(9600);
  // mirf
  Mirf.cePin =8;
  Mirf.csnPin = 7;
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR((byte *)"client");
  //  Mirf.payload = sizeof(unsigned long );
  Mirf.payload = 7;
  Mirf.config();
  //**************************************************
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
  pinMode(53, OUTPUT);
  if (!SD.begin(4)) {
    Serial.println("Failed to access SD-card controller");
    return;
  }
  else 
    Serial.println("initialization done.");
}

void loop(){
  timer = millis();
  if (timer - timer5min > 5000) {  
    timer5min = timer;  
    getNRF24Data();
     writeFile();
  }
}      

void writeFile(){
  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("ARDUINO.LOG", FILE_WRITE);
  
  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to ARDUINO.LOG...");
    myFile.println("Write data ");   
    // close the file:
    myFile.close();
    Serial.println("done.");
  } 
  else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}
void getNRF24Data()  {
  byte outputdata[Mirf.payload];
  outputdata[0] = 107;        
  outputdata[1] = 0;        
  outputdata[2] = 35;           
  outputdata[3] = 0;                 
  outputdata[4] =10;
  Mirf.setTADDR((byte *)"server");  
  Serial.print("Send data  "); 
  Mirf. send((byte *)&outputdata);

  while(Mirf.isSending()){
   }
    while(!Mirf.dataReady()){
    if ( ( millis() - stime ) > 1000 ) {
      Serial.println("Timeout on response from server!");
      return;
    }
  }
    byte data[Mirf.payload];
    Mirf.getData((byte *) &data);        
    Serial.print("Get data   "); 
     }
}  
  
  

 

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

библы скорее всего кривые... особенно не понятно нафига эта #include "MirfHardwareSpiDriver.h"

sonmax
Offline
Зарегистрирован: 30.06.2013

ой, забыл дописать

void loop(){
  timer = millis();
  if (timer - timer5min > 5000) { 
     timer5min = timer; 
   digitalWrite(4,HIGH);
    digitalWrite(7,LOW);
    digitalWrite(8,LOW);
    getNRF24Data();
    digitalWrite(4,LOW);
   digitalWrite(7,HIGH);
   digitalWrite(8,HIGH);
     writeFile();
  }
}   
sonmax
Offline
Зарегистрирован: 30.06.2013

Puhlyaviy пишет:

библы скорее всего кривые... особенно не понятно нафига эта #include "MirfHardwareSpiDriver.h"

как-то без него не работает

на  Mirf.spi = &MirfHardwareSpi; ругается

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

sonmax пишет:

Puhlyaviy пишет:

библы скорее всего кривые... особенно не понятно нафига эта #include "MirfHardwareSpiDriver.h"

как-то без него не работает

на  Mirf.spi = &MirfHardwareSpi; ругается

я вот точно помню что NRF работает без всяких мирфов и прочих драйверов... возми последнию версию оригинальной бибилотеки. а не всякие форки по мотивам. которые кто то для себя затачивал для каких то извращенческих нужд

sonmax
Offline
Зарегистрирован: 30.06.2013

Я так понимаю речь идет про RF24? Ну если других вариантов нет, придется попробовать.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

речь идет что в оригинальной версии есть даже mesh сети... не в полном обьеме но работают..

sonmax
Offline
Зарегистрирован: 30.06.2013

спасибо, пошел пробовать

Radjah
Offline
Зарегистрирован: 06.08.2014

ЕМНИП, в библиотеке дергается только CE, CS надо дергать самостоятельно.

Я обычно делаю так:

- LOW на нужный пин, остальные HIGH

- работа с устройством

- Все в HIGH

Либа

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Все нормально дергается если брать нормальные библиотеки с гитхаба.

sonmax
Offline
Зарегистрирован: 30.06.2013

Ничего не получается.

После инициализации пробовал, переводить 4 пин в LOW, а перед записью в HIGH.

Подключал NRF24, NRF24RadioHead - результат примерно тот же.

К сожалению заниматься этим могу только дома, да и то 1-2 часа. 

Выручайте!

Вот кусок кода, как я делаю.

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"
//*************************************************
#include <SD.h> // MOSI-11, MISO-12, CLK-13, CS-4
File myFile;

RF24 radio(7,8);

void setup() {


  Serial.begin(57600);
  printf_begin();
  radio.begin();                          
  radio.setAutoAck(1);                    
  radio.setRetries(15,15);                
  radio.openWritingPipe(addresses[1]);
  radio.openReadingPipe(1,addresses[0]);
  
  radio.startListening();                 
  radio.printDetails();                   
  //*************************************************
  pinMode(53, OUTPUT);
  if (!SD.begin(4)) {
    Serial.println("Failed to access SD-card controller");
    return;
  }
  digitalWrite(4,LOW);
}

void loop(void){

 

 

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Мдааа... почитай свой код... радио стоит слушает... как в то же время ожидается что сд будет читать?
Типа вы тут ухо приставили к трубе и слушаете, а кто то унитаз смыл.

sonmax
Offline
Зарегистрирован: 30.06.2013

Пробовал по разному,

Пробовал разные варианты, в часности

radio.stopListening();

digitalWrite(4,LOW);

myFile.read...

digitalWrite(4,HIGH);

одним словом, мои познания в этом кончились.

P.S. Прошу к коду не придираться, пишу по памяти, т.к. на работе.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Предлагается по кусочкам гадать?

sonmax
Offline
Зарегистрирован: 30.06.2013

Puhlyaviy пишет:
Мдааа... почитай свой код... радио стоит слушает... как в то же время ожидается что сд будет читать? Типа вы тут ухо приставили к трубе и слушаете, а кто то унитаз смыл.
,

Я же писал у меня нет полного кода на библ-х NRF24+SD. Все у меня написано с помощью Mirf.  Здесь же, чтобы не быть голословным, я с двух примеров от NRF24 и SD набросал код похожий на мой. В последнем посте я перед тем как обращаться к карте прекращаю слушать порт. И обращаюсь к карте. Повторюсь, пробовал разные варианты.

P.S. наверное роль учителя очень занятная, как приятно ученика по шагам на путь истинный наставлять...Вы, если знаете, просто напишите как нужно.

 

Radjah
Offline
Зарегистрирован: 06.08.2014

Puhlyaviy пишет:
Все нормально дергается если брать нормальные библиотеки с гитхаба.
Дейсвительно. Посмотрел код, а там CS как раз дергается. Тогда можно будет код мой немного упростить. Надо еще SdFat прошерстить. Может и зря я такой огород мутил.

sonmax
Offline
Зарегистрирован: 30.06.2013

ну на гитхабе rf24 аж 3х видов, заработала толком только одна. от маньякbug. тоже пытался дергать cs, нет результата

Radjah
Offline
Зарегистрирован: 06.08.2014

Ну вот мой код с использованием либы, на которую ссылку давал. Работает без сбоев пока. По крайней мере, если передающая сторона не дурдомит.

На SPI висят три устройства: nRF24, SD и Ethernet, который сразу отключаю.

RF_ON и RF_OFF попробую убрать, в бибилиотеке CS дерагется и так.

sonmax
Offline
Зарегистрирован: 30.06.2013

Спасибо. Как раз мне и нужно эти 3 устройства. Попробую дома

sonmax
Offline
Зарегистрирован: 30.06.2013

Radjah пишет:
Ну вот мой код с использованием либы, на которую ссылку давал. Работает без сбоев пока. По крайней мере, если передающая сторона не дурдомит.

было сегодня полчасика, попробовал Ваш код. с "наскока" не заработал, ругается например на

// Карта памяти
SdFat SD;

Скачал библиотеку SdFat.h, хотя  этот фай есть и в стандартной Sd. без результата.

Далее на

// Настройка выводов
 D4_Out;
 D10_Out;
#if defined (__AVR_ATmega2560__) || defined (__AVR_ATmega2561__)
 D49_Out;
 D53_Out;
#else
 D8_Out;
#endif
  // Отключить Ethernet
 D10_High;

ну и еще на пару моментов.

Подскажите по коду

Radjah
Offline
Зарегистрирован: 06.08.2014

Стандартная давно плесенью покрылась.

https://github.com/greiman/SdFat

sonmax
Offline
Зарегистрирован: 30.06.2013

Radjah пишет:

Стандартная давно плесенью покрылась.

https://github.com/greiman/SdFat

Странно даже в примере SdInfo на

SdFat sd;

ругается. и в разных средах. вечером на 1.02 попробую

Radjah
Offline
Зарегистрирован: 06.08.2014

Странно. У меня Есть и SD и SdFat. Раньше была IDE 1.5.*, сейчас 1.6.*. Компилируется скетч без ошибок.

sonmax
Offline
Зарегистрирован: 30.06.2013

Все таки наверное проблема не с кодом.

Ситуация следующая:

Подключаю nrf модуль, работает. Как только физически подключаю SD, nrf затыкается. При том, что в коде вообще нет упоминания об SD.

Добавляю библу для SD (SdFat) без разницы, в лучшем случае начинает видеть карту, но nrf не поднимается. На принудительное отключение/включ. портов никакой реакции нет. Вот код:

// Arduini Mega as CLIENT
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include "printf.h"
#include <Wire.h>
//#include <RTClib.h>
#include <SdFat.h>

// Пины радио
#define CSNPIN 7
#define CEPIN 8
// Радио
RF24 radio(CEPIN, CSNPIN);


struct sendtemp {
  float temp; // Температура на улице
  float humin;   // Влажность относительная
  float pres;    // Давление
};
// Карта памяти
SdFat SD;
#define SDCS 4     // CS SD-карты
File logfile;      // Файл лога
bool isSD = false; // Флаг присутствия карты
// Пайпы
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

void setup() {
  Serial.begin(9600);
  SPI.begin();
 // Настройка выводов LOW-включ. HIGH-выключ.
  pinMode(SDCS, OUTPUT);  //SD
  pinMode(CSNPIN, OUTPUT);  // CSN -радио
  pinMode(CEPIN, OUTPUT);  // CE -радио
  pinMode(10, OUTPUT); // ethernet
  pinMode(53, OUTPUT); // выкл 
  // Отключить Ethernet
  digitalWrite(10, HIGH);
  printf_begin();
  // Включаем карту
  CheckSD();
  // Включаем радио
  radio.begin();
  // Настройка
  radio.setRetries(15, 15);
  radio.setAutoAck(1);
  radio.setChannel(50);
  radio.setDataRate(RF24_250KBPS);
  // Пайпы на запись и чтение
  radio.openWritingPipe(pipes[1]);
  radio.openReadingPipe(1, pipes[0]);
  radio.startListening();
  radio.printDetails();
  Serial.println("This is CLIENT ready");
}

void loop() {
  // Работает только RF24
  if ( radio.available() ) {
    bool done = false;
   // Serial.println("available!");
    sendtemp st;
    while (!done) {
      done = radio.read( &st, sizeof(sendtemp) ); // слушаю эфир
      // Вывод в порт
      Serial.println("Recived!");
      Serial.print("Temp: ");
      Serial.print(st.temp);
      Serial.print(", Inhum: ");
      Serial.print(st.humin);
      Serial.print(", Inpres: ");
      Serial.println(st.pres);
      // Запись на карту памяти
      if (isSD == true) {
        Serial.print("Writing...");
        // Выключить RF24
        digitalWrite(CSNPIN, HIGH); // 7
        digitalWrite(CEPIN, HIGH); // 8
        // Включить SD-карту
        digitalWrite(SDCS, LOW); // 4
        // Файл для записи
        File logfile = SD.open("arduino.log", FILE_WRITE);
        if (logfile == true) {
          // Валидация полученных данных
          logfile.print(st.temp);
          logfile.print(" ");
          logfile.print(st.humin);
          logfile.print(" ");
          logfile.print(st.pres);
          logfile.close();
          // print to the serial port too:
          Serial.println("OK!");
        } 
        else {
          // При ошибке записи запускаем отсчет
          Serial.println("Error opening file");
          isSD = false;
        }
        // Выключить SD-карту
        digitalWrite(SDCS, HIGH); // 4
        // Включить RF24
        digitalWrite(CEPIN, LOW); // 8
        digitalWrite(CSNPIN, LOW); // 7
      }
    }
  };
  delay(20);
  CheckSD();
};

// Проверка карты памяти
void CheckSD() {
  // Попытки
  static int tr = 0;
  unsigned long curt = millis();
  static unsigned long oldt = 0;
  // Если ошибка карты
  if (isSD == false) {
    // Проверка интервала
    if (curt - oldt > 1000) {
      oldt = curt;
      // Если счетчик досчитал
      if (tr < 1) {
        // Выключить RF24
        digitalWrite(CSNPIN, HIGH); // 7
        digitalWrite(CEPIN, HIGH); // 8
        // Включить SD-карту
        digitalWrite(SDCS, LOW); // 4
        if (!SD.begin(SDCS)) {
          // SD-карта не включилась. Ошибка.
          isSD = false;
          Serial.println("SD not found!");
          tr = 5;
        } 
        else {
          // SD-карта на местое. Работаем.
          isSD = true;
          Serial.println("SD found!");
        }
        // Выключить SD-карту
        digitalWrite(SDCS, HIGH); // 4
        // Включить RF24
        digitalWrite(CEPIN, LOW); // 8
        digitalWrite(CSNPIN, LOW); // 7
      } 
      else {
        // Вывод ошибки и счетчика
        Serial.print("Count=");
        Serial.println(tr);          
        tr--;
      }
    }
  }
}

Еще есть один момент, SD подключена на+5В. Nrf на +3В.  При включении SD на +3В, SD не работает, но nrf по этой команде radio.printDetails(); данные выводит, но ничего не принимает/передает.

sonmax
Offline
Зарегистрирован: 30.06.2013

Походу вот моя тема: http://forum.amperka.ru/threads/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-spi...

Никто с этим не сталкивался?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Это не твоя тема. И тему ту дурачек какой-то написал. Все у всех прекрасно работает, исключая тебя! Сделай вывод и попробуй разобраться.
На данный момент известна только одна байда которая подминает под себя SPI и ей нужно ставить ключ. И ты ей точно не пользуешься. Да и ключ ей на плате распаивают даже китайцы.

sonmax
Offline
Зарегистрирован: 30.06.2013

Допустим, не моя тема, я в электронике не силен. И больше чем уверен, что выпуская SD модули в таком количестве, китайцы бы уже решили проблему. Но cимптомы те же, все прекрасно работает по отдельности, вместе нет. NRF не работает SD работает. Как только  отключаю MISO в SD модуле, NRF  работает.

Если по Вашему проблема программная, то код в котором пытаюсь отключать управляющие пины выше. Если что-то не верно, поправьте как надо.

Повторюсь, для экспириментов использовал разные библиотеки результат одинаковый. 

Radjah
Offline
Зарегистрирован: 06.08.2014

CE нахрена гасишь?

sonmax
Offline
Зарегистрирован: 30.06.2013

Ребятя, ну я же уже писал, все варианты попробовал. Делал CE + CSN в HIGH, по отдельности в HIGH, вместе и по отдельности в LOW - не работает! 

Взять хотя бы этот кусочек, как должно быть?

// Выключить RF24
digitalWrite(CSNPIN, HIGH); // 7
// Включить SD-карту
digitalWrite(SDCS, LOW); // 4
if (!SD.begin(SDCS)) {
}
// Включить RF24
digitalWrite(CSNPIN, LOW); // 7
// Выключить SD-карту
digitalWrite(SDCS, HIGH); // 4

Так? если да, то не работает.

Radjah
Offline
Зарегистрирован: 06.08.2014

CS - Chip Select - выбор устройства, с которым будет производиться обмен данными. Устройство инициализируется один раз и дальше работает.

Прижимиая CS к земле, та слообщаешь устройству, что разговариваеть будешь именно с ним. Это не включение/выключение, а выбор.

Я тебе дал рабочий код, который принимает данные с другой ардуины и пишет на карту памяти.

В RF24 cs дергается либой, в SdFat я не смотрел.

sonmax
Offline
Зарегистрирован: 30.06.2013

Твой рабочий код прекрасно работает с SD и NRF по отдельности, но как только я присоединяю ногу MISO от SD, все перестает работать. Пробовал SD, SdFat, RF24, Mirf в разных вариантах, результат один.

Кстати я не написал какие девайсы

http://ru.aliexpress.com/item/free-shipping-1-pcs-lot-NRF24L01-wireless-...

http://ru.aliexpress.com/item/1pcs-SPI-Micro-SD-Storage-Mciro-SD-TF-Card...

Radjah
Offline
Зарегистрирован: 06.08.2014

Вот это новости! А у меня тогда как всё пишется и принимается? o_0

sonmax
Offline
Зарегистрирован: 30.06.2013

Поэтому я и предположил, что косяк в схеме. Я готов рассмотреть любые варианты помощи (программные и аппаратные).

Пробовал вариант с изменением MISO на другой пин, менял MEGA на NANO.

Radjah
Offline
Зарегистрирован: 06.08.2014

> Пробовал вариант с изменением MISO на другой пин

Это как? o_0

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Гыыы переместил miso на другой пин , убил.
Сд платка вообще тупо слот, питание и понижатель уровня для логики... можно вообще сд карточку прооводками подпаять скажем к arduino due. Без всяких слотов.
Возми другую карточку.
И не нужно добавлять никакого говна кроме 1 библиотеки сд и 1 библиотеки рф24

sonmax
Offline
Зарегистрирован: 30.06.2013

Все тема закрыта.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

sonmax пишет:

Все тема закрыта.


Чего так? Раскажи потомкам где косяк порылся.

Radjah
Offline
Зарегистрирован: 06.08.2014

Где он у меня выключение CE разглядел? o_0

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Radjah пишет:

Где он у меня выключение CE разглядел? o_0


Меня не спрашивай.

Sts
Offline
Зарегистрирован: 22.06.2015

Чего-то гонуру дофига, но пустая голова... о разном тактировании SPI слыхал... Пустобрех...

 

Для других, могу предположить, что устройства работают по разным фронтам sck,частоте и.т.д 

 т е. Придется перенастраивать в регистрах самих устройств. Нахрапом не получится особенно с nrf. 

Вот хорошая статья :  4a4ik.blogspot.com/2015/08/spi.html

 

 

А ты, друг, учи людей как дергать лапками...

 

a5021
Offline
Зарегистрирован: 07.07.2013

Sts пишет:

Чего-то гонуру дофига, но пустая голова... о разном тактировании SPI слыхал... Пустобрех...

Для других, могу предположить, что устройства работают по разным фронтам sck,частоте и.т.д 

 т е. Придется перенастраивать в регистрах самих устройств. Нахрапом не получится особенно с nrf. 

Вам самому-то не стыдно тут фигню всякую изобретать? Атмега замечательно общается с nrf по SPI на дефолтных настройках. Всего и надо, сказать атмеге, что SPI включен и что она мастер. Никаких других настроек не требуется.

Sts
Offline
Зарегистрирован: 22.06.2015

Тема : два устройства не совместимы на одной SPI ( NRF24L01  и SD ) кто забыл.

Муссируется не только на RU. Данная проблема действительно существует.

А именно с  вот таким :

Вопрос почему :

Какой выход ( без умников с пинами .... ) Предлагают на COM/

Обратите внимание на слово CUT и стрелочку на CS/

Все дело в LVC125A. Принцип работы, если совсем просто - RAID контроллер ( ну совсем образно ). А вещь

действительно полезная..

 

Вот такое чудо будет работать :

И такое будет работать :

Самый простейший код для проверки устройств которые заведомо работают :


#include <SPI.h>
#include <SD.h>
#include "nRF24L01.h"
#include "RF24.h" 
#include "printf.h"


const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
RF24 radio(7, 8); // CE, CSN
  
void setup(){ 
  Serial.begin(9600); 

  pinMode(4,OUTPUT); //  Для SD

  SD.begin(4); 
  digitalWrite(4,HIGH); // Пока отключаем SD
 
  radio.begin();
  radio.powerUp();

  delay(10);
  printf_begin();
  radio.setRetries(15,15);  
  radio.openReadingPipe(1,pipes[1]);  // открываем первую трубу с индитификатором "pipe" 
  radio.printDetails();
  radio.startListening();             // включаем приемник, начинаем слушать трубу
}


void loop()   
{  
  digitalWrite(8,LOW);
  delay(15);
  radio.printDetails();
  digitalWrite(8,HIGH);
  
  digitalWrite(4,LOW);
  delay(15);
  Serial.println(SD.exists("test.bin")); //  1 - есть файл
  digitalWrite(4,HIGH);
  delay(1500);
} 

Что должно получится :

Всем  респект. !

 

a5021
Offline
Зарегистрирован: 07.07.2013

И при чем тут тогда ваше "разное тактирование SPI" ?

Sts
Offline
Зарегистрирован: 22.06.2015

Nrf чтото отвечала. Даже осцил реагаровал.

Потратил день. Был неправ.

bugmenot
Offline
Зарегистрирован: 30.09.2016

В соседней теме обсуждалась аналогичная проблема с данным ридером и ее аппаратное решение:

http://arduino.ru/forum/apparatnye-voprosy/w5100-sd-modul-ne-vzletayut-vmeste

Вроде как китайцы в дальнейшем учли косяк и исправили его. Но опять же, что пришлют заранее неизвестно, поэтому нужно иметь в виду, что возможно придется допиливать.