Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Z80 keyboard interrupt

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

2
voti

[1] Z80 keyboard interrupt

Messaggioda Foto Utenterusty » 9 lug 2011, 16:45

Buonasera ragazzi, questa non è la sezione corretta in quanto lo Z80 non è un microcontrollore ma un microprocessore, ma vabbe'... Il problema che ho è misto hw/sw. Vorrei improntare un semplicissimo sistema basato su z80, con 32k di RAM e 32k di ROM (rispettivamente parte alta e bassa degli indirizzi disponibili), una tastiera (inizialmente esadecimale a 16 tasti, poi magari una di tipo convenzionale qwerty o simili), ed un PIO con due porte di uscita a 8 bit per la visualizzazione su display a 7 segmenti di dati e/o indirizzi in esadecimale.
Il mio problema consiste nel temporizzare l'accesso ai dati provenienti dalla tastiera, che sara' bufferizzata in ingresso al sistema, avrei pensato ad un interrupt, ma mascherabile o non mascherabile? INT o NMI? Ogni quanto mandare l'impulso di interrupt al processore per leggere il buffer che contiene i tasti premuti sulla tastiera? E come e dove scrivere la Interrupt Service Routine per prelevare il dato (dal bus dati condiviso)?
Se qualcuno avesse dei riferimenti, degli esempi hw/sw di come si fa una cosa del genere, manuali, ecc... gliene sarei infinitamente grato, perché vorrei imparare a lavorare con gli interrupt sia INT che NMI per poi in futuro (se riesco a mappare la tastiera penso in RAM) a mappare uno spazio di indirizzi anche per una eventuale uscita video composita utilizzando le librerie Atmel TvText, ma questo solo quando avro' capito come lavorare con questo tipo di periferiche. Qualche consiglio o link anche vecchio sarebbe graditissimo :-P
Un ultima cosa, inizialmente vorrei fare un "sistema operativo" tipo "monitor", molto semplice e senza pretese, ma sto cervando da tempo dei sistemi operativi adatti del tipo CP/M o anche Unix based per lo z80, il fatto è che non ne trovo i file binari da caricare in ROM, o scaricare in RAM, questo è poi da vedere.... ma questo per ora non è urgente, anche perché dovrei sapere come sono mappate le periferiche in questi SO, per predisporre i giusti timing per gli interrupt e costruirci attorno il sistema.

Mi rendo conto che sono tante domande, ma nel quadro complessivo penso che avrete capito cosa vorrei fare, se qualcuno avesse dei link o dei documenti anche parziali (soprattutto sulla parte memory mapping, interrupt, ecc...) mi farebbe un grosso favore a condividerli... http://www.z80.info è mio amico, ma non ho trovato quello che cerco :cry:

Grazie a tutti,
A presto ;-)

Sandro
Avatar utente
Foto Utenterusty
4.075 2 9 11
Utente disattivato per decisione dell'amministrazione proprietaria del sito
 
Messaggi: 1578
Iscritto il: 25 gen 2009, 13:10

1
voti

[2] Re: Z80 keyboard interrupt

Messaggioda Foto UtenteAOX » 9 lug 2011, 17:13

Ma parli del vecchio Z80?
Se è lui lo ho usato per fare la mia prima scheda a micro industrializzata su circuito stampato. Cioè una pizza circa come un A4 con 24 ingressi a 24 V, 16 uscite con ULN, una ram, una eprom e poco altro. Forse era uno dei primi stampati che ho fatto realizzare e sono stato molto abbondante con le piste per paura che si rompessero. Non pensavo che ci fosse un'attività del genere ancora su tale micro. Per la programmazione usavo un macroassembler, simulando un certo linguaggio. Se ti servono dovrei averne parecchi pezzi nuovi di zecca e di stecca, a parte forse un leggero ossido sui pins, visto che sono li da più di 20 anni.
Posso sapere per quale motivo useresti lo Z80? Certo che è un micro leggendario che ha fatto tanto e merita ancora interesse!
Avatar utente
Foto UtenteAOX
3.555 2 6 11
Master EY
Master EY
 
Messaggi: 232
Iscritto il: 20 mar 2011, 12:29

0
voti

[3] Re: Z80 keyboard interrupt

Messaggioda Foto Utenterusty » 9 lug 2011, 17:30

Si AOX, proprio il vecchio z80, vorrei usare il modello a 8 bit (anche se possiedo anche quello a 16 bit con la memoria segmented, una chicca ;-) ). Non so quanta attivita' ci sia ancora attorno a questa pietra miliare, nel mio piccolo lab l'attivita' è comunque frenetica :mrgreen:
Ti ringrazio molto dell'offerta, ma fondamentalmente non ho bisogno di altri "pezzi" hw, ne ho recuperati parecchi negli anni, tra una scheda e l'altra ed un ordine e l'altro, comunque piu' che altro mi servirebbero informazioni sulla loro programmazione, specificatamente l'interfaccia con periferiche esterne e piu' spedificatamente una tastiera (per ora), insomma come usare correttamente gli interrupt e stabilire i tempi di accesso ed il codice corrispondente. Tu come hai fatto per le tue? Ti sei basato su altri progetti o hai fatto tutto di sanapianta?

Grazie comunque per l'offerta, sei stato molto gentile :ok:
Avatar utente
Foto Utenterusty
4.075 2 9 11
Utente disattivato per decisione dell'amministrazione proprietaria del sito
 
Messaggi: 1578
Iscritto il: 25 gen 2009, 13:10

1
voti

[4] Re: Z80 keyboard interrupt

Messaggioda Foto UtenteAOX » 9 lug 2011, 17:40

Quando facevo il militare nel '87 avevo del tempo libero in ufficio e mi sono letto un bel libro della Hoelpi che ancora conservo che lo spiegava bene. Poi quando sono andato impiegato in una ditta che faceva macchine automatiche ho continuato ad interessarmi ed è nata una scheda, dal nome che era tutto un programma (PLC1). Ho fatto tutto da zero attaccando al bus dati le memorie e i latch paralleli per gli IO. Poi avevo fatto una specie di sistema operativo che emulava la lista istruzioni e per la prima volta ho fatto programmare ad un mio collega, che non sapeva di elettronica, un mio hardware. Penso di avere ancora schemi e altro e non ne sono geloso, come per tutte le altre mie cose. E' probabile che ce ne siano ancora diverse in funzione su delle macchine sparse in giro per il mondo, ma non ho problemi visto che dopo 20 anni manco si ricordano più che lo ho fatte io.
Ciao
Avatar utente
Foto UtenteAOX
3.555 2 6 11
Master EY
Master EY
 
Messaggi: 232
Iscritto il: 20 mar 2011, 12:29

0
voti

[5] Re: Z80 keyboard interrupt

Messaggioda Foto Utenterusty » 9 lug 2011, 17:48

Complimenti, allora sei un vero guru del Z80! iOi

Il libro di cui parli della Hoepli si potra' recuperare da qualche parte? Per il resto credo che dovro' inevitabilmente fare diverse prove prima di riuscire a scrivere un codice funzionante, ma mi interessano i passi base, vedro' di migliorarmi con la pratica sul campo (o meglio, sul bus).
La tua scheda aveva anche una interfaccia video presumo, hai usato il bus condiviso o una RS232/UART like?

Grazie per il tuo interessamento ;-)
Avatar utente
Foto Utenterusty
4.075 2 9 11
Utente disattivato per decisione dell'amministrazione proprietaria del sito
 
Messaggi: 1578
Iscritto il: 25 gen 2009, 13:10

1
voti

[6] Re: Z80 keyboard interrupt

Messaggioda Foto UtenteAOX » 10 lug 2011, 9:03

Non sono assolutamente quello che dici dello Z80 come non lo sono dei micro che uso ora. Vedo di rintracciarti il libro che era fatto molto bene perché per ogni capitolo parlava di un micro diverso. Infatti poi mi sono lasciato influenzare dal capitolo del 8051 al quale sono passato poco dopo aver lavorato con lo Z80.
Quindi lo Z80 è stata una fase iniziale e molto transitoria.
La mia scheda non aveva una interfaccia HMI tipo video perché lo scopo era di comandare gli IO di una macchina. Dovrei avere in giro anche lo schema completo dello ZX spectum Sinclair (se mi ricordo bene il nome) che era un vero computer in basic tipo Commodore 64. Ma sei sicuro di voler fare un computer a base di Z80 con tutto quello che c'è ora? E' un affascinate esperimento nostalgico? Ma poi ti devi scrivere pure il software di un SO?
Per gli interrupt non mi preoccuperei per la tastiera che tanto dietro c'è una persona che fa un massimo di battute. Dipende anche dal software che c'è dietro e da cosa devi ottenere, ma io le tastiere le leggo quasi sempre a loop di programma, se non ho un SO multitasking. Uso gli interrupt, però a tempo, solo quando voglio fare dei filtraggi dei rimbalzi dei tasti. Per i PIO non ne ho mai usati perché ho usato dei registri paralleli tipo HC373/374 per fare tutti gli IO che vuoi e magari anche leggere la tastiera per esempio a matrice. Dovrei poi aver usato un HC138 (la sigla penso sia questa) per la decodifica degli indirizzi che comanda questi latch. Se trovo lo schema (purtoppo su carta e fogli grandi ma potrei passarlo allo scanner) te lo faccio avere.
Avatar utente
Foto UtenteAOX
3.555 2 6 11
Master EY
Master EY
 
Messaggi: 232
Iscritto il: 20 mar 2011, 12:29

2
voti

[7] Re: Z80 keyboard interrupt

Messaggioda Foto UtenteTardoFreak » 10 lug 2011, 11:50

