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

[11] Re: Z80 keyboard interrupt

Messaggioda Foto Utenterusty » 10 lug 2011, 19:01

Grazie a tutti per i commenti, ho gradito soprattutto il magnifico link al "Build your own Z80-microcomputer", è da tempo che cercavo qualcosa del genere, datato, chiaro, intriso degli anni che rimpiango di non aver vissuto (purtroppo sono nato troppo tardi).
Non ho capito bene il titolo del libro/libri della Hoepli, credo siano del tipo "Sistemi ... qualcosa" 1 ,2, 3 ma non ne sono sicuro.
Lo scopo del tutto è mettere mano ai singoli bit, governarli nella complessa semplicità di una architettura del genere, che mi ha sempre affascinato. Non so nulla invece dei vari 68000, e altri che avete nominato.
Chiaramente non devo costruire nulla di potente, anche perché sarebbe ridicolo usando tecnologie vecchie di 40 anni (circa), altrimenti ordinerei dei super PIC32, o una bella FPGA della Altera, tipo Stratix V, e chi piu' ne ha piu' ne metta... ma solo pochi uomini sulla Terra hanno il pieno controllo di questi mostri supercomplessi, e per pieno controllo intendo il singolo bit ad ogni posedge clock o negedge clock ;-)

Qualcosa di quello che cercavo ho trovato in quel libro nominato prima, per l'uscita video credo pero' che optero' per una bella FPGA della Xilinx, ma solo per il video composito, il resto spero di riuscire a farlo il piu' semplice possibile suddividendo per bene bus dati, indirizzi e controllo.

E' un feticismo, forse, o una mania, ma io adoro tutto cio' che hanno costruito pazientemente negli anni 70' 80', ne sono affascinato... i microcontrollori di oggi sono tutto quello che volete, ok, semplici, performanti, ma vorrei costruire un sistema mio personale, come fecero i pionieri della Olivetti con la Programma 101 (non so se conoscete), ecco quel tipo di progettazione mi interessa molto.

Grazie ancora a tutti, gentilissimi. :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

5
voti

[12] Re: Z80 keyboard interrupt

Messaggioda Foto UtenteDarwinNE » 10 lug 2011, 19:13

rusty ha scritto:Non so nulla invece dei vari 68000, e altri che avete nominato.


Io anni fa ho recuperato una bellissima scheda di valutazione Motorola. C'era montato un XC68000, ovvero una pre serie di questo splendido microprocessore. Ci si collegava con un paio di seriali e poteva essere utilizzata da sola, oppure in un sistema EXORciser. Un bellissimo assembler, molto comodo da usare.

rusty ha scritto:ma vorrei costruire un sistema mio personale, come fecero i pionieri della Olivetti con la Programma 101 (non so se conoscete), ecco quel tipo di progettazione mi interessa molto.


E' in effetti molto interessante. La P101 la conosco, ma conosco molto meglio l'M20, a cui ho dedicato un sito intero:

http://www.z80ne.com/m20/index.php
Follow me on Mastodon: @davbucci@mastodon.sdf.org
Avatar utente
Foto UtenteDarwinNE
31,0k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 4420
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France

2
voti

[13] Re: Z80 keyboard interrupt

Messaggioda Foto UtenteAOX » 11 lug 2011, 8:43

Riguardo la CPU che Rusty ha intenzione di sviluppare, metto il link di un mio vecchio progetto con lo Z80, se può in qualche modo essergli di aiuto. Ho scannerizzato solo la pagina più importante perché dispongo solo della versione cartacea tra l'altro in A3. Si vede in particolare la generazione del segnale NMI per dare allo Z80 un interrupt periodico come base di riferimento del tempo. Il decoder HC138 fornisce i segnali di campionamento dei vari latch di espansione IO. Per il resto è uno schema abbastanza semplice e con qualche ingenuità visto che ero alle prime armi. Comunque funzionava, dentro il quadro di una macchina, e ne sono state mandate via anche diverse.
http://www.overdigit.com/EY/Z80_CPU.jpg

Il libro Hoepli che a quei tempi mi ha dato piacere leggere è questo:
http://www.overdigit.com/EY/Hoepli_1.JPG
Questa invece è la foto di un paio di pagine come esempio del libro nel capitolo Z80:
http://www.overdigit.com/EY/Hoepli_2.JPG
E' piuttosto datato come libro per cui le cose vanno prese per quelle che erano.
Avatar utente
Foto UtenteAOX
3.555 2 6 11
Master EY
Master EY
 
