Go Down

Topic: Atmel Studio e Arduino IDE - Confronto (Read 10553 times) previous topic - next topic

RobertoBochet


Posseggo già una conoscenza approfondita di C/C++.

Anche l'Arduino IDE è basato sul C, in particolare sul Processing. Una conoscenza anche se approfondita di C/C++  risulta un piccolo vantaggio rispetto ad uno che parte dal semplice Processing. Questa affermazione è giustificata da un sistema di applicazione del linguaggio che differisce in modo estremo rispetto al classico sviluppo di applicazioni.
Per farti un esempio, in sviluppo windows, l'utilizzo dell'operatore "<<" è ridotto a pochissimi casi, principalmente a implementazioni che necessitano la gestione di dati di bassissimo livello. Invece, a livello di microcontrollori il suo utilizzo è di poco inferiore a quello dell operatore di assegnazione, in quanto come detto in precedenza la gestione delle funzioni di un microcontrollore è legata hai singoli bit di determinati registri cosa ben poco trasparente sull'Arduino IDE.
Mettiamola cosi, il passaggio da Arduino IDE alla ""vera"" programmazione di AVR attraverso un IDE professionale non è da prendere sotto gamba.

astrobeed


Anche l'Arduino IDE è basato sul C, in particolare sul Processing.


l'IDE di Arduino è realizzato in Java, per ovvi motivi multipiattaforma, Arduino si programma in C/C++ con il supporto di un framework che si chiamawiring.

Quote

Una conoscenza anche se approfondita di C/C++  risulta un piccolo vantaggio rispetto ad uno che parte dal semplice Processing.


Processing è un framework per Java, per quanto simili i due linguaggi rimangono comunque due cose molto  diverse, processing non  c'entra nulla con la programmazione di Arduino, al limite viene usato per realizzare software di supporto su pc.
Conoscere Processing non è un vantaggio per programmare Arduino, conoscere il C/C++ è un grosso vantaggio.

Scientia potentia est

PaoloP


Per farti un esempio, in sviluppo windows, l'utilizzo dell'operatore "<<" è ridotto a pochissimi casi, principalmente a implementazioni che necessitano la gestione di dati di bassissimo livello. Invece, a livello di microcontrollori il suo utilizzo è di poco inferiore a quello dell operatore di assegnazione, in quanto come detto in precedenza la gestione delle funzioni di un microcontrollore è legata hai singoli bit di determinati registri cosa ben poco trasparente sull'Arduino IDE.


Il << come operatore di stream, in C++, è utilizzato praticamente ovunque.
Vero che, in C, è anche un operatore di shiftamento.

astrobeed


Il << come operatore di stream, in C++, è utilizzato praticamente ovunque.
Vero che, in C, è anche un operatore di shiftamento.


Vero e comunque l'operazione di shift si usa anche nella normale programmazione C/C++ su pc, mica è un operatore inventato apposta per le mcu.

Scientia potentia est

ultrasound91

Io comunque proverò a fare qualcosa oggi stesso. Se avrò successo, riporterò i miei risultati.

ultrasound91

#35
Sep 27, 2014, 07:01 pm Last Edit: Sep 27, 2014, 10:14 pm by ultrasound91 Reason: 1
Per il momento, leggende qualche articolo, ho letto che è tutto alla mia portata. E intendo fare una migrazione completa, senza importare neanche le librerie di arduino. In pratica sarebbe come lavorare più a livello macchina, un esempio pratico è quello di usare l'istruzione digitalWrite. Questa istruzione su arduino IDE è universale per qualunque scheda, mentre invece su Atmel usando le librerie native, si devono usare una o più istruzioni che fanno cambiare un bit in un particolare registro. E il registro cambia per ogni AVR. Questo porta a lavorare un pò di più a livello di bit e ad assumere una conoscenza maggiore dell'AVR.

RobertoBochet



Anche l'Arduino IDE è basato sul C, in particolare sul Processing.


l'IDE di Arduino è realizzato in Java, per ovvi motivi multipiattaforma, Arduino si programma in C/C++ con il supporto di un framework che si chiamawiring.

