Progetti

   

Tutorial

   

Servizi

   
Benvenuto, Ospite
Nome utente: Password: Ricordami

ARGOMENTO: modulo CCP in modalità Capture

modulo CCP in modalità Capture 5 Mesi 1 Settimana fa #1

  • graziano1985
  • Avatar di graziano1985
  • Offline
  • Fresh Boarder
  • Messaggi: 16
  • Karma: 0
salve a tutti , premetto che è la prima volta che mi cimento con il modulo ccp
avrei la necessità di calcolare il tempo che intercorre tra due impulsi tra i vari esempi che ho trovato sono riuscito a tirare fuori questo
 
 
 
  __interrupt (high_priority) void ISR_alta (void) {
 
if (PIR1bits.CCP1IF == 1 ) {
// Resetto il flag d'interrupt per permettere nuove interruzioni
PIR1bits.CCP1IF = 0;
buffer = ((CCPR1H <<8) + CCPR1L) ;
 
}
}
 
int main(void) 
{
 
   //************************************************************
// Imposto CCP1
//************************************************************
// Imposto la modalita' Capture sul fronte di salita
CCP1CONbits.CCP1M0 = 0;
CCP1CONbits.CCP1M1 = 1;
CCP1CONbits.CCP1M2 = 0;
CCP1CONbits.CCP1M3 = 1;
// Abilito le interruzioni ad alta priorita'
PIE1bits.CCP1IE = 1;
IPR1bits.CCP1IP = 1;
//************************************************************
// Imposto il Timer3
//************************************************************
// Utilizzo il Timer3 
T3CONbits.T3CCP1 = 1;
// Imposto il Prescaler ad 1
T3CONbits.T3CKPS1 = 0;
T3CONbits.T3CKPS0 = 0;
// Imposto il clock a Fosc/4
T3CONbits.TMR3CS = 0;
// Attivo il Timer
T3CONbits.TMR3ON = 1;
//************************************************************
// Abilito le interruzioni
//************************************************************
//Resetto i Flag delle interruzioni d'interesse
PIR1bits.CCP1IF = 0;
// Abilito l'interrupt globale
INTCONbits.GIE = 1;
// Abilito l'interrupt periferiche
INTCONbits.PEIE = 1 ;
 

( questo è solo un estratto del codice completo)

il pic in uso è un 18f4550

ovviamento il codice non funziona qualsiasi frequenza io fornisca al pin RC1
l' LCD mostra sempre il valore =0

dove sbaglio ??? grazie in anticipo
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

modulo CCP in modalità Capture 5 Mesi 1 Settimana fa #2

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Offline
  • Moderatore
  • Messaggi: 4452
  • Ringraziamenti ricevuti 508
  • Karma: 49
Salve Graziano,

non ho visto il codice ma tra gli esempi poposti nel testo XC8 step by Step, c'e' un progetto per la misura della frequenza di un segnale.

Esattamente quello che stai facendo tu.

Saluti,

Mauro
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

modulo CCP in modalità Capture 4 Settimane 1 Giorno fa #3

  • Inco
  • Avatar di Inco
  • Offline
  • Fresh Boarder
  • Messaggi: 8
  • Karma: 0
Ciao, anche io alle prese con il capture... ho seguito l'esempio su manuale step by step xc8 come piu o meno o visto che hai fatto tu... nel tuo caso come gestisci la variabile buffer? Dovresti fare due letture per conoscere il periodo.
Carlo Incoronato
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Powered by Forum Kunena
   
© LaurTec 2006-2015