Arduino e AVR Studio

Ciao a tutti! Studio informatica all'università e premetto che prima non ho fatto mai programmazione di pic o atmel...ora però mi sto interessando e volevo sapere quali sono le differenze tra arduino e avr studio? Grazie a tutti per la disponibilità!

AVRstudio ti permette di programmare tutti i prodotti Atmel sia in C che in assembler (e ti devi però creare anche l’hardware per fare le prove)

Con Arduino hai in pratica un sistema già pronto e funzionante, che programmi in C. Lo colleghi al tuo computer e sei già pronto per fare esperimenti. Chiaramente hai anche delle limitazioni, e sono in pratica :

  • la scelta del processore obbligata che è ATmega168 (ottimo prodotto per la sua fascia di prezzo)
  • non hai a disposizione tutte le periferiche interne e gli interrupt, perchè sono utilizzate per alcune funzioni pronte (come ad ad esempio il timer e la seriale)
  • non hai a disposizione tutti gli ingressi e uscite (anche se quelli a disposizione sono già parecchi per molti esperimenti)

Io sono anni che programmo firmware, e la comodità di Arduino non ha paragoni, e sopratutto per i costi veramente irrisori (anche per uno studente :wink: ).

Puoi farti le prove per i tuoi progetti con Arduino e poi, se è proprio necessario, crearti la tua scheda dedicata in piena tranquillità e sicurezza.

Credimi, io non ci guadagno nulla a dirtelo (e poi è un progetto aperto!), ma se ti vuoi divertire imparando, Arduino è la strada giusta.

Poi, AVRstudio lo puoi sempre utilizzare come e quando vuoi (e gratis), anche con Arduino.

Comunque leggiti le varie pagine presenti in questo sito, così comprendi meglio il tutto!

Vorrei capire una cosa...premetto che provengo dal mondo PIC e non conosco gli atmel, comunque dando uno sguardo ho visto che arduino è davvero semplice da usare. Quello che mi chiedo è: - il compilatore di arduino ha funzioni e librerie che facilitano il lavoro dello sviluppatore (almeno rispetto ai PIC), ma queste sono identiche a quelle di AVRstudio oppure sono state create appositamente, quindi se si impiega AVRstudio le cose sono più complicate? - A livello di ottimizzazione di codice, ci sono grandi differenze con AVRstudio? - Che vuol dire

  • non hai a disposizione tutte le periferiche interne e gli interrupt, perchè sono utilizzate per alcune funzioni pronte (come ad ad esempio il timer e la seriale)

che anziche usare i timer mediante i regitri sono state implementare delle funzioni che ne facilitano l'utilizzo? - Con arduino non è necessario conoscere l'architetture dato che non ho visto settare registri? Praticamente è più semplice del basic per i pic? - Nei tutorial non ho trovato come gestire gli interrupt - la seriale hardware si può utilizzare, oppure a causa della connessione USB per la programmazione (suppongo mediante booloader precaricato) non è più disponibile?

Ciao

Cerco di fare un po di luce....

  • il compilatore di arduino ha funzioni e librerie che facilitano il lavoro dello sviluppatore (almeno rispetto ai PIC), ma queste sono identiche a quelle di AVRstudio oppure sono state create appositamente, quindi se si impiega AVRstudio le cose sono più complicate?

AVRStudio viene fornito solo con l'assembler, poi lo puoi utilizzare come IDE di un compilatore c di tua scelta compreso il gcc che usiamo noi. AVRStudio è molto piu complesso da usare per un principiante ma ha il simulatore software e supporta il debugging attraverso device esterni come l'AVR dragon.. alla fine non ne ho mai avuto bisogno.

  • A livello di ottimizzazione di codice, ci sono grandi differenze con AVRstudio?

Ancora, l'AVR studio ha solo l'assembler dove l'ottimizzazione viene da te. Arduino è basato su gcc ed il codice è piuttosto ottimizzato. ci sono in giro su internet dei benchmark tra i divrsi compilatori per avr ed il gcc fa sempre la sua porca figura.

