Apro questo post con motivazioni completamente diverse dal precedente, per capire cosa e come invece si potrebbe fare oggi in pratica con i mezzi attuali (pc spesso senza seriale/parallela, windows xp/vista o linux, web server, adattatori usb/ethernet ecc) mettendosi nei panni di uno studente o appassionato che per curiosita' (come e' accaduto a me circa 15 anni fa), decidesse di costruirsi un modulo con il vecchio Z80 e far dialogare il modulo con un programma di controllo sul PC. Ho scelto questo esempio perche' e' una applicazione "non banale" che tocca secondo me un ampio ventaglio di aspetti (interfacciamento, progettazione, programmazione).
A quel tempo ho fatto cosi':
1) costruito programmatore di EPROM con pochi integrati logici comandato attraverso bus ISA (ma sarebbe stato lo stesso con la parallela) tramite un semplice programma BASIC. 2) Programmata la prima EPROM e' stato montato il circuito Z80 e collegato alla seriale del PC. 3) Usando un secondo programma sempre in BASIC si potevano inviare dei bytes al modulo per fargli eseguire una o l'altra funzione, o addirittura "telecaricarlo" trasmettendogli un altro segmento di codice e dicendogli di eseguirlo.Il codice macchina era ottenuto con un assemblatore a riga di comando.
Ora, per uno studente / hobbista fare tutti questi passaggi era una bella sfida/esperienza, il costo molto basso (i componenti del programmatore e del circuito Z80, e il tubo cancellatore ad ultravioletti). Praticamente tutto era gia' fornito dal sistema (a parte l'assemblatore da poche diecimilalire).
Veniamo ad oggi (e ancor piu' a domani), come PC un bellissimo portatile o uno di quei PC integrati poco piu' grandi di un dizionario, velocissimi, LAN, 8 USB, audio5.1, WiFi.
Al punto 1 gia'mi trovo fermo... il PC non e' un controllore di circuiti, per cui: o compro un programmatore di EPROM professionale gastibile da USB (sperando che non ci siano rogne di driver), o mi studio (se non lo conosco gia') un microcontroller per fargli pilotare a lui i circuiti del programmatore che mi costruiro'. Quindi mi procuro gli strumenti di sviluppo, il programmatore per il micro, ad esempio per PIC, lo posso anche autocostruire, ma se il PC non ha proprio piu' seriali e parallela mi tocca comunque comperare l'apposito programmatore USB della Microchip (sperando che non ci siano rogne di driver).
Bene, imparo ad usare il PIC per fargli controllare il programmatore di EPROM, riesco a programmarla? Ancora no! Adesso dobbiamo far comunicare il PC con il PIC. Se abbiamo la seriale ancora ancora riusciamo, altrimenti bisogna ricorrere da una seriale virtuale che esca su USB o addirittura su LAN (sperando che non ci siano rogne di driver). Quindi il nostro tool di programmazione su PC non puo' essere uno dei vecchi compilatori, ma deve essere molto recente, permettere l'uso di porte COM virtuali e non accedere direttamente alle porte fisiche, diciamo che dobbiamo partire da Delphi in su, quindi dobbiamo studiarci per bene anche l'ambiente di programmazione.
Se tutto va bene dopo immane fatica riesco a ottenere il risultato voluto, cioe' la EPROM con i dati caricati ;) Fatto tutto questo abbiamo pero'in pratica risolto anche il resto, il modulo Z80 dialoghera' col PC attraverso una seriale virtuale, magari virtualizzata attraverso pacchetti UDP su una rete LAN...
Le domande a questo punto sono:
-Quali sono attualmente i tools di sviluppo software piu' in voga per le applicazioni su PC?
-Visto che numerosi dispositivi industriali prevedono ancora il collegamento seriale, e' pensabile che la seriale (anche virtualizzata) rimanga ancora a lungo come periferica del sistema?
-A che punto e' attualmente la possibilita' di dialogo USB/ETH "nativo" sia lato PC (attraverso opportune classi) sia lato circuiti? Nel senso che non si tratti di seriali virtuali ma trasporto diretto da applicazione ad applicazione.
-E'ragionevole pensare che l'evoluzione saranno sempre piu' i moduli intelligenti collegati su LAN? Mi sfugge ancora in pratica come avviene il passaggio di dati per cosi' dire "raw", e anche l'uso dei soket TCP/IP... qualcosa mi dice che dovro' mettermi a studiare... :(
-Quali tool/linguaggi per sviluppare applicazioni di controllo basate sul WEB?
ciao Claudio_F