Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

20
voti

PIERIN-PIC18 Seriale virtuale USB

Questo breve articolo nasce come intermezzo per un lavoro che mi piacerebbe fare a tempo perso: collegare il PIERIN al PC tramite USB in modo da potere essere utilizzato come periferica di acquisizione dati per programmi di calcolo come MatLab, Mathematica, SimuLink e via discorrendo. Per fare questo è necessario un qualche sistema che permetta al programma applicativo di utilizzare una seriale virtuale che sfrutti le possibilità USB del PIERIN.
Dotare il PIERIN di una seriale virtuale è il primo passo per scrivere un interprete di comandi che i programmi di calcolo invieranno a questa schedina per acquisire dati, ingressi o attivare uscite. Tuttavia sono certo che questa possibilità risulterebbe utile a molti che vorrebbero magari fare altro, ma sempre utilizzando la seriale virtuale.
Ho quindi deciso di fare una pausa e di fornire la base su cui sviluppare questo tipo di programmi.

Indice

La fonte

La fonte di questa base di partenza l' ho presa dalla Microchip Library for Applications (MLA) e precisamente dal "CDC basic demo".
Ho poi semplicemente fatto un po' di ordine e precisamente:

  • Ho portato i file dello stack USB che originariamente vengono copiati nella cartella documenti, in una cartella apposita che sta all' interno del progetto. In questo modo non ci sono files sparsi chissà dove ed il progetto è completo di tutto.
  • Ho portato le funzioni che devono essere scritte per realizzare il programma applicativo al fondo del file main.c
  • Ho inserito qualche commento in modo da semplificare un po' la vita all' utilizzatore.
  • Gli ho tolto le parti di sorgente che servono per far lampeggiare i LED che indicano lo stato della connessione USB e il demo che sono specifiche per la scheda della Microchip ma che, per quanto riguarda l' applicazione, sono assolutamente inutili.
  • Ho modificato il programma di demo in modo che faccia semplicemente l' eco dei caratteri in ingresso sull' uscita. In pratica se si collega il PIERIN al PC tramite un programma di terminale, tutti i tasti premuti dal terminale verranno semplicemente visualizzati.
  • Ho verificato che il programma prodotto (così come quello futuro che svilupperò) possa essere caricato tramite il bootloader del PIERIN e che funzioni correttamente.
  • Sono andato a cercarmi i file di documentazione dello stack USB e li ho messi direttamente dentro il progetto in modo da essere facilmente reperibili.

Nota: Lo stack USB della Microchip è fatto per funzionare con tutti i micro della famiglia quindi ci sono una quantità industriale di defines. Io non le ho tolte quindi "don't panic" e prestate attenzione solo alla parte che interessa per la stesura del programma applicativo.
Ovviamente sarebbe buona cosa darci poi uno sguardo a tutto lo stack, sia per ripulire quello che non serve ma soprattutto per capirci qualcosa. E' un ottimo esercizio.

Il sistema

Il sistema di base ha queste caratteristiche:

  • USB full speed.
  • Microcontrollore funzionante con clock a 48MH
  • Servizi USB gestiti tramite interrupt
  • Redirezione dei vettori di interrupt e di reset in modo da essere utilizzato con il bootloader del PIERIN
  • Una funzione vuota specifica per le inizializzazioni del programma utente che viene chiamata al momento opportuno dal sistema
  • Una funzione (che pra contiene il demo, il programma di echo) dove verrà poi scritto il programma applicativo

Quindi per sviluppare la propria applicazione sarà sufficiente inserire nella funzione userInit le inizializzazioni ed inserire il programma applicativo dentro la funzione application.
Quest' ultima viene chiamata di continuo all' interno del loop infinito di funzionamento scritto nella funzione main quindi bisogna prestare particolare attenzione a non scrivere un programma che si blocchi, per qualsiasi motivo, all' interno di questa funzione.
In questa funzione deve invece essere implementata una macchina a stati in modo che non ci siano loop di attesa ma che esca continuamente. Questo è particolarmente importante altrimenti l' USB non funzionerebbe.

Il progetto

Il progetto si può scaricare a QUESTO LINK che punta ad una pagina del PIERIN.
L' ho chiamato PierinMatlab perché è appunto un passaggio intermedio dello sviluppo di questa applicazione. Non me ne vogliate se non gli ho cambiato il nome.
Il progetto si usa tramite MPLAB-IDE. Se poi qualcuno ne facesse anche una versione per MPLAB-X farebbe una cosa ottima ed utile a molti. Io non uso quest' ultimo e purtroppo ho veramente poco tempo quindi, coloro che utilizzano MPLAB-X o se lo adattano oppure aspetteranno il lavoro di qualche generoso sviluppatore.
In ogni caso,
Buona sperimentazione!

Errata

  • 08/06/2014 ricaricato il progetto nel server. Aveva purtroppo ancora dei riferimenti allo stack Microchip messi dove voleva lui. Ora i riferimenti sono corretti.
  • 11/06/2014 dopo varie imprecazioni ho ricaricato nel server il file .rar. Questa volta ho messo tutti i files del progetto all' interno della stessa cartella. Avevo già riscontrato problemi con i riferimenti ai vari file nei progetti che utilizzano lo stack USB della Microchip, ma questa volta mi hanno fatto proprio impazzire. Ringrazio di cuore Paolino che mi ha fatto notare i problemi.
3

Commenti e note

Inserisci un commento

di ,

ciao TardoFreak ho appena comiciato ad usare la scheda pierin, ho ricompilato e caricato il programma oggetto di questo articolo e tutto funziona perfettamente, quindi tutto il mio sistema edit/compila/bootloader é a posto. Prima domanda: Avrei bisogno di programmare un 18F27J53 che avevo acquistato prima di arrivare al Pierin. Il problema é che il programmatore che ho non funziona con queso PIC in quanto a 5V e con vpp a 13V, che lo brucerebbe all'istante. Se ho capito bene, questi PIC vengono programmati con 3.3V su tutti i pin. Se avessi una parallela a 3.3V potrei programmarlo direttamente. Esiste un firmware da caricare nel Pierin che faccia funzionare lo stesso Pierin come convertitore USB - Parallela ? Seconda domanda: il pierin ha due periferiche USART; si può fare in modo da vedere due COM e non una sola? saluti

Rispondi

di ,

Grandioso!

Rispondi

di ,

Ne abbiamo parlato ieri... dico... ieri. Oggi ha il codice pronto. Altro che TardoFreak, tu sei TurboFreak! Complimenti.

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.