Visualizza messaggio singolo
Vecchio 06 luglio 07, 23:14   #42 (permalink)  Top
Mrk89
User
 
L'avatar di Mrk89
 
Data registr.: 29-05-2006
Residenza: Catania
Messaggi: 2.933
Citazione:
Originalmente inviato da MSchiepp
Dato che mi sembra tu non abbia particolare dimestichezza con le macchine a stati, che come ha consigliato RIVP6, sono la Soluzione (con la S maiuscola...) puoi incominciare con una semplificazione che puoi far evolvere in modo semplice e che non usa interrupt. Dato che mi sembra che tu stia usando un PIC supponiamo di avere un PIC a 4Mhz (è sufficiente per fare tutto, se poi vai più veloce, meglio).
All'inizio del ciclo di main carichi il timer0 (con prescaler /128) a 99d e azzeri il bit T0IF; il timer scatterà dopo 20 mS. Nel frattempo leggi i convertitori ed i tasti; se vedi che facendo tutto quello che devi fare rischi di superare i 20mS, dividi le operazioni in due: ad ogni giro di main fai una volta la lettura dei convertitori e la volta dopo la lettura dei tasti. Alla fine di ogni ciclo aspetti che il T0IF vada ad uno, il che segnala che sono passati i 20mS; ricarichi il timer a 99d, azzeri T0IF e generi gli otto impulsi usando il timer1 a 16 bit con risoluzione 1uS: azzeri il bit TMR1IF e carichi il timer con 65535-il valore in uS del ritardo che vuoi ottenere, setti il bit di uscita e aspetti che TMR1IF vada ad 1: nel caso peggiore hai un errore di 2 uS; quando hai finito di inviare i dati di ogni canale riprendi il loop principale e ti ritroverai ad aspettare il timer0 che segnala la fine dei 20mS... e così via.

Alla prossima puntata (se ci sarà) come trasformare questa struttura in una macchina a stati.

Michele
Ok ora è chiaro...
Il fatto è che non ho mai utilizzato interrupts software, ma ho usato sempre e solo quelli hardware provenienti dall'esterno del PIC...
Grazie per le dritte!!
__________________
Il filo attaccato all'antenna non mente mai....Troppo vento, si torna a casa....
I miei circuiti elettronici autocostruiti: Postbruciatore per ventole intubate ; Circuito luci per aeromodello-elimodello ; Rallenta servo con protezione da corto circuito
Mrk89 non è collegato   Rispondi citando