Vai al contenuto
PLC Forum


Consiglio per principiante programmazione PIC (filtro hardware 15KHz monitor arcade)


DanieleW

Messaggi consigliati

Buongiorno, non ho mai programmato un PIC ma vorrei provare per realizzare un progettino che ho trovato online, che non mi è chiaro al 100% e quindi volevo chiedere un parere a chi è più esperto. Sono più che altro un informatico ma ho qualche rudimento di elettronica, ho fatto giusto qualche progettino con arduino in passato, e usato qualche volta il saldatore, quindi abbiate pazienza se chiedo delle banalità 🙂

 

Il mio primo dubbio è cosa comprare come programmatore per un "PIC16F18313-I/P" ho visto che ci sono i PicKit ma ce ne sono vari modelli a prezzi anche molto differenti, cosa mi conviene prendere? sia per programmare quello ma anche se volessi in futuro programmare altri microcontrollori per altri progetti

 

Il progetto che vorrei realizzare è questo: http://forum.arcadecontrols.com/index.php/topic,160869.msg1733596.html#msg1733596

si tratta di un connettore VGA passante che fa passare il segnale solo se le frequenze orizzontali sono fra 15.5 e 16.2 kHz da utilizzare con particolari monitor arcade che si possono danneggiare se viene inviato per errore un segnale non nel range specificato.


la descrizione non è delle migliori ma ho dedotto che il firmware da caricare sul PIC è il .hex riportato qui https://hackaday.io/project/165634-the-ultimate-vga-to-scart-adapter/details nella sezione "3 Microcontroller firmware" (si tratta di un progetto hardware diverso ma il codice è il medesimo)

 

una cosa di cui non sono sicuro è l'elenco dei componenti che è riportato solo sul circuito stampato https://oshpark.com/shared_projects/mMqybOjf

mi pare di capire che servano:

1x PIC16F18313-I/P

1x condensatore 10nF SMD

1x condensatore 100nF SMD

1x led rosso

1x led verde

2x resistenze 680R SMD

non mi sembra ci sia altro, o sbaglio?

 

altra cosa che non mi è chiara è come collegare i pin dei connettori VGA, immagino alle piste che si trovano a destra (uscita) e sinistra (entrata) purtroppo non è spiegato chiaramente, mi potete dare qualche dritta?

 

grazie mille a chiunque risponderà

Link al commento
Condividi su altri siti


Per prima cosa spiega quali sono le tue competenze in fatto di Hw microprocessori e in fatto di programmazione di microprocessori.

Se non conosciamo il tuo grado di competenza diventa difficile darti consigli mirati.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Io i PIC non li uso, per cui per il programmatore non so aiutarti. Ma qualcuno interverrà.

Non sono stato a vedere video né descrizioni, ritengo che la basetta venga direttamente saldata sui piedini della VGA Femmina (female) e Maschio (male).

I numeri 13 e 14 fanno sicuramente riferimento al connettore. Se guardi le piedinature, il pin 9 è il +5V.

Ah, robina per arcade... Io mi diletto con i vecchi stampati dei primi anni '80. Ricavo schemi e li riparo. Poi faccio anche cose strane, tipo rifare Space Invaders con lo Z80 o il progetto grosso in atto, ricreare Q*bert con Z80 per ora e poi con scheda video con componenti attuali...

 

Link al commento
Condividi su altri siti

21 ore fa, Livio Orsini ha scritto:

Per prima cosa spiega quali sono le tue competenze in fatto di Hw microprocessori e in fatto di programmazione di microprocessori.

Se non conosciamo il tuo grado di competenza diventa difficile darti consigli mirati.

Sono un informatico programmatore di linguaggi ad alto livello (PHP e qualcosa in C++) ma di elettronica e programmazione microprocessori non so veramente nulla. ho fatto qualche progettino con arduino e wemos d1 mini (anche codice in c++), con relè, sensori vari, ecc ma li mi fermo per ora, ma vorrei imparare. Come saldature le so fare ma non ho mai saldato smd e non ho microscopio.

 