Quote from kokiua on 09.12.2007 at 19:47:00:

  • non hai a disposizione tutte le periferiche interne e gli interrupt, perchè sono utilizzate per alcune funzioni pronte (come ad ad esempio il timer e la seriale)

Con arduino hai a disposizione TUTTO. solamente che l'ambiente viene fornito pre-configurato in un certo modo che facilita un principiante. però ogni impostazione può essere cambiata nel tuo codice. puoi mettere tutto il codice c e assembler che vuoi dentro a un programm arduino

che anziche usare i timer mediante i regitri sono state implementare delle funzioni che ne facilitano l'utilizzo?

I timer sono pre configurati per fare certe cose che sono utili nel 75% dei casi. agendo sui registri li puoi ri-configurare per quello che ti pare. è un po che stiamo cercando di aggiungere delle funzioni che rendano i timer comprensibili ai principianti ma non è facile...

  • Con arduino non è necessario conoscere l'architetture dato che non ho visto settare registri? Praticamente è più semplice del basic per i pic?

L'idea è che il principiante deve avere un'idea molto base dell'architettura perche arduino ne nasconde alcune complessità ma se ti studi il datasheet poi fai quello che ti pare.

  • Nei tutorial non ho trovato come gestire gli interrupt

Leggiti tutta la reference, quella fa testo.. il comando è attachInterrupt

  • la seriale hardware si può utilizzare, oppure a causa della connessione USB per la programmazione (suppongo mediante booloader precaricato) non è più disponibile?

Si può usare sempre. chiaro che quando carichi il sw via connessione usb il tuo device attaccato alla porta seriale vede gli stessi dati percui ti puo capitare di doverlo staccare durante la programmazione.

massimo

Perdona l'ultima precisazione: quindi l'ambiente di Arduino non è altro che il Gcc, incluse delle librerire che avete scritto voi della comunità, quindi se mi viene in mente di scrivere codice puramente ANSI-C come lo sono i pezzi di codice che trovo nel datasheet degli atmel, l'ambiente di arduino riesce comunque a compilarlo, perchè è un classico Gcc....dico bene?

PS: complimenti per il vostro progetto....sicuramente è un formidabile strumento per avvicinarsi alla programmazione embedded, molto più performante ed educativo dei vari progetti (commerciali) di microcontrollori programmabili in basic (basic stamp, basic atom pro...) e poi usa il C, che è il linguaggio che prediligo e lo rende fruibile anche ad un principiante. Appena avrò un pò di tempo, acquisto Arduino e faccio il porting del codice che ho realizzato per i PIC, che movimenta il mio robot e vedo di fare un tutorial (ma prima mi devo laureare...questione di qualche mese ;))

Perdonami questo OT: personalmente non mi è piaciuta la tua affermazione sugli ingegenri che fai qui :'( http://www.lospremiagrumi.com/italian-designer/massimo-banzi/ potresti percisare...

La differenza è che quando premi il pulsante di compilazione su arduino, l'ambiente aggiunge un paio di righe all'inizio del tuo codice con le quali include le librerie di arduino.

se scrivi c pure devi tenere conto che queste librerie sono incluse.. però ogni statement c (anzi c++ perche arduino usa il c++) viene compilato.

A quale affermazioni ti riferisci? io faccio tante affermazioni contro gli ingegneri... :) Il discorso si riferisce alle professioni creative dove l'impatto con l'ingegnere di solito è traumatico per il creativo... Se guardi la maggior parte dei tool per programmare microcontrollori sono il tipico prodotto da ingegneri con un interfaccia utente klingon dove non si capisce una mazza. Esempio tipico è eclipse, la prima volta che l'ho scaricato (non è la versione attuale) mi ci sono voluti 10 minuti per trovare come si faceva a compilare una classe... Poi gli ingegneri che criticano arduino lo usano segretamente a casa... :)

come avrai capito io sono un ingegnere...:D (probabilmente tu un informatico o un architetto :))

Il discorso si riferisce alle professioni creative dove l'impatto con l'ingegnere di solito è traumatico per il creativo...

