Pages: [1] 2 3 ... 9   Go Down
Author Topic: Arduino e TV  (Read 9371 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Full Member
***
Karma: 0
Posts: 144
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti.
Ho da poco scoperto che è possibile collegare il nostro Arduino alla TV tramite cavo RCA. Guardando sul playground ho visto la libreria tvout e lo schema di connessione molto semplice, ho bisogno di un paio di giorni per reperire le giuste resistenze e il cavo, però ho visto che esiste anche una shield specifica, la tellymate.
Mi chiedo che differenza c'è tra usare il collegamento "semplice" visto sul playground e la tellymate, che a livello costruttivo mi pare molto più complessa.
Mi scuso se è una domanda banale, ma sono proprio all'inizio.
Grazie.
Logged

Rome
Offline Offline
God Member
*****
Karma: 1
Posts: 987
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non ne sono sicuro, ma credo che sulo shield ci sia un processore dedicato perche' l'Amtel non è abbastanza potente per generare segnali video.
Credo, aspettiamo pero' qualcuno che se ne intende.
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 144
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Innanzitutto grazie per l'interessamento.
Sicuramente la tellymate shield (link: http://www.batsocks.co.uk/products/Shields/TellyMate%20Shield.htm ) permette qualcosa in più rispetto al normale collegamento del cavo RCA all' Arduino, da quel poco che ho capito è possibile scrivere sulla TV utilizzando il comando serial come se si usasse la seriale, batsocks fornisce anche un sistema per la creazione di caratteri, e credo utilizzi sequenze di controllo predefinite già implementate.
Devo capirci meglio qualcosa, comunque penso che le stesse cose siano fattibili utilizzando la libreria tvout e il solo Arduino.
http://www.flickr.com/photos/29973568@N07/4822416805/in/photostream/lightbox/
Probabilmente si vedrebbero i limiti hardware e di memoria su applicazioni più complesse, comunque esistono varie shield per collegarsi alla Tv, c'è anche la videogame shield, hackvision che usa un Arduino dedicato come tellymate, rimango in attesa anch'io di qualcuno più informato!!
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21650
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

L'arduino, o meglio l'Atmega328, basta ed avanza non solo a generare un segnale video B/N, ma lo può generare anche a colori e gestire contemporaneamente effetti sonori e codice del giocatore.
Sono un paio di mesi che mi documento e la cosa, anche se non alla portata di tutti (i progetti che si trovano online sono stati scritti prevalentemente in assembly), è sicuramente fattibile.

Ecco un po' di link:
http://avga.prometheus4.com/ AVGA
http://belogic.com/uzebox/ Uzebox: questo progetto è fantastico
http://benryves.com/projects/tvtext Generazione segnale con 2 resistenze

L'Uzebox, di cui esiste anche una versione basata su chip DIP (Fuzebox) fa capire di cosa sia realmente capace un chip Atmega.

Ne conosco altri di link ma ora a mente non mi vengono. Ma se fate una ricerca su internet ci sono un sacco di cose a giro.
Io sto studiando appunto di realizzare un microcomputer basato su uno Z80 ed usare un Arduino o un Atmega "solitario" come GPU.
Logged


0
Offline Offline
Full Member
***
Karma: 0
Posts: 144
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ti ho visto scrivere su altri post, so che ti stai muovendo in quella direzione, sono molto interessato al tuo progetto, una cosa per volta, adesso devo riuscire a tirare fuori sto benedetto segnale alla tv, con un collegamento del genere riesco a vedere qualcosa sulla TV?
http://www.arduino.cc/playground/Main/TVout
Mi serve una cosa semplice per cominciare, avevo già visto quei link, ma il 90% per me è arabo, magari piano piano..
p.s. grazie delle delucidazioni so che sei molto avanti.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21650
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

TVOut è simile a TvText, usa cioè 2 resistenze esterne come DAC per convertire il segnale generato dall'Arduino in segnale composito video (un DAC è un convertitore digitale/analogico).

Entrambi sono basati sul sistema di gestire la generazione video tramite interrupt.

Credo che rispetto ad altri progetti scritti in assembly, la risoluzione usata sia da imputarsi alla velocità raggiungibile dal C compilato, inferiore rispetto all'assembly puro.
Logged


Rome
Offline Offline
God Member
*****
Karma: 1
Posts: 987
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
L'arduino, o meglio l'Atmega328, basta ed avanza non solo a generare un segnale video B/N, ma lo può generare anche a colori e gestire contemporaneamente effetti sonori e codice del giocatore.
Da non crederci!

Quindi sarebbe DAVVERO possibile usare una arduino per ricostruire un intero Commodore 64!  :-? L'idea balzana mi passava per la testa l'altro giorno... Se è davvero così veloce, basterebbe affiancargli una memorietta da 64 KB... e riscrivere l'intero OS del Commodore 64 in Arduino-C . O non è così semplice? I programmi possono risiedere in una memoria esterna?!?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21650
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Intanto ti invito a visitare il link di Uzebox che ho pubblicato qualche post sopra.

Poi ti sfato subito un mito, uno scoglio contro cui mi sono schiantato anch'io. Gli Atmega ad 8 bit NON possono gestire programmi esterni alla propria memoria per cui anche se teoricamente fattibile, l'emulazione di un computer ad 8 bit quale il C64 su un unico uC la vedo cosa molto dura.
Tieni conto che il C64 non era solo il 6510: ad esso c'erano affiancati il VIC-II ed il SID, più altri chip secondari per la gestione del resto del computer.

Per ricreare un mini C64 all'interno di un unico mC dovresti scrivere tanti emulatori quanti sono i chip di quel computer. Fatto questo, dovresti poi inserire un emulatore della macchina, poi il KERNAL ed il BASIC del C64, la sua mappa caratteri ecc... Ad oggi, difatti, non ho visto nessun computer ad 8 bit riprodotto in un Atmega.
Logged


0
Offline Offline
Full Member
***
Karma: 0
Posts: 144
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie leo72, mi farebbe piacere sapere a che punto sei con il tuo progetto visto che ti sei già scontrato con diversi problemi, mi piacerebbe realizzare un semplice SO capace di visualizzare e modificare file di testo da una scheda SD, magari mi metti nella direzione giusta.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21650
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sto studiando sui fogli.  8-)
Siccome il progetto è complesso, sto studiando gli integrati che mi serviranno perché con una famiglia da mandare avanti non posso permettermi di ordinare chip su chip, quindi meno sbaglio e meglio è  ;D

Al momento ho un progetto di massima su cosa il mio microcomputer dovrà fare però il vero problema sarà poi la programmazione dello Z80, che non ho mai affrontato dato che io in passato ho programmato i chip MOS 65xx

Ti suggerisco anche questo link, se vuoi seguire la mia strada:
http://www.benryves.com/projects/z80computer
contiene un sacco di info ed esperimenti sugli Atmega e sugli Z80 usati per realizzare un microcomputer tipo quello che vorrei fare io.
Logged


Rome
Offline Offline
God Member
*****
Karma: 1
Posts: 987
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Quote
Poi ti sfato subito un mito, uno scoglio contro cui mi sono schiantato anch'io. Gli Atmega ad 8 bit NON possono gestire programmi esterni alla propria memoria per cui anche se teoricamente fattibile, l'emulazione di un computer ad 8 bit quale il C64 su un unico uC la vedo cosa molto dura.
Ma io non parlavo di emulazione! Parlavo proprio di "riprodurre" o "ricreare" nativamente un C64 atmel-based!
Emulare un processore a 8 bit tramite un altro processore a 8 bit non mi sembra fattibile, anche se il C64 andava a 1 MHz.
Pero' non mi ricordavo del VIC-II ma solo del SID... :-? Pero' abbiamo già visto che l'atmel puo' creare segnali video autonomamente, quindi non servirebbe, forse. L'audio poi non sarebbe indispensabile, trattandosi di un progetto puramente dimostrativo...
Il vero grosso problema sarebbe riscrivere da zero un OS in assembly, anche se solo di una 30ina di kb!  :-?
Ma fino a quanta RAM arrivano ad avere gli Atmel? O meglio, quanta memoria-programma... come si chiama, "EEPROM interna"?!?  :-?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21650
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il SID era il chip audio, il VIC-II era il chip grafico (immagine e sprite).

Detto questo, non ho capito cosa vuoi fare, allora. Emulare un sistema (CPU, computer o quel che sia) significa riprodurne le funzioni tramite un differente hardware. Ricreare un C64 usando un Atmega significa in buona sostanza emularne le funzioni, no?
E per simulare un OS devi scrivere anche un emulatore della macchina su cui gira quell'OS, altrimenti come puoi ad esempio dirgli di scrivere la lettera "A" nella prima locazione dello schermo se non hai riprodotto l'hardware del C64?

Cmq, il SO del C64 era composto da diverse parti: c'era il KERNAL, ovvero il SO vero e proprio, poi la mappa caratteri (sempre in ROM), e l'interprete BASIC che fungeva da interfaccia e da linguaggio. Per non parlare di tutte quelle decine di KB di RAM usate per le impostazioni del sistema (pagina 0), i dati degli sprite del VIC-II, i dati audio del SID ecc... (http://sta.c64.org/cbm64mem.html)

Detto questo, dovrai anche ricreare un sistema per gestire l'Input dall'utente e l'output su qualche dispositivo, altrimenti il computer sarebbe inusabile. Quindi devi scrivere tutte le routine per gestire una tastiera e mandare l'output su qualcosa: un LCD o una TV che dir si voglia.

Insomma, NON è assolutamente un progetto facile. Ed usare un solo Atmega mi pare quasi impossibile. Considera che l'Atmega328 dell'Arduino ha solo 32 KB di Flash RAM (quella dove è possibile inserire il codice da eseguire): l'Eeprom interna è usabile solo come memoria non volatile ma non come memoria per il codice; l'SRAM interna viene usata dall'Atmega come spazio per le variabili del programma.
Logged


Rome
Offline Offline
God Member
*****
Karma: 1
Posts: 987
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Il SID era il chip audio, il VIC-II era il chip grafico (immagine e sprite).

Detto questo, non ho capito cosa vuoi fare, allora. Emulare un sistema (CPU, computer o quel che sia) significa riprodurne le funzioni tramite un differente hardware. Ricreare un C64 usando un Atmega significa in buona sostanza emularne le funzioni, no?
Per me un emulatore è una "cosa SW", un programma che fa finta di essere un computer.

Quote
E per simulare un OS devi scrivere anche un emulatore della macchina su cui gira quell'OS, altrimenti come puoi ad esempio dirgli di scrivere la lettera "A" nella prima locazione dello schermo se non hai riprodotto l'hardware del C64?
Allora diciamo che più precisamente mi chiedevo se sarebbe tenicamente possibile fare il porting del S.O. del C64 da 6502 ad Atmel.

Quote
Cmq, il SO del C64 era composto da diverse parti: c'era il KERNAL, ovvero il SO vero e proprio, poi la mappa caratteri (sempre in ROM), e l'interprete BASIC che fungeva da interfaccia e da linguaggio. Per non parlare di tutte quelle decine di KB di RAM usate per le impostazioni del sistema (pagina 0), i dati degli sprite del VIC-II, i dati audio del SID ecc... (http://sta.c64.org/cbm64mem.html)

Detto questo, dovrai anche ricreare un sistema per gestire l'Input dall'utente e l'output su qualche dispositivo, altrimenti il computer sarebbe inusabile. Quindi devi scrivere tutte le routine per gestire una tastiera e mandare l'output su qualcosa: un LCD o una TV che dir si voglia.

Insomma, NON è assolutamente un progetto facile. Ed usare un solo Atmega mi pare quasi impossibile. Considera che l'Atmega328 dell'Arduino ha solo 32 KB di Flash RAM (quella dove è possibile inserire il codice da eseguire): l'Eeprom interna è usabile solo come memoria non volatile ma non come memoria per il codice; l'SRAM interna viene usata dall'Atmega come spazio per le variabili del programma.
Si', s', tutto l'ambaradam; se ho capito bene ci sono Atmel anche da 128 KB, quindi mi chiedevo, appunto, se sarebbe possibile il porting.
Ma solo per curiosità, non credo che sarei in grado di farlo io. A casa ho un libro col disassemblato commentato di tutta la ROM del C64, e una volta mi misi ad esaminare come funziona punto per punto, fino a scoprire la routine che andava ad accendere uno per uno i pixel sullo schermo per stampare i caratteri!   smiley-wink

Ma, sempre per capire, sulla Arduino si puo' montare un qualunque Atmel compatibile a livello di piedini?

Cioe', questo potrebbe diventare un commodore sessantaduino?  ;D
http://www.atmel.com/dyn/products/product_card.asp?PN=ATmega64A
Logged

cuneo
Offline Offline
God Member
*****
Karma: 3
Posts: 785
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

il mega!! ti basta la rom 128k smiley-razz

auguri però a riscriverti tutto....
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21650
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Appunto: il problema non è tanto il "farci stare tutto", il problema è proprio il "riscrivere tutto".

Un conto è scriversi un mini SO per far fare ad un 6502 qualche sciocchezza, un conto è scrivere un emulatore di un computer. Fattibile ma a costo di mesi di lavoro. Ed il gioco, alla fine, non vale la candela: tanto vale realizzare un clone, spendi meno e ci metti meno tempo.
Logged


Pages: [1] 2 3 ... 9   Go Up
Jump to: