SukkoPera:
Ma soprattutto, se vuoi lavorare a livello così basso, forse fai meglio a lasciare perdere Arduino e a passare direttamente ad Atmel Studio.
Difatti ci stavo riflettendo, solo che qui in arduino ci sono degli hardware gia' preparati (si chiamano shield o mi sbaglio) e poi ho trovato molto conveniente comprare due arduino mega con microcontrollore atmega2560 a soli 6 euro =D
Comunque dovro studiare un po il linguaggio c++, io col pascal scrivevo cosi come si parla, il pascal non e' il miglior linguaggio per l'ambiente dei microcontrollori difatti anche il mikropascal for avr ha delle pecche e manca del rigore formale sui tipi di dati di cui il pascal dovrebbe essere massimo garante ma con un po di abitudine ci si abitua.
vedremo strada facendo. Vi ringrazio nuovamente a tutti ed a presto!!
Ovviamente l'implementazione del Pascal su un piccolo micro con ridotte risorse non può essere identica a quella per un PC, tocca fare dei compromessi.
Idem per il C++ usato da Arduino, anche in questo caso ci sono dei compromessi perché non è possibile implementare al 100% il C++ su una piccola mcu 8 bit con solo 2k di ram, per contro l'implementazione del C ANSI è al 100% standard.
Ti consiglio caldamente di lasciar perdere il C++ e usare solo il C ANSI, vale per tutti i piccoli micro/mcu 8 bit.
astrobeed:
Ovviamente l'implementazione del Pascal su un piccolo micro con ridotte risorse non può essere identica a quella per un PC, tocca fare dei compromessi.
Idem per il C++ usato da Arduino, anche in questo caso ci sono dei compromessi perché non è possibile implementare al 100% il C++ su una piccola mcu 8 bit con solo 2k di ram, per contro l'implementazione del C ANSI è al 100% standard.
Ti consiglio caldamente di lasciar perdere il C++ e usare solo il C ANSI, vale per tutti i piccoli micro/mcu 8 bit.
Difatti alla fine anche col compilatore pascal era vantaggioso modellare gli algoritmi su strutture dati a puntatori o ad array e quindi cosi perdere le opportunita' di creare strutture dati complesse di cui il pascal da possibilita' di utilizzo ma che spesso il compilatore non consentiva, alla fine il pascal che utilizzavo era monco e cosi in fase di analisi, come ho detto, optavo per strutture dati semplici e lineari.
Roberto
Il fatto è che Arduino è un ambiente pensato per chi ha poca dimestichezza con i microcontrollori e l'elettronica in generale. Per cui l'accesso all'hardware è quasi tutto nascosto dietro l'uso di librerie, non si manipolano mai i registri direttamente, i puntatori praticamente non si usano, e quant'altro.
Tutto ciò ha un prezzo in prestazioni e occupazione di memoria, però fa sì che la curva di apprendimento sia molto meno ripida.
Poi è vero che Arduino contiene comunque l'avr-gcc completo, per cui sei libero di andare quanto vuoi verso i bassi livelli, però se l'obiettivo è questo, a mio avviso è meglio andare subito su Atmel Studio e evitare di perdere tempo a imparare la Wire.h, la SPI.h, pulseIn(), shiftOut() e quant'altro.
Però a mio avviso l'infrastruttura di Arduino è molto comoda, a meno di particolari necessità non è detto che valga per forza la pena di rompersi la testa con i registri ;).
SukkoPera:
Ma soprattutto, se vuoi lavorare a livello così basso, forse fai meglio a lasciare perdere Arduino e a passare direttamente ad Atmel Studio.
Ma se utilizzo Atmel studio posso comunque continuare ad utilizzare l'hardware arduino?, intendendo per hardware la scheda arduino mega (che ho trovato veramente economica) ed anche le shield. Come posso caricare il programma nella scheda arduino mega attraverso la sua interfaccia usb?
In che modo posso continuare ad utilizzare le varie routine che gestiscono le svariate shield sviluppate per arduino nell'ambiente di programmazzione avr studio?
Le schede Arduino (perlomeno quelle "storiche") sono poco più che una manciata di componenti montati attorno ad un microcontrollore Atmel, per cui non c'è alcuna difficoltà ad usarle con Atmel Studio.
Per quel che riguarda i vari shield, tendenzialmente dovresti potere importare in Studio le loro librerie, ma immagino che al 99% dipendano da Wiring, per cui dovresti importare anche quello, tornando alla fine a ricostruire l'ambiente Arduino.
Però non riesco a capire una cosa: da un lato vuoi metterti a smanettare a basso livello con i registri, dall'altro vuoi usare le librerie già pronte per interfacciarti con gli shield. Mi sembra che non ti sia ben chiaro com'è architettato l'ambiente Arduino, quali sono le sue peculiarità e il suo paradigma di programmazione. Credo che dovresti iniziare a vederti i tutorial e gli esempi disponibili, almeno ti farai un'idea più precisa di come vorrai procedere.
Mi serve utilizzare le shield per non riscrivere per esempio tutte le routine necessarie a memorizzare un file su scheda sd ma focalizzare l'attenzione sul problema che potrebbe essere accuisire dei dati analogici trattarli fare delle attuazioni in base alle elaborazioni e poi memorizzarli, magari anche spedire via rete i dati, mica mi metto a riscrivere lo stack TCP/IP. Io nel contesto del pascal della mikroe facevo cosi ed in questo modo ho raggiunto un livello di efficienza molto alto, certo e' che so bene che quando si utilizzano routine predisposte e le relative shield bisogna considerare che alcune risorse sono loccate (i.e. alcuni interrupt potrebbero essere utilizzati dalle routines delle shield stesse).
Comunque ho installato visual studio e c'e' un plugin che consente di "collegare" arduino (vedi il file in allegato) e sono riuscito a caricareautomaticamente uno scketch di arduino nell'ambiente visual studio ma ancora ho problemi a far comunicare visual studio con la scheda arduino mega, forse c'e' qualche autorizazzione di amministratore che il lavorando con utente normale non mi fa accedere alle risorse hardware per consentire al visual studio di comunicare, se hai esperienza con l'uso di questo plugin dimmi cosa devo impostare, nel secondo allegato c'e' l'erore che da durante l'upload e a destra l'impostazione stk500 con la com6 (che e' la com alla quale sta connesso l'arduino) che non riesco a fissare, cioe' io imposto e poi applico ma se rientro trovo sempre vuoto, sai per caso cosa puo' essere?
Saranno le autorizzazzioni di administrator?
Io sono utente Linux e non ho idea di cosa serva per far funzionare Visual Studio, ma in generale per programmare Arduino basta avere accesso alla relativa porta seriale.
Capisco quello che vuoi fare, ma allora ti consiglio di pensare meno ai registri e agli interrupt, e di entrare nel paradigma Arduino, imparando a conoscere e ad utilizzare le sue librerie. Se poi sarà il caso, non avrai difficoltà ad addentrarti nel basso livello.
E ti consiglio anche di iniziare dall'IDE Arduino, muovi i primi passi con quello, per poi passare a VS se ti starà stretto.
Visto che parli di schede da 6 euromolto probabilmente montano il CH340 per la comunicazione tramite USB.
Devi cercare i driver per il tuo sistema operativo.
ciao
pippo72
esatto, ho visto con la lente di ingrandimento sulla board c'e' un integrato aa 16 pin chiamato CH340G, quindi spiegami quali driver devo scaricare, pero' considera che questa stessa scheda comunicava e continua a comunicare perfettamente con l'ambiente di sviluppo arduino 1.8.4. se fossero i driver errati allora come mai con l'altro ambiente di sviluppo tutto funziona?
scusa, non avevo guardato le immagini postate.
Il driver è già presente (come si vede dalla seconda immagine) però perchè hai compilato per arduino mega ADK invece di arduino mega?
pippo72:
scusa, non avevo guardato le immagini postate.
Il driver è già presente (come si vede dalla seconda immagine) però perchè hai compilato per arduino mega ADK invece di arduino mega?
ciao
pippo72
arduino mega non esiste, ho provato con arduino mega adk ma anche con arduino/genuino mega w atmega2560 (mega 2560), insomma ho scelto e provato con ogni cosa sembrasse simile
Visto che con l'IDE di Arduino la scheda ti funziona il problema (penso) è lato Visual Studio.
Non ho esperienza con visual Studio (anche in sono utente linux) , mi dispiace
=D =D con un po di "forza bruta" dopo aver tentato un po tutto alla fine ci sono riuscito, certo che le impostazioni e le conseguenti possibilita' che da questo visual studio sono veramente grandi, in allegato il file della print screen del successo.
ora il mio problema e' come richiamare l'editor, non so dove sia finita la finestra, e comunque devo prendere confidenza con tutte le impostazioni, grazie a tutti!!
Per aggiungere gli ultimi sviluppi sull'utilizzo di Atmel studio per programmare gli hardware arduino direttamente in c/c++ ho trovato questa soluzione che consente di scrivere in C e poi caricare il tutto sulla scheda arduino. Adesso dovrei vedere se e' possibile in qualche modo rendere disponibili le shield e le relative librerie nell'ambiente c/c++, ci sara' un sistema per "tradurre" le librerie scritte per essere utilizzate in wiring?
Qui le istruzioni per lavorare in visual studio in c/c++ su arduino: Programming Arduino with Atmel Studio 7 | Slightly Overcomplicated