Mi sto dilettando nel tempo libero a restaurare un vecchio cabinato arcade con relativo monitor originale a 15KHz interfacciato ad un pc con linux e l'emulatore MAME. Questa protezione che vorrei realizzare mi serve per evitare di distruggere per errore il monitor arcade (ormai sono pezzi di antiquariato difficili da trovare) inviando un segnale non conforme, se riesco a fare la parte hardware poi volevo guardarmi anche il codice del pic per capire esattamente cosa fa

 

21 ore fa, Ctec ha scritto:

ritengo che la basetta venga direttamente saldata sui piedini della VGA Femmina (female) e Maschio (male).

I numeri 13 e 14 fanno sicuramente riferimento al connettore. Se guardi le piedinature, il pin 9 è il +5V.

si, guardando il pinout del connettore vga https://en.wikipedia.org/wiki/VGA_connector
+5v va sicuramente al pin 9
13 e 14 idem sono chiari (e sono infatti hsync e vsync relativi alla frequenza del segnale)
meno chiaro se a sinistra ci sia sempre 13 e 14 (vedo solo un 14, e poi le scritte "led +ve" e "=square" che non ho idea cosa siano
il punto meno chiaro in assoluto sono alcune piste sull'altro lato dove non c'è scritto niente, li non mi è chiaro cosa va collegato, l'autore scrive "You will need to wire up all the input/output pins on the PCB including all ground lines (just in case)", cosa intenderà esattamente?

inoltre i pin RGB (1,2,3) vanno collegati direttamente fra le due vga maschio femmina (perchè basta bloccare i segnali di frequenza per non danneggiare il monitor arcade)

 

grazie per le risposte

Modificato: da DanieleW
Link al commento
Condividi su altri siti

23 ore fa, DanieleW ha scritto:

Il mio primo dubbio è cosa comprare come programmatore per un "PIC16F18313-I/P" ho visto che ci sono i PicKit ma ce ne sono vari modelli a prezzi anche molto differenti, cosa mi conviene prendere? sia per programmare quello ma anche se volessi in futuro programmare altri microcontrollori per altri progetti

 

 

Se pensi di fare altri lavori con i microcontrollori PIC, ti consiglierei di acqyuister un pickit che dia anche la possiibilità di lavorare con i PIC  ad altre prestazioni come, ad esempio, i dsPic; spenderai una cifra maggiore ma devi considerarlo come un investimento per sviluppi futuri.

Questa è al mia filosofia, ma i danari sono i tuoi quindi sei tu che devi decidere se la spesa è compatibile con le tue esigenze e possibilità.

 

23 ore fa, DanieleW ha scritto:

una cosa di cui non sono sicuro è l'elenco dei componenti...

 

Si i componenti son solo quelli: 2 leds, due resistori di limitazione di corrente assorbita dai leds, e due condensatori di filtro, oltre al microcontrollore, ovviamente.

 

 

Link al commento
Condividi su altri siti

Beh, avendo il compilato (.hex) non hai bisogno di fare nulla se non buttarlo dentro il micro. Francamente però non so cosa usare coi PIC (soprattutto le versioni SMD).

Anche Linux lo conosco poco, non sarebbe possibile "bloccarlo" sulle basse risoluzioni? Non rammento se si può fare nel MAME.

Per quella frase, sì, devi collegare i segnali analogici RGB e masse tra i connettori. Ma te andresti da VGA della scheda PC al RGB del monitor? Perché usare un "coso" VGA-VGA?

Altra cosa: alcuni monitor arcade usavano il sincronismo composito (V+H), altri i sincronismi separati. Te che modello avresti?

Poi, montaggio in verticale (tipo PacMan, Gallag, Q+bert ecc) o orizzontale (Mortal Kombat, Monn Cresta, ecc)? Come passi da uno all'altro? Mi spiego. Su un monitor PC, widescreen, alta risoluzione 1920x1080, montaggio orizzontale, il MAME te li fa vedere tutti, ma quando mandi un gioco verticale, che so PacMan (che era 224x288) su un monitor a bassa risoluzione (che è minore o uguale di un QVGA 320x240) avresti problemi a visualizzare il verticale (288 > 240).

I monitor arcade anni '80 andavano su quelle risoluzioni. Solo più tardi sono passati alla VGA 640x480, ma la VGA va intorno a 31kHz di riga, che ti darebbe problemi...

Link al commento
Condividi su altri siti

Se non hai idea di cosa ci sia in quel fw, come immagino, nè hai mai saldato un smd mi sento di consigliarti di prendere un pic pth e montarlo su zoccolo da saldare su quel pcb in qualche modo oppure provare un prototipo su millefori prima.

Quindi fare un minimo di collaudo con un oscilloscopio per vedere cosa esce e se veramente fa il lavoro che promette. Se ci tieni tanto a non danneggiare il tuo Arcade è il minimo che farei prima di collegarlo direttamente.

Per la programmazione potresti portare fuori i pin 6/7 oltre alla massa ed usare un pickit in modalità icsp, trovi qui un tutorial).

Come programmatore un qualsiasi pickit dal 2 in su va bene, qui trovi un esempio su Aliexpress, versioni originali e/o più recenti hanno semplicemente una maggiore velocità, un supporto per le nuove versioni dell'usb, maggiori funzionalità per il debug in circuit fino al supporto di applicazioni in real-time, tutta roba che a te non interessa, sia perchè sei ancora principiante, che per il fatto che non hai nulla da debuggare non avendo il codice sorgente.

Link al commento
Condividi su altri siti

Il 6/12/2023 alle 15:44 , DanieleW ha scritto:

cosa mi conviene prendere?

Io ho usato un programmatore seriale fai da te e ci ho programmato i primi esperimenti. Poi sono passato al pickit2 compatibile, sempre fai da te, in questo caso serve il pic programmato, avendo quello seriale non ho avuto problemi. Non so se col seriale o col pickit2, hai dei limiti nella lista di pic programmabili, ma basta fare una piccola ricerca. Se non vuoi diventare matto, prendi un pickit3, che ormai costa poco e ci fai quasi tutto. Vedo che te la cavi col C++, non dovresti avere problemi a usare qualche compilatore in C (il MikroC è uno dei più semplici). Diversa cosa è conoscere i Pic a livello di hardware, e cominciare a progettare qualcosa. Prova a scaricare il datasheet di qualche Pic, e comincia a vedere se riesci a capirne l'architettura. Se ti trovi in difficoltà, esiste sul Web un mondo sui  Pic, che ti aiuta a superare ogni difficoltà.

Arduino è più semplice, perché ti ritrovi già una scheda con cui lavorare, e per tutta la disponibilità di sensori e schede front/back end dedicate. 

Modificato: da Gennar0
Link al commento
Condividi su altri siti

inanzitutto grazie per le varie risposte e consigli, con le vostre dritte ho capito meglio cosa mi serve per programmare il PIC

 

e dopo averci pensato dovrei aver capito anche come si devono saldare le piste: in pratica il pcb a doppio strato è fatto in modo tale da essere incastrato fra la terza e seconda fila dal basso dei pin del connettore vga (sia maschio che femmina), in questo modo i pin combaciano con le piste per essere saldati sul pcb, mentre la fila superiore va riportata pari pari con dei fili.

 

rispondo di seguito alle domande di Ctec (se ne hai altre scrivimi pure anche in privato, non vorrei andare troppo off topic qui nel thread)

  

8 ore fa, Ctec ha scritto:

Anche Linux lo conosco poco, non sarebbe possibile "bloccarlo" sulle basse risoluzioni? Non rammento se si può fare nel MAME.

