Io lavoro quasi quotidianamente con i PIC e ho anch'io notato che la qualità dei sistemi di sviluppo è proporzionale al loro costo......negli ultimi anni sono diventati infatti molto più economici di una volta e il risultato si vede.
-Le librerie dei vari compilatori non sempre fanno quello che dovrebbero fare (capita che si dimentichino di settare qualche registro e il tutto non va)
-L'ambiente di sviluppo, come dice Dario, ti costringe a fare determinate manovre per confermare le modifiche alle variabili che stai utilizzando, così se ti trovi a dovere modificare gli elementi di un array devi spostare le mani dal mouse alla tastiera e viceversa per ogni byte da modificare
-Capita poi (purtroppo) che il software sul PC si impalli e non comunichi più con l'emulatore. Talvolta te la cavi scollegando e ricollegando l'emulatore dall'USB, ma altre volte devi cominciare col chiudere il programma, proseguendo poi con lo spegnere il PC, l'emulatore, il circuito su cui stai lavorando, il quadro elettrico generale, la cabina di distribuzione e la centrale elettrica più vicina. Talvolta ti viene pure la voglia di abbattere anche i tralicci dell'alta tensione, non per teppismo o terrorismo, ma per cercare di risolvere il problema.
Alla fine decidi di cambiare lavoro e vai a coltivare ortaggi, che almeno non hanno bisogno di emulatori, di driver o altri tipi di software da installare (al massimo usi il letame, il cui odore ti ricorda la m...a di sistemi di sviluppo che hai usato fino a poco prima e questo t'impedisce di staccarti completamente dal passato).
All'epoca anch'io mi feci in casa qualche "sistema di sviluppo". Quando lavorai su schede basate su Z80 o uPD78C10 (un'evoluzione dello Z80) iniziai col crearmi una memoria che in realtà era un misto fra una EPROM, una NVRAM e una EEPROM, nel senso che era una RAM batterizzata (anzi "supercondensatorata", visto che aveva un super-capacitor) con la piedinatura di una EEPROM di pari capacità, che alla fine si comportava come una EEPROM parallela
.
Mi ero fatto una sorta di programmatore da collegare alla porta parallela del PC (da qui si capisce che il tutto non è poi così recente).
Tramite 2 contatori CD4040 controllati da 2 pin della parallela (uno come clock e l'altro come reset), venivano scansionati gli indirizzi, mentre nei pin D0-D7 della porta venivano spediti fuori i dati da programmare.
Al termine della programmazione un interruttore sul pin WE inibiva la scrittura, "EPROMizzando" la RAM e rendendola pronta ad essere montata sulla scheda di prova.
Il discorso funzionava, ma ovviamente non aveva il debug, che realizzavi passo dopo passo quando aggiungevi le routine dei display, della tastiera, della porta seriale, ecc.
Tramite le perifieriche riuscivi a capire cosa stava facendo il microprocessore, visualizzando le variabili ed inserendo dati dalla tastiera.
Il software del programmatore era realizzato in Quick-Basic, che, rispetto ai sistemi di sviluppo moderni, aveva il vantaggio di potere controllare le periferiche con instruzioni di I/O vere e proprie, senza affidarti a driver software che funzionano nel 90-95% dei casi, ma che se fai parte del restante 5-10% resti a bocca asciutta, perchè ai comuni mortali è impossibile risolvere il problema.
L'evoluzione fu poi il sistema di avanzamento passo-passo, che permetteva d'eseguire o d'inserire un'istruziione per volta vedendo poi il risultato.
Il grosso passo avanti fu quando dall'azienda in cui lavoravo presi in prestito uno dei 2 emulatori di EEPROM che avevamo, emulatore che, collegato al PC, permetteva di avere una EPROM modificabile dal computer senza spostare RAM o altri accrocchi come facevo prima.
Ovviamente il debug passo-passo non c'era (oppure c'era come lo avevo fatto io in precedenza), ma si riusciva a scaricare velocemente il software da PC a scheda e in più si poteva pure emulare la RAM presente sulla scheda stessa, cosa che risultava abbastanza comoda per vedere i dati.
Col tempo mi concentrai sempre di più sui PIC, visto che li usavo anche al lavoro, e abbandonai i vari Z80, uPD78C10, gli 80C51 (che usavo anch'essi al lavoro, ma che erano lenti e avevano un assembler con dei grossi limiti, pur essendo molto usati perchè fra i primi nati).
Per un breve periodo sviluppai qualche progetto con gli ST6 di STM, del quale avevo un starter-kit, ma che mi piacevano poco perchè avevano dei limiti sia hardware che di assembler.
Poi aprii l'azienda e comprai degli emulatori di PIC realizzati in Italia (da un'azienda di Pordenone), che erano decisamente migliori (come semplicità d'uso e come ambiente di sviluppo) e anche più economici di quelli prodotti dalla stessa Microchip.
Col tempo questi emulatori divennero obsoleti e se ti capitava di bruciare un pin non potevi più ripararli (a me capitò), così mi buttai sull'ICE2000 di Microchip, che costava un botto ma era decisamente buono, facile da usare, con pochi problemi di connessione col PC e che emulava il chip in modo perfetto, sostituendosi a quello montato sulla scheda.
Con gli anni anch'esso divenne obsoleto, perchè Microchip decise di percorrere la strada che percorre ancora adesso, ovvero d'integrare dentro i chip alcuni registri per il debug e di scaricare dentro la memoria, insieme al programma da emulare, anche uno di debug che, tramite 2 pin, s'interfaccia all'emulatore e al PC.
Il fatto che i PIC siano ora dotati tutti di memoria Flash li rendono riprogrammabili "al volo" e così ogni volta che si clicca su "RUN" in modalità debug il software scritto sul PC viene scaricato dentro al PIC ed eseguito.
Il discorso è a costo basso, ma ha anche dei grossi limiti: oltre ai già citati "impallamenti" del debugger c'è un limitato numero di break-point disponibili (1 o 3 nei chip che uso di solito io), quindi durante l'emulaizone stai sempre a spostare il break-point da lì a là.
Conclusione: una volta era più difficile sviluppare le cose perchè c'era molta meno "pappa-pronta", ma si aveva molto più controllo su ciò che si faceva e anche gli strumenti a disposizione erano generalmente più affidabili (anche se più costosi).
Un'ultima nota:
Dario, ho guardato quello che hai fatto e mi è piaciuto molto. Non ho analizzato il listato, ma l'emulatore di C64 mi ha fatto tornare ai vecchi tempi (eh, sì, sono un nostalgico).
Edited by Robo67 - 14/11/2019, 17:27