Newsgroup: it.hobby.elettronica.digitale
Titolo: Segnali video VGA - CGA e PIC

Un saluto a tutto il NG.
Scusate il doppio post con il NG I.H.E. :-), ma lì non ho avuto molte risposte forse perchè il mio thread non era molto in tema :)
Spero di avere più fortuna qui :)
 
Ho tre domande da sottoporvi :), spero che qualcuno di buona pazienza mi possa rispondere :D
 
 
Prima domanda:
 
Vorrei interfacciare un PIC ad un monitor arcade (i vecchi giochi da Bar).
Questi monitor, diversamente dai monitor vga tradizionali, hanno una XSync di 15.75kHz invece dei 31,4686kHz della VGA (CGA: 
http://tinyurl.com/8rgmz
, VGA: 
http://tinyurl.com/2y6wbf
)
 
Vorrei utilizzare e modificare questo progetto carino:
http://tinyurl.com/ya4wwau
 
 
Però vorrei farlo fungere, invece che sui monitor VGA, sui monitor arcade.
Secondo voi modificando solo i parametri dei timer presenti nel file vga_game_main.c :
Codice:
 
//------------------------------------------------------------------------------
// Timers
//------------------------------------------------------------------------------
 
    T2CON = 0x1C;   // post = 4;
    T1CON = 1;
    PR2 = (char)(1.2 * 318/4 - 1);      // 31.8 us
 
    CCP1CON = 0x0C;         // PWM mode
 
 
potrebbe fungere?
Se si, che valori dovrei mettere per avere un PWM di 15.75kHz?
 
 
 
Seconda domanda:
 
Questo progettino lo vorrei utilizzare insieme ad un altro PIC.
Il pratica questo PIC2 avrà, tra i tanti compiti, anche quello di switchare da una sorgente PC VGA a quella del PIC1 (vga game) e di attivare/disattivare il PIC1.
Vorrei fare una cosa del genere (schema di principio, molto brutto :)) :
http://i46.tinypic.com/2zg7l7l.png
 
 
Lo switch video SPDT deve fungere anche da amplificatore video dei segnali RGB.
Infatti, i monitor arcade (CGA) accettano segnali video RGB  >1Vpp e <5Vpp, mentre quelli VGA sono mediamente di 0.7Vpp.
Io avevo optato per l'integrato MAX4027:
http://tinyurl.com/c76lq95
 
oppure anche MAX498-MAX499:
http://tinyurl.com/7yqeu26
 
 
Solo che l'amplificazione è solo X2, però mi andrebbe bene.
 
Per quanto riguarda i segnali XSync e Ysync dovrei interlacciarli come previsto da questo schema (si veda la sezione "If your monitor accepts only composite syncs..."):
 
http://tinyurl.com/854s3cq
 
 
In quanto sui monitor arcade (standard) c'è solo il singolo segnale di Sync.
Inoltre tramite PIC2 devo anche prevedere l'attivazione e disattivazione dei 4070 a seconda della sorgente video utilizzata.
 
 
 
Terza domanda:
 
Dovrei interfacciare 16 pulsanti (i controller dei videogiochi arcade) con il PIC.
Soltanto che si può verificare che più pulsanti vengano premuti contemporanemente, quindi l'utilizzo di un encoder l'ho scartata.
C'è qualche modo, "furbo", per poter utilizzare il minor numero possibile di in/out del PIC per interfacciare tutti i suddetti pulsanti?
Io avevo pensato di usare 2 CD4021 shift register (mai usati), ma non so se è la scelta più giusta.
 
 
Vi ringrazio tutti per l'aiuto :)
Ciao.

 potrebbe fungere?
Temo di no;
non è solamente una questione di frequenza orizzontale ma anche di
risoluzione.
Volendo usare lo standard  VGA hai una risoluzione di 640x480 pixel
contro i 256x200 pixel del monitor CGA usato per il progetto. Con la
risoluzione VGA hai una frequenza di aggiornamento di pixel di 25MHz e
quel micro se non ricordo male va al massimo, con pll attivo, a 96MHz;
questo per dire che con un rapporto 96MHz/25MHz~=4, che è piuttosto
basso visto che potresti eseguirci un paio di istruzioni assembler, e
non avresti nemmeno il tempo di leggere i dati dalla memoria per poi
aggiornare i vari pixel che compongono l'immagine.

 aggiornare i vari pixel che compongono l'immagine.
 
Ciao Hexfet13,
innanzi tutto grazie :-)
 
Forse ho interpretato male la tua risposta (o forse mi sono espresso male nel primo post :D), il progetto originale questo: 
http://tinyurl.com/ya4wwau
 è stato fatto per funzionare sui monitor VGA (ci sono altri progettini che sfruttano i PIC per fungere con la VGA).
Io volevo modificarlo per farlo fungere sui monitor CGA (i padri del VGA, ad esempio venivano usati nei vecchi IBM) che funzionano praticamente ad una frequenza pari alla metà dei VGA.
E' chiaro che non è solo una questione di XSync, infatti è anche il "pixel clock frequency" (che è pari alla metà di quello della VGA di 25MHz) che deve essere in sync con, appunto, il segnale di XSync.
 
Quindi penso che, forse, alla fine bisognerebbe dimezzare i timer di quel progettino per farlo fungere sui monitor ECG.
 
Grazie ancora :)
Ciao

 Forse ho interpretato male la tua risposta (o forse mi sono espresso male nel primo post :D), il progetto originale questo:http://tinyurl.com/ya4wwauè stato fatto per funzionare sui monitor VGA (ci sono altri progettini che sfruttano i PIC per fungere con la VGA).
 
Effettivamente ero convinto che i vecchi videogiochi da bar avessero
il monitor VGA (forse non troppo vecchi) e pensavo che volessi
aumentare la risoluzione da 256x200 a 640x480 nonostante tu più avanti
nel post avessi scritto di volerlo adattare ad un VGA.
Quindi oltre ad adattare le tensioni, dovrai adattare nel codice non
solo il timer affinchè tu abbia la corretta frequenza orizzontale/
verticale ma anche tutti i front porch/back porck ecc.. che
sicuramente saranno presenti anche nello standard cga e che io non
conosco.
Una volta che hai tutti i dati dello standard CGA apporta le modifiche
al codice e verifica le temporizzazioni con mplab che in questo caso
può risultare molto utile.