segunda-feira, 9 de junho de 2008

Library do Eagle para Renesas R8C/24 e 25 (52 Pinos)

Após procurar exaustivamente na internet por alguma library para MCUs da Renesas de 52 pinos e não encontrar absolutamente nada, resolvi deixar a preguiça de lado e montar a minha.
Após um final de semana relaxante com a Família... todos Dormindo no domingão, o nerd aqui resolveu botar a mão na massa no Eagle. O chato não é fazer o Package e sim o desenho do Schema, junto com as associações dos pinos.
Aproveitei e incrementei uma biblioteca que eu consegui da renesas... a renesas_mcu.lbr ...
Vejam como ficou o desenho do MCU, e seu esquemático... ficou bacana !


Aqui, agora! (essa é velha!) um esquema simplório só pra testar o MCU, e em seguida um routing do mesmo, em dois layers (mas só roteou no TOP ;-) )...



Amanhã sai uma plaquinha LQFP > DIP 52 pinos ... vamos botar pra quebrar agora pessoal!

Pra quem quiser a library, aqui está um link para o rapidshare...

http://rapidshare.com/files/121120059/renesas_mcu_youlink.zip.html

É isso ae pppessoal ... mais uma vez matando a cobra e mostrando o PAU! ... hauauhahua

Bora dormir cambada!

quarta-feira, 4 de junho de 2008

Eletrônica Básica

Para quem quer começar a controlar os electrons ... taí uma boa dica ...


Kits, montagens, jogos, coisas interessantes e não babacas pra quem quer aprender eletronica sem ficar se matando com as revistas nacionais. É um Kit da Make Magazine.

Olha o link ...

http://www.makershed.com/ProductDetails.asp?ProductCode=MKSL1&Show=ExtInfo

O legal é que parece que dá pra comprar e enviar como presente... se alguém quiser me mandar alguns destes... eu agradeço !!! Vai ser divertido ficar montando multivibradores astáveis com transistores!!! ;-)

Morte à bandeirinhas

Pessoal, tá aqui um projeto que eu fiz!... Essa é uma matéria que saiu no Meio&Mensagem, pra quem não conhece é a principal revista dos meios de publicidade e propaganda aqui pras bandas de SP e Rio...
Todo o sistema de comunicação via SMS, acionamento dos led, é projeto meu, desenvolvido com PIC.
Maiores detalhes: PIC16F877 com Modem Siemens, Relés Finder de 10A para acionamento dos Leds, Carregador solar e bateria com autonomia de 24Horas... projetasso!!!

É nóis virando notícia... hehehehe...


#include no CCS

Caros, recentemente numa lista que participo houve uma pergunta sobre como dividir um programa gigante, uma verdadeira tripa de código em blocos *.c ... bom ... a resposta está aí abaixo... Good Luck...

PS: Como estou sem saco pra identar o código aqui no blog... SE VIRA NEGÃO!


Exemplo.c
=========================================
#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)
#byte port_a=5
#byte port_b=6
#byte port_d=8

#include

// Prototypes
void hw_setup(void);

// Variables
byte mychar;

// Main Function
void main(void) {
hw_setup();
while(true) {
if(kbd_hasKey()) {
mychar=kbd_read();
}
}
}

void hw_setup(void) {
set_tris_a(0);
set_tris_b(0);
set_tris_d(0b11110000);
port_b=0;
port_d=0;
//init_ext_eeprom();
kbd_init();
//lcd_init();
//ds1307_init(DS1307_OUT_ON_DISABLED_HIHG | DS1307_OUT_ENABLED | DS1307_OUT_1_Z);
}
=========================================

keyb3x4.c
=========================================
// keyb3x4.c
// Change these pins to fit your own board.

#define KBD_C1 PIN_B0
#define KBD_C2 PIN_B1
#define KBD_C3 PIN_B2

#define KBD_L1 PIN_B3
#define KBD_L2 PIN_B4
#define KBD_L3 PIN_B5
#define KBD_L4 PIN_B6

char detected;

