Vai al contenuto
PLC Forum


RS485 e caricamento dati in RAM


ZioFrenk

Messaggi consigliati

Salve a tutti! Ho in mente di costruire un computer basato sullo Z80, ho già quasi tutti i pezzi tranne la EEPROM, che è introvabile. Allora mi è venuto in mente di utilizzare una SRAM 62256 con cella tampone e caricare i dati con la porta RS485 (che per me è più comoda dato che ho solo due fili da collegare). Per convertire i dati da RS485 a UART uso un 75176, il problema è convertire poi questi dati in parallelo, non ho idea di come farlo dato che la linea non ha clock. Mi servirebbero 8 linee dati e uno strobe collegato ai contatori 7493 per l'indirizzo, ma per me la porta parallela è scomoda, dato che non ho i connettori e nemmeno la porta stess sul PC. Qualcuno ha qualche idea?

 

Ho anche un dubbio sulle SRAM. Per scrivere abbasso /chip enable, alzo /output enable e abbasso /write enable, poi mando i dati. Però tra un indirizzo e l'altro devo fare qualcosa sul bus dei controlli o posso lasciare così, continuare ad aumentare l'indirizzo e scrivere i dati?

 

Grazie in anticipo!

Link al commento
Condividi su altri siti


Introvabile? Mica vero. La Atmel ne fa ancora e le trovi on line, costano anche pochino. Le trovi sia in DIL che PLCC, per cui facilmente maneggiabili.

 

Per fare quello che dici te, un loader, hai per forza bisogno che ci sia almeno un programmuccio (un bootloader, appunto) che gestisca la CPU e soprattutto la memoria e la UART durante tale operazione. Le SRAM non incrementano automaticamente l'indirizzo, per cui fare quello che vuoi te è complicato (niente è impossibile, è solo una questione di tempo e soldi), e ti consiglio di lasciar perdere,

Compra una EEPROM, un programmatore per la stessa (costano pochissimo) e poi casomai divertiti col bootloader per evitare di riprogrammare il tutto a ogni modifica.

Link al commento
Condividi su altri siti

Io ho ancora la scheda NASCOM basata sullo Z80 con una EPROM con una specie di BIOS che gestisce tastiera, convertitore video, UART e registratore a cassette coem memoria di massa.

Link al commento
Condividi su altri siti

Per quello pensavo a uno switch che stacca completamente la CPU e collega la ram al caricatore. Per incrementare l'indirizzo ho 4 contatori 7493 in cascata, per quello mi servirebbe il clock dalla porta seriale, oltre che per convertire i dati in parallelo con lo shift register.

 

Potrei sì ordinare le EEPROM da atmel, ma mi sa che me ne farebbero comprare mille alla volta, poi di programmatori ne ho visti solo costosi. In questo modo invece si può dire che lo costruisco da solo, quindi non serve il bootloader perché non passo dalla CPU.

 

Rimane comunque il dubbio sulla sequenza per scrivere i dati sulle RAM.

Link al commento
Condividi su altri siti

Su RS una EEPROM 256kb (32KB) viene meno di 8€ e te ne danno anche una. Altri cataloghi on line, più o meno uguale.

Programmatori di EPROM (E2PROM, FLASH, micro, ecc) su Ebay da 44€.

E ti concestreresti sul progetto vero, la scheda CPU.

 

Per fare quello che vuoi te dovresti: disconnettere dal resto del mondo (scheda CPU) il bus dati, indirizzi e controllo della RAM e invece connetterli al circuitone.

Poi  resettare il circuitone per essere sicuro di partire dall'indirizzo 0x0000, farti una UART tua (non puoi usare una standard, perchè non puoi scrivere nei registri interni per impostare i parametri di comunicazione), farti un deserializzatore (ci sono anche chip appositi) che dopo 8 bit di dati, supponendo che la tua UART ha tolto gli start e gli stop e ti ha detto che hai un dato valido, ti lancia anche uno strobe per mettere sul bus dati il byte e poi lanciare il WR, rileggere il dato per essere sicuro che hai scritto giusto (ti ci vuole un registro e un comparatore ad 8 bit. Se tutto ciò è andato bene, puoi incrementare l'indirizzo, dire al PC che può mandare un altro byte e così via.

Penso che con una 40ina di integrati te la dovresti cavare... Ripeto che niente è impossibile...

 

Link al commento
Condividi su altri siti

Il problema è come caricare il programma di boot. Devi avere comunque qualche cosa che ti fa scrivere nella EPROM o EEPROM o RAM con batteria integrata il programma di partenza.

Disponendo di un programmatore scarichi il programma da PC nella EPROM-PROM-RAM.

