Шильд w5100

Тема в разделе "Arduino & Shields", создана пользователем Михаил123, 11 авг 2020.

  1. имеем код:
    Код (C++):
       
    #include "Ethernet.h"
    #include "EthernetUdp.h"
    #include "SD.h"

    setup
    {
    Serial.println(F("Инициализация SD карты..."));
         
        if (!SD.begin(4))
        {
          Serial.println(F("... отказ!"));
          while(1);
        }
        else
        {
         // tft.println(F("OK")); tft.println();
          //SD.remove("connect.dat");
          //Serial.println("удалил файл connect.dat");
        }
        Serial.println(F("... выполнено"));
    Udp.begin(loPort);
    }
    loop {

    .....

    }
    программа нормально запускается и работает и с интернетом и с SD картой.
    но если сделать reset, программно или кнопкой, то SD карта не инициализируется.
    Если вытащить/вставить SD и перезапустить ресетом - все опять запускается и работает.
    Либо можно вытащить и вставить питание - тоже все работает.

    Что тут можно сделать, что бы перезапускать прогу, и SD инициализировалось нормально?
     
    Последнее редактирование: 11 авг 2020
  2. вопрос отменяется - поменял SD карту на другую, и всё работает без зависаний.
     
  3. ... оказалось не совсем всё просто...
    долго ковырялся. Конфликт между
    Код (C++):
    #include "EthernetUdp.h"
    #include "SD.h"
    pinMode(4,OUTPUT);
    digitalWrite(4, LOW);
    if (!SD.begin(4))
    и
    Код (C++):
    #include "SPFD5408_Adafruit_GFX.h"
    #include "SPFD5408_Adafruit_TFTLCD.h"
    #include "SPFD5408_TouchScreen
    #define LCD_CS A3 // Chip Select goes to Analog 3
    #define LCD_CD A2 // Command/Data goes to Analog 2
    #define LCD_WR A1 // LCD Write goes to Analog 1
    #define LCD_RD A0 // LCD Read goes to Analog 0
    #define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
    Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
    хаос вносит строка tft.setTextSize(2);

    если её закомментировать, то всё работает.

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