PDA

View Full Version : [C] chiarimenti contatore


Anderson83
23-01-2007, 11:43
Ciao a tutti ho gia scritto per un codice in assembler per trasponder ma evidentemente nessuno li usa. :cry:
Allora inizio col premettere che uso il compilatore:
"PCWH Compiler"
IDE Version: 3.212
PCB Version: 3.212
PCM Version: 3.212
PCH Version: 3.212

ora il mio dubbio è questo:
se inizializzo TIMER1 così:

setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);

allora se lo faccio partire e scrivo delle righe in assembler il contatore va per fatti suoi?

Cerco di spiegarmi meglio:
Se inizializzo il contatore a 100 us considerando la freq del clock, poi posso scrivere procedure in assembler senza tener conto del tempo di elaborazione?
Meglio ancora:
Il clock del timer viene incrementato a prescindere dalle istruzioni?

Grazie a tutti e x favore aiutatemi!!!!
ciao Anderson

Anderson83
23-01-2007, 11:52
:cry: :cry: :cry: :cry: :cry: :cry: :cry:
ma perche nessuno mi aiuta??!?!?!?!?!!?!?!?!?!!?
vi prego ma che programmatori siete!?!?!?!?!!? :D (scherzo)

Vabbe, attendo le vostre risposte!!!

Ciao a tutti Anderson :nera: :nera: :nera: :nera: :nera: :nera: :ave:

andbin
23-01-2007, 11:58
allora se lo faccio partire e scrivo delle righe in assembler il contatore va per fatti suoi?

Cerco di spiegarmi meglio:
Se inizializzo il contatore a 100 us considerando la freq del clock, poi posso scrivere procedure in assembler senza tener conto del tempo di elaborazione?
Meglio ancora:
Il clock del timer viene incrementato a prescindere dalle istruzioni?Premetto che non so nulla di quello stai usando di preciso (sono comunque abbastanza competente, in generale, in materia di microprocessori/microcontrollori).

Se stai lavorando con una unità timer hardware, esso avrà sicuramente una sorgente che in genere è il clock del processore o un segnale esterno, eventualmente poi ridotto da un prescaler settabile da programma.
In quel caso, certo che il timer "va per conto suo"! Cioè una volta che hai impostato l'eventuale sorgente/prescaler ecc... il timer conta per conto suo.

Poi bisognerebbe vedere a cosa ti serve quel timer, se per generare degli interrupt ogni tot di tempo (e in questo caso c'è da prestare un minimo di attenzione al "flusso" del programma) o magari solo per "mandare fuori" un clock ad una certa frequenza.

Anderson83
24-01-2007, 00:19
scusa hai ragione ho scordato di scrivere dove sta il contatore.
Il contatore è quello del PIC16F877A

il programma deve leggere un ingresso dove è collegato un reader di trasponder, che interrompe il campo RF a intervalli di tempo. Contando il tempo tra un interruzione e l'altra si decodifica 1 o 0
ma non riesco a sincronizzarmi

Grazie ancora
ciao Anderson