Messaggi: 232
Iscritto il: 20 mar 2011, 12:29

1
voti

[14] Re: Z80 keyboard interrupt

Messaggioda Foto Utenterusty » 11 lug 2011, 18:20

Grazie AOX per la scansione (sto notando che i font e lo stile degli schemi elettrici dell'epoca sono tutti identici, ma stampavano con autocad et similae?), il libro l'ho acquistato per curiosita', l'ho pagato una ventina di euro usato su ebay (l'Hoepli), il tuo schema è si' classico, ma il cuore del progetto è ancora nascosto, a mio parere, perché ad esempio sarei curioso di sapere che codice hai inserito al'indirizzo 0066h per gestire l'NMI periodico... credo temporizzi l'accesso alla porta esterna, ma non ne sono sicuro. ?%

Grazie comunque, sei stato molto gentile e paziente, spero un giorno di sdebitarmi. ;-)
Grazie a tutti, DarwinNE il tuo sito lo conoscevo, ma non sapevo che fosse tuo! Complimenti :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

[15] Re: Z80 keyboard interrupt

Messaggioda Foto UtenteTardoFreak » 11 lug 2011, 18:41

Quasi O.T.
Visto che sei interessato ai microcontrollori, se un domani decidessi di implementarne uno su una FPGA o una CPLD ti suggerisco di dare uno sguardo al COP400. QUI tovi il datasheet del COP402, la versione romless oramai introvabile.
Era un microcontrollore a 4 bit estremamente semplice, con un set d' istruzioni ridotto all' osso ma con il quale ci puotevi fare quasi di tutto. Forse non lo implementerai ma ti può dare un' idea di come si può realizzare un micro semplice ma completo.

Just my two cents
"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

1
voti

[16] Re: Z80 keyboard interrupt

Messaggioda Foto UtenteAOX » 11 lug 2011, 19:09

il tuo schema è si' classico, ma il cuore del progetto è ancora nascosto, a mio parere, perché ad esempio sarei curioso di sapere che codice hai inserito al'indirizzo 0066h per gestire l'NMI periodico... credo temporizzi l'accesso alla porta esterna, ma non ne sono sicuro

Effettivamente riguardando l'assembler a quel indirizzo avevo messo la routine di risposta alla base tempi (il segnale NMI). In questa a sua volta gestivo un certo numero di timer uguali, utilizzabili dal programma applicativo. Lo scopo era di scansionare un listato tipo PLC che poteva utilizzare N timers indipendenti e paralleli per temporizzare gli stati macchina. Stessa cosa avveniva per N contatori disponibili a programma. Il sistema operativo, se così si poteva definire, veniva cucito automaticamente da un programma su PC, a quanto veniva generato dal listato dell'applicativo.
Ti ho postato il sorgente assembler se vuoi dare un'occhiata alla routine NMI.
Avatar utente
Foto UtenteAOX
3.555 2 6 11
Master EY
Master EY
 
Messaggi: 232
Iscritto il: 20 mar 2011, 12:29

1
voti

[17] Re: Z80 keyboard interrupt

Messaggioda Foto Utenterusty » 11 lug 2011, 20:01

Grazie AOX, ho ricevuto il tuo listato e gli stavo dando uno sguardo, mi pare di capire che hai predisposto delle routine che non sono state utilizzate, forse per sviluppi futuri (le ultime due in fondo al codice), e fai iniziare la interrupt service routine per l'NMI alla locazione 0063h invece che 0066h come leggo da vari datasheet, ma questo non è un problema insormontabile, devo documentarmi meglio sicuramente. Vedo che non hai usato un arbitro per il bus, BUSRQ è fisso a livello alto, forse non ne avevi bisogno nella tua applicazione.
Il codice mi servira' sicuramente come spunto, sto pensando di leggere dati da una tastiera esadecimale bufferizzando i dati e mappandola da qualche parte in memoria, sono indeciso se usare il segnale REFRESH del z80 come "interrupt" per la lettura, anche se forse è troppo veloce per questo scopo, magari un semplice contatore esterno piu' lento potra' andare allo scopo, oppure semplicemente un loop periodico da software che fara' polling sulla zona di memoria dove mappero' la tastiera... vedro' come districarmi.
In ogni caso mi sei stato di molto aiuto, ora ho piu' materiale da consultare, ti ringrazio infinitamente.

Tardofreak, mannaggia a te! :mrgreen:
Ora mi hai messo non poche pulci nell'orecchio, e quel simpatico micro è davvero carino, sembra quasi pronto per essere inserito in una delle mie innumerevoli CPLD che ho nel cassetto, devo assolutamente provare, e dedicargli un po' del mio tempo macchina... quel COP402 mi sta mandando interrupt al cervello incessantemente e dovro' esaudire le sue richieste di implementazione. Grazie anche a te, siete stati molto disponibili, una fucina di idee.

A presto :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

[18] Re: Z80 keyboard interrupt

Messaggioda Foto UtenteAOX » 11 lug 2011, 20:26

La questione dell'indirizzo 63 o 66 è così spiegata. La risposta all'interrupt è effettivamente in 66 ma la direttiva di inizio di codice assoluto parte da 63 perché è un mio vizio, almeno quando uso assembler, di mettere un JMP a zero al termine di aree vuote da codice. Il perché sta nella forse eccessiva preoccupazione che un disturbo EMI, che manda fuori esecuzione il program counter, possa recuperare se per caso poi casca nell'area inutile. Almeno prima o poi si resetta via software. Non è tutto ma è sempre meglio di niente.
Avatar utente
Foto UtenteAOX
3.555 2 6 11
Master EY
Master EY
 
Messaggi: 232
Iscritto il: 20 mar 2011, 12:29

1
voti

[19] Re: Z80 keyboard interrupt

Messaggioda Foto UtentePaolino » 12 lug 2011, 13:13

Ragazzi,
dico anch'io la mia.
Per quasi 6 anni ho lavorato in una azienda che sviluppa(va) sistemi di controllo con Z80. Il PLC (perché era tale, in effetti) era una struttura così costituita:
- Scheda Z80 CPU: disponeva, nella soluzione completa di 24 input digitali, USART, RAM tamponata da 8k, ROM da 32k, bus parallelo a 5 bit per collegare schede di espansione, interfaccia per tastierino a membrana con display 2x20 stile Hitachi HD44780, qualche altra cosa che ora non ricordo;
- Scheda a 24 out a transistor (fino a 5A)
- Scheda a 16 out a transistor (fino a 10A)
- Scheda di 24 input digitali
- Scheda comando 3 stepper motor
- Scheda analog input

Il sistema andava configurato in modo opportuno per non saturare i 32 indirizzi disponibili per gli I/O esterni ;-)
Il tutto, programmato rigorosamente in ASSEMBLY con l'unica eccezione della parte HMI che era in C. Il sistema controllava real-time, macchine di produzione di calzature. Il software di controllo era in effetti uno scheduler fatto bene, in grado di servire n-task, con n in funzione del tipo di macchina (e di operatività di questa).

Ho programmato parecchio, su quelle schede. Devo dire che lo Z80 è stato per me il primo banco di prova con i micro; ho anch'io un riferimento bibliografico ma è a casa. Lo cerco e vi invio il link.

Per quanto concerne "Build your own Z80 computer: design guidelines and application notes", l'autore è STEVE CIARCIA, mitico fondatore di quel pozzo di info che è CIRCUIT CELLAR, ottima (a mio modesto avviso) rivista del settore (disponibile anche in edizione elettronica).

Saluti.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

2
voti

[20] Re: Z80 keyboard interrupt

Messaggioda Foto UtentePaolino » 13 lug 2011, 21:00

Eccolo, l'ho trovato:
THE Z80 MICROPROCESSOR HARDWARE, SOFTWARE PROGRAMMING AND INTERFACING, di Barry B.Brey, ed. Prentice Hall.

Praticamente un MUST! Ricordo ancora le parole del prof.: "Di libri sullo Z80 ce ne sono molti, ma riteniamo che questo sia il più completo. Se studiate su altri libri e all'esame scrivete stupidaggini e citate le vostre fonti (diverse dal libro in questione), beh sono tutti cavoli vostri!". Io lo comprai, anche un po' intimorito dalle velate minacce del prof, ma non me ne sono mai pentito. Quando ho lavorato sullo Z80 pesantemente spesso ho consultato questo libro che conservo gelosamente ;-)

Se riesco, invio una foto della copertina.

Edit. Eccola:

TheZ80Microprocessor.JPG
TheZ80Microprocessor.JPG (29.97 KiB) Osservato 4045 volte


Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti