Corso su ARM: iniziamo a lavorare con la board FRDM-KL46Z

KL46Z

Il titolo di questo articolo vuole essere una chiara indicazione su quello che questo corso sarà da questo momento in poi: tutta pratica. Vedremo di fare diversi esperimenti pratici, dai più semplici ai più complessi, per imparare al meglio quali sono le reali potenzialità della FRDM-KL46Z per scoprire di cosa è davvero capace. Siete pronti?

Quando la scheda arriva, si presenta in una confezione incredibilmente minimale: la documentazione è tutta disponibile online a questa sezione del sito Internet dove si possono reperire tutte le informazioni utili. Naturalmente, tutto quello che serve ve lo abbiamo già proposto ma è utile tenere a mente anche quel riferimento.

E, ad ogni buon conto, date un'occhiata agli allegati di questo articolo.

Di solito quando scriviamo questo genere di articoli prevediamo la sezione "unpacking" ma qui da aprire c'è davvero poco invece da sperimentare (ed imparare) c’è moltissimo!
C'è però da procurarsi il materiale utile per poterla utilizzare; fatto questo non resta che…

…metterla in funzione

Ma prima di farlo la cosa fondamentale è che tutti noi ci ricordiamo la sua documentazione. Nell'articolo dedicato ne abbiamo parlato ma la riprendiamo qui perché vi servirà e tanto anche. Sul sito Internet, come dicevamo, trovate tutte le informazioni di base.

Se avete bisogno di informazioni sullo schematico (e vi garantiamo che ne avrete!!), lo trovate in allegato.

Vi serve certamente sapere come fare per programmare la scheda e per questo avete bisogno di CodeWarrior for MCU.

Una nota importante: stiamo lavorando e lavoreremo con la versione 10.5, per avere accesso a quella più aggiornata e che supporta sicuramente la scheda. Il codice e la programmazione non sono certamente un grosso problema dal punto di vista della portabilità però potrebbe essere problematico il supporto ed i driver per cui cercate di procurarvi la stessa versione in maniera tale che lavoriamo tutti guardando più o meno dallo stesso punto di vista. Idem dicasi per il Processor Expert.

Tra i programmi che potete scaricare c'è anche quello che vi serve per far funzionare la scheda.
Ci sono una serie di codici di esempio e programmi precaricati e partiremo proprio da quelli per analizzare la loro struttura e capire che cosa stiamo guardando.

Metterla in funzione significa anche fare un breve ripasso sui suoi Jumper perchè presto o tardi vi serviranno eccome. Quando guardate la scheda ne troverete diversi per cui è importante sapere a che cosa servono:

  • J6: bypass di D4;
  • J7: VREGIN (configurabile);
  • J8: isolamento del sensore di luminosità;
  • J9: power isolation per K20 (OpenSDA);
  • J12: Power isolation per VLL3;
  • J15: supporto per 5VDC;
  • J16: alimentazione USB Host mode;
  • J17: isolamento e misurazione per KL46Z.

Software e Tools

La scheda ha, già installato, il bootloader OpenSDA; questo significa che, così come le altre schede della serie Freedom, è necessario rimpiazzarlo con l'OpenSDA Debug Application. Freescale prevede il codice di esempio denominato "KL46_SC" all'interno del suo pacchetto "FRDM-KL46Z_QSP", quello di cui abbiamo parlato prima (QSP sta per Quickstart Package).
Ecco un altro dei motivi per i quali vi consigliamo caldamente di dare subito uno sguardo tutta la documentazione disponibile (in allegato) e procurarvela.
Parlavamo di software e quindi sappiate che il supporto per questa scheda è garantito anche dalla versione 10.4 di CodeWarrior for MCU.
Quando siete all'interno del Wizard "New Project" del software, come sempre, quello che dovete fare è localizzare la vostra scheda, in maniera tale che il programma sappia come interpretare i vostri comandi; per fare questo cercate all'interno della "KL4x Family" l'MKL46Z256, che troverete nella sottocategoria "KL46Z (48 MHz) Family".

Creando un nuovo progetto, ricordatevi che quello che volete fare è una applicazione, piuttosto che una libreria.

Una breve annotazione: sappiate che Keil, un altro grosso nome quando si parla di software, ha appena rilasciato la versione 4.72 di µVision. Se lo conoscete già, lo preferite oppure siete semplicemente curiosi, sicuramente troverete il software di grande utilità ed un'IDE molto potente e performante con diverse utilissime opzioni.

Adesso avete inizializzato la scheda e pertanto potete iniziare a lavorare seriamente.

Giochiamo con i LED

Come certamente ricorderete dallo schematico, la scheda ha a disposizione due distinti LED, uno verde ed uno rosso. L'esperimento che facciamo adesso, piuttosto semplice, servirà per poter comandare direttamente uno dei due LED. Scegliamo quello rosso ma uno dei due vale certamente l'altro.
Come segnale per comandarlo utilizzeremo uno dei due pulsanti che sono predisposti sulla scheda, in particolare SW1.
Naturalmente queste scelte sono del tutto arbitrarie per cui potete farne delle altre. Quello che ci interessa è raccontarvi cosa dovete fare perché tutto vada a buon fine e utilizzeremo delle immagini che vengono direttamente al programma per aiutarvi a prendervi confidenze immediatamente.

Tanto per iniziare, è necessario abilitare la modalità Bootloader della scheda. Dedicheremo più spazio a questa modalità. Per il momento, però, soffermiamoci sul fatto che dobbiamo seguire una semplice procedura guidata che prevede la pressione del tasto RESET, il collegamento della porta USB OpenSDA, il rilascio del pulsante ed il riconoscimento della scheda da parte del sistema operativo.
Una volta fatto questo vi renderete conto che tra le risorse del sistema avrete questa

all'interno della quale dovrete copiare il file "DEBUG-APP_Pemicro_v108.SDA" che si trova sempre all'interno di quel pacchetto Quickstart di cui abbiamo parlato in precedenza nella cartella OpenSDA Applications.
In una delle prossime puntate, se vi interessa, potremo raccontarvi meglio a che cosa serve tutto questo.
Per il momento accontentatevi di sapere che ciò si è reso indispensabile perché scollegando e ricollegando la scheda essa verrà riconosciuta come dispositivo dal sistema operativo e potrete interagire con la stessa.
Se andate a vedere tra le risorse del sistema operativo, nella sezione Hardware, troverete certamente qualcosa di questo tipo