questa potrebbe essere un'affermazione dettata dalla tua esperienza, ma potrebbe anche essere vero il discorso in senso contrario...in ogni caso io penso che siano solo luoghi comuni

Se guardi la maggior parte dei tool per programmare microcontrollori sono il tipico prodotto da ingegneri con un interfaccia utente klingon dove non si capisce una mazza.

Ma siamo sicuri che ad esempio Eclipse sia realizzato da ingegneri. Per la piccola esperienza che ho io, di solito è il contrario: solitamente l'ingegnere produce roba snella essenziale e funzionante....se poi gli si comunica il target dell'utente finale, realizza anche roba che potrebbe usare un bambino.....Ma poi scusa, nel vostro team non c'è un Ing. della Sant'Anna di Pisa?? ;) PS: anche a me Eclipse non piace...meglio NetBeans...chissa se lo ha fatto un Ing. ;)

Poi gli ingegneri che criticano arduino lo usano segretamente a casa... :)

Personalmente ho spammato Arduino un pò in giro, tra i forum che frequento, perchè penso (anche se non ho ancora provato con mano) che per certe applicazioni e contesti sia validissimo, se non il top. Comunque, a questi che criticano, jo dico io 8-)

Se mi posso permettere, vorrei consigliare una features e fare una critica: - la features riguarda l'implementazione di una libreria per RS485 (mi pare di non averne viste) che aprirebbe seriamente le porte della domotica ad Arduino; - la critica sta nel fatto che la scheda USB si trova solo con componenti SMD, constringendo l'utente medio ad acquistare la scheda. Non che il prezzo sia alto, anzi è veramente basso per il prodotto offerto e tutto quello che ci gira attorno, ma così si perde un pò del gusto open source del progetto

In definitiva, complimentoni ancora per il progetto, vi invidio tantissimo...non vedo l'ora di togliermi dalle balle un pò di studio per dedicarmi ad Arduino.

Se mi posso permettere, vorrei consigliare una features e fare una critica: - la features riguarda l'implementazione di una libreria per RS485 (mi pare di non averne viste) che aprirebbe seriamente le porte della domotica ad Arduino; - la critica sta nel fatto che la scheda USB si trova solo con componenti SMD, constringendo l'utente medio ad acquistare la scheda. Non che il prezzo sia alto, anzi è veramente basso per il prodotto offerto e tutto quello che ci gira attorno, ma così si perde un pò del gusto open source del progetto

Scusate se mi intrometto nella discussione ma è più forte di me ;): Scusa calo, ma perchè la libreria RS485 non la scrivi tu? Potrebbe essere una buona occasione per entrare a far parte del mondo Open Source, non credi? (così altri meno informati di te ne potrebbero godere come tu potrai godere di tutte le librerie scritte da altri...).

Poi, nel merito all'uso dei comp SMD non ho capito cosa intendi: se vuoi farti un tuo circuitino sei libero di farlo come già è stato fatto da altri, ma arrivare a pretendere che il team di Arduino produca c.s. sulla richiesta di potenziali utenti, non credi sia troppo (invece di ringraziarli per il lavoro che regalano li critichi??? MA SEI PROPRIO UN INGEGNERE!!! ;D )

A Massimo: condivido in pieno quello che pensi di eclipse! Troppo spesso la gente non sa cosa sia la semplicità...

ho studiato ingegneria elettrica... chiaro che non ho resistito fino alla fine...

Non abbiamo contatti con la scuola sant'anna di pisa... certo è che ora che arduino ha preso piede un sacco di gente va in giro a dire che fa parte del nostro team.. siamo sempre quei 5 che si vedono sul sito.

Non sono proprio tutti luoghi comuni visto mi pagano per fare da traduttore tra gli ingegneri e i designer :)

inoltre il termine ingegnere che uso io è una traduzione del termine inglese engineer che alla fine si applica a tutti i tecnologi.

La libreria 485 c'è in realtà. nella docuementazione trovi il protocollo dmx che usa 485 a 250kbit. ci sono esempi di schedine di interfaccia per arduino.

