GPS и SD module конфликт

Rocky7
Offline
Зарегистрирован: 13.05.2018

Привет! Ситуация такая, нужно данные с gps neo-6m модуля сохранять на карту памяти и отправлять по радио модулю. Проблема в том, что sd модуль и gps модуль не могут вместе инициализироваться. По отдельности все работает, но вместе - нет. В чем может быть проблема? Схему подключения и код приложил. Спасибо.

#include <SoftwareSerial.h>

#include <SD.h>

SoftwareSerial GPS(10, 9); // RX, TX

void setup()  
{
  Serial.begin(9600);  
  SD.begin(8); //убираем это и данные с gps идут
  GPS.begin(9600);

  
}

void loop() 
{
  if (GPS.available())
    Serial.write(GPS.read());
  if (Serial.available())
    GPS.write(Serial.read());
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

В порядке эксперимента: softserial пустить на 8/9, а CS модуля SD - на стандартный 10.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

.

Rocky7
Offline
Зарегистрирован: 13.05.2018

CS стандартный вообще 4, судя по примерам, нет?

sadman41
Offline
Зарегистрирован: 19.10.2016

Не знаю, как там по примерам, но дефолтный такой:

/**
 * SD Chip Select pin
 *
 * Warning if this pin is redefined the hardware SS will pin will be enabled
 * as an output by init().  An avr processor will not function as an SPI
 * master unless SS is set to output mode.
 */
#ifndef SDCARD_SS_PIN
/** The default chip select pin for the SD card is SS. */
uint8_t const  SD_CHIP_SELECT_PIN = SS;
#else
uint8_t const  SD_CHIP_SELECT_PIN = SDCARD_SS_PIN;
#endif

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Rocky7 пишет:

CS стандартный вообще 4, судя по примерам, нет?

4 обычно используется для Ethernet Shield потому, что в данном шилде карта так распаяна.

А 10 - стандартный "выбор устройства" для SPI. Если 10 занят, использован может быть любой другой. А если используется другой, то 10 обязательно должен быть настроен на выход. А Вы его сконфигурировали как RX, т.е. на ввод.

Rocky7
Offline
Зарегистрирован: 13.05.2018

andriano пишет:

Rocky7 пишет:

CS стандартный вообще 4, судя по примерам, нет?

4 обычно используется для Ethernet Shield потому, что в данном шилде карта так распаяна.

А 10 - стандартный "выбор устройства" для SPI. Если 10 занят, использован может быть любой другой. А если используется другой, то 10 обязательно должен быть настроен на выход. А Вы его сконфигурировали как RX, т.е. на ввод.


Да, я использую 8 для этого. То есть мне стоит попробовать поменять 9 и 10 пины местами?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Почему бы Вам не попробовать начать с того, что посоветовал sadman41?

Rocky7
Offline
Зарегистрирован: 13.05.2018

andriano пишет:

Почему бы Вам не попробовать начать с того, что посоветовал sadman41?

Потому что под все это дело уже плата готовая есть и модули припаяны...

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Т.е. Мы сначала распаиваем плату и только потом начинаем ее отлаживать?

Ну попытайтесь поменять 9 и 10, хотя мне трудно понять, чем это Вам поможет, если разъем уже также распаян.

Rocky7
Offline
Зарегистрирован: 13.05.2018

andriano пишет:

Rocky7 пишет:

CS стандартный вообще 4, судя по примерам, нет?

4 обычно используется для Ethernet Shield потому, что в данном шилде карта так распаяна.

А 10 - стандартный "выбор устройства" для SPI. Если 10 занят, использован может быть любой другой. А если используется другой, то 10 обязательно должен быть настроен на выход. А Вы его сконфигурировали как RX, т.е. на ввод.


Действительно, поменяв местами 9 и 10 пины на GPS удалось решить проблему и теперь в порт вылетают gps данные. Спасибо.