Mi sono permesso di scrivere qualche riga di codice per Arduino.
Rimango critico sulla impostazione del progetto (del sw intendo, ottimol'hw) ma collaboro.
Per evitare la bruciatura della flash nulla di meglio che un interprete basic.
Magari “sui generis” ma sempre un interprete per la scheda ATmega Arduino.
Con l’auto run, arriverà tra poco, potrete eseguire qualunque programma dalla eeprom da un milione di scritture.
Mi pare abbastanza.
I sorgenti in GNU/GPL sono qui:
Rinnovo la preghiera: chi trova bug lo dica e lo comunichi.
Avremo sempre un programma aggiornato, come ho scritto sul web non cerco onori.
Mi piacerebbe solo aiutare gli altri, se mi aiutano.....
Non sopravaluterei la problematica dei cicli limitati di cancelazione/riprogramazione della memoria flash.
Il produttore garantisce 10000 cicli.
Se si cambia il codice frequentemente ( per esempio una volta ogni miunto per tutti i minuti 24 ore su 24, dura 7 giorni per arrivare a tale numero) non é facile arrivare a tale numero.
Un lavoro realistico per un amatore che programma nel suo tempo libero con 2 ore di programmazione al giorno per 6 giorni la settimana su 48 settimane all'anno e diciamo 15 aggiornamenti del codice all'ora ci metti comunque piú di un anno per arrivare a tale numero di cicli. Penso che un arduino all' anno si possa dire che si puó cambiare. Oltre tutto i modelli di Arduino si suseguno con cadenza minore.
Un professionista che usa l'arduino per lavoro siccuramente raggiunge tale numero di cicli prima, ma visto che lo usa come mezzo di lavoro, penso che non é un problema che cambia la schedina una volta al mese.
Parli di 1 milione di cicli di programmazione EEPROM allora consideri un EEPROM esterno con interfaccia I2C o SPI; l'EEPROM del microcontroller é specificato per 100000 cicli.
C'é da dire che un interprete é sempre piú lento di un programma compilato e il fatto di dover leggere il codice dalla EEPROM ( esterna o interna) rallenta ulteriormente l'esecutione del programma.
Non mi sono documentato sul Tuo lavoro ma vorrei chiederti come hai previsto di caricare il programma Basic sul EEPROM.
http://www.lsoft.it/iql/iql_index.htm:
Scusate se non ho usato la follia della setup della loop o le estensioni pde (!). Sono cose stupide che servono solo ad allontanare le persone dalla programmazione.
Non mi piace il modo come Ti esprimi sul Tuo sito riguardante Arduino.
Per primo la semplificazione di poter usare Arduino con conoscenze molto limitate di programmazione ha fatto che Arduino si é diffuso cosí tanto. Se hai bisogno di imparare per settimane come usare un ambiente a microcontroller allontana molte persone.
Scrivi in un modo, svalutando Arduino, ma stai usando il progetto Arduino (il forum e il HW) per la publicizzazione del Tuo lavoro e per far girare il Tuo progetto del basic sul Arduino, (che in se non é niente di male). Per dirlo con un proverbio: Stai sputando nel piatto da dove mangi.
Puó essere che non sei soddisfatto di alcune scelte prese per Arduino ma é proprio grazie a queste scelte che Arduino ha una distribuzione cosí ampia.
Ma chi da 35 anni si occupa di programmazione potrà esprimere una idea sua?
Ho usato (nel 1975) l’asm poi il C, l’Ada, il Pascal, il C++, il Java, il C# su almeno 50 processori diversi.
Posso permettermi di esprimere un giudizio?
Comunque l'object è un quadricopter.
Ho scelto Arduiono per la disponibilità di hw.
E su questo mi levo il cappello.
Io non sputo mai, magari critico.
Ci tengo a precisare che volevo indicare il fatto che arduino è fatto semplice e a noi va bene così tutto la:) ogni prova è degna di essere presa in considerazione e deve essere giustamente apprezzata per quel che mi riguarda non userò ma il basic con arduino x principio ]
leo72: @paolo:
potresti per favore spiegare nel dettaglio come lavora il tuo interprete?
Ora non posso, non ho tempo.
Nel programa vi è un help, sintetico ma esaustivo.
Chi ha usato il basic (almeno da ragazzo ) non avrà problemi.
Prometto inserimento di un FSM ( Mil 179 L 2A ) quanto prima.
Qualcuno avrà capito che lavoro faccio...
E farmi un quadricottero in casa è una vera provocazione..
Non voglio che tu mi spieghi il BASIC ma capire come lavora l'interprete, dove vengono memorizzate le variabili, che potenzialità ha, come devono essere scritti i programmi, se funziona anche in modo interattivo come bitlash ecc...
Ciao a tutti
personalmente preferisco il Pic perchè lo posso programmare in basic
per quel che ne so io esite una versione di GREAT COW BASIC per AVR
e quindi dovrebbe funzionare con Arduino qualcuno la provato?
con GCB avresti a disposizione un compilatore con tutti i suoi vantaggi..
ivanred:
Ciao a tutti
personalmente preferisco il Pic perchè lo posso programmare in basic
per quel che ne so io esite una versione di GREAT COW BASIC per AVR
e quindi dovrebbe funzionare con Arduino qualcuno la provato?
con GCB avresti a disposizione un compilatore con tutti i suoi vantaggi..
Non dubito che ci sia di meglio.
Io volevo solo fare la parte dell'Italiano.
Codice nostro insomma, senza copiature.
Ma se non interessa non vi è problema.
Il mio elicotterò volerà lo stesso.
E bene.
leo72:
Non voglio che tu mi spieghi il BASIC ma capire come lavora l'interprete, dove vengono memorizzate le variabili, che potenzialità ha, come devono essere scritti i programmi, se funziona anche in modo interattivo come bitlash ecc...
Giuro che inserisco nel mio sito un "help" completo.
Cosa intendi come variabili?
La memoria statica dell'AT?
Chiedi pure.
Oramai mi sono presentato con nome cognome e indirizzo (il sito web è mio.. )
Puoi contattarmi anche via email: segreti non ne ho..
Se a te non dispiace preferirei evitare le email e continuare qui perché almeno anche gli altri utenti del forum possono attingere da questa discussione.
Il mio primo linguaggio è stato il Commodore BASIC, seguito dall'Assembly 65xx. XD
Dunque, tornando al tuo interprete (che ancora non ho caricato perché vorrei capire come funziona prima), chiedevo appunto se usavi variabili per memorizzare i valori elaborati dal programma scritto dall'utente. Anzi, come ha chiesto prima Uwe (mi pare), come memorizzi il programma nella EEPROM?
Il listato è in formato esteso (ovvero con i comandi scritti lettera per lettera) oppure adotti una forma di token per risparmiare spazio)?
Perché ti hanno mosso critiche circa la durata della Flash: cosa scrive il tuo interprete in Flash in maniera così elevata da far temere per la sua durata? Usi la SRAM?
Scusa se ti assillo ma a me l'idea di interpreti che girano nella memoria dell'Atmega mi ha sempre affascinato: se vedi nel vecchio forum italiano, fui uno dei primi a testare Bitlash.
Un pensiero... in teoria potresti anche sviluppare un'IDE per scrivere il programma sul PC e poi riversarlo su EEPROM, giusto?
leo72:
Se a te non dispiace preferirei evitare le email e continuare qui perché almeno anche gli altri utenti del forum possono attingere da questa discussione.
Il mio primo linguaggio è stato il Commodore BASIC, seguito dall'Assembly 65xx. XD
Dunque, tornando al tuo interprete (che ancora non ho caricato perché vorrei capire come funziona prima), chiedevo appunto se usavi variabili per memorizzare i valori elaborati dal programma scritto dall'utente. Anzi, come ha chiesto prima Uwe (mi pare), come memorizzi il programma nella EEPROM?
Il listato è in formato esteso (ovvero con i comandi scritti lettera per lettera) oppure adotti una forma di token per risparmiare spazio)?
Perché ti hanno mosso critiche circa la durata della Flash: cosa scrive il tuo interprete in Flash in maniera così elevata da far temere per la sua durata? Usi la SRAM?
Scusa se ti assillo ma a me l'idea di interpreti che girano nella memoria dell'Atmega mi ha sempre affascinato: se vedi nel vecchio forum italiano, fui uno dei primi a testare Bitlash.
Un pensiero... in teoria potresti anche sviluppare un'IDE per scrivere il programma sul PC e poi riversarlo su EEPROM, giusto?
Compila e lancia: non ci sono trucchi o malware inside... :).
Dopo ne parliamo.
E' povero ma tutto made in Italy
Domani rispondo.
P.S.
L'unica azione potenzialemte pericolosa e il comando SAVE.
Scrive nella eeprom.
Allora non é un interprete che risiede nella flash di Arduino e interpreta il programma Basic che prende dalla EEPROM ma un compiler su Pc?
Ciao Uwe
Primo, mi sono "pentito" ed ho tolto le critiche dalla mia pagina IQL. Scusatemi se mi ero permesso. Probabilmente la lunga esperienza con sistemi di sviluppo high end mi ha... corrotto..
Secondo.
Si tratta di un "bovinissimo" interprete basic con la possibilità di accedere ai registri del processore del tipo .rrr=$xx.
Una volta bruciato nella flash lì risiede. Con l'auto run, che giuro di testare il prima possibile potrete scrivere dei piccoli sw e lanciarli in automatico all'accensione.
Ok per il proseguire qui, nessun tentativo di "fuggire"...
Scusate se i sorgenti hanno pochi commenti e spesso in inglese (maccheronico!).
Il tutto come già detto fa aprte di un progetto assai più ampio: un quadricottero tutto made in Italy.
Sto giusto ora testando le "math" per le matrici di rotazione degli assi.
La bussola (magnetometri) mi sta facendo diventare verde..
Il mini help del programma.
#ifdef ON_BOARD
char T_Help[] = {"
\n
\nLIST EDIT NEW WAIT TRON TROFF RUN
\nRENUM RESUME MEM STOP GOTO LOOP ENDL GOSUB
\nRETURN IF INKEY INPUT REM( ; ) TSTART TSTOP PRINT(?)
\nLOAD SAVE
\n
\nCTRL_R previous line nCTRL_B back CTRL_N next in edit
\n
\nVariable A-Z @[idx]
\nOperator math + - * / % logical | or & and ^ xor < > shift
\nNumber default decimal $hexadecimal #bynary
\nRegister .RRR (view ATMEGA manual) ex: .$24=$80\n\n"}; #endif
La memoria non è compressa (token) ma in ascii diretto. Questo per evitare complicazioni inutili. Chi volesse scrivere un driver di compressione è ben accolto. La memoria è usata così.
4 KB sono per il codice (ascii lo ripeto) che volgiamo usare.
Circa 700 bytes per le variabili A-Z oltre al vettore @[0-255].
Lo stack porta il tutto a circa 7kB.
Dato che fornisco il sorgente tutti possono vedere quello che il programma fa.
Il timer ad esempio ha un flasher dei led: uno per Arduino e uno per la shield di AeroQuad che uso.
Un ripetitore insomma. Basta levare la #define e smette di lampeggiare.
Volevo provarlo ma io non sono molto pratico di C... come si usa? Ho provato a compilarlo direttamente ma mi dava errori di lib non trovate. Inserendelo in uno sketch di Arduino ricevevo altri errori.
E poi come scrivo il programma? Confesso di non aver capito, ma l'assenza di istruzioni non aiuta