Duvidas sobre Captura e Timer 1

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Duvidas sobre Captura e Timer 1

Mensagempor Mixicus » 18 Jun 2009 22:13

Olá pessoal, estou tentando fazer um programa que capture o tempo em que uma onda quadrada fica em nivel 0, me falaram que uma das melhores maneiras seria usar o modo CAPTURE CCP1.
Tenho muita dificuldade em fazer programas pois sou iniciante.
Abaixo está o programa que estou começando a fazer, a propósito o programa abaixo fica lendo a entrada RB3 do pic para que se tenha algum pulso alto o led acenda, caso contratio fique apagado.
Neste programa babaca já tenho duvidas hehehe.
Espero que me ajudem, Abraço.
Obs.: meu msn eh leandrofloriani@hotmail.com, se algum interessado em me ajudar no msn estiver afim esta ai. Valeu pessoal.

//INCLUSÕES DE ARQUIVOS FONTE
#include <C:\Arquivos de programas\Mikroelektronika\mikroC\Uses\ceprob.c>

//****************************************************************

//DEFINIÇÕES DAS ENTRADAS


//****************************************************************

//DEFINIÇÕES DAS SAÍDAS
#define led RA7

//****************************************************************


// VARIÁVEIS GLOBAIS


//****************************************************************

void interrupt() // Início da rotina de interrupção
{
if(TMR1IF)
{
TMR1IF=0;
if(CCP1IF)
{
CCP1IF=0;
led=1;
}
else
{
led=0;
}
}
}
//****************************************************************

//ROTINA PRINCIPAL
void main() // Início do programa principal
{
TRISB = 0b00001000; // Todos os pinos do PortB como saída, exceto RB3
PORTB = 0b00000000; // PortB é carregado
TRISA = 0b01111111; // Todos os pinos do PortA como entrada, exceto RA7
PORTA = 0b00000000; // PortA é carregado
CMCON = 0x07; // Desabilita os comparadores de tensão
led=0;

//T1CON, TMR1L e TMR1H
T1CKPS1=0; // Prescaler em 1:1
T1CKPS0=0; // Prescaler em 1:1
T1OSCEN=0; // Oscilador desabilitado
T1SYNC=0; // Sistema de sincronismo ligado (modo síncrono)
TMR1CS=0; // Clock interno (Fosc/4)
TMR1ON=1; // Timer1 habilitado

//INTCON, PIE1 e PIR1
GIE=1; // Chave geral das interrupções
PEIE=1; // Chave do grupo de interrupções de periféricos

CCP1IE=1; // Chave individual da inbterrupção de CCP1
TMR1IE=1; // Chave individual da interrupção de TMR1

//CCP1CON, CCP1L e CCP1H
CCP1M3=0; // Capture ligado para borda de subida em 1:1
CCP1M2=1; // Capture ligado para borda de subida em 1:1
CCP1M1=0; // Capture ligado para borda de subida em 1:1
CCP1M0=1; // Capture ligado para borda de subida em 1:1

//****************************************************************

while(1)
{


}
} // Fim do programa principal
//TODO PROGRAMA DEVERÁ TERMINAR COM UMA LINHA EM BRANCO(ABAIXO DESTA)
Mixicus
Bit
 
Mensagens: 20
Registrado em: 11 Mai 2009 20:03
Localização: Brusque - SC

Mensagempor RobL » 19 Jun 2009 19:46

Não disse qual a dúvida. Vamos supor que o led não esteja acendendo:
Teste com um sinal alto bem longo, ou fixo no tempo, e veja se seu led acende.
Não esquecer se os pulsos forem muito rápido, seus olhos não verão o led acender.
Se não acender reveja sua configuração do ccp1.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor Mixicus » 22 Jun 2009 07:58

RobL escreveu:Não disse qual a dúvida. Vamos supor que o led não esteja acendendo:
Teste com um sinal alto bem longo, ou fixo no tempo, e veja se seu led acende.
Não esquecer se os pulsos forem muito rápido, seus olhos não verão o led acender.
Se não acender reveja sua configuração do ccp1.

Ops... esqueci mesmo hehe.
A dúvida é que não estou sabendo configurar direito essas interrupções, ou seja, quando precisa tratar uma interrupção tenho dificuldades em configurálas.
Neste exemplo ai quando boto um sinal alto, as vezes o led acende e as vezes não.
Gostaria de que me ajudassem a configurar a interrupção, leitura de FLAGS e tals.
Obs.: RobL, coloquei uma frequência bem baixa para poder visualizar o led.
Abraços, Mixicus.
Mixicus
Bit
 
Mensagens: 20
Registrado em: 11 Mai 2009 20:03
Localização: Brusque - SC


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x