char verifyLine(int mapL) {
int line = 0;
if(bit_test(mapL,0)) {
line = 1;
output_high(KBD_L1);
} else {
output_low(KBD_L1);
}
if(bit_test(mapL,1)) {
line = 2;
output_high(KBD_L2);
} else {
output_low(KBD_L2);
}
if(bit_test(mapL,2)) {
line = 3;
output_high(KBD_L3);
} else {
output_low(KBD_L3);
}
if(bit_test(mapL,3)) {
line = 4;
output_high(KBD_L4);
} else {
output_low(KBD_L4);
}
if(input(KBD_C1)==1) {
while(input(KBD_C1)==1) delay_ms(10);
if(line==1) return('1');
if(line==2) return('4');
if(line==3) return('7');
if(line==4) return('*');
}
if(input(KBD_C2)==1) {
while(input(KBD_C2)==1) delay_ms(10);
if(line==1) return('2');
if(line==2) return('5');
if(line==3) return('8');
if(line==4) return('0');
}
if(input(KBD_C3)==1) {
while(input(KBD_C3)==1) delay_ms(10);
if(line==1) return('3');
if(line==2) return('6');
if(line==3) return('9');
if(line==4) return('#');
}
return('\0');
}

void detectKey(void) {
int t;
int mapL;
int mapC;

mapL = 0x0000001;
for (t=0; t<4; t++) {
mapC = verifyLine(mapL);
mapL = mapL << 1;
if(mapC != '\0') {
detected = mapC;
return;
}
}
}

void kbd_init(void) {
detected='\0';
}

int kbd_hasKey(void) {
detectKey();
if(detected != '\0') return(1);
return(0);
}

char kbd_read() {
char toReturn;
toReturn = detected;
detected='\0';
return(toReturn);
}
=========================================

E agora... como eu sempre digo: mato a cobra e mostro o pau!!!

Eis o output do CCS...
=========================================
Clean: Deleting intermediary and output files.
Clean: Deleted file "Exemplo.ERR".
Clean Warning: File "C:\test\Exemplo\Exemplo.o" doesn't exist.
Clean: Done.
Executing: "C:\Program Files\PICC\Ccsc.exe" "Exemplo.c" +FM +DF +LN +T -A +M +Z +Y=9 +EA
Memory usage: ROM=3% RAM=2% - 4%
0 Errors, 0 Warnings.
Loaded C:\test\GustavoExemplo\Exemplo.cof.
BUILD SUCCEEDED: Wed Jun 04 21:56:32 2008
=========================================

RFiD Omron V750

Mais uma vez pra mostrar que o Blog aqui mata a cobra e mostra o pau (ui!) coloco pra vocês as fotos de uma aplicação que estou terminando de desenvolver utilizando o hardware de RFiD da Omron modelo V750 com especificação brasileira.
O leitor/gravador, doravante denominado módulo, trabalha a 900Mhz (870 a 915 Mhz pra ser mais exato) e escreve e lê inlays de segunda geração.
Estou utilizando inlays Scorpion da Omron, substrato de alumínio, chipset Impinj Monza. O que dá +/- 4.3 metros de distância de leitura.
Bom chega de papo e vamos as fotos...




Apresento o módulo V750 da Omron...


Etiqueta com identificação do bichinho !!! Notem o "-BR" no final do código. É o único reader/writer de 900Mhz gen2 homologado pela Anatel... Foi dificiil mas nós conseguimos!


Este é o painel. Através dele podemos acompanhar os ciclos de funcionamento, quais antenas estão em utilização, além de monitorar os Ios dele. Eu explico tudo isso mais adiante...


Notem na foto acima, o plugue de energia elétrica que é fornecida por um adaptador ligado à energia elétrica 80 até 240V, uma i/o serial, uma i/o rj45 ethernet e o pinos para conexão de periféricos diversos, como relés e etc..

Olha os i/os de periféricos ai. Para saída é possível controlar cargas de até 1A cada uma no total de 4, notem que o GND é o C. Para entrada é possível monitorar até 4 entradas com coletor aberto. Um show.

