Problema urgente com PIC

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Problema urgente com PIC

Mensagempor juniordsj » 18 Nov 2010 23:05

Bom dia. eu estou fazendo um projeto de tcc e o meu objetivo é utilizar um pic16f628a para enviar sinal a alguns servo motores de aeromodelismo que irão movimentar um braço robotico. eu fiz o programa no PIC C da CCS e testei usando o Proteus ele compilou sem erros e tambem funcionou no Proteus mas qdo monto a placa nada funciona não tem saida em nenhum dos pinos testei inclusive com o osciloscopio, quanto ao circuito está ok o programa é o seguinte

#include <16f628a.h>
#include <stdio.h>
#fuses XT,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,MCLR,LVP
#use delay(clock=4000000)


void main()
{
short int entrada;
long int tmp = 0;
long int repeticao = 0;
entrada = input (pin_a0);


setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);

long int delay1 = 2000;
long int delay2 = 1400;
long int delay3 = 1600;
long int delay4 = 1800;
long int delay5 = 1900;
long int delay6 = 2200;
long int tempo = 0;

do{

if(repeticao >200 && repeticao < 400)
{
delay1 = 2000;
delay2 = 2000;
delay3 = 2000;
delay4 = 2000;
delay5 = 2000;
delay6 = 2000;
}


if(repeticao >=400 && repeticao < 600)
{
delay1 = 1000;
delay2 = 1619;
delay3 = 980;
delay4 = 971;
delay5 = 972;
delay6 = 973;
}

if(repeticao >=600 && repeticao < 800)
{
delay1 = 2000;
delay2 = 2000;
delay3 = 2000;
delay4 = 2000;
delay5 = 2000;
delay6 = 2000;
}

if(repeticao >=800 && repeticao < 1000)
{
delay1 = 950;
delay2 = 950;
delay3 = 950;
delay4 = 950;
delay5 = 950;
delay6 = 950;
}

if(repeticao >=1000 && repeticao < 1200)
{
delay1 = 2000;
delay2 = 2000;
delay3 = 2000;
delay4 = 2000;
delay5 = 2000;
delay6 = 2000;
}

if(repeticao >=1200 && repeticao < 1400)
{
delay1 = 950;
delay2 = 950;
delay3 = 950;
delay4 = 950;
delay5 = 950;
delay6 = 950;
}

if(repeticao >=1400 && repeticao < 1600)
{
delay1 = 2000;
delay2 = 2000;
delay3 = 2000;
delay4 = 2000;
delay5 = 2000;
delay6 = 2000;
}

if(repeticao >=1600 && repeticao < 1800)
{
delay1 = 950;
delay2 = 950;
delay3 = 950;
delay4 = 950;
delay5 = 950;
delay6 = 950;
}

if(repeticao >=1800 && repeticao < 2000)
{
delay1 = 2000;
delay2 = 2000;
delay3 = 2000;
delay4 = 2000;
delay5 = 2000;
delay6 = 2000;
}

if(repeticao >2000)
{
delay1 = 950;
delay2 = 950;
delay3 = 950;
delay4 = 950;
delay5 = 950;
delay6 = 950;
repeticao=0;
}

OUTPUT_HIGH(pin_b0);
delay_us(delay1);
OUTPUT_LOW(pin_b0);

OUTPUT_HIGH(pin_b1);
delay_us(delay2);
OUTPUT_LOW(pin_b1);

OUTPUT_HIGH(pin_b2);
delay_us(delay3);
OUTPUT_LOW(pin_b2);

OUTPUT_HIGH(pin_b3);
delay_us(delay4);
OUTPUT_LOW(pin_b3);

OUTPUT_HIGH(pin_b4);
delay_us(delay5);
OUTPUT_LOW(pin_b4);

OUTPUT_HIGH(pin_b5);
delay_us(delay6);
OUTPUT_LOW(pin_b5);

tmp=delay1+delay2+delay3+delay4+delay5+delay6;
tempo=20000-tmp;
delay_us(tempo);
repeticao++;
output_high(pin_b6);
entrada = input (pin_a0);
}while(1);



}

No Proteus está assim

Pino RB0 a RB5 servos
RA5 Positivo(Mclr)
RA6 e RA7 está ligado um cristal junto com 2 capacitores de 18pf e um indo para o positivo(5v) e o outro pro GND.

espero que possam me ajudar no meu trabalho
juniordsj
 
Mensagens: 1
Registrado em: 09 Nov 2010 20:28

Mensagempor renatokodaira » 19 Nov 2010 05:26

RA6 e RA7 está ligado um cristal junto com 2 capacitores de 18pf e um indo para o positivo(5v) e o outro pro GND.


Os dois sao para GND. Veja na datasheet como eh que se liga corretamente.
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15

Mensagempor Andre_Cruz » 19 Nov 2010 22:52

juniordsj,

O esquema de ligação do cristal externo a uC PIC, esta exemplificado nessa imagem retirada do datasheet, do manual de referência da familia 16 da microchip.

http://www.iesleonardo.info/ele/pro/CUR ... atill3.gif

Abraço

André Cruz
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x