Ir ao conteúdo

Problemas com pic16f628


Micael77

Posts recomendados

Postado

Olá

eu estou desenvolvendo um projeto com o pic 16f628

porém estou com um probleminha na hora de rodar o programa

ele simplesmente NÃO RODA, não faz nada

nem mesmo um simples progrma para ligar um led ele não executa

este pic tem alguma coisa diferente dos outros que precisa ser feito para o mesmo rodar?

e eu obviamente já gravei o pic, para ter certeza de que o programa estava nele

eu "puxei" o programa de volta e estava tudo ok

alguém poderia por favor me dar ma ajuda

este meu projeto já está atrasado quase 1 mês por causa desse pic

Muito obrigado pela ajuda

Postado

COmo estão as configurações do PIC(oscilador, master_clear, brownout, power up, watchdog,etc)?

Poderia postar por favor?

Quando acontece isso com o pessoal, geralmente o problema não é com o software, mas com o programador que esquece de configurar (ou não estuda pra que elas servem) o chip, pois no simulador ele não diferencia.

Desculpe a franqueza, mas isso é so um toque não so pra você mas para o pessoal que aparece sempre com o mesmo problema que na simulação roda, mas na pratica não...

abs.

Postado

vou colocar um print do gravador anexada

como sempre ele grava ok

mas não executa nada

a e mais uma coisa que esqueci de citar

as ligações dos pinos estão corretas

post-604138-13884954247211_thumb.jpg

Postado

já usei 3 chips

o codigo não tem nada

só manda ele ligar uma saída

#include <16f628.h>

#device ADC=10

#use delay (clock=8000000)

#define use_portb_lcd true

void main()

{

output_high(pin_b4);

}

eu estava medindo agumas coisas aqui para ver se está tudo ok

e acabei cololando a pontera vermelha do multimetro no pino 16 onde é a entrada de clock e ele acndeu o lede neste momento

alguma ideia do que pode ter sido?

Postado

Não, não é Dani, é bem diferente.

amigo Micael, esqueça essa de 'eu nunca precisei fazer' configurar os PORTS, timers e periféricos é necessario com qualquer microcontrolador e em qualquer linguagem, pois você nunca sabe como iniciara os estados dos mesmos.

Tenta por ele para rodar usando o oscilador interno.

abs.

Postado
Não, não é Dani, é bem diferente.

amigo Micael, esqueça essa de 'eu nunca precisei fazer' configurar os PORTS, timers e periféricos é necessario com qualquer microcontrolador e em qualquer linguagem, pois você nunca sabe como iniciara os estados dos mesmos.

Tenta por ele para rodar usando o oscilador interno.

abs.

Bom Felipe_Eletronic

Você se equivocou em escrever isto, pois o compilador ccs configura o tris automaticamente, ou seja, se você colocar output_high(pino) em uma linha e depois colocar input(pino), o próprio compilador se encarrega de setar ou resetar o tris referente ao pino. Salvo se você utilizar standard I/O.

Renan

Micael77

Estudar o datasheet do 628A não faz mal. :D

A documentação do CCS também.

O CCiéca é bom, pois comfigura muita coisa sozinho, mas você tem que saber o que está acontecendo com seu micro. Configure os registradores do pic manualmente.(TRIS CMCON etecétera)

Poste o circuito (hardware) para ajudarmos você.

Renan

já usei 3 chips

o codigo não tem nada

só manda ele ligar uma saída

#include <16f628.h>

#device ADC=10

#use delay (clock=8000000)

#define use_portb_lcd true

void main()

{

output_high(pin_b4);

}

eu estava medindo agumas coisas aqui para ver se está tudo ok

e acabei cololando a pontera vermelha do multimetro no pino 16 onde é a entrada de clock e ele acndeu o lede neste momento

alguma ideia do que pode ter sido?

#include <16F628.h>
#device ADC=8
#FUSES NOWDT, HS, NOPUT, PROTECT, NOBROWNOUT, NOMCLR, NOLVP, NOCPD
#use delay(clock=8000000)

void main(void)
{
output_high(pin_b4);
}

faltou a configuração dos fuses
lembrando que o conversor do 628 é de apenas 8 bits.

Renan

Postado

Amigo Renan, eu utilizei o CCS durante muito tempo, e sei das suas mordomias, porém o que estou falando é um teste empirico, ha casos em que ele não configura o tris.

Quanto aos fuses ele não esqueceu,veja a imagem e ira reparar que ele os configura na gravação o que também pode ser feito, porém toda a vez que ele for regravar o PIC vai precisar configurar os fuses de novo.

