Livio Orsini Inserita: 24 marzo 2024 Segnala Inserita: 24 marzo 2024 9 ore fa, Claudio F ha scritto: Essendo una memoria statica, dove per definizione i livelli rimangono stabili a tempo indeterminato, leggere i bit tutti in un colpo o uno alla volta per me è indifferente. Questo è vero, se niente li fa cambiare. Inoltre è anche necessario che i dati siano scritti e letti in modo corretto. Ad esempio se invece di scrivere 1010 scrivessi 1110, quando rileggi questo dato, se lo leggi in modo corretto, leggerai 1110; però credendo di aver scritto1010 lodefiniosci come errore. Da quello che ha scritto EZ9, e dai risultati che riporta, mi sento di escludere problemi alla memoria perchè, se così fosse, dovrebbe esserci una certa costanza almeno di indirizzo delle celle in errore. Il suggerimento di scrivere e leggere tramite latches, facilita la diagnosi visto che prima carichi il latch, quindi hai possibilità di vedere fisicamente cosa stai scrivendo e dove lo stai scrivendo. Se metti dei LEDs sul latches e vai a scrivere passo - passo, puoi vedere fisicamente cosa stai scrivendo e dove lo stai scrivendo. E un lavoro da certosino, ma se non hai strumenti tipo analizzatore di stati logici, con una buona profondità di memoria, è l'unico modo di venirne fuori. Ho ancora in giro, in uno degli armadi dove ammucchio i "ricordi", una scheda NASCOM, antesignana di un PC, basata su Z80, in cui riuscii ad individuare uno "sbaffo" tra 2 piste del bus indirizzi, proprio usando un sistema simile passo-passo; ho ancora anche l'attrezzo che mi costruii allo scopo. Però eravamo a metà anni 70, circa 50 anni fa, quindi ....io ero un'alta persona.🥴
Ctec Inserita: 24 marzo 2024 Segnala Inserita: 24 marzo 2024 3 ore fa, Livio Orsini ha scritto: Ho ancora in giro, in uno degli armadi dove ammucchio i "ricordi", una scheda NASCOM Ma dai... Un Nascom, io ho il NASCOM BASIC disassemblato, e tempo fa ne cercavo uno. Grande... Hai il Nascom1 o il Nascom2?
Ctec Inserita: 24 marzo 2024 Segnala Inserita: 24 marzo 2024 14 ore fa, Claudio F ha scritto: Non ho mai avuto problemi a leggere e scrivere memorie (CMOS) con ArduinoMega un bit alla volta. Certo, perché il Mega è un CMOS. Il problema è che invece quelle vecchie memorie sono TTL. Il punto è anche che più tempo impieghi a fare un'operazione, più dai modo ai disturbi (esterni o problemi di livello) di incunearsi. Se per esempio hai scritto uno 0 in un bit e poi scrivi un 1 in quello accanto, non è escluso che per diafonia anche il primo sia "visto" come un 1, poiché la porta di ingresso della RAM è ancora aperta (WR a 0). Poi ovviamente sono supposizioni, e consigli per cercare di capire dove sia il problema. L'ideale sarebbe un analizzatore logico multicanale...
Claudio F Inserita: 24 marzo 2024 Segnala Inserita: 24 marzo 2024 (modificato) Con un multimetro di precisione ho misurato le uscite di un ATMEGA328P-PU (che come caratteristiche elettriche di uscita è praticamente uguale all' ATMEGA2560) caricate con 270 Ω: Con un solo kΩ di carico la VOL scende addirittura a soli 133 mV. Non credo che il problema siano i segnali Arduino -> memoria, ma piuttosto il contrario. Dalle specifiche la memoria ha una VOH minima di 2.4 V, che potrebbero essere al limite con i 3 V minimi di VIH richiesti da Arduino. Un buffer HCT bidirezionale risolverebbe il problema: Modificato: 24 marzo 2024 da Claudio F
Livio Orsini Inserita: 24 marzo 2024 Segnala Inserita: 24 marzo 2024 4 ore fa, Ctec ha scritto: ... Hai il Nascom1 o il Nascom2? Non so, credo sia Nascom1 (o forse Nascom0 😃). Nel 1976, se ricordo bene, lo acquistai, in kit di montaggio, da un ex collega che era andato a lavorare in un'azienda commerciale che li importava. In pratica è costituito da una tastiera molto robusta, un'unica scheda su cui, oltre allo Z80, con i vari circuiti di controllo del busa dati e indirizzi, sono montati: memoria EPROM con firmware con funzioni di monitor, uno zoccolo per eventiali espansioni EPROM, 256 kbyte di RAM (ma non sono certo delle dimensioni), interfaccia per TV (facente funzioni di monitor), interfaccia per registratore a cassette che è la memoria di massa. Si doveva programmare in linguaggio macchina. Divenni matto perchè, una volta montato, il monitor non voleva saperne di funzionare. COsì, con pazienza, un fine settimana mi costruii tutto lo Hw necessario per far avanzare il programma passo-passo, poi tramite buffer non invertetenti monitorai il bus indirizzi e dati tramite LEDS. Passo passo, arrivai all'indirizzo che impegnava una delle 2 linee di bus che erano in corto e notai l'errore di indirizzo. A questo punto, seguendo le piste riuscii a trovare lo "sbaffo". Avevo 30 anni e non 80 (quasi), quindi il potere di concentrazione era notevolmente superiore, le dita avevano tutta l'agilità necessaria e, soprattutto, la mia vista aveva un'acutezza tra 11 e 12 decimi! Credo di avere ancora schema e manuale, oltre alla scheda che tengo per ricordo perchè, dopo quella messa in marcia, avevo acquisito una grandissima conoscenza Hw e Sw dello Z80! Se ti servono informazioni sulla scheda chiedi.
Livio Orsini Inserita: 24 marzo 2024 Segnala Inserita: 24 marzo 2024 4 ore fa, Ctec ha scritto: Il punto è anche che più tempo impieghi a fare un'operazione, più dai modo ai disturbi (esterni o problemi di livello) di incunearsi. Andrea concordo perfettamente con quello che scrivi, anche perchè a suo tempo ho avuto la sventura di verificarlo a mie spese, ma allora ero molto più giovane, più entusuasta ma anche molto più ignorante di ora.
Livio Orsini Inserita: 24 marzo 2024 Segnala Inserita: 24 marzo 2024 4 ore fa, Claudio F ha scritto: Un buffer HCT bidirezionale risolverebbe il problema: In pratica è quello che Andrea ed io abbiamo suggerito qualche giorna addietro.🙂 Inoltre il comando di scrittura, per trasferire il contenuto del latch in memoria deve durare il tempo giusto, non di meno ma nemmeno di più, proprio per evitare che i disturbi possano "insinuarsi". Stesso ragionamento per la lettura: il segnale di clock per trasferire l'uscita della memora nel latch deve avere la durata giusta. Poi che arduino legga e scriva i bit uno alla volta diventa meno importante, ma anche qui è necessario che si ponga una certa cura nel cablaggio, proprio per evitare fenomeni di accoppiamenti e diafonie.
ez9 Inserita: 29 marzo 2024 Autore Segnala Inserita: 29 marzo 2024 Grazie a tutti per i commenti, il bello di questa board e' che e' una miniera di componenti 😄 sono presenti 2 latch 74HCT245 ne utilizzero' uno per fare i test di lettura /scrittura sulle ram, intanto vedo di scrivere l'arduino poi passero' ai test tempo permettendo. Vi aggiorno presto (spero...)
ez9 Inserita: 4 aprile 2024 Autore Segnala Inserita: 4 aprile 2024 (modificato) ho collegato il 74HCT245 tra arduino e la Ram ora funziona decisamente meglio pero' ho uno strano comportamento di arduino. in un ciclo di doppio di scrittura e lettura prima con 85 e poi con 170 (quindi 16384 cicli R/W) ho circa 90-11o errori. ma gli errori son sempre solo sul Bit 0 per esempio: ERROR AT ADDRESS 1 10101010 <---DATA WRITTEN = 85 00101010 <---DATA READ = 84 oppure ERROR AT ADDRESS 4173 01010101 <---DATA WRITTEN = 170 11010101 <---DATA READ = 171 ho notato che nell'array del bus data il primo bit ha sempre una tensione piu' bassa (circa 3,5 V) e anche quando e' settato come input la tensione oscilla molto. Inizialmente pensavo fosse il pin, ma anche cambiando pin nell'array, il primo dichiarato ha semre tensione piu' bassa degli altri, Ho cambiato anche la RA da testare ma il problema e' sempre solo nel BIT 0 Anche scambiando il pin tra bit0 e altri pin l'errore resta semre e solo nel primo BIT che e' dichiarato nell'Array. qui sotto riporto come e' dichiarato l'array e come viene settaqto nel ciclo di Write int dataPins[8] = {30,31,32,33,34,35,36,37}; //Set data Pin modes to Ouput for (int i=0;i<8;i++) { pinMode (dataPins[i], OUTPUT); } // Setup Data Bits for (int i=0;i<8;i++) { if (bitRead(dataCounter, i)==1) { digitalWrite(dataPins[i],HIGH); //Serial.print("1"); } else { digitalWrite(dataPins[i],LOW); //Serial.print("0"); } come si spiega questo comportamenteo del BIT 0? Modificato: 4 aprile 2024 da ez9
Livio Orsini Inserita: 4 aprile 2024 Segnala Inserita: 4 aprile 2024 Fisicamente il bit0 su arduino a cosa corrisponde? Hai misurato il livello direttamente sul pin di arduino?
ez9 Inserita: 4 aprile 2024 Autore Segnala Inserita: 4 aprile 2024 8 minutes ago, Livio Orsini said: Fisicamente il bit0 su arduino a cosa corrisponde? Hai misurato il livello direttamente sul pin di arduino? il Bit 0 corrisponde al pin 30, ma ho provato a metterlo anche su Pin diversi. Si ho misurato la tensione sul pin 30 sia con il circuito collegato ma anche scollegato , ho circa 3,3V - 3,5V poi all'improvviso va a 4,9V per un po' per poi riscendere fa lo stesso comportamento su altri pin ma solo se impostati come Bit0 per Es. se dichiaro: int dataPins[8] = {30,31,32,33,34,35,36,37}; ho i 3,5V sul pin 30 , tutti gli altri a 4,9V mentre se dichiaro int dataPins[8] = {31,30,32,33,34,35,36,37}; ho i 3,5V sul pin 31 , tutti gli altri a 4,9V
Livio Orsini Inserita: 4 aprile 2024 Segnala Inserita: 4 aprile 2024 Se hai un oscilloscopio controlla questa uscita: dovresti vedere o che è modulata in PWM o che viene scritta a "1" e a "0", alternativamente.
ez9 Inserita: 17 aprile 2024 Autore Segnala Inserita: 17 aprile 2024 (modificato) Effettivamente controllando con oscilloscopio il bit 0 delle scrittura era in PWM, ma la cosa strana e' che random tornava al 100%. Boh... il loop di scrittura dei bit e' unico quindi in teoria avrei dovuto trovarmi lo stesso comportamente su tutti i pin contemporaneamente e non su uno solo. Comunque... ho fatto modifiche al codice e ora non ho piu' quello strano comportamento in PWM sul pin 0 (che poi era il bit che falliva sempre) e inserito una riprova di scrittura in caso di errore su lettura (max 3 volte poi da errore) in pratica: Loop 1 scrivo 85 su tutti gli indirizzi da 0 a 8191 Loop 2 rileggo tutti gli indirizzi da 0 a 8191 Loop 3 scrivo 170 su tutti gli indirizzi da 0 a 8191 Loop 4 rileggo tutti gli indirizzi da 0 a 8191 Durante i Loop 2 e 4 se trovo un errore provo a riscrivere e rileggere sullo stesso indirizzo per un max di 3 volte , dopodiche mi genere errore. Facendo cosi ho provato varie volte sulla stessa ram e ha sempre passato il test con 0 errori ma dai 3 ai 49 retest (totali tra i 2 loop 2 e 4) Secondo voi un test di questo tipo puo' essere affidabile? PS. quasi sempre i retest sono nel loop 4, di solito nel loop 2 ho da 0 a 4 retest. Modificato: 17 aprile 2024 da ez9
Livio Orsini Inserita: 17 aprile 2024 Segnala Inserita: 17 aprile 2024 (modificato) 7 minuti fa, ez9 ha scritto: Secondo voi un test di questo tipo puo' essere affidabile? Sicuramente ti dice che la memoria non è difettosa. Però per effettuare un test sicuramente affidabile e significativo bisognerebbe usare un microprocessore, non un microcontrollore, con il bus dati e indirizzi ed i latches. Comunque già da questi test io mi sentirei di escludere problemi alla memorie. Serebbe stato meglio scrivere 55H e AAH a bytes alternati, per poi ripeter il ciclo scambiando il dato, ovvero AAH e 55H alternati. Si usa questo test per verificare anche eventuali problemi di diafonia. Modificato: 17 aprile 2024 da Livio Orsini
ez9 Inserita: 17 aprile 2024 Autore Segnala Inserita: 17 aprile 2024 Purtroppo ho solo questo per provare, e si ho messo il latch (74HCT245) in mezzo come suggerito piu' su. la prova e' stata fatta con 55H e AAH il mio 85 e 170 in decimale corrisponde appunto al binario con bit alternati. ne ho 24 da testare, ne ho provate solo alcune procedo cosi e poi vediamo cosa salta fuori. Grazie ancora per il supporto
Livio Orsini Inserita: 17 aprile 2024 Segnala Inserita: 17 aprile 2024 1 ora fa, ez9 ha scritto: la prova e' stata fatta con 55H e AAH il mio 85 e 170 in decimale corrisponde appunto al binario con bit alternati. Non avevo compreso che fosse in decimale, chiedo venia. L'importante che che i comandi di Write e Read, siano temporizzati correttamente sia in durata che in sincronismo con i dati
ez9 Inserita: 17 marzo Autore Segnala Inserita: 17 marzo (modificato) Salve! torno su questo argomento dopo un lungo periodo di assenza (dove avevo abbandonato l'EMU per dedicarmi ad altro) comunque ho fatto qualche progresso ed ora qualche suono esce Aggiornamento: Ho trovato un banco di RAM andato l'ho sostituito e ora funziona quasi tutto la ROM di Debug funziona e con quella ho fatto i seguenti test: Button Test Slider Test Display Test CTC Test SIO Test Sound Memory Test Metronome Test Sound and Bit Test DAC Trim Dinamic Button tutti i test qui sopra sono passati con successo, ho pero' uno strano problema con il test dei led, funzionano solo 8 led, ho verificato il decoder 74HCT138 e ho anche provato a sostituirlo ma non cambia nulla e il 74HCT273 che comanda i led e' funzionante. Non capisco come mai il Clock del Flip Flop resti sempre a 1. E' il pin 11 (CSWLD1.D) del IC 41 dovrebbe andare a 0 quando gli ingressi sono L L H e Enable e' H il pin 12 (CSWLD0.D) va a 0 con gli ingressi ai valori opposti H H L e enable a H Gli indirizzi sono presi direttamente dal Bus Z80 mentre enable esce dal PAL (chip che ho preso nuovo da un tipo che mi ha detto essere testato e funzionante) e comunque fa il suo lavoro perche' indirizza il display, l'ADC le memorie etc. il Pin 11 di IC41 non ha corti verso massa, VCC o altri pin e sembra correttamente collegato al clock del flip flop. tra i vari test a dire il vero ho notato che e' praticamente sempre fisso a 5V tranne qualche volta in cui ho visto prendere una forma simile all'altro clock dei led pero' ho notato che l'onda bassa non arrivava mai sotto ai 2,5V, purtroppo l'ha fatto solo per poco tempo e non sono riuscito a fare foto o altre prove. Non riesco veramente a capire dove sia il problema anche perche' mi pare che non ci sia molto altro da verificare se non il fatto di avere A0 A1 e A2 ed Enable nella condizione corretta per abilitare il Pin 11 in low, oppure forse un problema in ingresso del PAL che mi degrada un ingresso? Questa cosa mi e' venuta in mente ora mentre stavo ragionando qui sul forum, anche perche' non sapendo come ragiona il PAL non saprei quali ingressi vanno ad abilitare la scrittura sui Led Modificato: 17 marzo da ez9
Ctec Inserita: 17 marzo Segnala Inserita: 17 marzo Probabilmente la PAL, per la parte interessata, non fa altro che agire come decodifica indirizzi per adeguarsi alla mappatura di memoria. E con questo si attiva lo ENB del 138. Se il resto della mappatura va bene, lui è sano. Non mi torna però quello che dici. Innanzi tutto, consideriamo che la "sequenza" degli indirizzi A2 A1 A0 si scrive in questo senso, per cui il bit 5 è l'indirizzo 101. Pertanto Q4 (bit 4) è 100 (A2=1 A2=0 A0=0). A meno che tu non li nomini da A0 a A2. Se te provi il 138 esternamente, dando questo indirizzo e l'enable, e vedi la Q4 a 0, lui sta andando e forse il problema è altrove. Se il 138 è su zoccolo, prova ad invertire i pin 11 e 12 (banco led 0 e 1) e vedi se il difetto rimane dove è o si sposta sull'altro. Se rimane dove è, il problema è a valle, altrimenti è a monte.
ez9 Inserita: 20 marzo Autore Segnala Inserita: 20 marzo Risolto! Ho smontato i chip interessati e sul clock di un flip flop avevo l'ingresso fisso a 5V, controllando con il tester avevo circa 500K di resistenza verso +VCC, seguendo le piste ho trovato una sbavatura e un po' di ossido che creavano il problema. Ora funzionano tutti i led, direi che ora funziona tutto devo solo capire come si usa per provare a suonare qualcosa... Cerchero' qualche tutorial online
max.bocca Inserita: 20 marzo Segnala Inserita: 20 marzo Le soluzioni sono 3: 1) utilizzi i suoni vintage via Midi 2) impari a programma i pattern e poi li concateni per creare la Song 3) la vendi che ha un bel valore come le Roger linn all' estero sono ricercate. Se l'avessi io per sfruttarla al massimo starei sul pilotaggio via Midi, non avresti problemi di salvataggio su Compact Cassette (forse tramite i jack) o suo Floppy da 5e1/4".
ez9 Inserita: 20 marzo Autore Segnala Inserita: 20 marzo 11 minutes ago, max.bocca said: Le soluzioni sono 3: 1) utilizzi i suoni vintage via Midi 2) impari a programma i pattern e poi li concateni per creare la Song 3) la vendi che ha un bel valore come le Roger linn all' estero sono ricercate. Se l'avessi io per sfruttarla al massimo starei sul pilotaggio via Midi, non avresti problemi di salvataggio su Compact Cassette (forse tramite i jack) o suo Floppy da 5e1/4". Non e' il mio e' di un amico me lo aveva affidato per ripararlo, pero' prima di ridarglielo vorrei capire come funziona visto il tempo che ci ho messo su e al tempo stesso essere sicuro che funziona tutto.😄 Anche se a dire il vero prima di consideralo finito c'e' da pulire 2-3 tasti che sono un po' "duri" e inoltre controllare i potenziometri degli slider perche' mi pare funzionino un po' a scatti, li avevo lasciati per ultimi perche' prima volevo far andare la parte elettronica, in ultimo ci sarebbe da fare anche un restauro estetico cambiando la facelift che e' molto consumata, si trovano ma essendo un dispositivo vintage ricercato costa 180$
max.bocca Inserita: 20 marzo Segnala Inserita: 20 marzo 180$ per la l'adesivo serigrafati non è male ... Comunque è il 5% del valore... Qualcuno avrà fotografato e rifatto la stampa oppure Nos da qualche riparatore o Cat dell'epoca. Hanno fatto anche un clone di quello strumento ma sicuramente non suona uguale. Anche se era uno dei primi con i campioni, aveva sicuramente qualche imperfezione che lo caratterizzava. Il disk drive se non erro era compatibile con quelli commodore 1541 da 180Kb doppio lato. A quei tempi era molto costosa come batteria, ma non possibilità di campionare non c'era molta scelta.
ez9 Inserita: 17 aprile Autore Segnala Inserita: 17 aprile prima di dedicarmi alla parte estetica, vorrei finalizzare anche gli slider, siccome vanno un po' a scatti ho deciso di aprirli per pulirli. Si smontano facilmente basta aprire le linguette di metallo. Sono pieni di polvere e sporco vario. una bella pulita con contact cleaner e funzionano gia' molto meglio. La mia domanda e'... posso richiuderli cosi a secco o magari e' meglio mettere un po' di grasso al silicone o altro lubrificante per preservarli piu' a lungo?
Ctec Inserita: 17 aprile Segnala Inserita: 17 aprile Meglio uno spray puliscicontatti leggermente lubrificante. Il grasso no, è isolante e se ti fa una patina sotto le spazzole, non fa più contatto.
max.bocca Inserita: 17 aprile Segnala Inserita: 17 aprile Ci sono spray con indicato Tuner eccccc per tuner probabilmente intendevano le vecchie sintonie a potenziometri sui TV. Quelle contengono particelle di grafite ol dissodare lubrificano. RS per esempio lo aveva Tuner 600 della Kontact.
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora