Página 1 de 2
Programa Teste PIC16F84A

Enviado:
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

Enviado:
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).

Enviado:
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

Enviado:
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

Enviado:
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.

Enviado:
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

Enviado:
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);
}
}

Enviado:
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

Enviado:
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.

Enviado:
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
Ric
P.S. Se você puder dar mais alguma info. de seu circuito pode ajudar...

Enviado:
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

Enviado:
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.

Enviado:
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

Enviado:
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

Enviado:
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