Vai al contenuto
PLC Forum


Tempo Di Esecuzione Codice


Wolf82

Messaggi consigliati

Ciao! Sto iniziando a programmare i PIC in linguaggio C. Vorrei sapere come è possibile determinare il tempo di esecuzione del codice da parte del microprocessore. Questa informazione viene indicata già dal compilatore? Questa domanda è legata al fatto che devo fornire il risultato dell'elaborazione del codice ogni 800 ns, e quindi dovrei conoscere il tempo di esecuzione per verificare il rispetto delle tempistiche.

Grazie!

Link al commento
Condividi su altri siti


In C non saprei bene come fare, in assembler la cosa è molto più semplice (magari puoi guardare l'assemblato).

In pratica qualsiasi istruzione dei pic viene eseguita in 4 cicli di clock (tranne qualcuna), stai attento però ai salti delle istruzioni, nei quali ad esempio se non la esegue, esegue comunque un nop, comunque sul manuale è tutto ampiamente specificato.

Il tuo però è un tempo strettino, tieni conto ad esempio che a 20 MHz un pic impiega 200ns per eseguire una istruzione

Link al commento
Condividi su altri siti

In 800 ns è quasi impossibile eseguire qualsiasi routine di senso compiuto, specialmente se scritta in "C", con 16F84 (ma anche con un DSPIC con clock ben più elevato).

Link al commento
Condividi su altri siti

GLi 800 ns sono legati alla gestione di un LCD TFT a colori. Devo inviare ogni 800 ns 16 bit per indicare il colore di ogni pixel (ogni 800 ns il modulo LCD seleziona un altro pixele attende l'arrivo della combinazione di bit per il pixel).

Ho pensato di usare un timer che richiede l'interrupt ogni 800 ns e, in corrispondenza dell'INT, invio in uscita le informazioni per il pixel opportunamente salvate in memoria. Purtroppo non ho trovato DSP o microcontrollori con driver a bordo per pilotare display a colori (per ora in commercio ne ho solo trovati con driver per display LCD a matrice di punti o a segmenti).

E' possibile scrivere in C la routine di gestione dell'interrupt? Intendo dire, come posso indicare al compilatore che il codice deve essere utilizzato per la gestione dell'interrupt?

Grazie!

Link al commento
Condividi su altri siti

Dare i dati. Se non dici quale micro e qale compilatore intendi usare non è possibile risponderti altro che in linea di principio.

Allora in linea generale è possibile gestire l'interrupt in "C". Quello che è dificile, insisto con il quasi impossibile, è temporizzare a 800ns. Rischi, se va bene, che il processore esegua solo l'interrpt (ma deve esere un processore very speed ed il compilatore molto ottimizzato), se va male il processore va in hung up :(

Link al commento
Condividi su altri siti

Concordo sulla difficoltà di gestire un interrupt in 800ns. Alla fine sei obbligato a scegliere micro particolari (= costosi) (Silabs ha un micro che arriva a 100Mips - Maxim (Dallas) arriva a 33Mips)

Poichè dici di essere alle prime armi con C e microcontrollori io opterei per soluzioni alternativie.

Io ti suggersico questa ma ne trovi molte altre di simili.

Link al commento
Condividi su altri siti

Io non te lo volevo dire caro collega, ma dubito che tu possa farlo con un pic, non nei tempi che vuoi tu. Io ho lavorato con i pic solo fino a 20 MHz, aspettavo il parere di qualcuno che magari ha lavorato con DsPIC, mi sa che se vuoi farlo in 800ns ti dovrai orientare sui DSP, e di quelli parecchio veloci.

Link al commento
Condividi su altri siti

Ciao! Non ho ancora scelto il microcontrollore o DSP poichè si tratta di un progetto che ho appena iniziato. Per il compilatore, non sapendo bene che micro usare, nonho acnora scelto con precisione. Per ora ho trovato PicLite, che mi può essere utile usando un PIC.

Il display deve essere utilizzato per visualizzare del testo e il display richiede di inviare una nuova informazione per un pixel ogni 800 ns (questo è il periodo di clock per la scansione del display 128x160).

Nell'interrupt che ho pensato andrei solamente a inviare in uscita i 12 bit per dare le informazioni di colore al pixel, senza eseguire quindi pi di due istruzioni.

L'applicazione è low power, quindi non posso utilizzare il modulo consigliato nel penultimo post.

Grazie per i suggerimenti!

Ciao!

Modificato: da Wolf82
Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...