Max7456 + pal

Aspettavo un tuo reply... se non ho aggiornato l'altro topic è solo perchè avevo da "fare" con questa robaccia: http://localhostr.com/files/bDeAJx3/2013-01-29%2019.48.51.jpg

Stasera, prometto di scrivere istruzioni dettagliate.

...e comunque, il problema di questo max7456 l'ho risolto al 90% con un workaround... ed è quel 10% che mi fa tentennare circa un eventuale tutorial qui.

...e comunque il mio nome è finalmente in TV!!! tiè!!! buahahah

non è che devi fare un Tutorial, bastano i passaggi fondamentali e qualche chiarimento sui punti dove sai che si arenerebbe chiunque; poi se qualcuno ha bisogno di ulteriori info chiede, quindi quel 90% basta e avanza.
Complimenti per la carriera in TV: che fai, il Velino? :stuck_out_tongue_closed_eyes:

Bene, la mia soluzione:

Il problema era la tabella di default dei caratteri all'interno della eeprom del max7456 e la comunicazione spi.

Con la libreria che ho linkato nel primo post, mi comparivano tutti caratteri strani in pratica tutti gli idiomi cinesi della tabella di default.
Esempio: http://localhostr.com/files/6oQSQ5Y/2013-01-28%2017.27.49.jpg

Così ho pensato di caricare sulla rom del 7456 una nuova tabella dei caratteri.
L'unico tool che ha funzionato al 90% è stato questo: Google Code Archive - Long-term storage for Google Code Project Hosting.

MinimOSD è un progetto che usa una board arduino+7456 usata per i droni e cose del genere... sfiziosa!

Per caricare la tabella ho dovuto prima caricare su un arduino2009 (NO optiboot, solo con bootloader della duemilanove) il loro firmware: http://localhostr.com/files/jhR5Uzk/Immagine.png
Poi ho creato una tababella dei caratteri ad hoc (nè la default nè quella del minimosd andavano bene): myfinaltable.mcm - Hostr, download and share anything.
Così composta: http://localhostr.com/files/dlsLkCJ/capture.png
Poi l'ho dovuta caricare sempre con il tool di sopra (arduino funge da programmatore): http://localhostr.com/files/aVu82wa/Immagine.png

Fatto questo il più è fatto, ed ho usato la libreria per arduino: http://www.eng.uah.edu/~jdw/avr/MAX7456_lib_2011-12-18.tar.gz

Il grande problema (il famoso 10%) è che 8 volte su 10 carica male la tabella nell'eeprom: fa apparire un carattere a caso della tabella come carattere di default per il background. Credo che venga scritto (non volendo) il carattere X nella cella background.
Così ho pensato di eliminare tutti ( ihihi ) i caratteri, tenendo solo lo stretto necessario.
Credo che ci sia un bel problema nella comunicazione spi tra i due controller....

Tra l'altro le uniche differenze con la tabella di default è che i caratteri alfanumerici tradizionali sono traslati al centro della tabella... se li avessi avuti in testa (così come nella tabella di default) non apparivano sul video.
Credo che sia una questione di offeset/registri nella libreria...
Infatti questa libreria non funziona con questo workaround (guardate tutti i miei commenti in inglese quanto so belli e disperati): โป๊กเกอร์ บาคาร่า เสือมังกร คาสิโน มารับความร่ำรวยกัน เกมไพ่ poker

Quindi... dopo molti tentativi di flashing, sono riuscito a caricare una tabella dei caratteri striminzita ma funzionante su tre max7456.

