Interfacciare Pic16f877a a RAM 6264
Moderatore:
Paolino
21 messaggi
• Pagina 2 di 3 • 1, 2, 3
0
voti
Purtroppo non ho un oscilloscopio. Però potremmo considerare la velocità massima a cui può lavorare la ram in base al datasheet (100ns per la mia HY6264-10) e calcolare se ci sto dentro con un 18f a 40 MHz.
1
voti
Il PIC 18 a 40 MHz riesce ad eseguire una singola istruzione assembler in 100 ns.
Se vuoi calcolare la velocità massima di scrittura sulla RAM compatibile con la lettura dal PIC dovrai contare quante istruzioni assembler ti servono sul PIC per eseguire il test e quante per, eventualmente, leggere il dato e fare tutto ciò che ti serve, quindi, moltiplicare tale valore per 100 ns.
Supponiamo che tu abbia 20 istruzioni assembler per 100 ns ottieni 2 us: questo è il tempo minimo di scrittura che dovrai impostare sul 6808.
Comunque per sincronizzare il tutto ti servirà o l'oscilloscopio o un analizzatore digitale.
Ce ne sono anche da 100 euro tipo quello descritto in questo articolo
Se vuoi calcolare la velocità massima di scrittura sulla RAM compatibile con la lettura dal PIC dovrai contare quante istruzioni assembler ti servono sul PIC per eseguire il test e quante per, eventualmente, leggere il dato e fare tutto ciò che ti serve, quindi, moltiplicare tale valore per 100 ns.
Supponiamo che tu abbia 20 istruzioni assembler per 100 ns ottieni 2 us: questo è il tempo minimo di scrittura che dovrai impostare sul 6808.
Comunque per sincronizzare il tutto ti servirà o l'oscilloscopio o un analizzatore digitale.
Ce ne sono anche da 100 euro tipo quello descritto in questo articolo
1
voti
Bene. Studiando un po il datasheet del processore (6802) e non (6808) come avevo scritto in precedenza, (una svista) mi sono accorto che coma diceva
c1b8 un ciclo di utilizzo bus dati impiega da un minimo di 1us a un massimo di 10 us. Quindi i tempi si fanno un po' più larghi. Ora devo capire se potrò usare il picbasic o dovrò cominciare a studiarmi l' assembler
Quando faccio la compilazione del programma che scrivo in PIC basic mi vengono generati diversi file. Un .asm un .hex un .lst e un .mac. Contando le righe nel file .asm riesco a capire quante operazioni assembler occupa il mio programma?
Quando faccio la compilazione del programma che scrivo in PIC basic mi vengono generati diversi file. Un .asm un .hex un .lst e un .mac. Contando le righe nel file .asm riesco a capire quante operazioni assembler occupa il mio programma?
2
voti
stex90 ha scritto:Contando le righe nel file .asm riesco a capire quante operazioni assembler occupa il mio programma?
Non basta contare le righe, ci sono istruzioni che vengono eseguite in un solo ciclo macchina (4 cicli di clock) e altre che ne richiedono 2 (non ricordo se ce ne sono di più lunghe).
Se guardi sul datasheet del PIC trovi per ciascuna istruzione la spiegazione di cosa fa e quanti cicli richiede.
Con tutte queste informazioni puoi calcolare il tempo di esecuzione.

http://millefori.altervista.org
Tool gratuito per chi sviluppa su millefori.
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)
Strumento per formule
Tool gratuito per chi sviluppa su millefori.
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)
Strumento per formule
-

posta10100
5.550 4 10 13 - Master EY

- Messaggi: 4832
- Iscritto il: 5 nov 2006, 0:09
2
voti
Ciao, come ti suggeriva Robert8, lo strumento più idoneo per fare un acquisizione di questo tipo e senza dubbio l'analizzatore di stati logici; anch'io te lo consiglio vivamente. Girando intorno al PIC rischi di perdere ancora un sacco di tempo senza arrivare a nulla di concreto. E' un piccolo investimento che fa risparmiare un sacco di grane e di tempo, che potrai sfruttare in un sacco di altre occasioni. Io ho uno Zeroplus LAP-C 16032 che va benissimo, e quando l'acquistai, mi regalarono anche un sacco di moduli per l'analisi dei protocolli di comunicazione più diffusi.
A.
A.
-

AlbertoBianchi
2.009 3 5 - Master

