Arduino e TV

Stasera provo XLoader, ARP Arduino Uploader e se non riesco avrdude che mi sembra più complicato.

Mah... mi sorge un dubbio che il firmware sia tutto il software senza distinzione con il bootloader. Mi pare strano che siano ben 40 KB quando il 2009 ce l'ha di 1,5 e l'Uno di 0,5 kB.

Boh... non so che dirti. Prova e fammi sapere, al max ripulisci l'Atmega rimettendoci il bootloader di Arduino.

Stasera non ho risolto niente i programmi non vanno anche settando 57600 bps, in effetti dovrei provare a flashare il 2009, questo ATmega ha precaricato il bootloader UNO, secondo te fa differenza?

Se il .hex è già il bootloader forse sbaglio proprio approccio, non so..

Domani provo avrdude e vedo un po', ma è parecchio incasinato per me, ci sono una sfilza di programmer, se riesco a capire quali vanno usati per 2009 e UNO, posso provarli entrambi.

p.s. dopo aver smoccolato un po' Arduino si è impallato e non mi faceva caricare sketch, segno che qualche effetto sull'ATmega c'è stato, dopo qualche reset e autoformat si è ripreso da solo.

Il bootloader di Arduino (che sia quello del 2009 o dell'Uno fa lo stesso) non va bene.
Rileggendo tutta la documentazione sul TellyMate, mi par di capire che l'hex contiene tutto, sia il bootloader che il firmware.
Andando nel file .bat del 328 c'è una sequenza di codici da usare per avrdude:

avrdude -B 5 -p atmega328p -c usbasp -U lfuse:w:0xff:m -U hfuse:w:0xd9:m -U efuse:w:0x07:m -qq

Gli ultimi 3 sono le impostazioni per i fuse. Andando qui:
http://www.engbedded.com/fusecalc/
e selezionando il 328, in fondo alla pagina metti quei 3 valori e noti che vengono modificate le impostazioni dei fuse secondo uno schema preciso che prevede un bootloader di 2 kB, quando quello dell'Arduino Uno è di 512 byte.

Sì, ti confermo che quel file .hex contiene tutto. Ho fatto il make dei sorgenti per l'Atmega328 ed ho ottenuto un file IDENTICO byte-per-byte (verificato con diff) a quello contenuto nella cartella Firmware.

Quindi devi flashare quello con avrdude direttamente, usando i parametri contenuti nel file .bat.

Ok, allora provo a mettere questi valori:

avrdude -B 5 -p atmega328p -c usbasp -U lfuse:w:0xff:m -U hfuse:w:0xd9:m -U efuse:w:0x07:m -qq

Mi dici dove posso scaricare avrdude, così sono sicuro di usare la versione giusta?

Io ho Linux per cui era tra le dipendenze richieste per usare l'IDE di Arduino. Su Windows non so dove lo puoi trovare, o se è già compreso nell'IDE anche lì.

Non mi sono arreso sto tentando, ma non mi ci raccapezzo:
errore
avrdude.exe: stk500_getsync(): not in sync: resp=0x00

Ho provato ArduUP, avrdude, winavr, XLoader, ARP Arduino Uploader.

Tutte le prove le sto facendo con Arduino 2009 con sopra ATmega bootloader UNO, dovrei comprare un programmatore??

Non vede l'Arduino come programmatore, secondo me....

Io ho preso l'USBtiny da Adafruit:

Il prezzo è buono ma i tempi di consegna sono biblici! Ordinato il 31/12, ancora non è arrivato... :-/

Ad infamarli poi si svegliano ;D
Mi è arrivato il programmatore proprio ora: peccato che tra un po' debba andare a lavorare, non so ce la farò a montarlo ::slight_smile:

arduino-0022\hardware\tools\avr\bin\avrdude.exe

leo ti stai incastrando? :slight_smile:

Sto aspettando che mi arrivi il quarzo da 16 MHz... mannaggia, credevo di averlo ed invece no ::slight_smile:

Più che giocare a Tetris o a Space Invaders, adesso non posso fare :wink:

Ragazzi, ho nominato il quarzo e stamani me l'hanno consegnato (insieme ad altre cosucce) :wink:

Aggiornamento:
stasera ho provato a replicare il TellyMate su una breadboard. Risultato: NIENTE.
Non so se ho sbagliato qualche collegamento, ho già ricontrollato 2 volte ma proprio non funziona.
Ho caricato sull'Atmega "solitario" il firmware del Tellymate, ho replicato lo schema presente qui ed ho collegato il "finto" Tellymate alla TV ed all'Arduino programmato con lo sketch Life ma nulla.
La TV manco vede il segnale, e l'Arduino, a parte il led ON, non dà segni di vita.

Se invece collego l'Arduino all'alimentazione senza il "finto" Tellymate collegato, dopo qualche istante il led TX inizia a lampeggiare. Se collego l'Arduino al PC e apro un terminale seriale, vedo infatti che lo sketch gira correttamente ed invia i comandi video al terminale.

Ho alimentato il Tellymate da Arduino, non so se cambia qualcosa con un'alimentazione esterna. Riproverò...

Rettifico: se collego l'Arduino con l'alimentatore esterno, non si accende nessun led di TX mentre se collego l'Arduino al cavo USB si accende il led TX.

Però il "finto" Tellymate non dà segni di vita: nulla nulla... boh...
E questo comportamento anomale dell'Arduino, come se si "accorgesse" di non essere collegato ad dispositivo seriale.

Nuovo aggiornamento.
Ho risolto il problema legato al "finto" Tellymate: leggendo un post del suo creatore sul forum internaz. ho scoperto che il chip deve essere cancellato completamente perché il firmware non può stare fianco a fianco con il bootloader.

Adesso continuo con gli esperimenti... almeno finché non mi cala la palebra... :stuck_out_tongue:

Nuovo aggiornamento (l'ultimo per stanotte):
ho dovuto aggiungere i 2 diodi perché, a differenza della libreria TvOut, il TellyMate genera dei disturbi a video senza di essi.

Ora sto litigando con un altro problema. Lo sketch non funziona come dovrebbe, nel senso che a video appaiono tutti caratteri senza senso. Devo capire se è per colpa del fatto che nel 328 vengono caricati solo 10 degli 11 font disponibili (per via del fatto che lo spazio occupato dall'11° viene messo a disposizione di un font programmabile dall'utente) oppure per qualche altro problema.

Ma siccome è tardi, lascio l'investigazione alla prossima giornata.

@Francesco:
tu a che punto sei?
Io, se riesco a risolvere questo problema, vorrei provare a caricare sull'Arduino la libreria PS/2 per vedere se riesco a mandare a video i caratteri scritti su una tastiera collegata alla scheda.

Io francamente sono un po' demotivato, non riesco a programmare sto ATmega, non ho ancora le nozioni necessarie, tante cose non le capisco bene, ho visto il programmatore adafruit, ma credo sia in kit di montaggio e ancora non sono in grado di saldare, ho sentito un amico che ne usava uno, devo capire se andrebbe bene, altrimenti lo acquisto da qualche altra parte..
In questi due giorni non potrò nemmeno lavorare al progetto, seguirò qui i tuoi sviluppi..
Ciao!

L'USBtiny di Adafruit è in kit di montaggio ma i componenti sono pochi e facilmente saldabili: in mezz'ora di lavoro lo assembli. Il problema sono i tempi: conta 3 settimane se lo ordini tramite posta normale (come ho fatto io), altrimenti devi aggiungere una decina di dollari alla spedizione base per averlo via corriere. Non so se è distribuito in Europa da qualcuno.

Per programmare un Atmega con un 2009 non dovrebbe essere molto difficile, però non avendolo non so dirti di più.

Intanto potresti portare avanti una strada che io ho saltato, ma che tu magari riusciresti a seguire senza molti problemi: quella di provare ad integrare la libreria TVout con la libreria PS/2 in un unico chip!
Ho notato una cosa: il TellyMate è sì capace di una risoluzione maggiore ma, per la sua struttura basata su un sistema che legge tramite seriale i dati da visualizzare, risulta lento nell'aggiornamento dell'immagine. Si vede proprio l'apparizione dei caratteri sullo schermo.

TvOut è molto più veloce, basti vedere infatti che è capace di gestire anche giochini grafici come Space Invaders.

All'interno dei sorgenti di arduino ma anche nei binari c'è un file "boards.txt".
Nei sorgenti si trova in arduino-0022/hardware/arduino/
nei binari non so.

Comunque questo è un pezzo di file che riguarda Arduino Uno:
uno.name=Arduino Uno
uno.upload.protocol=stk500
uno.upload.maximum_size=32256
uno.upload.speed=115200
uno.bootloader.low_fuses=0xff
uno.bootloader.high_fuses=0xde
uno.bootloader.extended_fuses=0x05
uno.bootloader.path=optiboot
uno.bootloader.file=optiboot_atmega328.hex
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.core=arduino
Dai quali ti puoi ricavare che lavora ad 115200 e che il protocollo è stk500.

Se hai dubbi io programmo il 2009 al di fuori di Arduino con avrdude-5.10, le versioni precedenti non accettano il parametro arduino.

@leo72.
Arduino usa avrdude e puoi vedere che parametri usa spulciando il sorgente, ora io non ricordo se c'è quel parametro -y, poi dal momento che tutto passa per il bootloader sarebbe conveniente introdurre nel bootloader delle modifiche per gestire il numero di scritture, potrebbe essere una miglioria da richiedere al team.

Ciao.