Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Registrare sequenza di bit con PIC

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: Registrare sequenza di bit con PIC

Messaggioda Foto Utentematteosr » 18 lug 2009, 10:43

Ciao a tutti.

Finalmente sono riuscito a leggere i segnali che mi servivano, per farlo mi sono dovuto comprare un'oscilloscopio digitale (credo di aver fatto anche un affare, l'ho pagato 280 euri, è un Welec W2012A).


Questi tre sono quelli incriminati:


Apre
Immagine

Chiude
Immagine

Stop Apre e Chiude
Immagine


Da dove inizio adesso?

A me servirebbe che il PIC sia sempre in attera di un segnale apre o chiude, quando gli arriva apre o chiude svolga una funzione fin quando non gli arriva il segnale stop, quando gli arriva lo stop si blocchi ed attenda un impulso apre o chiude.

Mi dareste una mano?


Ho scaricato l'ultima versione di Mplab dal sito microchip, ma è totalmente diversa da come la ricordo io, e credo che sia normale, dato che l'ultima versione che ho usato risale a Windows 98, credo che fosse la 4.0.

Innanzi tutto va bene il pin RA2 per leggere il segnale?

Con il mio circuito i segnali vengono invertiti, quindi quando in ingresso ci sono 12 V al pin RA2 c'è 0, quando in ingresso c'è 0 sul pin ci sono 5V; in questo modo i tre segnali sono:

Apre: in standby c'è sempre 0, arriva un impusto a 5V per 135-136 ms, poi 0 per 90 ms, 5V per 90 ms, e torna in standby a 0

Chiude: in standby 0, arriva un impulso a 5v per 135-136 ms e torna in standby a 0

Stop: in standby 0, arriva un impulso a 5V per 60-61 ms e torna in standby a 0


Grazie
Ciao, matteosr
Avatar utente
Foto Utentematteosr
0 2
 
Messaggi: 15
Iscritto il: 29 giu 2009, 16:24

0
voti

[12] Re: Registrare sequenza di bit con PIC

Messaggioda Foto Utentematteosr » 18 lug 2009, 17:40

Credo di essere sulla buona strada.

Per semplificare le cose non farò casò alle temporizzazioni dei segnali che mi arrivano.
In definitiva, in condizioni di riposo possono arrivare solo due tipi di segnale, apre o chiude, che tradotti in bit sono 101 o 1;
mentre durante l'esecuzione delle funzioni, può arrivare solo il segnale di stop, che sarebbe 1.


Inizio:
Il PIC è in attesa di ricevere qualcosa, finquando sul pin RA2 c'è sempre 0 ricomincia;
succede qualcosa, sul pin RA2 arriva 1, attende che torna a 0;
Adesso, per capire se è un impulso apre o chiude, devo continuare a verificare il pin RA2 per altri 90 ms (meglio 100);
se arriva un altro impulso a 1, vuol dire che è "apre", quindi attende che torni a 0 e va a svolgere una funzione;
se non arriva niente, vuol dire che è "chiude", quindi va a svolgere un'altra funzione.

Nelle due funzioni da svolgere, devo continuare a monitorare il pin RA2 in attesa del segnale di stop, in questo caso 1,
quando l'ho ricevuto fermo tutto e torno al punto di partenza.


Che ne dite può andare come idea?
Adesso devo solo convertirla in assembly.
Avatar utente
Foto Utentematteosr
0 2
 
Messaggi: 15
Iscritto il: 29 giu 2009, 16:24

0
voti

[13] Re: Registrare sequenza di bit con PIC

Messaggioda Foto Utentematteosr » 20 lug 2009, 19:55

Dato che o risolto il problema di acquisire la sequenza di dati, per non creare confusione aprirò un'altra discussione riguardante il codice del circuito.

Grazie a tutti.

ciao, matteosr
Avatar utente
Foto Utentematteosr
0 2
 
Messaggi: 15
Iscritto il: 29 giu 2009, 16:24

0
voti

[14] Re: Registrare sequenza di bit con PIC

Messaggioda Foto Utenteangelorosso » 3 ago 2012, 21:52

rispolvero questo topic poiché sto usando un PIC 12F683 che esegue un programma molto simile.
Nel mio progetto penso di avere problemi di standby, questo perché dopo alcuni giorni di funzionamento il circuito va in blocco (come se il PIC non leggesse gli INPUT) e sono costretto a resettarlo: non è che entra da solo in modalità standby?

ho provato a disattivare il WDT..ma nulla!

ecco le impostazioni che ho usato:

Codice: Seleziona tutto
OPTION = 0;
   TRISIO =0b00000010;            //tutte le porte sono OUT, tratte GP1
   GPIO = 0;            // azzero le porte
   ANSEL = 0b00110010;            // imposto i pin analogici
   CMCON0 = 0b00000111;         // disattivo il comparatore
   OSCCON = 0b01100101;         // imposto il registro dell'oscillatore
   ADCON0 = 0b10000101;         // imposto il registro convertitore A\D
   INTCON = 0;         // disabilito tutti gli interrupt
   PIE1 = 0;            // disabilito il registro interrupt da periferica
Avatar utente
Foto Utenteangelorosso
40 3
New entry
New entry
 
Messaggi: 61
Iscritto il: 17 lug 2011, 22:36

Precedente

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 38 ospiti