LusoRobótica - Robótica em Português

Sistemas específicos => PIC => Tópico iniciado por: nunosilvarocha em 15 de Junho de 2012, 01:34

Título: [PIC 18f4550] Timer1 ou Timer3
Enviado por: nunosilvarocha em 15 de Junho de 2012, 01:34
Boa noite,
Estou a programar um pic 18f4550 e necessito usar o timer1 ou timer3.
Neste momento já estou a usar o timer0 e o timer2 e preciso ainda de mais um timer, mas não sei como configurar nenhum dos dois!!
Se alguém me poder ajudar eu agradecia...
Título: Re: [PIC 18f4550] Timer1 ou Timer3
Enviado por: senso em 15 de Junho de 2012, 01:56
Já deste uma olhadela na datasheet?
Como é que estás a usar 2 timers e não sabes configurar outro?
A base é sempre a mesma.
Título: Re: [PIC 18f4550] Timer1 ou Timer3
Enviado por: nunosilvarocha em 15 de Junho de 2012, 02:10
Já deste uma olhadela na datasheet?
Como é que estás a usar 2 timers e não sabes configurar outro?
A base é sempre a mesma.

Já tentei ler o datasheet e ainda não percebi o que me falta, não tive problema a configurar os outros dois deve estar a faltar-me algo nestes pois a configuração dos timers e diferente em todos eles.
De momento não tenho nenhum dos testes para mostrar o meu código.
Título: Re: [PIC 18f4550] Timer1 ou Timer3
Enviado por: nunosilvarocha em 15 de Junho de 2012, 02:48
Num programa rápido e sem tempos previamente definidos, não consigo nada.
Para já a ideia é fazer um breakepoint dentro da interrupção, e isso não está a acontecer.

Código: [Seleccione]
#include<htc.H>

__CONFIG(1, HS);
__CONFIG(2, WDTDIS);
__CONFIG(3, MCLREN);
__CONFIG(4, DEBUGEN&LVPDIS);

void interrupt ISR(void)
{
if (TMR1IF==1)
{
RD0!=RD0;
TMR1L = 100;
TMR1H = 100;
TMR1IF=0;
}
}

void main(void)
{

TRISD = 0b00000000;
PORTD = 0b00000000;

GIE=1;
PEIE=1;
TMR1IE = 1;
TMR1IP = 1;

T1CON = 0b11110011;

TMR1L = 100;
TMR1H = 100;

while(1);

}
Título: Re: [PIC 18f4550] Timer1 ou Timer3
Enviado por: beirao em 15 de Junho de 2012, 09:50
o bit T1RUN do registo T1CON está a 1. Não será a 0 ? Não tens nenhum oscilador externo no RC0 e RC1 pois nao? portanto é a 0. deve ser disso... porque assim nao conta!
Título: Re: [PIC 18f4550] Timer1 ou Timer3
Enviado por: nunosilvarocha em 15 de Junho de 2012, 18:03
Depois de voltar a ler o datasheet decidi juntar algumas coisas ao código.
Pelo que percebi o Timer1 trabalha com um oscilador externo em RC0,RC1 ou com um oscilador interno.
Visto que já tenho o resto dos pinos ocupados, tenho que usar o oscilador interno (este é só um programa de teste).
Isto ainda não está muito bem, pois parece-me que ele está a usar o oscilador interno par o Timer1 como oscilador principal.
Outro problema é, na simulação, por mais que varie o valor do TMR1 o tempo da interrupção é sempre o mesmo.
Alguém me pode ajudar?
 
Código: [Seleccione]
#include<htc.H>

__CONFIG(1, HS&IESOEN);
__CONFIG(2, WDTDIS);
__CONFIG(3, MCLREN&LPT1DIS);
__CONFIG(4, DEBUGEN&LVPDIS);

void interrupt ISR(void)
{
if (TMR1IF==1)
{
RD0!=RD0;
TMR1 = 0;
TMR1IF=250;
}
}

void main(void)
{
TRISD = 0b00000000;
PORTD = 0b00000000;
         
T1CON = 0b10111001;

        TMR1 = 0;

GIE=1;
PEIE=1;
        TMR1IF = 0;
TMR1IE = 1;
TMR1IP = 1;

OSCCON = 0b11111101;
while(1);

}
Título: Re: [PIC 18f4550] Timer1 ou Timer3
Enviado por: beirao em 15 de Junho de 2012, 18:30
O Oscilador interno que falas é o oscilador que o PIC tem ou o cristal que lhe colocas (nos pin  13 e 14). Tens algum esquematico das ligações do PIC?

Depois, ele faz a interrupçao? e na interrupcao tens:
                RD0!=RD0;
      TMR1 = 0;
      TMR1IF=250;

Está errado. é TMR1F = 0;
Título: Re: [PIC 18f4550] Timer1 ou Timer3
Enviado por: nunosilvarocha em 15 de Junho de 2012, 18:36
Tenho um oscilador de 20 MHz nos pinos 13 e 14. Mas pelo que li o timer1 ou trabalha com um oscilador interno, ou com um externo nos pinos  15 e 16. Não sei se existe alguma forma de usar o timer1 com o oscilador dos pinos 13 e 14.
Neste momento não tenho nenhum esquemático das ligações.
O TMR1F já foi corrigido e não era dai o problema.
Título: Re: [PIC 18f4550] Timer1 ou Timer3
Enviado por: nunosilvarocha em 16 de Junho de 2012, 21:37
Até agora nada!! Alguém me consegue ajudar?
Título: Re: [PIC 18f4550] Timer1 ou Timer3
Enviado por: beirao em 18 de Junho de 2012, 21:51
experimenta o registo T1CON = 0b10000001;
Título: Re: [PIC 18f4550] Timer1 ou Timer3
Enviado por: nunosilvarocha em 23 de Junho de 2012, 08:32
Parece que assim já tenho algum resultado.
Mas de momento não tenho muito tempo para isto, vou ter que testar mais tarde.
Obrigado pela ajuda beirao