Página 1 de 2

Programa Teste PIC16F84A

MensagemEnviado: 28 Nov 2006 06:41
por Ricardo_Franco
Ola Senhores.
Sou novo no mundo PIC, mas ja conheço alguns outros microcontroladores.
Estou tentando programar um PIC em C, apenas um programa de teste.

cpp code
#include <16F84.h>
#use delay ( clock = 4000000 )

main()
{
int tempo;
tempo = 100;
while(1)
{
output_high(PIN_B0);
delay_ms (tempo);
output_low (PIN_B0);
delay_ms (tempo);
}
}


Ele compila certinho não da erro (CCS V4.013) mas eu descarrego no IC-PROG ele fala “tudo OK”
E o bixo não roda ....
Alguém pode Ajudar por favor....
Estou utilizando um cristal de 4 Mhz.

Ricardo Franco

MensagemEnviado: 28 Nov 2006 08:39
por ric_vas
Procure sobre #FUSES no manual do CCS. Devem haver alguns exemplos aqui mesmo no forum.

Algo tipo:

#use delay(clock=20000000, restart_wdt)
#fuses HS,WDT128,PROTECT,NOPUT,NOBROWNOUT,NOLVP,WRT,NOSTVREN

Você deve ajustar os valores para o processador que está utilizando.

Ric

P.S. Eu tb. costumo desabilitar todas as interrupções que não estou utilizando (antes do loop infinito do main).

MensagemEnviado: 28 Nov 2006 10:39
por Ricardo_Franco
Obrigado RIC
mas acho que o que eu preciso seria um programa mastigado em C (para CCS) onde eu possa acender um LED que está com o Anodo no pino RB0, a partir dai eu consigo desenvolver alguma coisa.
Se Você puder ajudar ou alguém do Forum será de grande avalia.

Ricardo Franco

MensagemEnviado: 28 Nov 2006 13:12
por Hogmoho
No forum antigo haviam vários tópicos sobre isso , se alguém puder indicar como acessar esses tópicos você encontrará bastante material

MensagemEnviado: 28 Nov 2006 13:22
por zielpunkt
Ricardo,

O que o ric_vas disse é correto: vc precisa declarar os fuses logo no inicio do teu programa pra ele funcionar. O PIC tem uma série de dispositivos internos que vc habilita ou não por meio desses fuses. O CCS tem um "wizard" que te mostra isso no inicio de um novo projeto. Inicia por ele e na aba "general" pede pra mostrar o código e vc entenderá.

É isso.

MensagemEnviado: 28 Nov 2006 17:19
por Ricardo_Franco
Ola Obrigado pelas dicas.
Mas eu achei o defeito
Esqueci de colocar o MCLR um VDD.
Estou a tarde inteira me matando para fazer esse bixo funcionar, e agora enquanto escrevia mais um lamento percebi minha "pequena" distração.
Valeu mesmo pessoal.

Ricardo Franco

MensagemEnviado: 28 Nov 2006 18:16
por Ricardo_Franco
É Senhores me antecipei um pouco. o programa não rada apenas acende um led de vez em quando já refis todas as ligações. e alterei o código como sugestão do Ric_Vas.
É o PIC parecia mais facil de longe.
Será que alguém tem mais alguma sugestão? Estou realmente precisando.
Obrigado

Ricardo Franco

cpp code
//------------------------------------------------------------------------------

#include <16F84A.h>
#use delay ( clock = 4000000 )
#fuses XT,NOPUT, NOWDT, NOPROTECT

main(void)
{
while(true)
{
output_high(PIN_B0);
delay_ms (1000);
output_low (PIN_B0);
delay_ms (1000);
}
}

MensagemEnviado: 28 Nov 2006 19:14
por Ricardo_Franco
Apenas uma dúvida, eu posso montar o circuito com PIC em protoboard?
pois o meu está montado em um.

Ricardo Franco

MensagemEnviado: 28 Nov 2006 19:36
por lucaszampar
Poder pode, mas já tive problemas montando circuitos com PIC em protoboard... Mal contato e capacitancia são sérios problemas.
Se possível monte o circuito em uma placa padrão, já fica bem melhor.
Aparentemente o fonte está correto, creio que seja algum problema com hardware mesmo.

MensagemEnviado: 28 Nov 2006 20:59
por ric_vas
Realmente protoboard é complicado para algumas coisas....mas eu tenho pequeno circuito com memória i2c, leds, canal serial rs232 e clock de 20Mhz rodando em um protoboard...as vezes tenho que resetar, mas normalmente roda :D

Ric

P.S. Se você puder dar mais alguma info. de seu circuito pode ajudar...

MensagemEnviado: 29 Nov 2006 05:33
por Ricardo_Franco
Um Amigo meu trabalha com PIC a algum tempo já, e tem bastante material sobre o 16F84A, me passou alguns Hexa's prontos para eu isolar o problema, vamos ver se é software, ou hardware.
Obrigado pela pronta ajuda pessoal

Ricardo Franco

MensagemEnviado: 29 Nov 2006 08:48
por zielpunkt
Só pra conferir: vc colocou capacitores entre o cristal e GND? Já trocou de cristal? A sua protoboard não está com problemas de contato? Está parecendo que o teu oscilador não está funcionando. Afinal, problemas em protoboard com 4MHz não seriam muito comuns...e o teu programa parece ok.

MensagemEnviado: 29 Nov 2006 09:12
por alessandro
De uma olhada nas ligações e tenha certeza que o MCLR esta aliementado com o 5V, o cristal correto com os capacitores para GND.
Porque seu codigo esta funcionando aqui sem problemas (no protoboard).

Alessandro

MensagemEnviado: 30 Nov 2006 22:31
por Ricardo_Franco
Obrigado pela ajuda.
Eu vou conferir o hardware de novo e trocar de proto, mais uma dúvida eu useu capacitores diferentes dos recomendados, estou usando capacitores de 100 nF, quando o recomendado é de 33pF, será que isso pode estar atrapalhando?, digo atrapalhando ao ponto do cara nem oscilar?

Ricardo Franco

MensagemEnviado: 30 Nov 2006 23:01
por ric_vas
Acredito que sim...os capacitores do circuito oscilador estão muito fora do range recomendado.

Aproveitando segue um link com informações sobre este assunto na família PIC:

http://forum.microchip.com/printable.aspx?m=49934

Ric