Potresti usare un micro che dispone già del suo boot, come arduino, per copiare i dati da PC verso la RAM con batteria o in una E2 Prom con interfaccia parallela; carichi il programma di boot per lo Z80 e poi inserisci la memoria nello zoccolo.

 

Quote

Me la vendi per il mio museino personale? Di schede anni '70 non ho nulla...

 

Il Nascom e lo ZX-80 Sinclair me li tengo per ricordo. Sicuramente tra qualche anno i miei eredi pagheranno qualcuno per gettare in discarica questi dispositivi, assieme a componenti come 2716 e AC187-AC188, OC72, etc. (oltre alla mia biblioteca):(:wacko:

Link al commento
Condividi su altri siti

Quote

Penso che con una 40ina di integrati te la dovresti cavare... Ripeto che niente è impossibile

Se la cava , il ZX 80 Sinclair ne aveva si meno :P .

Link al commento
Condividi su altri siti

Sei come me, vedo, Livio. Il museino che ho è iniziato con i miei primi computer (TI99/4A e Spectrum), poi altra roba raccattata qua e là.

Al tempo dello ZX80 e delle schede nude, non avevo abbastanza "fondi" per procurarmele...

I miei figli già mi domandano perchè non butto quella "robaccia obsoleta"...

Link al commento
Condividi su altri siti

Ho trovato questo integrato che mi sembra interessante allo scopo: http://www.ti.com/lit/ds/symlink/sn74lv8153.pdf

Il problema è che per come sono messo già 30€ sarebbero una certa spesa. Ho sempre fatto tutto con ciò che recuperavo. Mi è venuta l'idea di quest'interfaccia perché ho tante RAM nel cassetto degli integrati e i convertitori apposta (tranne quello serie-parallelo). Per selezionare tra modalità normale e programmazione toglierò corrente alla cpu o al programmatore tramite un deviatore, senza scollegare dati e indirizzi.

Link al commento
Condividi su altri siti

Non puoi semplicemente disalimentare una parte. La sezione disalimentata inchioderà il bus come vuole, non penso vada automaticamente in three-state. Per quello ti dicevo che ci vuole un sistema di disconnessione.

La cosa più semplice, ma un po' farraginosa, è che tu ti realizzi una NOVRAM (una SRAM con la batteria, cioè una NOnVolatile RAM, si trovano anche degli schemi, Elektor li fece sicuramente negli '80...). La estrai dallo zoccolo della tua scheda (che ti consiglio fare con uno ZIF), la metti in un programmatore esterno, fatto anche da te magari con quel deserializzatore che hai indicato, e poi la rimetti nella tua scheda Z80 e ridai tensione.

Quel deserializzatore prevede un protocollo ben definito, che dovrai trasmettere sul filo seriale. Poi dovrai fare il sistema di gestione degli indirizzi (autoincremento) e tutto il ciarpame per gestire la sincronizzazione dei segnali. Però non saprai mai se la programmazione è andata a buon fine.

Comunque costa solo un paio di €

Link al commento
Condividi su altri siti

Nota: le SRAM consumano molto meno se il CSneg (Chip Select negato) non è attivo (quindi alto). Inoltre, se questo è inattivo, non si corre il rischio di alterare il contenuto delle celle al momento della sconnessione.

Pertanto è buona regola per farla estraibile, che casomai prima di sconnetterla si possa scollegare il CS dal circuito primario, magari mediante un jumper, e avere l'accortezza di portare al Vcc di batteria il pin CS con una adeguata resistenza (100k vanno bene generalmente). Quando la si reinserirà, si rimetterà al suo posto il jumper (altrimenti la SRAM rimane a "dormire"...

Link al commento
Condividi su altri siti

parecchi anni fa avevo costruito una scheda cpu z80 con ram annessa, ma senza eprom,

per caricare il programma nella stessa utilizzavo il vecchio Z80 di Nuova elettronica , che ho ancora funzionante..  ve lo ricordate ??  mitico !

avevo dotato la scheda di selettore che mandava in halt la cpu , andava in three-state e riuscivo cosi a programmare la ram tramite apposito connettore

Link al commento
Condividi su altri siti

No, /OE alto, metti l'indirizzo, abbassi /CS, metti i dati, abbassi /WR, lo mantieni per il tempo da datasheet, rialzi /WR e /CS, incrementi l'indirizzo e ricominci

Che modello di SRAM userai?

Link al commento
Condividi su altri siti

Grazie, è da tanto che cercavo di capire come scrivere più dati in serie.

Ho una 62256 che utilizzerò per il programma e altre quattro da 8kB che utilizzerò come memorie dati.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...