- Messaggi: 836
- Iscritto il: 4 dic 2014, 18:30
- Località: Lastra a Signa (FI)
1
voti
stex90 ha scritto:Quindi i tempi si fanno un po' più larghi. Ora devo capire se potrò usare il picbasic o dovrò cominciare a studiarmi l' assembler
Studiare l'assembler non fa certo male ma, visto che i tempi non sono tanto stretti, con l'analizzatore logico te la cavi con poco:
1 - visualizzi i tempi di scrittura sulla RAM
2 - visualizzi i tempi di lettura del PIC
3 - adegui i tempi del PIC col PICbasic e ricicli le fasi 2 e 3 fino alla perfetta sincronizzazione.
1
voti
... in tal caso il controllo dell'output del listato assembler è un buon esercizio.stex90 ha scritto:o dovrò cominciare a studiarmi l' assembler
Ma se vuoi provare anche questa strada considera che, oltre alla corrispondenza dei tempi delle istruzioni, devi "leggere" il flusso del programma per determinare i periodi quindi, se ci sono, i loop(s), i salti e le call(s).
Saluti
W - U.H.F.
-

WALTERmwp
30,2k 4 8 13 - G.Master EY

- Messaggi: 8982
- Iscritto il: 17 lug 2010, 18:42
- Località: le 4 del mattino
0
voti
molte volte ho sentito l' esigenza di uno strumento che mi aiutasse nell' analisi dei segnali logici ma non mi sono mai interessato più di tanto, e sopratutto non immaginavo fosse alla portata di tutte le tasche. Penso proprio che seguirò i vostri consigli e per natale mi regalerò un analizzatore logico!
Nell' attesa di averlo sottomano comincerò a fare qualche prova anche con un PIC serie 18.
Robert8 parli di sincronizzazione tra il PIC e la ram. Ma utilizzando un PIC adeguatamente veloce, in teoria, se vado a leggere "nell' istante" in cui il write va basso, dovrei trovarmi l' indirizzo e i dati corretti senza dover aggiungere pause, e tanto meno sincronizzare le letture del PIC con le scritture della ram. Anche perché molto probabilmente non sono continue e precise nel tempo. E' corretto il mio punto di vista?
Vi ringrazio per le risposte. E continuerò a tenere aggiornata la discussione con gli sviluppi
Nell' attesa di averlo sottomano comincerò a fare qualche prova anche con un PIC serie 18.
Robert8 ha scritto:Studiare l'assembler non fa certo male ma, visto che i tempi non sono tanto stretti, con l'analizzatore logico te la cavi con poco:
1 - visualizzi i tempi di scrittura sulla RAM
2 - visualizzi i tempi di lettura del PIC
3 - adegui i tempi del PIC col PICbasic e ricicli le fasi 2 e 3 fino alla perfetta sincronizzazione.
Vi ringrazio per le risposte. E continuerò a tenere aggiornata la discussione con gli sviluppi

2
voti
stex90 ha scritto:se vado a leggere "nell' istante" in cui il write va basso, dovrei trovarmi l' indirizzo e i dati corretti senza dover aggiungere pause, e tanto meno sincronizzare le letture del PIC con le scritture della ram.
Quello che dovresti fare è far generare un "interrupt on change" quando il pin di write cambia stato, nella routine di interrupt dovresti:
a - verificare che il nuovo stato sia basso (l'interrupt viene attivato anche per la transizione basso alto)
b- leggere l'indirizzo e il dato scritto
c- se l'indirizzo è tra quelli di interesse, salvare il dato da qualche parte
Se riesci a completare i passi a. b. entro il tempo in cui il pin write sta basso ed il passo c. mentre il pin è alto allora non dovresti avere problemi. Con un clock a 48MHz e con un software scritto bene ce la dovresti fare.

http://millefori.altervista.org
Tool gratuito per chi sviluppa su millefori.
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)
Strumento per formule
Tool gratuito per chi sviluppa su millefori.
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)
Strumento per formule
-

posta10100
5.550 4 10 13 - Master EY

- Messaggi: 4832
- Iscritto il: 5 nov 2006, 0:09
1
voti
stex90 ha scritto:Ma utilizzando un PIC adeguatamente veloce, in teoria, se vado a leggere "nell' istante" in cui il write va basso, dovrei trovarmi l' indirizzo e i dati corretti senza dover aggiungere pause
Non avendo la pallida idea sui valori di tWC, tPWE, etc, direi: in "teoria" non proprio e "nell'istante" nemmeno!
Perché l'istante del PIC potrebbe arrivare troppo tardi rispetto all'istante del WE:
Forse in pratica ti può andare bene: prova!
Non possedendo un analizzatore cercherei, prima di leggere indirizzo e dato, di valutare il tPWE con gli interrupt come suggerito da
Ma anche così c'è il rischio di sotto campionare il WE valutandolo il doppio, il triplo o più, nel caso che il tPWE sia più breve del tempo di esecuzione di un interrupt.
Ma devi proprio leggere durante la scrittura
21 messaggi
• Pagina 2 di 3 • 1, 2, 3
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 10 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

