Go Down

Topic: [TUTORIAL] Utilizzo di AVR Studio 5.1 per progetti Arduino (Read 3 times) previous topic - next topic

flz47655

Scusami non avevo provato e credevo fosse da reimpostare. Perfetto funziona, grazie!

mauroz

Ho seguito alla lettera il tutorial, tutto bene. Sono riuscito a compilare l'esempio DS18B20 senza errori ma poi facendo ulteriori prove ho pensato di provare l'esempio allegato in arduino webserver. Ho controllato tutti gli include <> e sostituiti con "", le librerie sono tutte incluse come link,  ma nella compilazione da una valanga di errori, dove posso aver sbagliato?

Guardando il log della compilazione vedo tanti errori come questo:
Code: [Select]
Client.o: In function `Client::peek()':
C:\XML\Dropbox\Ardustudio\Progetti\Arduino-00235\Arduino-00235\Debug/../../../../libraries-0023/Ethernet/Client.cpp(90,1): undefined reference to `peek(unsigned char, unsigned char*)'


allego tutto il log..









QuercusPetraea

Trovato l'inghippo  ;)
Hai correttamente puntato a C:\XML\Dropbox\Ardustudio\libraries-0023\Ethernet\utility in Directories del Compiler ma ti sei dimenticato di linkare nel progetto i files socket.cpp, socket.h, w5100.cpp e w5100.h.
Fatto questo la compilazione termina con successo.

Code: [Select]
Done building target "Build" in project "ArduinoWebserver.cppproj".
Done building project "ArduinoWebserver.cppproj".

Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========


Ciao
QP

mauroz

perfetto grazie, mi devo un po' abituare ad aggiugere queste benedette librerie.


hacksandmore

Ciao a tutti,
dopo aver seguito l'ottimo tutorial per AVRstudio (Mille grazie!!!!) sto tentando di migrare un mio progetto che include un sacco di librerie esterne, ora, sono riuscito a fare il porting di tutto il progetto, tranne per la parte riguardante la lettura/scrittura file su SDcard con la libreria ufficiale inclusa in Arduino1.

Non c'è verso di compilarla, in quanto restituisce un errore sulla classe SD dicendo che il metodo close non è dichiarato (no ho sottomano l'errore corretto).

Ho provato in mille modi ma non ne esco.

Se qualcuno avesse voglia di provare a compilare questo semplice esempio (Arduino ufficiale) con avrstudio e dirmi dove sbaglio (o cosa devo correggere in SD.cpp) mi farebbe un grande favore.

Code: [Select]

/*
  SD card read/write

This example shows how to read and write data to and from an SD card file 
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4

created   Nov 2010
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe

This example code is in the public domain.
     
*/

#include <SD.h>

File myFile;

void setup()
{
// Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.print("Initializing SD card...");
  // 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(10, OUTPUT);
   
  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  // 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("test.txt", FILE_WRITE);

  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    // close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }

  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");
   
    // read from the file until there's nothing else in it:
    while (myFile.available()) {
        Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void loop()
{
    // nothing happens after setup
}

hacksandmore

Arieccomi...
ho risolto l'arcano mistero dopo innumerevoli smadonnamenti (e dopo aver bruciato un RTC che poverino non ne poteva nulla, ma si è trovato in mezzo  =( =( )

ho incluso anche gli header che stanno nella cartella utility della libreria SD, e ho corretto le include da <> a "".

a questo punto compila (e funziona) che è un amore....


Ciao a tutti e buona notte

flz47655

Per aggiornare il tutorial all'IDE 1.01 direi che c'è da aggiungere nella cartella ArduStudio\cores il file pins_arduino.h che si trova in arduino-1.0.1\hardware\arduino\variants\standard

Ciao

flz47655

Concludo dicendo che per qualche inspiegabile bug del toolchain risulta impossibile utilizzare librerie quali la SD.

Error   1   undefined reference to `vtable for SdFile

hacksandmore

Attento alle include, all'importazione "ricorsiva" di tutti i .c .c++ e .h, io avevo anche lo stesso errore, e dopo  aver sistemato correttamente tutto cio, ora compila perfettamente anche la libreria SD; però sto usando le librerie di Arduino 1.0

Per "ricorsirva" intendo: controlla nelle librerie gli include che richiedono e caricali nel solution explorer.

Inoltre occhio a inserire sempre il path alla libreria anche nelle opzioni del compilatore.

Spero che tu risolva il problema.


Bye




Go Up