Modificato
05/04/2011
Primo tentativo di usare Arduino senza
bruciare la flash
Per
evitare problemi ecco un primo piccolo Basic per Arduino. Non ho tempo per
inserire istruzioni o documenti. Solo poche note. Compilare in ambiente PC con il
flag DEBUG_ON oppure per AVR4 Studio con il flag ON_BOARD. Per flag intendo le
#define. Il software è stato testato con il simulatore AVR dell’ottima Atmel e
con l’IDE di Arduino. E’ un basic semplice, che potrebbe girare anche su
Arduino UNO/2009, riducendo le linee di codice massime. Ora siamo a 7 KB di
memoria occupata: già troppo per ATmega. Il sorgente è settato per la scheda
Arduino, dovreste poterlo compilare senza problemi.
Una preghiera: chi trova errori, e ce ne sono molti, o chi lo
modifica in meglio lo dica all’autore. Avremo un programma sempre aggiornato e
disponibile a tutti. Mi sembra bello no? Anche se è vostro aiutatemi a
mantenerlo. Non cerco gloria o onori. Vorrei evitare che la flash delle vostre
schede si bruci senza motivo. L’auto run, essenziale per chi vuole far girare
la scheda in automatico, arriverà con la versione 0.4. Prometto.
Nel frattempo chi vuole partecipare può contattarmi: ogni aiuto verrà
segnalato, se lo si desidera, con nome e cognome dell’autore.
Note sui bug.
L’edit di linea ha bisogno di manutenzione, è pieno di bug.
Non è funzionante nella “LAB_Expression.c” l’ordine matematico dei fattori:
usare le parentesi per ora.
La renum per evitare l’overflow di memoria è complicata. Ma sembra funzionare.
Accetto critiche ma solo se costruttive…
Interrupt handler
Causa
i bug del GCC sulle volatili vi sono dei pezzetti di assembler da non toccare.
Non provate forme del tipo while ((volatile)(reg)); perché non funzionano.
Viene convertito in while
(constant) jmp $-1….. e si ferma tutto.
I driver per la seriale e il timer sono mutuati dal progetto IQL dove sono
usati per leggere il radiocomando e impostare gli ESC dei motori. Anche questo
sw verrà reso disponibile quanto prima in GNU/GPL.
La versione per 328P è da provare
Mi è stato chiesto il porting su un hw quasi impossibile: il 328P
Atmel. Causa il poco tempo la versione non è stata provata quasii per nulla. In
compenso ho scoperto un paio di bug di cui uno grave: la classica cli seguita
da return.
Su 2560 non si fermava perché più veloce su Atmega 328P sì. La
versione è settata per 19200 a differenza della prima a 115200. Lo sforzo lo ho
fatto.
Riparata la Load / Save in 0.3
Ora funzionano ma l’autorun, perfetto su Pc, è difettoso. Penso
sia la timer che sbaglia con i long.
Date un occhio con AVR4 al codice generato: manca roba per una unsigned long….
Certo un po’ di collaborazione serviva ma arriverà, sono certo.
La pagina tra poco sarà spostata nel suo posto (LAB) e torneremo a
parlare di quadricotteri e di software per mandarli.
Per Arduinisti…
Se non vi funziona lo sketch, evito commenti per amor di patria,
dovete fare così.
Create uno sketch nuovo e fate “add” di un file. Salvate e
chiudete l’ambiente. Inserite tutti gli altri file nella cartella sketch e riapritela.
Dovrebbe tirare su tutto. Certo, l’ambiente è quello che è: spiace
che nessuno faccia nulla per far capire che è errata la strada di inventarsi
l’acqua calda quando ci sono schemi standard che tutti conoscono e usano.
Create Project e add file to era troppo semplice? Si vede che sono vecchio?
Forse sì.
Prima versione di LAB 0.1
solo ATMEGA
Con supporto di Arduino UNO
(328P)
Durata poco, versione 0.3
con save-load buoni
Per chi non ha un emulatore di
terminale una versione del mio Lsl 4.0