collapse

* Links de Robótica

* Posts Recentes

Feira de electricidade e eletrónica por artur36
[Ontem às 23:07]


Power_OK Enermax por almamater
[Ontem às 12:10]


Recomendação de um opamp para um DAC r2r por jm_araujo
[23 de Novembro de 2017, 10:48]


RN42 e TP-Link MR3020 por doiga
[22 de Novembro de 2017, 19:22]


Ajuda Projecto IR / RF por senso
[22 de Novembro de 2017, 13:15]


Ideias para construir um quadrúpede simples por dropes
[21 de Novembro de 2017, 22:43]


Ajuda com TRIAC por senso
[17 de Novembro de 2017, 18:00]


TV LG White Screen por almamater
[15 de Novembro de 2017, 08:37]


Pergunta sobre prototipagem ( Pesquisa ) por luisjustin
[14 de Novembro de 2017, 23:22]


Medir Agua que está no Poço por Njay
[14 de Novembro de 2017, 13:28]

Autor Tópico: [PIC 18f4550] Timer1 ou Timer3  (Lida 3109 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline nunosilvarocha

  • Mini Robot
  • *
  • Mensagens: 337
[PIC 18f4550] Timer1 ou Timer3
« 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...

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.402
  • Helpdesk do sitio
Re: [PIC 18f4550] Timer1 ou Timer3
« Responder #1 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.
Avr fanboy

Offline nunosilvarocha

  • Mini Robot
  • *
  • Mensagens: 337
Re: [PIC 18f4550] Timer1 ou Timer3
« Responder #2 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.

Offline nunosilvarocha

  • Mini Robot
  • *
  • Mensagens: 337
Re: [PIC 18f4550] Timer1 ou Timer3
« Responder #3 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);

}

Offline beirao

  • Mini Robot
  • *
  • Mensagens: 1.494
Re: [PIC 18f4550] Timer1 ou Timer3
« Responder #4 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!
"O único lugar onde o sucesso vem antes do trabalho, é no dicionário" - Albert Einstein

Offline nunosilvarocha

  • Mini Robot
  • *
  • Mensagens: 337
Re: [PIC 18f4550] Timer1 ou Timer3
« Responder #5 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);

}

Offline beirao

  • Mini Robot
  • *
  • Mensagens: 1.494
Re: [PIC 18f4550] Timer1 ou Timer3
« Responder #6 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;
"O único lugar onde o sucesso vem antes do trabalho, é no dicionário" - Albert Einstein

Offline nunosilvarocha

  • Mini Robot
  • *
  • Mensagens: 337
Re: [PIC 18f4550] Timer1 ou Timer3
« Responder #7 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.

Offline nunosilvarocha

  • Mini Robot
  • *
  • Mensagens: 337
Re: [PIC 18f4550] Timer1 ou Timer3
« Responder #8 em: 16 de Junho de 2012, 21:37 »
Até agora nada!! Alguém me consegue ajudar?

Offline beirao

  • Mini Robot
  • *
  • Mensagens: 1.494
Re: [PIC 18f4550] Timer1 ou Timer3
« Responder #9 em: 18 de Junho de 2012, 21:51 »
experimenta o registo T1CON = 0b10000001;
"O único lugar onde o sucesso vem antes do trabalho, é no dicionário" - Albert Einstein

Offline nunosilvarocha

  • Mini Robot
  • *
  • Mensagens: 337
Re: [PIC 18f4550] Timer1 ou Timer3
« Responder #10 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