neanche io... ma di "C" (cosi` come di un'altra dozzina di linguaggi vari) un po` ne mastico e, anche se in seguito non ho mai avuto occasione di utilizzarlo (per cui a distanza di 20 anni non mi ricordo piu` nulla... ), a suo tempo un po` di assembler lo avevo anche studiato... insomma, penso che in qualche modo forse una mano potro` darla anche io.Una cosa che non ho capito ancora è chi sarà a sviluppare il SW.... io non ho mai adoperato i PIC, per cui....
naah... cos'e`, ti sei gia` scoraggiato?E se usassimo un aggeggio del genere: la "T" come selettore di ingresso e poi un "lightspeed clone" liscio al seguito?
Oltretutto, la parte relativa al selettore ingressi / attenuatore tutto sommato mi sembra la piu` semplice, sia dal punto di vista del software che da quello dell'hardware. In verita`, all'inizio temevo che potesse essere molto piu` complesso di cosi`... ora mi sembra quasi banale.
Cosi` a naso, al momento vedo molto piu` complessa (sia come hw che come sw) la scheda di controllo con la gestione di interfaccia, dispay e telecomando. Se ti scoraggi ora...
Dopo tutto qui` si tratta solo di gestire qualche tabella, cosa che si fa` comodamente tanto in "C" quanto in assembler. L'unico dubbio (legato alla mia ignoranza in materia...) e` di quanta memoria (non volatile) possiamo disporre... vediamo un po`: quanta ce ne serve?
Per la tabella dell'attenuazione, per ogni entry (riga) ci basta un byte per definire la stessa (non credo che dovremo definire piu` di 256 step, no?!) piu` 2 parole da 16bit per i due valori di Rldr1 e 2, quindi in totale fanno 40bit di informazione. Tanto per fare una stima, anche supponendo 128 entries (64dB in 128 step da 0.5dB), dovremmo starci ampiamente in meno di 1KB. Di queste tabelle ne serve una per ogni valore dell'imp. di ingresso che vogliamo predisporre. Anche a voler esagerare, non arriviamo a 10KB.
Poi ci sono le tabelle di calibrazione... per queste servono due word da 16bit (4 bytes) per riga.
edit: fin qui` ok...
poi devo aver svalvolato, xche` rileggendo il post non so` piu` neanche io che cosa avessi scritto! :o
Ricominciamo da capo... con calma.
Di tabelle di calibrazione ne servono tante quanti sono gli LDR da calibrare, quindi n+1, dove "n" e` il numero di ingressi.
Ciascuna tabella ha un numero di righe pari al numero di valori diversi che devono essere assunti dal LDR in questione.
Nel caso peggiore (che almeno ora come ora mi sembra assurdo quanto perverso...) non si riutilizza mai due volte lo
stesso valore di resistenza, (!) per cui abbiamo un valore diverso di Rldr (e quindi una riga nella tabella) per ogni diverso
step di attenuazione e per ogni diverso valore della Zin implementato.
Quindi, il limite superiore al numero di righe di ciascuna tabella e` pari al numero di step di attenuazione moltiplicato
per il numero di possibili Zin, i.e. Nr = Ns*Nz
Riassumendo, il limite superiore alla max occupazione di memoria per le tabelle di calibrazione e` dato da:
maxmem = (n+1)*Ns*Nz*4 (bytes)
Quindi, sempre procedendo per l'estremo superiore, supponendo 5 ingressi, 128 step e ben 10 diverse impedenze di
ingresso abbiamo 6*128*10*4 = 30KB.
Sommati ai 10KB di prima in totale arriviamo a circa 40KB.
In pratica pero` ne dovrebbe bastare molto meno... i conti esatti li potremo fare solo dopo aver preparato le tabelle
di attenuazione (che a questo punto e` la prima cosa da fare) ma "a naso" in 32KB dovremmo starci larghi.
Nondimeno, per stare tranquilli e non mettere limiti alla provvidenza (nonche` ad eventuali sviluppi futuri) se possibile
converrebbe avere a disposizione una mem non volatile di almeno 64KB (per canale).
A questo naturalmente va` aggiunta la quota occupata dal firmware, x la quale al momento non so` fare una stima.
Ora, rinnovo la domanda... di quanta mem. dispongono le PIC + comuni (ed economiche) che potremmo usare per questo progetto???
P.S.: ho dato una occhiata su Internet e, se non mi e` sfuggito qualcosa, mi pare che siamo nei guai... ho letto male (non ho visto un "K") o si parla davvero di appena qualche 100io di bytes di data memory?!?!? :o
Siamo fuori col botto... ci sta` a malapena una riga della tabella di attenuazione!
Si puo` mettere una mem non volatile (flash?) esterna?!? e` complicato? costoso?
Vi vengono in mente soluzioni alternative???
Ciao,
Paolo.