Se guardi in http://www.arduino.cc/en/Main/Hardware trovi i progetti per fare le schede arduino con componenti through-hole.. infatti puoi comprare anche solo il circuito stampato a 5 euro o ti monti tutto su una breadboard... In realtà uno dei fattori di successo di arduino è stato che potevi iniziare a lavorare subito.

Considera che io faccio workshop di 3 giorni con gente che non ha mai programmato e non sa cos'è un volt.

grazie per i complimenti. fa sempre piacere specialmente in italia dove non ci conosce quasi nessuno :)

m

Scusate se mi intrometto nella discussione ma è più forte di me ;): Scusa calo, ma perchè la libreria RS485 non la scrivi tu? Potrebbe essere una buona occasione per entrare a far parte del mondo Open Source, non credi? (così altri meno informati di te ne potrebbero godere come tu potrai godere di tutte le librerie scritte da altri...). Poi, nel merito all'uso dei comp SMD non ho capito cosa intendi: se vuoi farti un tuo circuitino sei libero di farlo come già è stato fatto da altri, ma arrivare a pretendere che il team di Arduino produca c.s. sulla richiesta di potenziali utenti, non credi sia troppo (invece di ringraziarli per il lavoro che regalano li critichi???

ovviamnte sei il solito che non conosce il significato della parola critica...cerca sul vocabolario. Conosco arduino da una settimana e non è nelle mie capacità di creare una libreria, ma se leggi sopra ho detto che appena ho tempo faccio il porting del firmware del mio robot e scrivo un tutorial.....quindi evita di fare ironia dando del paraculo senza sapere con chi stai parlando ;) Per ciò che riguarda il discorso degli SMD, hanno fatto benissimo...io comprerò quella e neache ci penserei a montarmene una a componenti discreti, era solo una cosiderazione fondata su un semplice concetto... a componeti discreti ho visto solo quella con interfaccia RS232, mentre la più ambita, la USB, in pochi possono autocostrurla (anche comprando solo la scheda spoglia) perchè pochi hanno il saldatore adatto.

Comunque non capisco lo stesso dove hai preso la furia per rispondere come hai fatto (boh, magari è tuo costume fare così)....in ogni caso lo ignoro già. Quello che non ignoro è che se io sono ingegnere, tu sei deficiente, poco capace di dialogare....seda il piccolo Richard Stallman che è in te (fuoriuscito per carnevale ;D) che penso ci guadagnamo tutti.

Massimo perdonami per la foga che ho di scrivere, probabilmente dettata dall'entusiamo di aver scoperto il vostro progetto...Sto spulciando in lungo e in largo il sito da un paio di giorni e mi ero solo accorto nel forum di qualcuno che parla del CAN e dell'I2C, quindi sicuramente sopra un RS485, ma non ho visto qualcosa riguardante un protocollo di basso livello (insomma tipo le quattro funzioni per l'UART) per gestirlo, i modo da permettere un uso semplice con un banale protocollo personalizzato (sul CAN ho letto qualcosa e di sicuro non è roba da principianti). Faccio un esempio così mi capite meglio:se conosci MikroC (un cross-compilatore per PIC) ci trovia una libreria dedicata al 485 distinta da quella del Can e del I2C. Arduino è sicuramente una gran figata; secondo me la sua forza sta nel fatto che è facile da programmare, ma utilizza un linguaggio rigoroso che non si allontata troppo dagli standard impiegati a livello professionale.

[ ovviamnte sei il solito che non conosce il significato della parola critica...cerca sul vocabolario. Conosco arduino da una settimana e non è nelle mie capacità di creare una libreria, ma se leggi sopra ho detto che appena ho tempo faccio il porting del firmware del mio robot e scrivo un tutorial.....quindi evita di fare ironia dando del paraculo senza sapere con chi stai parlando ;) -- zac -- Comunque non capisco lo stesso dove hai preso la furia per rispondere come hai fatto (boh, magari è tuo costume fare così)....in ogni caso lo ignoro già. Quello che non ignoro è che io sono ingegnere (peggio per me...forse) e tu sei deficiente, poco capace di dialogare :D

Allora, se mi spieghi su cosa basi la tua affermazione della mia presunta deficienza te ne sarei grato, e comunque io non ho dato del paraculo a nessuno e se hai letto questo nel mio intervento hai tu dei grossi problemi nel comunicare con il prossimo (quindi saresti tu a deficere?).

Avevi due possibilità di interpretare il mio intervento: 1) come una critica fastidiosa e quindi da ignorare, e non lo hai fatto; 2) come critica costruttiva per la quale potevi rispondere con garbo cercando magari un chiarimento e spiegando che il tuo non era un atteggiamento di critica distruttiva, e non lo hai fatto...

