Go Down

Topic: problema SDuFAT arduino mega 2560 (Read 544 times) previous topic - next topic

porziocatone

Buongiorno, sto provando a far funzionare il modulo microSD della libelium
http://www.cooking-hacks.com/index.php/microsd-2gb-module-for-arduino.html

ho scaricato la libreria indicata per arduino mega e ho seguito le indicazioni per il collegamento.
Il problema è però in fase di compilazione: mi da i seguenti errori:

Code: [Select]
In file included from C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/SDuFAT.h:34,
                 from SD_uFAT_basic.pde:122:
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/mmc.h:52: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/mmc.h:53: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/mmc.h:54: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/mmc.h:129: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/mmc.h:146: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/mmc.h:147: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/mmc.h:163: error: 'byte' does not name a type
In file included from C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/SDuFAT.h:35,
                 from SD_uFAT_basic.pde:122:
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:8: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:9: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:10: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:11: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:19: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:22: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:24: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:27: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:34: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:35: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:36: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:40: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:41: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:48: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:49: error: 'byte' does not name a type
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:60: error: 'byte' was not declared in this scope
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/microfat.h:60: error: 'buffer' was not declared in this scope
In file included from SD_uFAT_basic.pde:122:
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/SDuFAT.h:117: error: 'byte' has not been declared
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/SDuFAT.h:120: error: 'byte' has not been declared
C:\Users\Gio\Documents\Arduino\libraries\SDuFAT/SDuFAT.h:127: error: 'byte' has not been declared


La versione di Arduino è la 1.0.5

leo72

Vedo l'estensione .pde nei messaggi di errore. Significa che quel software è stato scritto per la vecchia versione dell'IDE, la 002x.
In teoria basterebbe aprire i file della lib e cercare #include "WProgram.h" e sostituirli con #include "Arduino.h"
Poi però va visto se la lib o lo sketch necessitano di altre modifiche.

porziocatone

ok, ho fatto le sostituzioni che mi hai detto!

ora in compilazione mi da questo errore:
Code: [Select]
C:\Users\Gio\Documents\Arduino\libraries\SDuFATmod\SDuFAT.cpp: In member function 'int SDuFAT::cat(const char*)':
C:\Users\Gio\Documents\Arduino\libraries\SDuFATmod\SDuFAT.cpp:273: error: 'BYTE' was not declared in this scope
C:\Users\Gio\Documents\Arduino\libraries\SDuFATmod\SDuFAT.cpp: In member function 'int SDuFAT::append(const char*)':
C:\Users\Gio\Documents\Arduino\libraries\SDuFATmod\SDuFAT.cpp:447: error: 'BYTE' was not declared in this scope

leo72

Allora la lib non è compatibile con l'IDE 1.0 e richiede ulteriori modifiche.
Non puoi usare altre lib, ad esempio la SD ufficiale o altre per gestire la uSD?

PaoloP

Considerando che nella documentazione (http://www.cooking-hacks.com/skin/frontend/default/cooking/pdf/arduino_mega_Sd.pdf) si cita l'IDE 0.15 e che nel sito c'è scritto "Library developed by David Cuartielles (Arduino team)", ti consiglio di scaricarti l'IDE 1.0.5 e utilizzare la libreria SD ufficiale, che presumo sia più aggiornata della SDuFAT.

porziocatone

OK ho scaricato l'IDE 1.0.5 e se faccio il test con arduino UNO funziona bene!!!

Se però collego il modulo all'arduino MEGA non funziona.
Ho seguito le note su http://arduino.cc/en/Reference/SDCardNotes

help please...

leo72

Hai letto questo relativamente al tuo prodotto?
http://www.cooking-hacks.com/skin/frontend/default/cooking/pdf/arduino_mega_Sd.pdf

PaoloP

#7
Aug 29, 2013, 10:36 am Last Edit: Aug 29, 2013, 10:38 am by PaoloP Reason: 1
Perchè l'Arduino Mega ha la distribuzione dei pin diversa e quel modulo non funzionerà.
Sulla UNO il bus SPI è mappato sui pin 11, 12 e 13, più il 10 o  il 4 come Slave Select.
Sulla MEGA sono i pin 50, 51 e 52. Mentre lo SS è sul pin 53.
Quindi ti devi armare di cavetti flessibili e rifare i collegamenti.

Cerca i pin siglati MISO, MOSI e SCKL (sono in blu) --> http://forum.arduino.cc/index.php?topic=151646.0

P.S. Se il modulo si connette tramite l'ICSP non hai problemi su nessuna scheda (compresa la DUE e la Leonardo) eccetto per il pin SS che dovrai cambiare ogni volta.

porziocatone

Ho trovato il problema:
sulla guida http://arduino.cc/en/Reference/SDCardNotes si dice di collegare il modulo SD così:
PIN CORRECTION (da arduino UNO a Mega)
11>50
12>51
13>52
4 OR 10>53


INVECE ho trovato qui:
http://forum.arduino.cc/index.php?topic=165170.0
oppure qui:
http://arduino.cc/en/Reference/SPI

The Arduino SPI pins are:
SPI   Uno   Mega
SS   10   53
MOSI   11   51
MISO   12   50
SCK   13   52

così funziona!!!

Go Up