Ir ao conteúdo
  • Cadastre-se

Problema com o pic


Posts recomendados

Olá,

Eu estou com um projeto em mente e pretendo utilizar um microcontrolador PIC 16F877A nele. Então, como não tenho muita experiência, resolvi tentar aprender como mexer neste microcontrolador e, de início, quis fazer um LED Blink, no qual um LED apenas piscará.

Para isso, utilizei o programa MikroC PRO for PIC com o seguinte código:

void main() {
  TRISB = 0;
  PORTB = 0;

  do {
    PORTB = 0;
    Delay_ms(500);
    PORTB = 1;
    Delay_ms(500);
  } while(1);
}

Configurei o programa para utilizar um oscilador RC (pois no momento não tenho um cristal) e compilei. Utilizei o Pickit 3 juntamente com o MpLab IPE para enviar para o PIC. O programa relatou que enviou/programou o PIC com sucesso.

Fiz as seguintes ligações em protoboard:

Gk7xBi0.png

 

Fiz estas ligações seguindo a imagem esquemática do PIC no datasheet:

uHBFqtb.png

 

O LED simplesmente permanece desligado durante todo o tempo, sem nem ao menos dar uma piscadela sequer.

Desculpem se foi algum erro "bobo", mas preciso de ajuda para fazer funcionar um projetinho desse, já que a partir daí virão outros.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Veja com + carinho o d.s. os valores para oscilador RC e também COMO devem ser ligados. Penso ser da ordem de dezenas de K e alguns pF´s no máximo nF´s . Obviamente o correto valor de delay() depende disso.

Olha esta taquigrafia...

while(1)

{

PORTB^=1;

delay(xxx);

}

Vai dar a lesma lerda com bytes a menos.

Piscou 1 led? Falta pouco pra dominar o mundo!

Não use led verde

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Continuando a partir da Isadora, Figura 14-3 - RC OSCILLATOR MODE.

Rext entre 3k e 100k e Cext maior que 20pF.

Essa constante de tempo está em 0,1s (muito alta). Selecione um capacitor com valor entre 22pF e 220pF.

Você configurou a seleção da palavra de controle para oscilador RC? Mesmo assim, com essa constante de tempo, acho que haveria alguma incompatibilidade.

MOR_AL

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Isadora Ferraz disse:

Veja com + carinho o d.s. os valores para oscilador RC e também COMO devem ser ligados. Penso ser da ordem de dezenas de K e alguns pF´s no máximo nF´s . Obviamente o correto valor de delay() depende disso.

Olha esta taquigrafia...

while(1)

{

PORTB^=1;

delay(xxx);

}

Vai dar a lesma lerda com bytes a menos.

Piscou 1 led? Falta pouco pra dominar o mundo!

Não use led verde

Ah, obrigado Isadora, realmente eu havia olhado a parte do datasheet sobre osciladores de forma rápida e confundido 20pF com 20uF. Mas acha o problema seja somente este? Seria melhor utilizar um cristal para isso?

 

31 minutos atrás, MOR disse:

Continuando a partir da Isadora, Figura 14-3 - RC OSCILLATOR MODE.

Rext entre 3k e 100k e Cext maior que 20pF.

Essa constante de tempo está em 0,1s (muito alta). Selecione um capacitor com valor entre 22pF e 220pF.

Você configurou a seleção da palavra de controle para oscilador RC? Mesmo assim, com essa constante de tempo, acho que haveria alguma incompatibilidade.

MOR_AL

Realmente, acabei deixando isso passar. Como calcula-se essa constante de tempo? Qual a melhor forma de dimensionar o circuito RC para essa finalidade? Quando você diz "seleção da palavra de controle", isso seria a configuração de qual será a fonte de oscilação? Obrigado pela resposta!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
1 hora atrás, Darnley da Silva disse:

Mas acha o problema seja somente este?

Talvez

1 hora atrás, Darnley da Silva disse:

Seria melhor utilizar um cristal para isso?

Sim!

1 hora atrás, Darnley da Silva disse:

"seleção da palavra de controle", isso seria a configuração de qual será a fonte de oscilação?

Sim!

Link para o comentário
Compartilhar em outros sites

Opa, obrigado pela ajuda de ambos! Eu refiz o circuito utilizando um cristal de 9MHz e agora está funcionando.


Segue a montagem: 
njstZZL.png

 

Segue o código, sugerido pela Isadora:

void main() {
  TRISB = 0;
  PORTB = 0;

  do {
    PORTB ^= 1;
    Delay_ms(500);
  } while(1);
}

Novamente, agradeço a ajuda de ambos!

Link para o comentário
Compartilhar em outros sites

6 horas atrás, Nao Sei disse:

@Darnley da Silva O crystal no proteus não é simulado.A frequência você deve determinar clicando em cima do pic,e trocando o clock dele,o crystal é apenas enfeite.

Estou ciente disso, só utilizei ele para montar o circuito e postar aqui. Na realidade, estou utilizando um cristal de 9MHz ou 20MHz.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!