Per concludere: è un workaround.... ;(

Uno sketch funzionante, da notare osd.PALmode();

#include "MAX7456.h"
#include "floatToString.h" 
MAX7456 osd;
#define MAX7456_SELECT 10

void setup()
{
  osd.begin(MAX7456_SELECT, true); // true means we're using the MAX7456 native character set
  // remove if you've done the ASCII character set load on your 7456
  Serial.begin(9600);

  osd.PALmode();

  osd.write_to_screen(" 0123456789",2);
  osd.write_to_screen(" ABCDEFGHILMNOPQRSTUVZXYKW",3);
  osd.write_to_screen(" abcdefghilmnopqrstuvzxykw",4);
  osd.write_to_screen("  .,+-*/%",5);
  osd.write_to_screen("    Autore:", 6);
  osd.write_to_screen("    Andrea Esposito", 7);
  osd.write_to_screen("    AnTrea  :)", 8);
  float x=5.25;

  char y[10];
  //itoa(x,y,10);
  floatToString(y,x,3);
  Serial.println("ciao");
  Serial.println(x);
  Serial.println(y);
  osd.write_to_screen(y, 10,10);


}


void loop()
{ 

}

Ciao AnTrea,
mi sono preso anche io il modulino con il MAX7456, hai un contatto mp che avrei l'esigenza di chiederti alcune delucidazioni in merito ai tuoi post.

kikko_965:
Ciao AnTrea,
mi sono preso anche io il modulino con il MAX7456, hai un contatto mp che avrei l'esigenza di chiederti alcune delucidazioni in merito ai tuoi post.

sotto la mia foto trovi tutti i contatti che ti servono :slight_smile:

Ciao,
vagando su internet ho trovato uno sketch che evita di dover sostituire il firmware su arduino per poter caricare la nuova tabella.

http://code.google.com/p/rushduino-osd/downloads/detail?name=RushOSD_CP_v1_0.pde

Si carica lo sketch e poi si invia su seriale il file mcm, ci mette un pò 15/20 minuti.
Provato con la tabella di AnTrea e funziona.
Ho fatto la prova con arduino UNO, tutto ok
Con la mega invece, lo sketch per far funzionare la scheda con il MAX non funziona non si visualizza niente.
Non ho perso molto tempo ma sarebbe bello a questo punto fare delle prove per far funzionare la mega e magari predisporre una tabella completa e poi fare l'elenco delle funzioni ammesse dalla libreria.
Penso sarebbe un bel lavoro per facilitare le cose a tutti.

kikko_965:
Ciao,
vagando su internet ho trovato uno sketch che evita di dover sostituire il firmware su arduino per poter caricare la nuova tabella.

Google Code Archive - Long-term storage for Google Code Project Hosting.

Si carica lo sketch e poi si invia su seriale il file mcm, ci mette un pò 15/20 minuti.
Provato con la tabella di AnTrea e funziona.
Ho fatto la prova con arduino UNO, tutto ok
Con la mega invece, lo sketch per far funzionare la scheda con il MAX non funziona non si visualizza niente.
Non ho perso molto tempo ma sarebbe bello a questo punto fare delle prove per far funzionare la mega e magari predisporre una tabella completa.

Ottimo feedback!

Probabilmente non funziona perchè il pinout dell'spi sulla mega è diverso che sulla uno, dovresti cambiare le pedinatura all'interno dell'header file della libreria del max

Update, infatti:

MEGA

DATAOUT 51//MOSI
DATAIN 50//MISO
SPICLOCK 52//sck
SLAVESELECT 53//ss

Apri il file MAX7456.h e modifica queste righe:

DA

#define MAX7456_DATAOUT 11//MOSI
#define MAX7456_DATAIN  12//MISO
#define MAX7456_SCK  13//sck
#define MAX7456SELECT 10//ss

A:

#define MAX7456_DATAOUT 51//MOSI
#define MAX7456_DATAIN  50//MISO
#define MAX7456_SCK  52//sck
#define MAX7456SELECT 53//ss

Ovviamente cambia anche il wiring....

Ok grazie.

Come si fa a ricavare i comandi/sintassi supportati dalla libreria.

kikko_965:
Come si fa a ricavare i comandi/sintassi supportati dalla libreria.

basta interpretare i prototipi di funzione e/o leggere i commenti in testa ad ogni funzione...

...e usare il metodo "Troisi": Non ci resta che piangere - La palla - YouTube

Oltre a Troisi puoi leggere il file colorindex della libreria che almeno ti dice i nomi delle funzioni. Dopodiché il sito dell'autore che in genere spiega l'utilizzo

Sperando di fare cosa gradita ho predisposto un file da caricare sul MAX con i caratteri della tabella ASCII.
Non è completo e precisissimo nella definizione, ma quasi e poi sempre meglio che niente.....

ascii.mcm (160 KB)

kikko_965:
Sperando di fare cosa gradita ho predisposto un file da caricare sul MAX con i caratteri della tabella ASCII.
Non è completo e precisissimo nella definizione, ma quasi e poi sempre meglio che niente.....

Ho dato un occhio, ottimo.
Qui l'anteprima: http://localhostr.com/files/xRteurc/capture.png

Come funzionano con la libreria? tutto ok?

Ciao, non l'ho provata con i caratteri (speciali).
Ho solo provato con i caratteri normali, dovrei perdere un pò di tempo per modificare lo sketch e fare le prove con glia altri caratteri.
Potresti farlo tu, poi pubblichi lo sketc, hi hi hi

kikko_965:
Ciao, non l'ho provata con i caratteri (speciali).
Ho solo provato con i caratteri normali, dovrei perdere un pò di tempo per modificare lo sketch e fare le prove con glia altri caratteri.
Potresti farlo tu, poi pubblichi lo sketc, hi hi hi

hai scritto e pubblicato una tabella dei caratteri senza provarla? :fearful:

Certo, non volevo toglierti il gusto di provarla e farti prendere i meriti.

kikko_965:
Certo, non volevo toglierti il gusto di provarla e farti prendere i meriti.

che gentile, ma ho messo una bella croce sopra il max7456!
chiuso e sigillato in un cassetto... non ci voglio più metter mano.