segunda-feira, junho 28, 2010

Placa Protótipo PIC - Teste

Embora a minha placa não seja muito complicada, já tem um número de conexões suficiente para não ser improvável um erro. É, portanto, importante fazer alguns testes em uma ordem que diminua a probabilidade de queimar um dos componentes.



Antes de mais nada, convêm fazer uma boa inspeção visual, se possível com uma lupa. Uma pinça pode ajudar a conferir se as soldas estão firmes. Verifique também se a polaridade dos capacitores está correta.

Antes de colocar os dois integrados soquetados, uma boa providência é conectar a bateria e conferir as tensões com um multímetro. Se tudo estiver certo, teremos 5V na saída do regulador 7805 e esta tensão deve estar indo para os pinos de alimentação dos integrados.

Em seguida, desligar o circuito, colocar o MAX232 e verificar as tensões nos pinos dele, no conector serial e do no soquete do PIC. O pino 2 do MAX232 deve ter uma tensão entre +8 e +9V, o pino 6 deve ter uma tensão entre -8 e -9V. O pino Tx do conector serial deve estar com a tensão negativa (o que corresponde ao nível '1' no RS232). As tensões negativas e acima de 5V não devem estar chegando ao soquete do PIC.

Se tudo estiver certo, é hora de desligar o circuito e colocar o PIC. Quando você ligar o circuito provavelmente não vai acontecer muita coisa, pois o PIC não vai estar programado. Você pode programar o PIC fora da placa ou, se for mais corajoso, na própria placa. Durante a programação, o nosso circuito precisa estar alimentado pela bateria. Experimente primeiro apagar a Flash e conferir o apagamento. Passando neste teste, é hora de gravar um programa de teste.

O programa abaixo, feito com o PIC C Compiler da CCS, faz um teste bem básico. Primeiro envia uma mensagem pela serial. Em seguida fica em loop lendo caracteres da serial, os ecoando (enviando de volta) e, se for um caracter entre 0 e 5, muda os sinais no conector de expansão. Para usar este teste, rode no PC o Hyperterminal (ou seu programa de comunicação preferido) configurado para 9600bps, 8 bits de dados, sem paridade. Você pode usar o multímetro para conferir que os sinais do conector de expansão mudam conforme os caracteres enviados do PC para a placa.
// Includes e definições relativas ao hardware
#include <16F688.h>
#device adc=8
#use delay(clock=20000000)
#use rs232 (baud=9600, xmit=PIN_C4,rcv=PIN_C5)
#fuses HS
#fuses NOWDT, NOCPD, NOPROTECT
#fuses PUT, BROWNOUT, MCLR


// Programa Principal
void main()
{
char c;

// Iniciações do hardware
set_tris_c (0xE0); // C0 a C4 output
#use fast_io(C)

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC);
setup_vref(FALSE);
setup_adc(ADC_OFF);

delay_ms (2000);
puts ("Teste da serial");

for (;;)
{
c = getc();
putchar (c);
switch (c)
{
case '0':
output_toggle (PIN_C0);
break;
case '1':
output_toggle (PIN_C1);
break;
case '2':
output_toggle (PIN_C2);
break;
case '3':
output_toggle (PIN_C3);
break;
case '4':
output_toggle (PIN_A0);
break;
case '5':
output_toggle (PIN_A1);
break;
}
}
}

Daí para frente é começar a ligar coisas ao conector de expansão e começar a fazer coisas mais úteis.

Nenhum comentário: