[TUTORIAL] Utilizzo di AVR Studio 5.1 per progetti Arduino

Dopo un discreto lavoro di messa a punto sono riuscito a scrivere un tutorial che spiega (spero con sufficente chiarezza) come impostare AVR Studio 5.1 per sviluppare progetti Arduino.
Purtroppo questo IDE non è disponibile per Linux e Mac, ma per questi S.O. credo sia utilizzabile Eclipse (qualche utente del forum mi pare ci abbia provato con successo).

Buona lettura
QP

Tutorial AVRStudio51 per Arduino.pdf (1.44 MB)

1 Like

Complimenti, veramente ben fatta. :wink:

Mi accodo ai complimenti, grazie per aver condiviso :slight_smile:

+1
Molto utile, bravo :wink:

QuercusPetraea:
Dopo un discreto lavoro di messa a punto sono riuscito a scrivere un tutorial che spiega (spero con sufficente chiarezza) come impostare AVR Studio 5.1 per sviluppare progetti Arduino.
Purtroppo questo IDE non è disponibile per Linux e Mac, ma per questi S.O. credo sia utilizzabile Eclipse (qualche utente del forum mi pare ci abbia provato con successo).

Buona lettura
QP

Bellissimo lavoro, ben fatto e chiaro, come sempre..... XD
Complimentissimi!

Il tutorial è disponibile in rete a questo indirizzo https://docs.google.com/open?id=0B1-pxXbGrfYyYWY0TkZxMUZTdWlGZXgzQ2VqNHVCUQ.
Se qualcuno del forum ha la capacità di pubblicare il link nel Playground italiano, cosa che non ho mai provato a fare, gliene sarei immensamente grato.

Grazie per i commenti
QP

Grazie per il tutorial

Negli argomenti dell'external tools io ho inserito (uso l'IDE 1.0):

-CC:\arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega328p -carduino -P\.\COM6 -b115200 -D -Uflash:w:"$(ProjectDir)Debug$(ItemFileName).hex":i

ho visto che c'era un errore di battitura nella velocità.
Ho notato che prima di scegliere dal menù Tools la voce creata bisogna selezionare il progetto altrimenti non funziona e come $(ItemFileName) viene impostato il nome del file .cpp

Allego il template che ho creato da inserire nella cartella "C:\Users\XXX\Documents\AVRStudio 5.1\Templates\ProjectTemplates"

Arduino.zip (601 KB)

Sapete per caso come configurare il simulatore coi fuse ed il clock uguale ad arduino?

flz47655:
Grazie per il tutorial

Negli argomenti dell'external tools io ho inserito (uso l'IDE 1.0):

-CC:\arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega328p -carduino -P\.\COM6 -b115200 -D -Uflash:w:"$(ProjectDir)Debug$(ItemFileName).hex":i

ho visto che c'era un errore di battitura nella velocità.

Me ne sono accorto anch'io; appena posso sistemo.

Ho notato che prima di scegliere dal menù Tools la voce creata bisogna selezionare il progetto altrimenti non funziona e come $(ItemFileName) viene impostato il nome del file .cpp

Puoi sempre abilitare la spunta Propmt fo arguments e sostituire la stringa "$(ProjectDir)Debug$(ItemFileName).hex" con il percorso al file hex.

Inoltre il Terminal Window con la 5.1 pare non voglia funzionanare, mentre va con la 5.0 e la 6.0 beta. La cosa è ovviabile inserendo un tool esterno che richiami un Terminal seriale a piacere.

Ciao
QP

Il terminal ho notato che mostra solo i primi bit e poi basta, questo non è un problema però perchè uso altri programmi per questo.

Più che altro con Prompt for arguments dovrei ad ogni progetto scrivere il nome dell'eseguibile il che è un pò una scocciatura.. comunque basta saperlo e si seleziona il progetto prima di fare upload e il gioco è fatto

Più che altro per il simulatore sai come si imposta il clock? Ho notato anche che i delay diventano lunghissimi emulati.. :frowning:

Ciao e grazie

flz47655:
Più che altro per il simulatore sai come si imposta il clock? Ho notato anche che i delay diventano lunghissimi emulati.. :frowning:

Basta che quando attivi il debugger con break (ALT+F5) fai click sul valore di Frequency e modifichi come ti aggrada.

Ciao
QP

Simulatore.jpg

Tutorial corretto, aggiornato ed inserito nel Playground italiano.

Ciao
QP

ancora "più ottimo" XD Grazie QP!!!

Speravo si potesse evitare ad ogni run di modificare manualmente la frequenza.. comunque per il momento va bene anche così

Ciao e grazie

flz47655:
Speravo si potesse evitare ad ogni run di modificare manualmente la frequenza.. comunque per il momento va bene anche così

Strano che a te succeda. Anche dopo aver chiuso il progetto e l'IDE, alla successiva riapertura io mi ritrovo ancora il valore che ho impostato.

Ciao
QP

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

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:

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..

errori.txt (18.4 KB)

Trovato l'inghippo :wink:
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.

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

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

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.

/*
  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
}