Este é o conjunto completo, módulo, na bancada ao fundo e a antena V740.
Um detalhe interessante é a capacidade de distanciar a antenna do módulo, em até 20 metros. O cabo para 20 metros tem aproximadamente 20mm de espessura, é gigante... imagino que para proteção de transientes...
O módulo pode configurar o raio de ação da antena via regulagem de sua potência, podendo funcionar até 32,5 Dbi... com algumas inlays podemos conseguir leituras a até 7 Metros de distância.
Um detalhe da antena para poder visualizar melhor.
Cada módulo suporta até 4 antenas, podendo montar os famosos portais RFiD. Na implantação do sistema eu tiro mais fotos para vocês conhecerem como funciona com o portal completo.
Aqui uma fotos do sistema todo ligado ao meu note, note a tela amarela no note. É o meu programa fazendo uma leitura, eu configurei a entrada de 50 inlays, e ele está lendo no momento atual 0 inlays de 50 inlays para entrar.

Colocamos um strip de 10 inlays sobre a antena para dar leitura...
Eis as 10 etiquetas lidas!!!
Agora segurando as inlays no ar e a leitura das mesmas 10 etiquetas na tela do compuador.
Detalhes do software. Lidas 10 inlays de 10 que ele estava esperando a tela do supervisório fica verde indicando que a empilhadeira pode continuar.
Neste caso foram lidas mais etiquetas do o esperado, então a tela fica vermelha.
Bom é isso! Daqui dois dias vou tirar mais fotos na implantação em produção e posto aqui para vocês acompanharem.

Tenho dito!!!

segunda-feira, 2 de junho de 2008

R8C25 32k Flash... Iniciando...

Caros,

Continuando minha babação de ovo pro MCU da Renesas, segue mais um post mostrando um passo-a-passo a abertura da caixinha, e rodando um programa de teste que acompanha o starter kit. Desculpe-me pela qualidade das fotos, mas era o que eu tinha na mão... um maledeto e antiquissimo Nokia 6600.
Só pra comentar: a coisa aqui anda tão empolgante com esse kit da Renesas que já decidi fazer um projeto usando o mesmo... será um Coletor de Dados Estacionário para funcionários de uma Usina de Cana-de-Açúcar.
Bom vamos lá, acompanhem as fotos:


Essa é a caixinha, não tem muito o que falar dela...


Ao abrir a caixa, vemos um panfleto de "Quick Start" que realmente funciona, passo-a-passo mostrando como instalar, configurar e rodar o exemplo inicial.


Estes são os componentes do Kit... vemos a placa, o cabo que conecta o debugger/programador E8 à placa e o cabo USB que vai ligado do E8 ao micro.


Aqui um look só do E8...



Esta é a placa em detalhes...

Fotos do kit montado sob a bancada para se ter uma idéia da dimensão do mesmo, e uma foto em detalhes do mesmo.


Acima, a tela inicial do software, perguntando se quero abrir o Workspace anterior ou criar um novo.


E agora a tela para conexão da IDE com o E8, não esquecendo de alimentar a placa utilizando a própria USB ... uma delícia !


A placa ligada, note o led verde acesso abaixo do LCD do lado direito!


Um breakpoint no HEW...


Nesta foto, eu mostro a prova do crime, Renesas + Youlink! ... funcionando...


E por fim uma geral na minha bancada!

Por hoje é só pessoal...

sexta-feira, 30 de maio de 2008

Renesas Starter Kit R8C25/Tiny

Senhores, nem tudo em nossas vidas é mazelas, recentemente ao participar de uma lista de pics e demonstrar minha infelicidade pelos recursos e destinados pela Microchip e/ou qualidade dos compiladores C para a média plataforma (pics 16FXXX), apareceu um cara que me ofereceu seus produtos... a Renesas, uma empresa Japonesa fusão da Mitsubishi e da Hitachi.
Bom, após conversar por telefone com o vendedor por iniciativa dele, que ligou no meu escritório, (não vou identificá-lo para que não pentelhem ele) marquei uma conversa pessoalmente e ele veio me atender.
Fiquei absolutamente impressionado com a dedicação e profissionalismo do mesmo, que deixou comigo um Kit de desenvolvimento do Chip R8C25 (dê um pulo em www.renesas.com para maiores detalhes) para demonstração!
Bom ... infelizmente fiquei 3 dias sem poder por as mãos no bichinho, e somente consegui chegando em casa nesta sexta-feira à noite.
Bom o kit é esse:



E veio nessa caixinha bonitinha:


