Alberto Maccioni, nostro connazionale, ha progettato un programmatore USB per PIC, EEPROM I2C-SPI-MicroWire, micro ATMEL e dispositivi I2C e SPI.
La cosa più interessante (e meritoria) del progetto è che sia schemi di montaggio che programma di gestione (sia per Windows che per Linux) sono open source.
Chiunque può prendere in mano gli schemi e costruirsi un programmatore USB con costi di montaggio bassissimi, sia per componenti che per i materiali necessari.
Ringrazio Alberto M. per avermi permesso di postare questa sua guida su MS.
* Completamente gratuito e Open Source (anche il firmware)
* E' in grado di programmare PIC10-12-16-18-24, dsPIC30-33, memorie I2C tipo 24XXXX, MicroWire tipo 93XX6, SPI tipo 25XXX, alcuni micro ATMEL; comunica con dispositivi I2C e SPI
* Interfaccia USB 2.0 Full Speed, classe HID (come tastiere, mouse ecc.)
* Autoalimentato via USB
* Non ha bisogno di driver
* Componenti di facile reperibilità (costo stimato ~10€)
* Temporizzazioni gestite in hardware quindi veloce e affidabile (scrive un 18F2550 in 15s su Windows, 8s con Linux)
* Non impegna la CPU e non risente di altri programmi in esecuzione
* Programmi di controllo open source per Linux e Windows sviluppati ad-hoc.
Schema elettrico (v1.6)
Per implementare una periferica USB con i PIC ci vogliono veramente pochi componenti: il micro principale, il quarzo, qualche condensatore, qualche resistenza e il connettore USB tipo B, tutto come da Application Note della Microchip.
Il progetto è basato sul PIC18F2550, a 28 piedini, ma per ora viene occupato solo circa un terzo della memoria programma e 0% della eeprom, quindi è possibile usare anche il più piccolo 2455.
I 2458 e 2553 differiscono solo per l'ADC a 12 bit, quindi dovrebbero andare benissimo.
Con alcune modifiche ho adattato il tutto anche al 2450; questo modello non ha il modulo MSSP, quindi le funzionalità I2C e SPI vengono emulate via software; non ha neanche il secondo canale PWM, quindi non può generare il clock per i micro Atmel che lo richiedono (cioè quelli configurati per il clock esterno); in questo caso il piedino RB3 ha la funzione di accendere un eventuale oscillatore esterno, da inserire opportunamente nella scheda di espansione Atmel.
Per poter usare i dispositivi a 40p corrispondenti (4450,4455,4458,4550,4553) bisogna modificare lo stampato.
Oltre a connettere il micro via USB bisogna generare le tensioni per la programmazione vera e propria; nel caso PIC-ICSP quindi servono tre transistor (per controllare VDD e VPP) e due linee dati (per dati e clock).
La tensione Vpp viene da un regolatore switching formato da Q4, L1, D3 è descritto di seguito.
Molti componenti sono opzionali, servono solo per programmare alcuni tipi dispositivi o per applicazioni future: i connettori di espansione CONN2-3, le resistenze di protezione R11:23 (visto il costo perché non metterle?), le resistenze di pull-up I2C R26-27, il pulsante S1 (per ora non è utilizzato dal software), lo zoccolo per memorie I2C, il connettore ICSP-IN CONN4 (che serve a programmare il micro principale senza estrarlo, almeno fino a che non implementerò un auto-aggiornamento via USB).
Il circuito stampato è stato ottimizzato per usare una sola faccia, ma sono necessari anche alcuni ponticelli sul lato componenti; chi volesse può farne a meno usando un pcb a doppia faccia.
Nel montaggio bisogna fare attenzione all'orientamento dei transistor: Q1 ha l'emettitore a sinistra, Q2 in alto, Q3 e Q4 a destra.
Un circuito funzionante, una volta connesso al PC, fa lampeggiare il led D2 a 4Hz fino a quando non termina l'enumerazione, e successivamente a 1Hz.
Per verificare che tutto funzioni bene bisogna quindi eseguire la funzione "test hardware" nei programmi di controllo: in questa modalità , da eseguire senza dispositivi da programmare, vengono attivate in varie combinazioni le uscite dati CK, D, PGM, e le linee VCCU e VPPU; se la tensione misurata (ad esempio sui piedini 14-15-12-1-4 di U3) corrisponde a quanto dice il programma vuol dire che il circuito è funzionante.
La tensione VPP può non corrispondere esattamente a quella impostata, e avere errori anche di +-1V; questo è dovuto al fatto che il riferimento di tensione del convertitore DCDC è la VCC stessa, che viene fornita dal cavo USB e può variare da 4.75V a 5.25V; inoltre il partitore R1-R2 può introdurre un ulteriore errore del 5%.
Tra le cause più frequenti di malfunzionamento (vero o presunto) ci sono:
orientamento scorretto dei transistor,
difetti nel pcb come corti tra piste o piste aperte,
condensatori staccati,
microcontrollore principale non programmato."
Elenco componenti:
-U1 quarzo 12Mhz (anche 4, 8, 16, 20; bisogna riconfigurare il divisore nel micro)
-Q1-2 BC557 (o qualsiasi PNP, attenzione al montaggio)
-Q3-4 BC547 (o qualsiasi NPN, attenzione al montaggio)
-D1-2 LED a piacere
-D3 1N4148 (o qualsiasi diodo, meglio se Shottky)
-L1 100uH tipo resistenza o altro
-R1 22K
-R2 12K
-R3 100K
-R4:6 10K
-R7 1M
-R8-9 2.2K
-R10 10K
-R11:23 100
-R24-25 300K
-R26-27 10K
-C1 22-100uF 25V
-C2-3 22pF
-C4 >= 220nF
-C5 100nF
-C6 10uF
-C7-8 100nF
-CONN1 USB tipo B
-CONN2-3 connettori a pettine femmina 10 poli
-CONN4 connettore a pettine maschio 5 poli
Firmware USB e HID (v0.7.0)
Per usare l'interfaccia USB sui PIC è necessario un firmware che implementi una delle classi definite dal consorzio USB o una nuova; io ho scelto la classe HID perché è supportata in modo nativo da tutti i sistemi operativi e quindi non necessita di alcun driver. La velocità è più che sufficiente: in teoria si raggiungerebbero i 64KB/s, ma io ho misurato qualcosa come 20-40 KB/s, comunque sicuramente abbastanza per programmare dispositivi di 1-100KB di memoria.
Come ogni periferica USB anche questa ha un identificativo vid e pid, da ottenere ovviamente a pagamento; siccome io non ho un soldo da sprecare né ho da vendere il progetto, ho usato il vid della Microchip e un pid a caso: 0x4D8&0x100; sono entrambi configurabili a piacere (previa compilazione), quindi lascio all'utente la scelta.
Il programmatore appare al sistema come una periferica HID che comunica tramite pacchetti di 64 byte scambiati con cadenza di 1ms.
L'implementazione del firmware USB viene da un progetto open source poco noto, scritto da Alexander Enzmann, che io ho modificato e adattato al compilatore C18.
Ho anche scritto una breve guida su come usarlo; per quanto ne so io questo è l'unico firmware open source con supporto HID.
Il programmatore in se è semplicemente un interprete di comandi che pilota direttamente le uscite del micro seguendo un apposito insieme di istruzioni.
Il ciclo di controllo principale aspetta che venga ricevuto un pacchetto via USB, poi comincia a eseguire i comandi specificati occupandosi tra l'uno e l'altro della comunicazione col pc; allo stesso tempo gira la funzione di controllo del regolatore di tensione DCDC, chiamata a intervalli regolari tramite un timer (e un interrupt).
Compilare il tutto richiede solo strumenti gratuti: MPLAB e MCC18 versione studenti, disponibili sfortunatamente solo per il sistema (in)operativo a finestre.
Compilare con SDCC è sicuramente possibile ma richiede qualche modifica al sorgente.
Per i 10Fxxx a 6 o 8 piedini aggiungerò in futuro un adattatore; nel frattempo ci si può arrangiare con collegamenti volanti.
Tramite i due connettori di espansione si possono poi collegare gli adattatori per altri dispositivi:
* PIC a 28-40 piedini + connettore ICSP
* PIC 8-20p. (come sulla scheda base, ma c'è più spazio per uno zoccolo ZIF) + conn. ICSP
* PIC16-18 a 3.3V + conn. ICSP (questo adattatore ha anche un regolatore a 3.3V)
* PIC24-30-33 + conn. ICSP (questo adattatore ha anche un regolatore a 3.3V)
* Memorie I2C, SPI, MicroWire e conn. I2C-SPI
* ATMEL 8-14-20-28-40p. e conn. I2C-SPI
* ST72 (in futuro)
Ovviamente se ne possono creare di altri o non costruirne e usarne nessuno.
Sui circuiti adattatori consiglio di inserire i pettini di espansione dal lato componenti e di lasciare il distanziatore plastico da quel lato; questo aumenta molto la resistenza meccanica, soprattutto in fase di estrazione.
Nel caso di dispositivi a 3,3V il software verifica la presenza di un adattatore a 3,3V (che ha RB1 in corto con RB0) per evitare danni irreversibili.
I 16F1xxx potrebbero anche essere programmati senza l'adattatore a 3,3V (solo i 16LF1xxx lo richiedono), ma il controllo è presente per entrambi per non fare confusione.
Vista l'impossibilità di cancellare alcuni registri dei dsPIC30 a 3.3V, questi sono ora alimentati a 5V; chi avesse già costruito l'adattatore (prima della v. 1.7) può facilmentemodificarlo.
Le immagini seguenti mostrano come inserire i dispositivi sulle schede di espansione:
Alberto Maccioni, nostro connazionale, ha progettato un programmatore USB per PIC, EEPROM I2C-SPI-MicroWire, micro ATMEL e dispositivi I2C e SPI.
La cosa più interessante (e meritoria) del progetto è che sia schemi di montaggio che programma di gestione (sia per Windows che per Linux) sono open source.
Chiunque può prendere in mano gli schemi e costruirsi un programmatore USB con costi di montaggio bassissimi, sia per componenti che per i materiali necessari.
Ringrazio Alberto M. per avermi permesso di postare questa sua guida su MS.
Sito ufficiale: http://openprog.altervista.org/
Caratteristiche:
* Completamente gratuito e Open Source (anche il firmware)
* E' in grado di programmare PIC10-12-16-18-24, dsPIC30-33, memorie I2C tipo 24XXXX, MicroWire tipo 93XX6, SPI tipo 25XXX, alcuni micro ATMEL; comunica con dispositivi I2C e SPI
* Interfaccia USB 2.0 Full Speed, classe HID (come tastiere, mouse ecc.)
* Autoalimentato via USB
* Non ha bisogno di driver
* Componenti di facile reperibilità (costo stimato ~10€)
* Temporizzazioni gestite in hardware quindi veloce e affidabile (scrive un 18F2550 in 15s su Windows, 8s con Linux)
* Non impegna la CPU e non risente di altri programmi in esecuzione
* Programmi di controllo open source per Linux e Windows sviluppati ad-hoc.
Schema elettrico (v1.6)
Per implementare una periferica USB con i PIC ci vogliono veramente pochi componenti: il micro principale, il quarzo, qualche condensatore, qualche resistenza e il connettore USB tipo B, tutto come da Application Note della Microchip.
Il progetto è basato sul PIC18F2550, a 28 piedini, ma per ora viene occupato solo circa un terzo della memoria programma e 0% della eeprom, quindi è possibile usare anche il più piccolo 2455.
I 2458 e 2553 differiscono solo per l'ADC a 12 bit, quindi dovrebbero andare benissimo.
Con alcune modifiche ho adattato il tutto anche al 2450; questo modello non ha il modulo MSSP, quindi le funzionalità I2C e SPI vengono emulate via software; non ha neanche il secondo canale PWM, quindi non può generare il clock per i micro Atmel che lo richiedono (cioè quelli configurati per il clock esterno); in questo caso il piedino RB3 ha la funzione di accendere un eventuale oscillatore esterno, da inserire opportunamente nella scheda di espansione Atmel.
Per poter usare i dispositivi a 40p corrispondenti (4450,4455,4458,4550,4553) bisogna modificare lo stampato.
Oltre a connettere il micro via USB bisogna generare le tensioni per la programmazione vera e propria; nel caso PIC-ICSP quindi servono tre transistor (per controllare VDD e VPP) e due linee dati (per dati e clock).
La tensione Vpp viene da un regolatore switching formato da Q4, L1, D3 è descritto di seguito.
Visualizza lo schema elettrico - Scarica in formato PDF
Circuito stampato del modulo base:
http://images.nonsologaming.com/Oprog_basePCB--.png
Molti componenti sono opzionali, servono solo per programmare alcuni tipi dispositivi o per applicazioni future: i connettori di espansione CONN2-3, le resistenze di protezione R11:23 (visto il costo perché non metterle?), le resistenze di pull-up I2C R26-27, il pulsante S1 (per ora non è utilizzato dal software), lo zoccolo per memorie I2C, il connettore ICSP-IN CONN4 (che serve a programmare il micro principale senza estrarlo, almeno fino a che non implementerò un auto-aggiornamento via USB).
Il circuito stampato è stato ottimizzato per usare una sola faccia, ma sono necessari anche alcuni ponticelli sul lato componenti; chi volesse può farne a meno usando un pcb a doppia faccia.
Nel montaggio bisogna fare attenzione all'orientamento dei transistor: Q1 ha l'emettitore a sinistra, Q2 in alto, Q3 e Q4 a destra.
Un circuito funzionante, una volta connesso al PC, fa lampeggiare il led D2 a 4Hz fino a quando non termina l'enumerazione, e successivamente a 1Hz.
Per verificare che tutto funzioni bene bisogna quindi eseguire la funzione "test hardware" nei programmi di controllo: in questa modalità , da eseguire senza dispositivi da programmare, vengono attivate in varie combinazioni le uscite dati CK, D, PGM, e le linee VCCU e VPPU; se la tensione misurata (ad esempio sui piedini 14-15-12-1-4 di U3) corrisponde a quanto dice il programma vuol dire che il circuito è funzionante.
La tensione VPP può non corrispondere esattamente a quella impostata, e avere errori anche di +-1V; questo è dovuto al fatto che il riferimento di tensione del convertitore DCDC è la VCC stessa, che viene fornita dal cavo USB e può variare da 4.75V a 5.25V; inoltre il partitore R1-R2 può introdurre un ulteriore errore del 5%.
Tra le cause più frequenti di malfunzionamento (vero o presunto) ci sono:
orientamento scorretto dei transistor,
difetti nel pcb come corti tra piste o piste aperte,
condensatori staccati,
microcontrollore principale non programmato."
Elenco componenti:
-U1 quarzo 12Mhz (anche 4, 8, 16, 20; bisogna riconfigurare il divisore nel micro)
-U2 18F2550 (anche 2450,2455,2458,2553,4450,4455,4458,4550,4553)
-U3 zoccolo 20p.
-U4 zoccolo 8p.
-Q1-2 BC557 (o qualsiasi PNP, attenzione al montaggio)
-Q3-4 BC547 (o qualsiasi NPN, attenzione al montaggio)
-D1-2 LED a piacere
-D3 1N4148 (o qualsiasi diodo, meglio se Shottky)
-L1 100uH tipo resistenza o altro
-R1 22K
-R2 12K
-R3 100K
-R4:6 10K
-R7 1M
-R8-9 2.2K
-R10 10K
-R11:23 100
-R24-25 300K
-R26-27 10K
-C1 22-100uF 25V
-C2-3 22pF
-C4 >= 220nF
-C5 100nF
-C6 10uF
-C7-8 100nF
-CONN1 USB tipo B
-CONN2-3 connettori a pettine femmina 10 poli
-CONN4 connettore a pettine maschio 5 poli
Firmware USB e HID (v0.7.0)
Per usare l'interfaccia USB sui PIC è necessario un firmware che implementi una delle classi definite dal consorzio USB o una nuova; io ho scelto la classe HID perché è supportata in modo nativo da tutti i sistemi operativi e quindi non necessita di alcun driver. La velocità è più che sufficiente: in teoria si raggiungerebbero i 64KB/s, ma io ho misurato qualcosa come 20-40 KB/s, comunque sicuramente abbastanza per programmare dispositivi di 1-100KB di memoria.
Come ogni periferica USB anche questa ha un identificativo vid e pid, da ottenere ovviamente a pagamento; siccome io non ho un soldo da sprecare né ho da vendere il progetto, ho usato il vid della Microchip e un pid a caso: 0x4D8&0x100; sono entrambi configurabili a piacere (previa compilazione), quindi lascio all'utente la scelta.
Il programmatore appare al sistema come una periferica HID che comunica tramite pacchetti di 64 byte scambiati con cadenza di 1ms.
L'implementazione del firmware USB viene da un progetto open source poco noto, scritto da Alexander Enzmann, che io ho modificato e adattato al compilatore C18.
Ho anche scritto una breve guida su come usarlo; per quanto ne so io questo è l'unico firmware open source con supporto HID.
Il programmatore in se è semplicemente un interprete di comandi che pilota direttamente le uscite del micro seguendo un apposito insieme di istruzioni.
Il ciclo di controllo principale aspetta che venga ricevuto un pacchetto via USB, poi comincia a eseguire i comandi specificati occupandosi tra l'uno e l'altro della comunicazione col pc; allo stesso tempo gira la funzione di controllo del regolatore di tensione DCDC, chiamata a intervalli regolari tramite un timer (e un interrupt).
Compilare il tutto richiede solo strumenti gratuti: MPLAB e MCC18 versione studenti, disponibili sfortunatamente solo per il sistema (in)operativo a finestre.
Compilare con SDCC è sicuramente possibile ma richiede qualche modifica al sorgente.
Rilascio il tutto con licenza GPL2.
Qui si trova il progetto MPLAB completo in formato compresso; qui il firmware compilato in formato hex.
Qui il firmware compilato per 18F2450 (con funzionalità ridotta, vedi schema elettrico).
Come si usa
La scheda base può ospitare i PIC a 8,14,16,18,20 piedini (eccetto i 10Fxxx) che vanno inseriti in U3 allineati al piedino 1:
http://images.nonsologaming.com/DIP8-20b.png
http://images.nonsologaming.com/Oprog.comp_base.png
In U4 vengono ospitate le memorie EEPROM I2C.
Per i 10Fxxx a 6 o 8 piedini aggiungerò in futuro un adattatore; nel frattempo ci si può arrangiare con collegamenti volanti.
Tramite i due connettori di espansione si possono poi collegare gli adattatori per altri dispositivi:
* PIC a 28-40 piedini + connettore ICSP
* PIC 8-20p. (come sulla scheda base, ma c'è più spazio per uno zoccolo ZIF) + conn. ICSP
* PIC16-18 a 3.3V + conn. ICSP (questo adattatore ha anche un regolatore a 3.3V)
* PIC24-30-33 + conn. ICSP (questo adattatore ha anche un regolatore a 3.3V)
* Memorie I2C, SPI, MicroWire e conn. I2C-SPI
* ATMEL 8-14-20-28-40p. e conn. I2C-SPI
* ST72 (in futuro)
Ovviamente se ne possono creare di altri o non costruirne e usarne nessuno.
Sui circuiti adattatori consiglio di inserire i pettini di espansione dal lato componenti e di lasciare il distanziatore plastico da quel lato; questo aumenta molto la resistenza meccanica, soprattutto in fase di estrazione.
Nel caso di dispositivi a 3,3V il software verifica la presenza di un adattatore a 3,3V (che ha RB1 in corto con RB0) per evitare danni irreversibili.
I 16F1xxx potrebbero anche essere programmati senza l'adattatore a 3,3V (solo i 16LF1xxx lo richiedono), ma il controllo è presente per entrambi per non fare confusione.
Vista l'impossibilità di cancellare alcuni registri dei dsPIC30 a 3.3V, questi sono ora alimentati a 5V; chi avesse già costruito l'adattatore (prima della v. 1.7) può facilmentemodificarlo.
Le immagini seguenti mostrano come inserire i dispositivi sulle schede di espansione:
I dispositivi più piccoli devono essere allineati al piedino 1 del rispettivo zoccolo.
E' anche possibile eseguire la programmazione "in circuit" collegando i segnali ICSP (VPPU,VDDU,ICD,ICK,GND) alla scheda applicativa; questi segnali sono presenti nei connettori di espansione del modulo base o più comodamente in alcune schede di espansione tramite apposito connettore.
I dispositivi a 3,3V richiedono una interfaccia ICSP anch'essa a bassa tensione, presente sulle schede di espansione a 3,3V.
Piedinatura dei connettori della scheda base e delle espansioni:
Espansione1(vicino al micro): RB7-RB0,RC7,RC6
Espansione2(vicino al bordo): RA3-RA5,RA2,RA1,RE3,VDD,GND,VPPU,VDDU
ICSP: VPPU,VDDU,ICD,ICK,GND
ICSP-IN: VPPU,VDDU,ICD,ICK,GND (da non confondere con ICSP; serve per programmare il micro principale senza toglierlo)
I2C/SPI: CK,DI,DO,GND (I2C non usa DO)
Come programmare il micro la prima volta?
E' un problema molto interessante, visto che un dispositivo nuovo è vuoto e non funziona come programmatore: a parte il classico "fattelo programmare da qualcuno che ce l'ha già " il mio consiglio è di usare una di quelle interfacce tanto in voga oggi, ad esempio JDM, magari costruita su millefori, assieme a winpic o picprog.
Potrebbe sembrare strano dover costruire un programmatore per farne un altro, ma non c'è modo di comunicare via USB senza firmware; credo però che ne valga la pena, visto che i programmatori seriali non sono molto affidabili, sono lenti, e soprattutto non si possono usare sui nuovi computer.
Inoltre, almeno fino a che non riuscirò a implementare un auto-aggiornamento, consiglio di tenere un micro di scorta per caricare le versioni aggiornate del firmware.
http://images.nonsologaming.com/base_4exp.JPG
Interfaccia grafica (solo Windows, v0.7.4)
OpenProg è scritto in VisualC++ 6.0 usando MFC. L'utilizzo è piuttosto semplice, basta collegare il programmatore e avviare il programma; poi selezionare il micro, eventualmente caricare un hex e infine leggere o scrivere; funziona con XP, sVista, 7.
Sulla scheda "Dispositivo" si possono modificare alcune opzioni di programmazione, per esempio la scrittura delle locazioni ID, calibrazione, l'uso della eeprom ecc.; solo le impostazioni compatibili col dispositivo selezionato verranno prese in considerazione.
La scheda I2C/SPI permette di comunicare con dispositivi generici I2C e SPI; se si utilizza il protocollo I2C bisogna sempre specificare il byte di controllo (e l'indirizzo se diverso da 0); il bit RW viene gestito automaticamente.
Ad esempio per scrivere manualmente 3 byte su una 24xx16 all'indirizzo 64 si scrive: A0 40 1 2 3
Visto che non sono necessarie librerie extra non ho incluso alcun installatore, è sufficiente scaricare l'eseguibile e avviarlo.
Il programma scrive e legge file hex8 e hex32, e per le memorie seriali anche file binari.
Le lingue supportate sono Italiano e Inglese; per introdurre altre lingue bisogna generare il file languages.rc (il comando è tra le opzioni) e modificarlo a piacimento; il nome della lingua è prima delle rispettive stringhe, tra parentesi quadre [].
Con la funzione "Test Hardware" e un multimetro è possibile verificare che il circuito stia effettivamente funzionando.
Nel caso di problemi o per pura curiosità si possono salvare tutti i dati scambiati col programmatore, selezionando "registra eventi su file" tra le opzioni.
Le opzioni da linea di comando sono:
-d <dispositivo> , seleziona un dispositivo
-r <nome file> , legge dal dispositivo e scrive sul file
-w <nome file> , legge il file e scrive sul dispositivo
-gui , apre la GUI dopo la scrittura o la lettura (solo se specificati -w o -r)
http://images.nonsologaming.com/OpenProg.png
Eseguibile OpenProg (per Windows):
http://images.nonsologaming.com/D.png
Codice sorgente OpenProg (progetto Visual Studio 6)
http://images.nonsologaming.com/D.png
Linea di comando (Linux e Windows, v0.7.4)
OP è un eseguibile da linea di comando; la versione Windows non ha bisogno di installazione;
la versione Linux si interfaccia col dispositivo /dev/usb/hiddev0 (o quello che si specifica) e ha bisogno dei diritti di lettura su hiddevX.
es. >sudo chmod a+r /dev/usb/hiddev0
Per abilitare permanentemente un utente alla lettura si può procedere come segue (su Ubuntu e altre distribuzioni basate su Debian, verificare per le altre):
da root creare un file /etc/udev/rules.d/99-hiddev.rules
nel caso si voglia abilitare un gruppo di utenti scrivervi:
KERNEL=="hiddev[0-9]", SUBSYSTEM=="usb", SYSFS{idProduct}=="0100", SYSFS{idVendor}=="04d8", GROUP="<gruppo>"
in cui <gruppo> è uno dei gruppi a cui appartiene l'utente (per un elenco digitare "groups"); utilizzare un gruppo adeguato e se necessario aggiungere l'utente al gruppo scelto ("addgroup <utente> <gruppo>").
oppure, nel caso si vogliano abilitare tutti gli utenti, cambiare solo i permessi di lettura:
KERNEL=="hiddev[0-9]", SUBSYSTEM=="usb", SYSFS{idProduct}=="0100", SYSFS{idVendor}=="04d8", MODE="0664"
riavviare udev per applicare le modifiche:
> /etc/init.d/udev reload
Se collegando il programmatore non appare la periferica /dev/usb/hiddevX (e il LED non lampeggia a 1 Hz) è sufficiente eseguire alcune volte lsusb per forzare l'enumerazione da parte del sistema, eventualmente staccando e riattaccando il cavo.
Il programma si aspetta una periferica USB con vid&pid=0x4d8:0x100, se non specificato altrimenti.
Scrive e legge file hex8 e hex32 e per le memorie anche binari.
Con l'opzione --HWtest e un multimetro è possibile verificare che il circuito stia effettivamente funzionando.
E' possibile comunicare via I2C e SPI con dispositivi generici diversi dalle memorie; nel caso I2C bisogna specificare byte di controllo e indirizzo (o indirizzi) anche per una lettura; il bit RW viene gestito automaticamente.
Nel caso di problemi o per pura curiosità si possono salvare tutti i dati scambiati col programmatore, tramite l'opzione -l; per qualche strano motivo per specificarne il parametro opzionale bisogna usare -l=<file>. Sarà un baco di getopt?
Il supporto multilingue per ora è fermo a Italiano e Inglese.
http://images.nonsologaming.com/D.png
-Tutte le opzioni per la riga di comando sono disponibili sul sito ufficiale del progetto
-Vedi tutti gli integrati supportati dal programmatore: http://openprog.altervista.org/OP_ita.html#Supporto
Guida tratta dal sito http://openprog.altervista.org/ di Alberto Maccioni.