Mi è venuta in mente un'idea per la scheda video,
poi non so se ti piacerà e realizzerai in questo modo,
oppure prenderai alcune idee da qui, e altre da altre parti,
Post by Antonio Di StefanoQuindi alla fine a volere essere ottimisti ti ritrovi con un pixel clock di
1MHz! Che non è sufficiente ad ottenere neanche una risoluzione di
320x200.
E' vero. Con un pic non riesci a generare un segnale video
di risoluzione decente in tempo reale.
Non so se conoci questo progetto, è di Rickard Gunee,
ed è il gioco del pong e del tetris con immagine video
generata in tempo reale da un PIC 16F84:
http://www.rickard.gunee.com/projects/
L'immagine generata è in bianco e nero,
per il colore, a usato l'SX, che è più veloce.
Io ho realizzato in un PIC16F628,
il tetris e il pong insieme, condensando il codice
che Rickard ha tenuto separato in due PIC16F84.
Quando usato per scrivere testo,
occorreva un'intera riga orizzontale
nera per preparare in byte di memoria adiacenti
la riga successiva, che veniva sparata più in fretta
possibile, usando l'istruzione rlc,
(Rotate left through carry) su una porta
in cui l'ultimo bit a destra andava a schermo,
e gli altri 7 erano configurati come input:
barbatrucco per sparare un pixel per ogni istruzione.
Così vengono sparati 8 pixel, quindi
schermo nero per preapare l'altro byte,
quindi altri 8 pixel. Non si riescono a mettere
più di 8 caratteri 8x8 per riga, con questo sistema.
Quindi l'idea di generare l'immagine video
in tempo reale col PIC non è praticabile.
Però c'è questa memoria, venduta da RS,
che ha abbastanza capacità per memorizzare
un'intera schermata PAL, con campionamenti a 8 bit.
Ma soprattuto è una FIFO, consente letture e scritture
contemporanee, e a differenti velocità di clock,
e in modo seriale (senza specificare indirizzo,
ma solo reset e clock). C'è il tipo a 8 bit e quello a 4 bit.
http://www.okisemi.com/jp/datadocs/doc-eng/msm518221a.pdf
(Grazie al mio omonimo paolo
per avermi fatto conoscere questo chip).
Quindi puoi usare questa RAM come buffer video,
in uscita un semplice oscillatore e un DAC,
per generare l'immagine video, anche a refresh elevati.
In ingresso il PIC, che genera l'immagine video
solo quando va aggiornata, e con tutta la lentezza
di cui ha bisogno. Con questo approccio,
può darsi che mentre il PIC aggiorna l'immagine,
e il resto del circuito fa il refresh video,
ottieni per metà immagine la schermata vecchia,
per l'altra metà la schermata nuova, poiché
l'aggiornamento effettuato dal PIC non è
sincrono con il refresh su video. Se vuoi
complicarti la vita, metti due chip di ram,
e implementa un double-buffering:
il PIC aggiorna una ram, a schermo viene
mandata l'altra. Quando la prima è pronta,
le funzioni si scambiano di posto,
ma questa complicazione davvero non serve!
Con questo approccio il PIC ha potenza
di elaborazione libera per funzioni acceleratrici 2D,
per esempio riempire rettangoli di colore uniforme,
tracciare linee inclinate, accesso a palette di colori,
una rom-caratteri interna, riprogrammabile,
e quant'altro :-), sgravando il processore da questi compiti :-)
Non so se si riesce a generare l'immagine
video-composito a colori con algoritmi di calcolo
sofisticati, che io non conosco. Altrimenti dovrai
generare R G B separati, da miscelare
col chip a cui avevi pensato tu, oppure senza
miscelarli, e inviandoli direttamente ad un Tv
con i canali R G B della scart, o ad un monitor VGA.
Spero di averti dato qualche suggerimento utile!
Buona fortuna con questo progetto!
Paolo Sancono - Genio Incompreso http://www.ideegeniali.it/
--
Il cuore ha ragioni che la ragione non conosce
Blaise Pascal