Arduino e TV

il mega!! ti basta la rom 128k :stuck_out_tongue:

auguri però a riscriverti tutto....

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.

ma infatti non ho intenzione di farlo, mi chiedevo solo se fosse tecnicamente possibile.
Visto che lo è... immagino che quacuno prima o poi lo farà!
Magari è persino possibile farlo in automatico, se il set di istruzioni Atmel è più grande di quello del 6502, e immagino che sia cosi'.
Per curiosità, sapete dove trovare i set di istruzioni di un Atmel 128K (o 64K) e del 6502? :slight_smile:

Per il 6502 puoi vedere qui:
http://e-tradition.net/bytes/6502/6502_instruction_set.html

Per l'Atmega, quelli ad 8 bit usano tutti lo stesso set. Guarda sul sito di Atmel.

Ciao ragazzi, ci sono novità, ieri notte, appena ho potuto, ho provato a collegare Arduino al mio televisore lcd fullHD INNO HIT da 19'' utilizzando lo schema nel playground:
http://www.arduino.cc/playground/Main/TVout
Caricato lo sketch DemoPAL, sullo schermo non visualizzo nulla, o meglio, il segnale alla TV arriva, ma con qualità pessima, posso dire che la "demo" viene visualizzata perchè ho visto l'output che genera su youtube e riesco ad intravedere qualcosa nel nero dello schermo.
Devo capire se la scarsa qualità del segnale è dovuta alla pessima realizzazione del collegamento del cavo RCA dalla breadboard alla televisione, in effetti nella fretta, e con i pochi strumenti a disposizione (non ho un saldatore e non ho mai effettuato una saldatura, per ora..) ho usato un cavo RCA tagliato, infilando nella breadboard il filo del segnale utile "+", e la calza opportunamente "arrotolata", senza utilizzare alcun connettore.
Devo provare anche a collegarmi ad un televisore a tubo catodico e, nel caso visualizzassi correttamente, capire se devo aggiungere altri componenti o modificare lo sketch.
Oggi, se faccio in tempo compro un saldatore!
Sono in attesa di questo componente, ho chiesto eventualmente la disponibilità a Robotitaly, sennò lo prendo qua:
http://www.homotix.it/prodotti.cfm?IdProdotto=1377
Sto trovando difficoltà, ma sono fiducioso nella riuscita del progetto!
Grazie per l'attenzione dedicatami e mi scuso se la lettura è un po' pesante, ma scrivo di argomenti che non conosco bene.

Allego lo sketch DemoPAL che ho usato senza alcuna modifica.

#include <TVout.h>

TVout TV;
unsigned char x,y;

void setup()  {
  x=0;
  y=0;
  TV.start_render(_PAL);      //for devices with only 1k sram(m168) use TV.begin(_PAL,128,56)
}

void loop() {
  TV.clear_screen();
  x=0;
  y=0;
  for (char i = 32; i < 127; i++) {
    TV.print_char(x*6,y*8,i);
    x++;
    if (x > TV.char_line()) {
      y++;
      x=0;
    }
  }
  TV.delay_frame(50);
  TV.clear_screen();
  TV.print_str(0,0,"fill screen pixel");
  TV.print_str(0,8,"by pixel");
  TV.delay_frame(50);
  TV.clear_screen();
  for(x=0;x<TV.horz_res();x++){
    for(y=0;y<TV.vert_res();y++){
      TV.set_pixel(x,y,1);
    }
  }
  TV.delay_frame(50);
  TV.clear_screen();
  TV.print_str(0,0,"draw some lines");
  TV.delay_frame(50);
  for(y=0;y<TV.vert_res();y++){
    delay(10);
    TV.draw_line(0,y,x-y,y,2);
  }
  TV.delay_frame(50);
}

Ciao ragazzi, ci sono novità, ieri notte, appena ho potuto, ho provato a collegare Arduino al mio televisore lcd fullHD INNO HIT da 19'' utilizzando lo schema nel playground:
Arduino Playground - TVout

Ti aggiri di notte coperto dalle tenebre così che nessuno possa vedere le tue malefatte. ;D

