Articolo pubblicato sul n. 42 di MCmicrocomputer (Edizioni Technimedia Srl - Roma) nel giugno 1985
Commocoffee 64:
E' un po' di tempo che il 64 del sottoscritto, quando si fa una certa ora, comincia a fare domande: "Che ore sono ?" ... e di seguito: "Sveglia alle ?" ... concludendo con un educatissimo: "Buonanotte...". Mah! và a capirli questi computer moderni ! Fatto sta però che preciso come una vacca svizzera, di prima mattina, un odore di caffè si spande per tutta la camera da letto, contemporaneamente al dolce beep beep del casio da polso, in diretta dal comodino. E' bello: dà tutto un senso allo svegliarsi, anche alle sei di mattina, per trovare la forza di correre fuori per il salubre footing mattutino. Tutte le mattine alle sei, grazie al Commocoffee... (Il caffè è un piacere, se non è computerizzato, che piacere è?) Di una semplicità mostruosa Se non si fosse capito, l'argomento di questo articolo è l'interfacciamento di apparecchiature, funzionanti a 220 volt, al Commodore 64 (e per conoscenza a tutti i VIC-20). Accensione e spegnimento da programma: non viene in mente anche a voi di farvi fare il caffè la mattina, anche a costo di lasciare il computer acceso tutta la notte, a contare il tempo? Il tutto, per (davvero) pochi soldi, una decina di minuti di lavoro e sole sei saldature. Basta un piccolo relè da 6 volt, opportunamente collegato alla porta registratore, come tramite fra i delicatissimi circuiti del 64 e la potenza della dueevventi. Possiamo collegare tutto ciò che vogliamo, non solo caffettiere elettriche. Le applicazioni si contano a decine, dall'ingranditore della camera oscura, al termosifone elettrico, dalle lampade colorate per una festa, al forno della moglie (o della mamma) che non potrà accenderlo in tempo dovendo uscire per la spesa. O roba simile. Attaccato alla porta registratore essendo lì presente abbastanza corrente per pilotare qualcosa di più potente di un led, senza supporto di transistor di potenza. Allo stesso contatto che pilota il motore del registratore. Programmeremo l'accensione e lo spegnimento, semplicemente Poke-ando opportuni valori in due celle di memoria. Ma procediamo con ordine Le porte del 64 Il Commodore 64 è praticamente circondato di di porte per interfacciare la macchina col mondo esterno. Cominciando dal lato destro, troviamo ben 2 games port, per pilotare due joystick, 4 paddle e una penna ottica. Sul retro, la porta espansioni, può essere adoperata, oltre che per inserire cartridge, anche per interfacciare tastierini numerici o tastiere musicali. Di seguito troviamo il connettore per l'audio/video e il bus seriale per le periferiche pilotate con lo strano protocollo fritto misto RS-232/IEEE-488. Ancora, la porta per il registratore e la user port, appositamente pensata per le applicazioni hardware dell'utente. A scopo puramente didattico, vediamo come si "usa" la user port del 64. Precisamente, la porta B del CIA n.2 riportata sui contatti C-L. La distinta dei contatti è riportata in figura 1. CIA sta per Complex Interface Adapter ed è un integrato appositamente progettato per gestire l'input/output. Nel 64 ce ne sono 2, il CIA n.1 serve per la scansione della tastiera e, implicitamente, dei joystick, il CIA n.2, per l'interfacciamento RS-232 e per usare la user port. Ogni CIA dispone di due registri di 8 bit l'uno. Ogni bit può essere di input o di output. Una porta output può mandare tensione a 5 volt, su un contatto esterno, a seconda che sia posto a 1 o meno il corrispondente bit nel registro corrispondente. Una porta Input può rivelare tensione presente o meno, su un contatto esterno, settando o resettando il corrispondente bit nel registro corrispondente. Se disponete di un tester, potete divertirvi a fare qualche esperimento. Se volete usare il registro B del cia n.2 riportato sulla user port come output, ponete in 56579 il valore 255 (tutti 1 in binario). Pokeando un numero in 56577, otterrete tensione di 5 volt su tutti i contatti corrispondenti a 1 binari del valore inserito. Se usate il medesimo registro come input, pokeate in 56579 il valore 0. A questo punto, ad ogni contatto mantenuto a massa, corrisponderà un bit a 0 nel registro 56577; ad ogni contatto non toccato o mantenuto a livello di 5 volt, un bit a 1, sempre in 56577. Mantenere a massa un contatto vuol dire collegarlo con un piccolo ponticello metallico al contatto GND, sempre della user port (contatti 1,12,A,N). I limiti relativi all'uso dell'user port per interfacciare relè sono dovuti alla scarsa corrente disponibile presso i contatti, per di più non bufferizzati, ossia direttamente collegati al cuore del CIA n.2. Per collegare un relè alla user port è necessario usare un transistor di potenza, secondo lo schema di figura 2. Tale progettino è solo teorico, e indica sommariamente come stanno i fatti. La base del transistor si collega, tramite una resistenza, a uno degli otto contatti della user port. L'emettitore a massa, contatti GND. Il collettore al relè il cui altro capo è collegato ai 5 volt presenti stabilmente al contatto 2 della porta utente. La nostra soluzione Troppo complicato con i transistor, è meglio farne a meno. Collegandoci alla porta del registratore avremo meno problemi. Se c'è corrente per far girare un motorino figuriamoci se non possiamo pilotare un relè. A proposito, tutti sanno cos'è un relè ? Un relè non è altro che una elettrocalamita, generalmente funzionante con pochi volt (nel caso nostro 6), che, eccitata, muove un piccolo interruttore permettendo così di servo-controllare passaggio o meno di corrente. Su ogni relè sono presenti almeno 4 contatti, 2 per far scattare l'elettrocalamita, e 2 collegati all'interruttore interno. Congiungeremo i contatti dell'elettrocalamita ai contatti 1 e 3 della porta registratore; collegheremo i contatti dell'interruttore del relè, uno a un capo della 220 e l'altro alla presa di corrente servo-controllata. Dando uno sguardo alla figura 3 potrete rendervi conto meglio. L'ultimo problema da risolvere è il pilotaggio di tutto il marchingegno da programma. In altre parole come far partire e/o fermare il motore del registratore. Nel Commodore 64 si usa la porta I/O del 6510, il microprocessore, locata nei byte 0 e 1. Precisamente, il byte 0 si usa per stabilire quali bit sono di input e quali di output; il byte 1 è il registro vero e proprio. Prima di comandare da programma l'avviamento o l'arresto del motore del registratore, è necessario (per motivi non troppo chiari) eseguire le tre poke: POKE 0,55:POKE 1,7:POKE 1,55 la prima POKE riguarda il registro di direzione dati del microprocessore. Pone tutti i bit a output, eccezion fatta per il bit 3. La seconda e la terza POKE attivano per un attimo il motore del registratore. Da questo momento, ogni: POKE 1,7 avvierà il motore POKE 1,55 arresterà il motore. nel caso nostro, farà scattare o meno il relè, o se preferite fa partire o meno la caffettiera, la stufa, il forno, il tv, l'hifi e tutto ciò che si vuole. Basta scegliere un relè opportuno: ne esistono di vari tagli, a seconda della potenza (si parla della 220) che dovrà sopportare, 100 watt, 500 watt, 1000, 2000. Col VIC-20, la cosa si fa un pochino più complicata: prima di usare il contatto del motorino si deve eseguire un: POKE 37139,192 e un POKE 37148,PEEK(37148) AND 241 per attivare o disattivare (rispettivamente) il motore, si eseguono: POKE 37148,PEEK(37148) OR 255 e POKE 37148,PEEK(37148) AND 241 Alcune volte però il VIC fa finta di non sentire: specie dopo operazioni di I/O col disco. In casi come questi, basta eseguire la sequenza RUN/STOP e RESTORE, per resettare un po' di roba, prima di comandare l'avviamento o l'arresto del motorino del registratore. Impaginato originale... Articolo pubblicato su www.digiTANTO.it - per ulteriori informazioni clicca qui |