POr outro lado ha gravadores que não sei o motivo quando voce configura os fuses pelo programa do gravador ele não o faz, amigo Micael por curiosidade qual o gravador esta usando.

Ah e tente a solução pelo amigo Renan configure os fuses pelo CCS.

abs.

Postado

bom galera

como eu havia dito antes eu nunca precisei configurar os tristb pois eu uso o CCS

o meu gravador é o EPICWIN não é dos melhores, mas ele já faz o que eu preciso (gravar o pic)

quando eu configuro os fuses no programa ele le o código e os configura no gravador automático por isso não precisa se preocupar com os fuses

ontem depois de uma serie de testes descobri que se eu colocar o oscilador interno

e o progrma rodou beleza mas com o externo ele não faz nada

bom ai não tem problema pois é um componente a menos na placa, na verdade 3 pois tem também os capacitores

só que me ocorreu um outro problema

depois de rodando este pic deve enviar uns dados para o pc

porém o pc só recebe caracteres estranhos

eu estou indo por partes a fim de garantir que tudo funcione

abaixo o codigo que usei para fazer ele mandar os dados

este é apenas um teste para ver se ele envia os dados corretamente

o programa definitivo ainda não é este

e eu tenho uma outra duvida que não consegui descobrir no datasheet

este pic tem i2c?

eu posso comunicar ele com uma EEPROM por este protocolo?

#include <16f628a.h>
#device ADC=10
#use delay (clock=8000000)
#define use_portb_lcd true
//#include <cuscostdio.h>

#use i2c(MASTER, SDA=PIN_B4, SCL=PIN_B3)//habilita comunicação i2c
#use RS232(baud=9600, parity=E, bits=8, xmit=PIN_B2,rcv=PIN_B1)//habilita comunicação serial RS-232

#define EEPROM_WRITE_ADDRESS 0xA4
#define EEPROM_READ_ADDRESS 0xA5

void main()
{
int num, hora, min, seg, dia, mes, ano;
long j = 0;
int16 add = 0;
printf ("\n\rMECTRON AUTOMACAO INDUSTRIAL\n\rwww.mectron.ind.br");
while (1)
{
printf ("\n%d", num);
num++;
}
}

mais uma vez obrigado

Postado
depois de rodando este pic deve enviar uns dados para o pc

porém o pc só recebe caracteres estranhos

Está usando convesor de nivel, max232 ou similares? senão use - o.

e eu tenho uma outra duvida que não consegui descobrir no datasheet

este pic tem i2c?

eu posso comunicar ele com uma EEPROM por este protocolo?

SIm, ele tem, e pode comunicar com uma eeprom I2c.

abs.

Postado

bom eu estou usando o MAX232

ainda bem qu ele comunica pois se não comunicasse eu iria precisar de outro pic

alguma ideia dele estar dando este erro na comunicação??

de apenas receber caracteres estranhos?

Postado

eu estou usando o hyperterminal também

eu esto usando a cuscopic para gravar este pc

mas montei o circuito em uma protoboard para testar

a principio está tudo certo nas ligações

não faço a minima ideia do porque ele não comunica

alguem pode ter alguma ideia??

mais uma coisa

o clock interno do pic é de quantos Mhz??

pode ser isso q esteja gerando o erro

obrigado mais ma vez

EDIT:

bom consegui fazer comunicar

as ligacoes que eu tinha me baseado estavam trocadas

mas ainda me resta um problema

como fazer o i2c sem que o pic tenha suporte ao mesmo alguem pode m dar uma dica??

valeu

Postado

eu fiz umas rotinas i2c na mão

seria isso que tinha que ter feito

segue o código

#define SCL PIN_B3
#define SDA PIN_B4

void i2cWrite(int8 cmd)
{
int8 i;
int8 send;
short ack
send = cmd;
do
{
for(i=0;i<=7;++i)
{
output_bit(SDA, shift_right(&send,1,0) );
output_high(SCL);
output_low(SCL);
}
output_high(SCL);
ack = imput(SDA);
ouput_low(SCL);
}while (ack == 1);
}

int8 i2cRead(short cmd)
{
int8 i,data;

for(i=0;i<=7;++i) {
shift_right(&data,1,input(SDA));
output_high(SCL);
delay_us(2);
output_low(SCL);
delay_us(2);
}
i2cWrite(cmd);
return(data);
}

void i2cStart()
{
output_high(SCL);
output_low(SDA);
output_low(SCL);
}

void i2cStop()
{
output_low(SDA);
output_high(SCL);
output_high(SDA);
output_float(SCL);
output_float(SDA);
}

Arquivado

Este tópico foi arquivado e está fechado para 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!