La terza strada (da te scelta) è quella di chi si sottostima e sente la necessità di ribadire al prossimo ogni 2 frasi e mezzo quanto è bravo e quanto è bello (il che dimostra che del sostantivo "critica" conosci il significato solo se ad usarla sei tu, mentre gli altri per te non possono conoscerla o non hanno il diritto di usarla nei tuoi confronti)

In conclusione, se io sono "deficiente" e non mi si prova in modo inequivocabile la mia deficienza (pensa, conosco il termine forse meglio di te ;) ) allora la parola è usata per offendere gratuitamente (un po come se io adesso ti dessi dell'id iota, im becille, cre tino, stu pido ... ::) e si cadrebbe sull'offesa personale, ovvero un reato!).

E' forse questa la tua intenzione o non conosci il termine della parola "deficente" ? (se non la conosci vai qui e medita: http://it.wiktionary.org/wiki/deficiente)

Comunque, caro il mio ingegnerino permalosetto, se desideri che chi frequenta un forum ti risponda facendolo cordialmente e con spirito di collaborazione, impara ad evitare di mostrarti come il furbetto che fa il saccentone (lo sborone, come direbbero a Bologna), non usare termini che per i più sono recepiti come un'offesa (sapendo così di offendere), ed impara che quando si entra in un locale (seppur virtuale) se si è educati si chiede il permesso e ci si "pulisce" le scarpe prima di entrare, perché per "la via" può sempre capitare di pestare delle "cacche".

Il deficinte è dovuto al fatto che hai deficitato a non capire che la mia era una critica costruttiva data da uno che potenzialmente è il classico utente di un progetto user friendly oriented come Arduino, ben lungi da chi vuol fare il belloccio...la conoscenza che ho dei micro è abbastanza elementare e non va oltre il livello hobbistico e questo mi pare che fosse chiaro......evidentemente non per te che te ne esci con le solite [u]frasi qualunquiste[/u] del tipo

Scusa calo, ma perchè la libreria RS485 non la scrivi tu?..... ...ma arrivare a pretendere che il team di Arduino produca c.s. sulla richiesta di potenziali utenti, non credi sia troppo (invece di ringraziarli per il lavoro che regalano li critichi??? MA SEI PROPRIO UN INGEGNERE!!! ;D

Ma perchè non avevo fatto i miei più sinceri complimenti? Ma perchè...cosa c'è di male a dire cosa mi piacerebbe poter vedere nel progetto?

Sono sempre abituato alla cordialità nei forum e do una mano non appena mi è possibile e ho sempre trovato persone che fanno lo stesso, senza che nessuno cali in quarta con la [u]paternale prima di capire di che si parli o di aver partecipato costruttivamente[/u] alla discussione....ma c'è anche di questo ed è [u]ben accetto come tutto il resto[/u] ovviamente con diritto di replica. Mi spiace che ti sia offeso e [u]ovviamente mi scuso[/u], ma riconosci di aver fatto i cattivi onori di casa con me che sono l'ultimo arrivato oltre a sporcare adesso la pagina con terminologia che [u]in ogni occasione[/u] è fuori luogo. Bye bye...alla prossima :-* :-* ;)

[OT] "caro" il mio calo,