L' interfacciamente dello Z80 con memoria e I/O l' ho portato come tesina per la matura.
Info che potrebbero esserti utili:
1) Visto che non hai uno straccio di s.o. sappi che c'e' la possibilità di far funzionare il micro in single-step sfruttando l' ingresso WAIT e l' uscita ...(non ricordo più :( edit: uscita M1) che diventa attiva ogni ciclo o istruzione. Con un FF tipo D-LATCH si può quindi implementare un circuitino che permette di far eseguire al micro un' istruzione per volta. Con dei driver su bus dati ed indirizzi che pilotano LED o display a 7 segmenti puoi visualizzare il funzionamento del micro direttamente sul bus durante l' esecuzione normale o single-step.
2) Lo Z80 come l' 8080 e l' 8051 hanno un uscita dedicata per l' indirizzamento delle periferiche. In pratica è possibile avere un gruppo di 256 indirizzi dedicati ai dispositivi di I/O. Si decodifica solo la parte bassa del bus degli indirizzi controllata dal segnale IOREQ invece che da MREQ che indirizza la memoria. L' accesso alle periferiche è rallentato di un ciclo.

Se riesco a trovare il datasheet (trovato) mi verrano di sicuro in mente altre info utili. Penso di avere buona memoria ma quelle cose le ho fatte nel 1982/1983 e qualche particolare mi sfugge. :?
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

2
voti

[8] Re: Z80 keyboard interrupt

Messaggioda Foto Utentejormay » 10 lug 2011, 14:48

rusty ha scritto:Complimenti, allora sei un vero guru del Z80! iOi

Il libro di cui parli della Hoepli si potra' recuperare da qualche parte? Per il resto credo che dovro' inevitabilmente fare diverse prove prima di riuscire a scrivere un codice funzionante, ma mi interessano i passi base, vedro' di migliorarmi con la pratica sul campo (o meglio, sul bus).
La tua scheda aveva anche una interfaccia video presumo, hai usato il bus condiviso o una RS232/UART like?

Grazie per il tuo interessamento ;-)

Mah? E' cosi retro da risultare affascinante.
Ti segnalo "Build your own Z80 computer" http://books.google.it/books?id=mVQnFgWzX0AC&printsec=frontcover&dq=Build+your+own+Z80+computer:+design+guidelines+and+application+notes&hl=it&ei=YZ0ZTtH7B4e68gOU0vQo&sa=X&oi=book_result&ct=result&resnum=1&ved=0CCoQ6AEwAA#v=onepage&q&f=false
Ne trovi piu' di qualcuno, questo ha i diritti ma non e' offuscato, buona (si fa per dire) consultazione.
Non ho quello della Hoepli ne ho un altro cosi' ammuffito che appena aperto mi ha fatto tossire e ho dovuto richiuderlo in fretta.
Adesso, se cerchi un SO che non sia CP/M per lo Z80 mmm e addirittura pronto da caricare in memoria con una immagine, temo sia difficile. Anche lo Z80 che ho avuto io lo avevo come sistema parallelo nel Commodore 128, si sfruttavano le periferiche gia presenti e disponibili per 8502 (una specie di 6502 ma figo).
Se posso darti un consiglio, tanto lavoro e poca soddisfazione, se cambi target e ti orienti su cose piu' moderne immediatamente tutto cambia.
Non odiarmi ... eh?
Avatar utente
Foto Utentejormay
49 1 4
New entry
New entry
 
Messaggi: 64
Iscritto il: 4 lug 2011, 11:47

2
voti

[9] Re: Z80 keyboard interrupt

Messaggioda Foto UtenteAOX » 10 lug 2011, 15:35

Davvero un bel libro completo. L'autore ha avuto senz'altro molta pazienza, ma ne dovrà avere altrettanta chi si metterà giù a realizzarlo. Sicuro che con i single-chip di adesso si fa molto prima e si ottiene un risultato più performante, ma se Rusty è così interessato allo Z80 avrà i suoi motivi e anche diversi. Forse, se vorrà, li spiegherà. Non penso che uno come lui abbia problemi ad usare micro recenti o tecnologie più moderne. C'è ancora chi replica il kit del ALTAIR che oggi è piuttosto fuori prestazioni ma ha un qualcosa che evidentemente a molti attrae ed incuriosisce, anche più di un PC ultima generazione, almeno per quello che ha rappresentato e per il mito che è stato. Forse quello di cui disponiamo oggi è talmente così potente e scontato, già fatto e di passaggio rapido davanti agli occhi, che ci viene da rimpiangere certe cose passate e il contesto in cui sono sviluppate.
http://www.google.it/search?q=altair+computer&hl=it&biw=1280&bih=705&prmd=ivns&tbm=isch&tbo=u&source=univ&sa=X&ei=DqsZTu7UJYeg-wbO7Y3YBw&ved=0CD0QsAQ
Avatar utente
Foto UtenteAOX
3.555 2 6 11
Master EY
Master EY
 
Messaggi: 232
Iscritto il: 20 mar 2011, 12:29

0
voti

[10] Re: Z80 keyboard interrupt

Messaggioda Foto UtenteTardoFreak » 10 lug 2011, 15:40

piccolo O.T.
Io rimpiango i tempi quando, con il 6303 (versione CMOS della Hitachi del 6803) ne ho fatte di tutti i colori ... pardon di tutte le applicazioni. Ah... bei tempi, la gioventù, l' entusiasmo, l' UART a bordo ... :cry:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

Prossimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti