sábado, 3 de maio de 2008

Mosaico MacLab2 - A ressurreição...

Senhores leitores,

Não sei quantos de vocês utilizam esta ferramenta, eu pessoalmente utilizo e gosto muito da minha MacLab2 como placa para desenvolvimento com PIC... tenho a minha há 3 anos no mínimo... no entanto certas coisas nela me irritam... como por exemplo alguns bugzinhos que aparecem aqui e ali, montagem porca... economia imbecil em peças de qualidade ...
Pois bem resolvi fazer uns mods na minha placa... cito eles a seguir:

1. Colocar um conector para poder trocar o LCD e utilizar LCD diferentes do 16x2 vagabundo que eles manda com a placa;
2. Tirar aquele maldito ressonador de 4Mhz e instalar dois ceramicos de 22pF e um soquete para cristal (essa foi a melhor coisa que eu fiz na placa até agora!);
3. Corrigir o bug do pullup no pino 6 da EEPROM externa, colocando um resistor de 10K entre os pinos 6 e 8 da EEPROM;
4. Colocão de um soquete ZIF de 40 pinos para facilitar a retirada inserção dos chips...

Pois bem .... hoje vou postar o meu terceiro mod, o da EEPROM...

Notem no esquema abaixo como vem de fábrica a EEPROM da MacLab2...


O correto seria conforme o esquema abaixo:



Bom é isso... assim que possível posto fotos e mais alguns detalhes sobre as MODs que eu ando fazendo...

Aqui segue um pequeno programinha para testar esta mod, em CCSC ...

#include <16f877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#use i2c(master, sda=PIN_C4, scl=PIN_C3)

void main() {
BYTE data;
data=0;
do {
printf("Writing...\n\r");
i2c_start();
printf("i2c_start();\n\r");
i2c_write((0xa0|(BYTE)(0x05>>7))&0xfe);
printf("i2c_write((0xa0|(BYTE)(0x05>>7))&0xfe);\n\r");
i2c_write(0x05);
printf("i2c_write(0x05);\n\r");
i2c_write(data);
printf("i2c_write(data);\n\r");
i2c_stop();
printf("i2c_stop();\n\r");
printf("Reading...\n\r");
i2c_start();
printf("i2c_start();\n\r");
i2c_write((0xa0|(BYTE)(0x05>>7))&0xfe);
printf("i2c_write((0xa0|(BYTE)(0x05>>7))&0xfe);\n\r");
i2c_write(0x05);
printf("i2c_write(0x05);\n\r");
i2c_start();
printf("i2c_start();\n\r");
i2c_write((0xa0|(BYTE)(0x05>>7))|1);
printf("i2c_write((0xa0|(BYTE)(0x05>>7))|1);\n\r");
data=i2c_read(0);
printf("data=i2c_read(0);\n\r");
i2c_stop();
printf("i2c_stop();\n\r");
printf("Value=%d\n\r",data);
data++;
delay_ms(500);
} while (TRUE);
}

Antes que algum engraçadinho venha falar besteira... SIIIM ... eu utilizei o 16F877 e não o 16F877A ... que na verdade é o que eu uso na maior parte das minhas aplicações.

Ai vai também uma tela do programinha funcionando, só pra dizer que "nóis mata a cobra e mostra o pau..." ...


That's all folks...

Nenhum comentário:

Postar um comentário