Si è possibile, ma solo con particolari schede video che permettono bassi pixel clock. Esiste una specifica versione di Mame https://www.advancemame.it/ fatta apposta per interfacciarsi direttamente coi monitor arcade 15KHz pilotati direttamente tramite il connettore VGA. Esistono anche specifiche distribuzioni linux tipo https://batocera.org/ che hanno mod apposite per farle andare a 15KHz

 

9 ore fa, Ctec ha scritto:

Ma te andresti da VGA della scheda PC al RGB del monitor? Perché usare un "coso" VGA-VGA?

Altra cosa: alcuni monitor arcade usavano il sincronismo composito (V+H), altri i sincronismi separati. Te che modello avresti? Poi, montaggio in verticale (tipo PacMan, Gallag, Q+bert ecc) o orizzontale (Mortal Kombat, Monn Cresta, ecc)?

Io ho già un prototipo funzionante con AdvanceMame che avevo fatto vari anni fa e funziona perfettamente, il pc è collegato al monitor arcade (un Hantarex Polo 28" a 15KHz montaggio orizzontale) il collegamento è diretto tramite dalla presa vga della scheda video al connettore del monitor, non ricordo più i pin esatti avevo trovato lo schema da seguire all'epoca, ma si trattava semplicemente di collegare alcuni fili del cavo VGA al connettore proprietario del monitor arcade senza componenti elettronici intermedi, quindi V e H sicuramente separati. La cosa importante è di evitare assolutamente di mandare frequenze troppo diverse dai 15KHz per più di qualche secondo o il monitor arcade rischia di rompersi (perchè quando furono pensati non avrebbero mai immaginato che uno potesse buttarci su segnali a frequenze molto maggiori), l'unica soluzione che avevo trovato allora era di accendere il monitor solo ed esclusivamente quando sentivo dall'audio che era partito l'emulatore 🙂 mi presi un bel rischio ma funzionò anche se con quel metodo abbastanza rudimentale... ma ora vorrei riprendere in mano il vecchio progetto e fare qualche nuovo esperimento per renderlo migliore e aggiornarlo un po', quindi venendo alla domanda del perchè mi serve il "coso" VGA-VGA il motivo è per non far passare nessun segnale che possa rovinare il monitor visto che ormai sono praticamente introvabili.

9 ore fa, Ctec ha scritto:

Come passi da uno all'altro? Mi spiego. Su un monitor PC, widescreen, alta risoluzione 1920x1080, montaggio orizzontale, il MAME te li fa vedere tutti, ma quando mandi un gioco verticale, che so PacMan (che era 224x288) su un monitor a bassa risoluzione (che è minore o uguale di un QVGA 320x240) avresti problemi a visualizzare il verticale (288 > 240).

I monitor arcade anni '80 andavano su quelle risoluzioni. Solo più tardi sono passati alla VGA 640x480, ma la VGA va intorno a 31kHz di riga, che ti darebbe problemi...

Esatto! io tramite AdvanceMame lo faccio andare proprio a quelle micro-risoluzioni (262 linee 15.7 kHz orizzontali e 60 Hz verticali) e ottengo quindi una versione quasi "pixel-perfect" all'originale! una fedeltà nettamente migliore rispetto ad una fatta su un monitor normale o su tv. se vuoi divertirti visto che sei anche tu un cultore dell'argomento, su questo sito trovi una miniera di informazioni sull'hardware che serve e su come funziona https://easymamecab.mameworld.info/

Link al commento
Condividi su altri siti

Grazie.

Io più che cultore del mame (che mi piace, ed uso anche se saltuariamente) sono un cultore dell'hardware e software dell'epoca. Adoro vedere come erano implementati via hardware gli sprite, l'uso delle pallette, e i salti mortali in assembler per eseguire tutto durante le scansioni, e trasferire il tutto al video durante i blanking.

In pratica, uso monitor originali, ma con schede (originali o boolleg o da me rifatte) rigorosamente non simulate. Sono un vecchio pazzoide.

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...