(fai click sull'immagine per ingrandire)

Adesso che tutto funziona correttamente, vediamo che cosa dobbiamo fare per  portare a casa questo semplice esperimento: vogliamo che il pulsante accenda e spenga il LED.

Prendetevi una decina di minuti per guadagnare confidenza con l'interfaccia del programma, se non lo conoscete. Tenete presente che al primo avvio quello che vi verrà chiesto è la cartella all'interno della quale volete che vengano alloggiati i progetti. Questa scelta vi servirà per lungo tempo per cui fatela accuratamente.

Come tutti gli ambienti di sviluppo, anche qui la visualizzazione è personalizzabile a seconda delle vostre esigenze per cui scegliere con attenzione che cosa volete vedere.

Quando siete in fase di realizzazione del vostro codice, certamente vi servirà sapere quali sono i progetti che avete creato, l'elenco dei componenti attivi, le librerie relative agli stessi ma soprattutto il cosiddetto "Component Inspector", una specie di lente d'ingrandimento che vi permetterà di impostare fin nel più minuto dettaglio i singoli parametri di ciascun dispositivo o componente che faccia parte del vostro progetto.

Ma adesso basta fare chiacchiere, passiamo al sodo del nostro esperimento.

Abbiamo bisogno di creare tre entità dei quali la prima sia il vero e proprio LED, la seconda l'inizializzazione dello stesso e la terza l'impostazione dell'IO.
Sono tre componenti che dobbiamo andare a ricercare all'interno della "Components Library" e nelle prossime immagini vedremo come.

Cominciamo con il LED.

(fai click sull'immagine per ingrandire)

una volta selezionato tra le "CPU Internal Peripherals", il singolo bit va impostato in termini di pin di riferimento e direzione (naturalmente si tratterà di un Output dal momento che stiamo parlando di un LED). Per scegliere il pin di riferimento dobbiamo consultare lo schematico. Lavorerete molto con lo schematico alla mano per cui conviene tenerlo aperto in maniera tale da consultarlo costantemente.

A questo punto non resta che impostare come pin di riferimento per l'interrupt il PTC3. Se quello che abbiamo detto prima è chiaro, a che cosa corrisponde nello schematico?

(fai click sull'immagine per ingrandire)

Ultimo passo da compiere prima di passare al codice è impostare "Init_GPIO" sul pin PTC #3. Ciò si può fare abilitando il pin, impostando il valore del resistore di pull-up ma soprattutto impostando la condivisione del pin tra "ExtInt" e "Init_GPIO"; l'ambiente di sviluppo, in effetti, almeno all'inizio, segnerà un conflitto dal momento che entrambi lavorano sullo stesso pin. Tramite l'impostazione di condivisione l'errore sarà eliminato ed il programma interpreterà correttamente che volete effettivamente lavorare sullo stesso pin.

Quello che vi serve adesso è lavorare sul codice e quindi espandendo la cartella del vostro progetto, ricercando il file "Events.c" troverete certamente

(fai click sull'immagine per ingrandire)

void EInt1_OnInterrupt(void)
{
  /* Write your code here ... */
}

A cosa serve? Facile: dovete andare a cercare tra gli attributi ed i metodi del "Bit" ovvero del LED, funzioni quali "PutVal" ed altre…

Considerando che la logica è invertita, quella che vi serve è proprio "NegVal".
Il codice pertanto diventerà:

void EInt1_OnInterrupt(void)
{
      LED_NegVal();
}

In questo caso non vi serve impostare alcun tipo di parametro perché la funzione è void ma soprattutto non richiede parametri in ingresso.

Resta, adesso, la generazione del codice. Dopo aver selezionato "Generate Processor Expert Code", entriamo in modalità Debug per verificare l'esecuzione del programma. Fatto questo, il risultato sarà certamente raggiunto.
Tutto bene? Avete avuto problemi?
Se sì, discutiamone nei commenti. Altrimenti cominciate a variare il codice, facendo piccole modifiche: cambiate il LED, il pulsante, il numero di volte che quest'ultimo va premuto per poter avere l'accensione e così via dicendo…

Conclusioni

Per oggi possiamo dire che ci fermiamo. La scheda è davvero interessante e scoprirla rappresenta una vera e propria sfida. In questa puntata abbiamo iniziato a vedere codici, programmi, qualche impostazione e abbiamo fatto ancora un passo in avanti nella conoscenza della scheda che abbiamo per le mani. Man mano che si susseguiranno, prenderemo sempre maggiore confidenza e fino alla fine la sapremo programmare alla perfezione.
L'idea di questa sezione pratica è anche, magari, arrivare alla realizzazione di un progetto e questa, per il momento, è la più "corposa" rivelazione che vogliamo farvi.
Come per gli altri articoli, i commenti sono il luogo in cui potrete fare domande, chiarire dubbi ed eventuali ulteriori perplessità. Alla prossima puntata.

 

Riferimenti e richiami:

Schematico della scheda

Quickstart Package

Design Package

 

                    

Per ulteriori informazioni potete scrivere a questa email: ggalletti@arroweurope.com

9 Comments

  1. Ultron 7 novembre 2013
  2. Emanuele 7 novembre 2013
  3. Ultron 7 novembre 2013
  4. Piero Boccadoro 8 novembre 2013
  5. Piero Boccadoro 8 novembre 2013
  6. Ultron 8 novembre 2013
  7. Piero Boccadoro 10 novembre 2013
  8. Piero Boccadoro 10 novembre 2013
  9. Ultron 10 novembre 2013

Leave a Reply