Atmel Studio e Arduino IDE - Confronto

Salve, dato che le schede arduino includono tutte l'avr atmel, ho pensato di valutare quali soluzioni offre la atmel stessa.
E ho visto che forniscono un software che si chiama Atmel Studio. Mi chiedevo se è superiore ad Arduino IDE, se lo può sostituire e se ci sono differenze rilevanti.

Atmel Studio è superiore, e di molto, all'IDE di Arduino.
E' un vero ambiente di sviluppo, un IDE fatto come si deve.

Per contro, perdi i vantaggi della semplificazione introdotta dall'Arduino, ossia una seria di librerie già pronte per gestire tutto, dalla seriale alla linea I2C alla lettura analogica ecc... Con l'Atmel Studio (che io non ho mai usato perché non ho Windows) devi affidarti ad altro. In pratica si tratta di scriverti tutto di tuo pugno o usare librerie Atmel. Inoltre perdi la compatibilità con gli sketch che trovi in giro per la rete, che sono scritti per Arduino, dovresti metterti a riconvertirli tutti a mano.

Aggiungo, per concludere, che l'IDE di Arduino nasce per essere semplice e facilitare l'avvicinamento di chi è alle prime armi. Poi diventa un'abitudine usarla.

Grazie, è già completa come risposta.
Come scelta personale, dato che sono interessato a usare e studiare gli AVR nel lungo termine,
lo proverò. Convertire gli sketch altrui non rappresenta alcuna difficoltà per me.

C'è un estensione che permette di aggiungere gli #include corretti per usare la libreria di Arduino

flz47655:
C'è un estensione che permette di aggiungere gli #include corretti per usare la libreria di Arduino

Visual Micro, mi pare ne ha parlato in un thread Guglielmo (utente gpb01):
Microchip Gallery | studio?

leo72:
Inoltre perdi la compatibilità con gli sketch che trovi in giro per la rete, che sono scritti per Arduino, dovresti metterti a riconvertirli tutti a mano.

Secondo me basta aggiungere alla sketch il main.cpp di Arduino e i prototipi delle funzioni ed è possibile compilarlo anche con AVRstudio.
Naturalmente bisogna segnalare correttamente ad AVRstudio tutti i percorsi delle librerie incluse comprese quelle del core di Arduino.

Parlavo ovviamente di Atmel Studio nudo e crudo. Se poi ci sono estensioni che permettono di caricare il codice arduinico senza modifiche questo non lo so perché non ho Win quindi non uso Atmel Studio (anatema su di te, Atmel).

PaoloP:
Secondo me basta aggiungere alla sketch il main.cpp di Arduino e i prototipi delle funzioni ed è possibile compilarlo anche con AVRstudio.

Non è così semplice in quanto l'IDE usa un makefile dedicato per compilare, è totalmente diverso da quello che crea Atmel Studio che ha ben altre esigenze.

Sono programmatore di software. Il fatto che Atmel Studio esista solo per Windows non è una cosa positiva. Fortunatamente io sono utente Windows ma sviluppo applicazioni desktop multipiattaforma. Per chi è interessato ad Atmel Studio e non ha Windows, mi raccomando, non installate windows su una macchina virtuale, installatelo in dual boot. Per quanto riguarda la compatibilità degli sketch ecc... dedicherò la giornata di oggi a fare questi test. Spesso anche lavorando con IDE di applicazioni desktop, ho la necessità di integrare librerie esterne, di ricompilare driver e modificare manualmente i makefile. Quindi ci lavoro un pò sopra e poi dò il mio riscontro.

ultrasound91:
... mi raccomando, non installate windows su una macchina virtuale, installatelo in dual boot.

Mi scuso se vado un attimo Off-Topic ...

@ ultrasound91 ... potresti giustificare questa tua affermazione ???

Ho Parallels Desktop installato sul mio iMac da parecchio e non ho MAI avuto problemi ad utilizzare programmi Win nella macchina virtuale, compresi programmi che accedono alle porte (... per inciso ... uso poco Atmel Studio, di più MikroC Pro collegato ad una Easy AVR v7 via USB e ci comando anche, senza alcun problema, il programmatore).

Vero che ho un Intel Core 7 a 3.4 GHz e 32 GB di RAM ... ma l'ho sempre usato in passato, anche su macchine con meno memoria ... quindi ???

Guglielmo

gpb01:
@ ultrasound91 ... potresti giustificare questa tua affermazione ???

Concordo, io uso VMware, sotto W7, sia per Linux che per una sandbox Windows 7, mai avuto problemi.

Anche io ho VMware. Le macchine virtualizzate le uso per studiare altri sistemi operativi e, per testare programmi provenienti dalla rete principalmente. Se termino lo sviluppo di una applicazione, per fare un test affidabile, la devo eseguire per forza in una macchina reale. Detto questo, le porte seriali sono emulate bene nelle macchine virtuali, ma la probabilità che si verifichi un problema durante la trasmissione dei dati non è tanto remota. Significa che se c'è una variazione delle priorità dei processi effettuata dal sistema operativo, la comunicazione seriale può interrompersi. E rischiate di danneggiare il circuito che state programmando (nel caso di un atmega328 si parla di 3-4 € di danno, quindi non è tanto grave). Comunque le macchine virtuali dovrebbero essere usate solo per effettuare test, non per lavorarci sopra.

ultrasound91:
Detto questo, le porte seriali sono emulate bene nelle macchine virtuali, ma la probabilità che si verifichi un problema durante la trasmissione dei dati non è tanto remota.

Le macchine virtuali non emulano l'hardware, usano quello presente tramite appositi meccanismi di interscambio dati.
La possibilità di errori sulla trasmissione seriale è sempre presente, non importa se stai sulla macchina reale oppure virtuale, non a caso i software fatti bene usano un protocollo dati con il controllo errori e relative procedure di ripristino/renvio dei dati.

E rischiate di danneggiare il circuito che state programmando (nel caso di un atmega328 si parla di 3-4 € di danno, quindi non è tanto grave). Comunque le macchine virtuali dovrebbero essere usate solo per effettuare test, non per lavorarci sopra.

E da quando si rompe l'hardware per un errore di trasmissione dati ?
Al limite rischi di fare delle elaborazioni errate, non si rompe nulla.
Certo che se il software è un controllo di processo che gestisce dei macchinari/attuatori, col rischio di fare danni reali, e sul protocollo di trasmissione non c'è il controllo errori, non importa quale sia il layer hardware, chi ha scritto il software è meglio che cambia mestiere..

astrobeed:
Certo che se il software è un controllo di processo che gestisce dei macchinari/attuatori, col rischio di fare danni reali, e sul protocollo di trasmissione non c'è il controllo errori, non importa quale sia il layer hardware, chi ha scritto il software è meglio che cambia mestiere..

+1

Guglielmo

La probabilità che si verifichi un errore di trasmissione da una macchina virtuale è più alta rispetto a quella da una macchina reale.
Se la trasmissione viene disturbata in modo da alterare eventuali istruzioni che comandano valori di tensione, l'hardware si danneggia.
Non ho capito invece a chi è rivolto l'invito a cambiare mestiere.
Dire "non ho mai avuto problemi, quindi continuo a lavorare così" non è una sicurezza, a un mio amico o ripetuto negli ultimi tre anni di attivare la sincronizzazione dei file sul computer con un servizio cloud. Non mi ha mai ascoltato. Una mattina si è svegliato e l'hard disk era bruciato. Ha perso un progetto software realizzato in un anno e migliaia di €. Il mio consiglio è di non fare mai affidamento sulla fortuna avuta fino a un determinato momento, ma di lavorare in modo da essere pronti ad evitare il peggio.

ultrasound91:
La probabilità che si verifichi un errore di trasmissione da una macchina virtuale è più alta rispetto a quella da una macchina reale.

Ti è già stato detto che è falso. I sistemi virtuali "seri" accedono direttamente all'HW ed hanno le stesse probabilità di errore del sistema nativo.

ultrasound91:
Se la trasmissione viene disturbata in modo da alterare eventuali istruzioni che comandano valori di tensione, l'hardware si danneggia.

E' un idiota chi a scritto il software. Quando comandi qualche cosa non mandi semplicemente una serie di comandi, ma integri il tutto con codici di controllo di complessità proporzionale al valore di ciò che stai controllando.
Ripeto, chi non lo fa è un idiota e si merita che gli si danneggi il tutto. ]:smiley:

ultrasound91:
Non ho capito invece a chi è rivolto l'invito a cambiare mestiere.

A nessuno in particolare ed a tutti ... rileggi con attenzione la frase di Astro e lo capirai ... :wink:

Guglielmo

D'accordo, sinceramente per quanto riguarda il discorso dei meccanismi dettagliati della macchina virtuale non sono ben informato e non affermo di sapere più di altri. Però se nel campo elettronico alla macchina virtuale si richiede soltanto la gestione della porta seriale, nel campo informatico è spesso richiesto un quantitativo rilevante di scheda video, quindi ci sono dei limiti che rappresentano una palla al piede ed è meglio riavviare e cambiare sistema. Sono qualcuno non usa i codici di controllo o tecniche più complesse, peggio per lui. Detto questo mi metto a lavorare su Atmel Studio, e appena posso riporto i miei risultati.

ultrasound91:
Se la trasmissione viene disturbata in modo da alterare eventuali istruzioni che comandano valori di tensione, l'hardware si danneggia.

Se un software che fa controllo di processo non verifica i dati che riceve, con relativa gestione degli errori, è un software realizzato male da un incompetente, oppure da un principiante che non ha la minima idea di come va realizzato un sistema di controllo.
La possibilità di un errore di trasmissione attraverso la una porta seriale, poco importa se RS232 hardware o porta virtuale tramite USB, è la stessa sia su una macchina virtuale che sulla quella normale, ti sfido a dimostrarmi il contrario.
Il cloud è un rischio quanto l'hard disk fisico, nulla ti garantisce che domani il provider chiude o che gli va in avaria la farm server con perdita dei dati, è già successo, semmai devi consigliare di fare almeno due copie di backup su supporti fisici diversi custoditi in posti diversi, è una regola vecchia quanto l'informatica e qualunque programmatore esperto, e/o esperto di sicurezza dati, la conosce.

astrobeed:
semmai devi consigliare di fare almeno due copie di backup su supporti fisici diversi custoditi in posti diversi, è una regola vecchia quanto l'informatica e qualunque programmatore esperto, e/o esperto di sicurezza dati, la conosce.

... hai detto bene !!! ... almeno due copie ... e custodite in posti fisicamente diversi (= edifici diversi) !!!

Regola che applico da sempre e ... che mi ha salvato il ... fondo schiena .. già una volta XD XD XD

Guglielmo

Purtroppo in passato non si poteva contare sul cloud. Il mio amico, che vi garantisco è molto competente nello sviluppo software, è stato uno stupido nel modo di lavorare a non fare un backup. Il cloud non è una sicurezza certa, perchè l'azienda può fallire, o può subire un attacco informatico, ecc.. ma rappresenta comunque una sicurezza aggiunta. Io con 3 copie fisiche e 3 in cloud dei miei progetti e dati personali, sinceramente mi sento in una botte di ferro.