Com o kit acompanha um LCD 8x2 sem backlight, ligação de 4 pinos, software de programação, um compilador C/C++ para todos os MCUs da linha da Renesas e pasmem uma interface de gravação/debug denominada Renesas E8... basta trocar a placa de desenvolvimento que ela serve para qualquer micro da renesas, assim como o compilador... um tesão...

Bom as primeiras impressões foram muito positivas...

Mandei instalar o software, que correu rapidamente em poucos minutos, o compilador com tudo (eu mandei instalar tudinho!) é bem grandinho, mas me pareceu bem completo.

Mas como nem tudo são flores, após instalar os drivers e tudo que tenho direito do CD, tudo num só setup, o E8 não funcionou. Meu Windows Vista não reconhecia o danado.

Mandei fazer o AutoUpdate instalado pelo software. Esse demorou um pouquinho, mas aproveitei pra inaugurar minha banda larga de 1Mega ! ;-)

Após instalar tudo, minha placa E8 foi reconhecida pelo Windows... e ao rodar o HEW (o compilador) um monte de paus de permissão. Entrei no google e pasmem, o primeiro link era o que segue abaixo...

http://tool-support.renesas.com/eng/toolnews/070516/tn3.htm

SIM! os caras tem suporte do software/hardware para Windows Vista. FANTÁSTICO!

Bom ... iniciei o tutorial, segui os passos para rodar o mesmo, e rodou tudo bonitinho.

A velocidade de programação está setada em 512Kbps. Um canhão! Rápido pra kct...

Brinquei um pouco e rapidamente peguei as manhas de Debug, compilação, Start/Break da aplicação.

A impressão até agora é SUPER POSITIVA, acho que encontrei minha próxima plataforma.

Valeu Renesas ! Belo trabalho !

sexta-feira, 23 de maio de 2008

Iluminado ao CUBO !!!

Povo do meu Brasil varonil ...

Ultimamente ando direcionando minhas GASes para estes cubos de led ... tem uns bem legais ... já estou estudando o meu por aqui ... vamos ver quando é que sai ...
Penso eu em montar um de 8x8x8 Leds.... pode ser em Vermelho ou Azul ... acho que azul é mais DUCARALHO... mas preciso ver o que o bolso vai deixar... afinal são 512 LEds...

512 * R$ 0,25 = 128 mangos ...

128 mangos já é parte de uma fonte bancada ... estou juntando cada centavo pra comprar minha fonte da HP... digital ... um tesão ... mas isso é outra história ...

Mas voltando ao cubo ... será que eu consigo convencer algum fornecedor a me enviar isso como SAMPLE ??? huauahauahu acho que não ...

Bom enquanto não resolvo o meu problema LEDístico (e não tem nada haver com o Led Zepellin) ... aí vão uns links ducaralho pra vcs curtirem uns cubos...





CCSC e seus problemas ...

Pois é povo olha eu aqui de novo chorando minhas mazelas tecnológicas. Bons tempos aqueles em que a minha preocupação era programar algum joguinho no meu ido TRS-80 (na verdade era um Sysdata III) ... bons tempos aqueles...
Teve uma época insana que eu cheguei a fazer música com o relé do gravador K7 ... que viagem !!!
Bom ... agora fico aqui às avessas com meus programas para PIC ... recentemente eu tive uns conflitos insanos com o compilador... primeiro porquê ao utilizar a UART do PIC a mesma perdia algum tipo de handle e simplesmente parava de funcionar, o estranho é que o programa continuava rodando, e a serial simplesmente nao recebia nada ... só enviava... ainda estou envolto com este problema... acho que deve ser setup dos pinos do MC...
Agora realmente algo que me tirou do sério foi o problema de CAST com o Microcontrolador...

Vejam isto...

float a;
float b;
int c;

a=25;
c=10;
b=a*c;

Qual o valor em b?

Acreditem o cretino do compilador montava a rotina e resultava nos 8 bits mais significativos do resultado float.... mas retornava um int, apesar do resultador ser um float.

Como resolver?

b=a*(float)c;

Isso resolve... mas cá entre nós... EU NUNCA VI ISSO NA MINHA VIDA... o resultado que qualquer compilador colocaria seria um FLOAT e nao um INT num FLOAT...

BUG feio do pessoal da CCS...

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