Io penso che la scarsa qualità non dipenda dal collegamento volante, l'importante che calza e polo centrale non si tocchino e alle volte sembra così ma a guardare bene poi un malefico filicino della calza tocca e non tocca il polo centrale.

Però potrebbe anche essere il RCA tagliato, danno problemi in campo audio figuriamoci con segnale video composito. Poi si potrebbe vedere di amplificarlo se è troppo debole.

Ciao.

:slight_smile: Mi aggiro di notte coperto dalle tenebre così che nessuno possa vedere le mie malefatte.. è vero!
stasera provo a rifare i collegamenti decentemente sempre con il sistema di ieri, facendo attenzione, come da tuo consiglio. Per quanto riguarda amplificare il segnale, come posso fare??
Grazie MauroTec!

EDIT: Ho rifatto i collegamenti un po' meglio, ho riprovato, ma niente, mi viene il dubbio che cappello in qualcosa, disperato ho cambiato la resistenza da 1k con una da 10k e, alla fine l'output è minimamente più leggibile, quel tanto che basta da rendermi conto che vengono visualizzate solo le righe verticali, delle lettere, della frase draw some lines, e infine una riga al lato sinistro dello schermo che scende in verticale.
Secondo voi cosa devo tentare? Dove sbaglio? Consigli? Suggerimenti?

Allego la foto dello schema di collegamento, le resistenze sono in verticale perchè le ho infilate direttamente nei pin per limitare i collegamenti al minimo.

Uploaded with ImageShack.us

Scusa ma solo oggi ho dato una scorza al sorgente di Tvout. Ecco cosa dice un commento presente nella beta 1, l'ultima versione del software:

Currently only works with NTSC. PAl support would require modifying the timings in video_gen.h as well as the OCR1A ISR to allow for a 16bit line counter.

Io non l'ho ancora provato ma secondo quanto scritto devi modificare il codice.

Cmq ti consiglio di dare un'occhiata a txText: è già "pronto" per lavorare con il segnale PAL e la sua libreria offre un sacco di funzioni (scrolling, finestre, eccc...).
http://www.benryves.com/projects/tvtext

O cavolo! non scusarti leo72 anzi grazie 1000! La cosa che mi dispiace è che sono contro la "pappa pronta" ho letto abbastanza prima di passare alla realizzazione del circuito, ma proprio questa parte mi era sfuggita!
Sono stato tratto in inganno dal fatto che tra gli examples della libreria tvout c'è sia NTSC che PAL.
Svelato l'arcano.

Ok, nuova soluzione, nuovi dubbi.
Visitata la pagina che mi hai linkato.
Ora ho bisogno di alcune delucidazioni.
Ho visto lo schema elettrico dei collegamenti sul sito tvText • benryves.com , li si parla di ATmega168 non di Arduino, quindi, ho verificato tramite Datasheet dell' ATmega328 (ho Arduino 2009) se le connessioni del micro sono uguali e così è, quindi ho cercato di capire ad ogni piedino quale è il pin Arduino corrispondente, ho trovato risposta guardando questa immagine: http://1.bp.blogspot.com/_35u959FBzXo/TMnaojBE1RI/AAAAAAAAAHU/d3KUXlXu1J8/s1600/arduino_ports.png . le resistenze da 1k e 470 ohm vanno su i pin 7 e 8. Per quanto riguarda il cristallo da 20 Mhz il panico! Sul Datasheet dell' ATmega ho visto che arriva fino a 20Mhz, ho capito che tale quarzo è integrato già su Arduino (come potrebbe funzionare altrimenti?), ma non ho capito se è da 16Mhz o 20Mhz, qualora fosse da 16 e non overclokkabile a livello software, come faccio a collegarlo esternamente bypassando quello già presente? Sempre sullo schema al sito tvText: tvText • benryves.com ho visto che collegati al quarzo ci sono anche due condensatori da 12 e 22 pF di cui ignoro funzionamento e necessità.
Credo che la chiave sia in queste righe:
"The AVR needs to be run at 20MHz, so use an external 20MHz resonator and suitable load capacitors. Remember to set the fuses to use an external resonator and disable CKDIV8! "
Leoooooooooooo aiutami tuuuuuuuuuuu!!!!!!

OT
Per adesso non voglio continuare, sennò il post diventa un pappone di domande e link difficile anche solo da leggere, vorrei fare tutto da me, ma proprio non ci sto dentro, sono banalità per voi, ma io non ho proprio le basi per queste cose, mi applico tanto ma è difficile, scusate lo sfogo, ma ogni cosa che leggo devo cercare di capire cosa significa e quando leggo la spiegazione devo cercare altre informazioni per capirla.., so che conoscerete sicuramente la frustrazione di non sapere e la voglia di riuscire, chiedo aiuto a voi che siete dei veri maghi in queste cose, vi leggo con ammirazione, non voglio accantonare questo progetto, mi piacerebbe realizzarlo e fare un bel post dove spiego tutto magari per qualcun altro che ha le mie stesse difficoltà.
FINE OT

Allora, io sono nella tua stessa situazione :wink:
Mi sono avvicinato all'elettronica pratica solo da un paio di mesi, da quando cioè ho comprato l'Arduino Uno. Quindi stiamo facendo un percorso insieme perché tu dai delle idee a me ed io le do a te ;D

Detto questo, il progetto tvText effettivamente prevede l'utilizzo di un Atmega, che è il chip alla base di Arduino. Quindi, ricapitoliamo:

  • Atmega: nome del chip sviluppato da Atmel
  • Arduino: nome della scheda basata su un Atmega

Fatta questa precisazione, un Arduino può funzionare anche staccato dalla scheda. Puoi programmarlo con l'Arduino e poi portarlo in un progetto.
Questione cristallo esterno: un Atmega può usare sia il generatore di clock interno sia uno esterno. Per far ciò vanno programmati alcuni registri interni dell'Atmega (detti "fuse") con un programmatore che NON è la scheda Arduino (o per lo meno non è l'Arduino Uno).

Però, siccome l'Arduino ha un risonatore (un generatore di clock simile al cristallo) esterno penso quindi che sia già programmato per usare un cristallo esterno ;D
Se la logica non mi inganna, quindi, in teoria potresti programmare l'Atmega dell'Arduino con lo sketch del progetto tvText, poi togliere l'Atmega dalla scheda ed inserirla in una breadboard e ricostruire il semplice circuito.

I 2 condensatori credo servano per dare stabilità al segnale di clock ma di solito si usano con un risonatore, non con un cristallo. Sinceramente l'articolo del tvText è un po' "casereccio" nel senso che parla di usare un risonatore (quindi servirebbero i 2 condensatori) però nello schema si vede distintamente il simbolo di un cristallo (che in teoria non li richiederebbe).

Infine, una parola sull'Atmega168 e sulla frequenza. Nel tvText parlano di un Atmega168 perché all'epoca in cui è stato scritto Atmel vendeva quel chip e non l'Atmega328 che è ora usato sugli Arduino Uno. Però i 2 chip sono assolutamente identici a livello di architettura: cambiano solo i quantitativi di memoria interna. Quindi puoi usare l'Atmega328 dell'Arduino.
Il clock dell'Arduino è di 16 MHz per retrocompatibilità con le precedenti schede ma un Atmega328 ha come specifica di frequenza massima 20 MHz, per cui basta acquistare un tale cristallo e sei a posto.

Ti terrò informato non appena ho fatto qualcosa anch'io. Proprio stamani ho ordinato un bel po' di roba tra cui i componenti per realizzare il tvText (più una pletora di chip TTL per il mio progettino ::slight_smile: ).

un Arduino può funzionare anche staccato dalla scheda. Puoi programmarlo con l'Arduino e poi portarlo in un progetto.

Un atmega può fuzionare anche staccato dalla scheda Puoi programmarlo con l'Arduino e poi portarlo in un progetto. (non è un appunto è solo per mettere ordine nella mia testa, poi figurati se sono nella posizione.. :slight_smile: )

Questione cristallo esterno: un Atmega può usare sia il generatore di clock interno sia uno esterno.

Chiaro, però le "uscite" dell' atmega di "clock" non sono riportate sull' Arduino quindi per usare un generatore di clock esterno va necessariamente rimosso l'atmega dalla scheda.

Per far ciò vanno programmati alcuni registri interni dell'Atmega (detti "fuse") con un programmatore che NON è la scheda Arduino (o per lo meno non è l'Arduino Uno).

A parte che fuse google lo traduce con fusibile (che magari è pure il termine giusto) mi chiedo, visto che sul datasheet del 328 porta massima velocità di clock 20 mhz, non è possibile portare a tale frequenza l'atmega lasciandolo su Arduino? magari cambiando qualche valore nel bootloader.. Ci terrei a mantenermi su Arduino in quanto il passo successivo sarà aggiungere al mio circuito una porta ps/2 e visto che sono già una capra penso mi imbarcherei in qualcosa di più grande di me (per adesso)

Però, siccome l'Arduino ha un risonatore (un generatore di clock simile al cristallo) esterno penso quindi che sia già programmato per usare un cristallo esterno
Se la logica non mi inganna, quindi, in teoria potresti programmare l'Atmega dell'Arduino con lo sketch del progetto tvText, poi togliere l'Atmega dalla scheda ed inserirla in una breadboard e ricostruire il semplice circuito.

A programmare tramite ide e rimuovere l'atmega ci ero arrivato, sempre che preferirei usarlo "on board" per il motivo appena citato, per quanto riguarda caricare lo sketch, da quello che ho capito tvtext è una libreria, ho scaricato il pacchetto e contiene molti file che andrebbero inseriti nelle cartelle dell' ide, poi, inclusa la libreria nel listato utilizzarne le funzioni secondo esigenza, Correggimi se sbaglio.

I 2 condensatori credo servano per dare stabilità al segnale di clock ma di solito si usano con un risonatore, non con un cristallo. Sinceramente l'articolo del tvText è un po' "casereccio" nel senso che parla di usare un risonatore (quindi servirebbero i 2 condensatori) però nello schema si vede distintamente il simbolo di un cristallo (che in teoria non li richiederebbe).

Questa parte andrebbe sviscerata da uno che ci capisce..

A questo punto mi chiedo se è più facile avere qualche informazione per modificare il codice del tvout per il funzionamento su televisioni pal, sempre che non capisco come mai tale libreria porta demo per ntsc e pal.

Ti terrò informato non appena ho fatto qualcosa anch'io. Proprio stamani ho ordinato un bel po' di roba tra cui i componenti per realizzare il tvText (più una pletora di chip TTL per il mio progettino ).

Anche io domani o dopodomani devo fare un paio di ordini vi sto che già ti sei mosso, per il quarzo io ho visto questo:

Se mi dici che va bene prendo pure quello da 16 Mhz così mi porto avanti.
Condensatore da 22pF, mi pare di aver capito che ne serve anche uno da 12pF sul sito non è presente, ma lo rimedio pure al negozio sotto casa.

Già che ci sono prendo pure un altro ATmega!
Visto che vorrei farmi una shield alla fine o una schedina completa come primo progetto completo prendo pure adattatore RCA e PS2 da breadboard, se tutto va bene li saldo su una 1000pads..

Mi fa piacere vedere che non sono "solo" chiedo a qualcuno di spendere 2 minuti per chiarirci un pò le idee.

Grazie.

Dove cavolo è il tasto QUOTE?
(sono a pezzi) :o

Il tasto quote è questo , e per qualche motivo non compare nel thread, ma solo mentre rispondi a un messaggio, quindi devi usarlo a mano per racchiudere le parti di messaggio che citi, senno' non si capisce piu' niente...

un Arduino può funzionare anche staccato dalla scheda. Puoi programmarlo con l'Arduino e poi portarlo in un progetto.

Un atmega può fuzionare anche staccato dalla scheda Puoi programmarlo con l'Arduino e poi portarlo in un progetto. (non è un appunto è solo per mettere ordine nella mia testa, poi figurati se sono nella posizione.. )

E' corretto ciò che hai scritto tu, ho sbagliato io ::slight_smile:

Chiaro, però le "uscite" dell' atmega di "clock" non sono riportate sull' Arduino quindi per usare un generatore di clock esterno va necessariamente rimosso l'atmega dalla scheda.

Sì, altrimenti vai col clock dell'Arduino, 16 MHz.

A parte che fuse google lo traduce con fusibile (che magari è pure il termine giusto)

Sì, ma vengono intesi dei registri interni che non sono modificabili senza dialogare direttamente con microcontrollore tramite appunto un programmatore. Ecco perché forse usano il termine "fuse", che mantengono cioè le impostazioni a meno di modifiche particolari.

mi chiedo, visto che sul datasheet del 328 porta massima velocità di clock 20 mhz, non è possibile portare a tale frequenza l'atmega lasciandolo su Arduino? magari cambiando qualche valore nel bootloader..

Da quel che ho letto qui, l'Atmegsa328 ha un risonatore interno cloccato a 8 MHz, quindi ci fai poco se vuoi 20 MHz.

Ci terrei a mantenermi su Arduino in quanto il passo successivo sarà aggiungere al mio circuito una porta ps/2 e visto che sono già una capra penso mi imbarcherei in qualcosa di più grande di me (per adesso)

Portare un Atmega su una breadboard, una volta che esso ha lo sketch programmato, è estremamente semplice. Sullo stesso link vedi infatti che necessita di poche connessioni.

per quanto riguarda caricare lo sketch, da quello che ho capito tvtext è una libreria, ho scaricato il pacchetto e contiene molti file che andrebbero inseriti nelle cartelle dell' ide, poi, inclusa la libreria nel listato utilizzarne le funzioni secondo esigenza, Correggimi se sbaglio.

Esatto, è così. Difatti io per sketch intendevo per lo meno la demo allegata a tvText. Poi, essendo appunto una libreria, la puoi includere in qualunque tuo progetto.

I 2 condensatori credo servano per dare stabilità al segnale di clock ma di solito si usano con un risonatore, non con un cristallo. Sinceramente l'articolo del tvText è un po' "casereccio" nel senso che parla di usare un risonatore (quindi servirebbero i 2 condensatori) però nello schema si vede distintamente il simbolo di un cristallo (che in teoria non li richiederebbe).

Questa parte andrebbe sviscerata da uno che ci capisce..

Altri progetti mettono sempre i 2 condensatori. Leggendo in giro ho letto che servono per stabilizzare la frequenza togliendo risonanze parassite. Però non hanno dei valori "standard" ma ho visto che devono essere calcolati con una certa formula:
http://www.electronicspoint.com/crystal-capacitor-formula-parallel-mode-t1986.html

Andrebbero presi i dati del cristallo che vuoi tu e dell'Atmega e visti i valori corretti. Cmq penso che i 22 pF siano quasi "standard" per un Atmega328 a 20 MHz. Anche il progetto AVGA difatti usa quel valore, con il uC appunto a 20 MHz.

A questo punto mi chiedo se è più facile avere qualche informazione per modificare il codice del tvout per il funzionamento su televisioni pal, sempre che non capisco come mai tale libreria porta demo per ntsc e pal.

Qui ci vorrebbe uno che ha già affrontato tale problema, cioè la generazione di un segnale video mediante uC.

Anche io domani o dopodomani devo fare un paio di ordini vi sto che già ti sei mosso, per il quarzo io ho visto questo:

Non c'è il link ;D

Se mi dici che va bene prendo pure quello da 16 Mhz così mi porto avanti.
Condensatore da 22pF, mi pare di aver capito che ne serve anche uno da 12pF sul sito non è presente, ma lo rimedio pure al negozio sotto casa.

Per txText? No, quella dicitura dice di usare 2 cond. con piccola capacità, 12 o 22 pF. Però vanno usati uguali. Io ho preso quelli da 22 pF.

Già che ci sono prendo pure un altro ATmega!

Assicurati che abbia il bootloader precaricato! Altrimenti non te ne fai di nulla, se hai l'Arduino Uno, perché non lo puoi programmare tramite scheda ma ti tocca acquistare un programmatore (come ho fatto io) o realizzarne uno a mano.
In genere trovi gli Atmega con il bootloader di Arduino 2009, meglio se cerchi quelli col bootloader dell'Arduino Uno. E' più piccolo: solo 512 byte.

Visto che vorrei farmi una shield alla fine o una schedina completa come primo progetto completo prendo pure adattatore RCA e PS2 da breadboard, se tutto va bene li saldo su una 1000pads..

Occhio a non correr troppo. Prima "spippola" un po' con l'Atmega e tvText, che sarà già tanta roba.

Mi fa piacere vedere che non sono "solo" chiedo a qualcuno di spendere 2 minuti per chiarirci un pò le idee.

Grazie

Grazie a te ;D

Allora, prima di tutto ti do il link di un topic che ho aperto in merito alle modifiche da fare alla libreria tvout per PAL sul forum inglese:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1294769166
Non ho accantonato la libreria tvout, ma tieni presente che sono su ipad quindi non posso approfondire.

Per l'atmega so che devo controllare se c'è già il bootloader precaricato però cavolo se lo metto su Arduino anche vergine perchè non lo carica?

Effettivamente guardando il datasheet del 328 potrei anche ampliare il circuito in futuro su breadboard, oggi viaggiando un pò con la testa ho pensato che potrei utilizzare comunque Arduino demandando la parte grafica all'atmega "solo"

Il quarzo:

Quello da 16 mhz è della stessa serie..

IL condensatore 22pF:

Volevo sapere se stai acquistando anche qualche risonatore su robotitaly non ne ho visti, eventualmente dove lo prenderesti.

Ciao!

Ti hanno risposto in merito a TvOut :wink:

Tornando all'Atmega senza bootloader, non funziona sull'Arduino perché il bootloader serve proprio a permettere al chip di accettare la riprogrammazione degli sketch dal computer. Quindi senza bootloader un Atmega si programma solo o con un Arduino vecchio (dalla serie 2009 compresa in giù) per via della presenza del chip FTDI che sull'Uno non c'è (che funge da convertitore usb/seriale) oppure con un programmatore.

Il quarzo va bene. Io ho ordinato da RS (www.rs-online.com) perché mi servivano cose >strane<, tipo logiche TTL ::slight_smile:
Ed allora ho fatto un ordine unico. RS ha un sacco di roba ma è caruccio e vende con minimi quantitativi.

Infine, l'idea che tu hai è quella che io ho già avuto, e cioè di usare un Atmega (che già ho comprato, ma senza bootloader perché l'ho ordinato prima di scoprire che il mio Arduino Uno non poteva programmare gli Atmega) come GPU ed un altro Atmega, l'Arduino oppure uno Z80 che ho nel cassettino come CPU ::slight_smile:

Il programmatore mi sta arrivando dall'America per cui immagino che ci vorrà almeno un'altra settimana. Nel frattempo spero di ricevere la merce domani così inizio anch'io a sperimentare con tvText o TvOut.

Ok, capito.
Io ho la 2009 e comunque richiede un cavo per FTDI, ho visto in giro che qualcuno lo ha costruito a partire da un normale cavo Nokia, credo proprio che prendero l'atmega già pronto!
Il programmatore esterno è molto costoso?

Tornando a tvout, io sono fuori casa, hai per caso visto in Video_gen.h se c'è corrispondenza o no con i valori Che ha scritto AWOL sul forum inglese?

Se hai il 2009 nel playground c'è il progettino per poter programare un Atmega usando la scheda Arduino come programmatore.

Un programmatore vero e proprio non costa moltissimo. Dai 20-25 euro in su.

Ultima cosa: ho riguardato la libreria. Io avevo aperto la 5.91 con audio, ma nella versione Beta 1 non c'è traccia dell'impossibilità di usare il modo PAL. Tu quale avevi usato?

Aggiornamento:
stamattina mi è arrivato il pacco da RS.
Finalmente ho potuto provare TvOut. Effettivamente la Beta1 va senza bisogno di modifiche, per cui se a te non si vede forse hai dei falsi contatti.