non ho idea di quanti anni tu abbia e di quanta esperienza possa avere, sia in questo settore che nel trattare con la gente. Una cosa però è certa, che tu hai fatto delle critiche ancora prima d'informarti a fondo, e questo è un comportamento particolarmente superficiale e quindi immaturo.

Già, perché tu non hai semplicemente chiesto se esistesse la tal libreria o il tal c.s., ma hai sentenziato come se tu fossi il tenutario di tutto lo scibile umano (e poi Massimo ti ha cordialmente fatto notare che quello di cui tu ti lamentavi era in realtà tutto già presente).

Francamente, a me quelli che si presentano in modo arrogante mi stanno sui co..ni, e parecchio! Ed è per questo motivo che sono intervenuto in un tuo intervento che mi è parso poco "collaborativo" e poco "disponibile".

E devi ringraziare Massimo perché è una persona molto paziente e disponibile. Perché a me, quando te ne sei uscito con una critica su una frase apparsa in un altro sito (che nulla c'entra con questo forum) con un'inutile precisazione che avresti potuto benissimo fare in privato (esiste la possibilità di mandare messaggi privati anche qui, non lo hai visto?), a me, dicevo, sono girate le p...e, e questo perché già in questo forum (in italiano) siamo in pochi, poi se arrivano anche i rompi..le, è proprio finita.

E poi mi chiedo cosa ci sia di tanto offensivo nell'esternazione di Banzi sul come gli ingegneri sono abituati a lavorare...

Nella mia esperienza lavorativa ne ho incontrati tanti di ingegneri, e tutti hanno sempre dimostrato un preciso rigido schema nell'approccio di un qualsivoglia lavoro (sia che fosse ingegneria meccanica, elettronica, informatica o civile).

Probabilmente è una cosa necessaria per fare il vostro lavoro (così forse lo pensano i docenti universitari che vi indottrinano), e sta di fatto che troppo spesso vi portate dietro una sorta di rigidità mentale forzata, che vi spinge ad un approccio troppo determinato e poco fantasioso nell'affrontare un qualsivoglia problema (o troppa "sicurezza" o i paraocchi come i cavalli, insomma!).

E credimi, questo non è solo un mio punto di vista. E questa sì che è critica costruttiva, e te ne potresti fare tesoro! Lasciatelo dire da uno che in questo settore bazzica ormai da più di 30 anni ... non so se mi spiego!

Riguardo poi allo sporcare le pagine, come ho già avuto modo di dire, SEI TU CHE HAI INIZIATO CON IL DARMI DEL DEFICIENTE!

Detto questo, se proprio ti va di proseguire questa stupida discussione, puoi rispondermi in privato, così lasciamo che chi viene in questo forum abbia il piacere di leggere solo cose pertinenti e che gli interessano per davvero. [/OT]

Consentimi di rispondeti qui:

Prima di tutto ho precisato la mia foga nello scrivere, proprio per l'entusiamo di trovare un progetto e una comunità come quella di Arduino. Ho letto un bel pò prima di scrivere, e magari non avevo trovato quello che cercavo, fra le tante pagine in inglese.....mi pare che capitano a tutti le sviste, tra l'altro non ho chiesto informazioni su come si accende un led. Secondo, con la storia degli ingegneri, nessuno si è offeso, figurati ;D ;D....era solo per far il simpatico con Banzi, e se non ricordo male avevo pure scritto...perdonami per l'OT. Sono il primo che se la ride con le barzellette sugli Ing. E' ovvio che il mio primo post non può essere collaborativo...dammi tempo di prender fiato.....figurati che in questo momento stavo rispondendo a un topic.

Comunque...io ho frainteso i tuoi toni, che a loro volta fraintendevano le mie domande. Di certo era meglio che io replicassi senza sminuire l'intelletto di nessuno e me ne scuso per la seconda volta!!

Perfetto! questo è l'approccio che ci vuole per divertirsi ed andare d'accordo insieme.

Grazie per la tua dimostrazione di maturità, e scusa anche tu me per le frasi "stuzzicanti" che ti ho scritto.

Alla prossima ;)