Intendevo lo sviluppo che permette, la frase l'ho impostata in modo decisamente errato. :)
Comunque il linguaggio che usa l'IDE di Arduino è Processing un linguaggio derivato dal progetto Wiring.
è stata fatta un po di confusione.
Arduino IDE è scritto in Java (e questo era chiaro a tutti) è basato sul progetto wiring che usa come linguaggio di sviluppo il Processing un derivato dello Java (sono andato a ricontrollare e infatti mi ricordavo male, in ogni caso un linguaggio C like).

ultrasound91

In questo momento sto cercando di programmare l'avr integrato nella scheda di arduino uno tramite Atmel Studio e senza usare un AVR programmer, cioè usando avrdude. Comunque chiedo consiglio su quale avr programmer comprare, perchè voglio raggiungere l'indipendenza sia hardware che software da arduino. Qualcosa su ebay comunque. A questo punto mi chiedo quale è la differenza fra un avr programmer e un usb to serial programmer.

ultrasound91

Ci sono riuscito. Ho caricato uno sketch dentro arduino uno contenente istruzioni per comandare dei led in uscita come DDRD per impostare i pin di input e output e PORTD per portarle allo stato alto o basso.

PaoloP

#39
Sep 28, 2014, 12:19 am Last Edit: Sep 28, 2014, 12:26 am by PaoloP Reason: 1
AVR Dragon.
Programmi una buona fetta di AVR con possibilità di debug hardware.

Un programmatore seriale sfrutta il bootloader contenuto all'interno del micro, spesso in un'area apposita e riservata.
Il bootloader all'accensione verifica se sulla seriale è in arrivo un comando per la programmazione e se si allora carica il programma scrivendolo nella memoria flash, altrimenti richiude la seriale ed esegue il programma già presente in memoria. Se non c'è niente l'esecuzione si blocca.
In programmatore AVR sfrutta invece un componente hardware del micro (l'ISP) che permette di scrivere tutte le aree di memoria bootloader compreso.
Inoltre si può interfacciare a varie periferiche interne come quelle per il debug hardware.

Prendi un buon libro sui microcontrollori.

ultrasound91

Grazie della risposta, perchè è stata perfettamente chiara e completa. Sicuramente acquisterò un libro sui microcontrollori, magari se c'è uno specializzato sugli AVR.

ultrasound91

#41
Sep 28, 2014, 01:02 am Last Edit: Sep 28, 2014, 01:08 am by ultrasound91 Reason: 1
AVR Dragon costa troppo per me. Vorrei qualcosa di economico, magari non oltre i 20€ totali e va bene anche se è compatibile solo con Atmega328. Posso imparare e fare tanto con questo uC. Interessante è questa scheda: http://www.ebay.it/itm/FTDI-Attiny85-Attiny84-Atmega328-Programmer-/141408478794?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item20ec9a264a.

PaoloP

Qui trovi tutta una serie di testi in inglese su AVR e Arduino
--> http://it-ebooks.info/book/1146/
--> http://it-ebooks.info/search/?type=title&q=arduino

RobertoBochet


AVR Dragon costa troppo per me. Vorrei qualcosa di economico, magari non oltre i 20€ totali e va bene anche se è compatibile solo con Atmega328. Posso imparare e fare tanto con questo uC. Interessante è questa scheda: http://www.ebay.it/itm/FTDI-Attiny85-Attiny84-Atmega328-Programmer-/141408478794?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item20ec9a264a.


Se il prezzo è un problema Arduino ISP è una soluzione economica che per iniziare puo bastare.

ultrasound91

#44
Sep 28, 2014, 02:36 am Last Edit: Sep 28, 2014, 02:38 am by ultrasound91 Reason: 1
Avrei pensato a comprare questo programmatore: http://www.ebay.it/itm/USB-ISP-AVR-Atmel-Programmer-for-Arduino-Bootloader-Download-/141363549456?pt=UK_Computing_Other_Computing_Networking&hash=item20e9ec9510.
A differenza del primo che ho trovato, che permette di programmare solo 3 microcontrollori posizionandoli negli zoccoli a disposizione, questo credo che è universale, cioè potrei programmare qualsiasi AVR creando i giusti collegamenti fra i connettori ISP e i pin dell'AVR.
Inoltre danno tutti e due i tipi di cavi che possono servire, cioè a 6 pin e 10 pin.

Go Up