thewiredlogics Inserito: 7 agosto 2006 Segnala Share Inserito: 7 agosto 2006 Ciao a tutti e grazie per l'aiuto che avrete la pazienza di darmi...Ho realizzato una interfaccia per l'acquisizione dei segnali analogici provenienti da un array lineare di 128 fotodiodi. Questo sensore funziona in modo molto semplice: basta un segnale di start a cui seguono 128 impulsi (un clock) + un 129° per finire un ciclo di lettura. L'ampiezza di questo clock (la larghezza) deve essere tarata in modo tale da non saturare a 5 volt od essere al contrario troppo piccola. Sperimentalmente si è visto che vanno bene 235 microsecondi per questo t_intg.Sto utilizzando il pic16F876, quarzo a 4 MHz e seriale settata a 9600, convertitore abilitato con frequenza a metà di quella del quarzo, sto programmando in C e cerco la soluzione più semplice senza utilizzare interrupt.Ho provato questa routine ma dopo un transitorio ricevo valori alti (se leggo i byte ho F8- F9) e se tappo il sensore col dito non vedo le variazioni attese, sembra non cambi nulla....eppure il firmware mi sembra così semplice da essere necessariamente giusto:void acquisizione (void) { unsigned int i; //contatoreRCIF=0;while(!RCIF){SI_ON; //Attiviamo l'impulso start per potere iniziare la conversionefor(i=0; i<128; i++) //Conversione A/D{ CLOCK_ON;//viene mandato in uscita il valore successivoDelayUs(t_intg);ADGO=1;while(ADGO);SI_OFF; CLOCK_OFF; while(!TRMT);TXREG = ADRESH;}CLOCK_ON; //Ultimo impulso per poter chiudereDelayUs(5);CLOCK_OFF; }} Secondo voi dov'è l'errore? Link al commento Condividi su altri siti More sharing options...
elsabz Inserita: 7 agosto 2006 Segnala Share Inserita: 7 agosto 2006 Ciao,1° non ho capito cosa ci fai con questo sensore 2° non specifichi come lo hai collegato alla seriale e come lavora la stessa (sincrona, assincrona)Secondo mè l'interrupt sulla ricezione dei dati in seriale lo devi usare, a maggior ragione se poi usi DelayUs(t_intg);.CiaoSergio Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora