collapse

* Links de Robótica

* Posts Recentes

Palavras Cruzadas por brunus
[Hoje às 01:13]


[Projecto] Bomba Airsoft por jm_araujo
[23 de Setembro de 2017, 16:54]


Apresentação por Tech_JA
[23 de Setembro de 2017, 09:19]


Medir Agua que está no Poço por filjoa
[21 de Setembro de 2017, 20:58]


URGENTE - display de 7 segmentos com backpack por helderjsd
[20 de Setembro de 2017, 12:30]


Preços e fabricantes de pcb por Sérgio_Sena
[19 de Setembro de 2017, 10:20]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]


Ideias para construir um quadrúpede simples por zordlyon
[15 de Setembro de 2017, 10:18]

Autor Tópico: [PIC 18f4550] Timer1 ou Timer3  (Lida 2983 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.390
  • 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.483
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.483
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.483
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