segunda-feira, 30 de junho de 2008

Impressora para Bolas de Ping-Pong

Mais um video da série "Coisas interessantes para um desocupado criar em casa!"...

Dessa vez a sublime criatura fez uma impressora para bolinhas de ping-pong...

Não sei como vivi sem isso até hoje... minha vida será outra depois desta descoberta...

LCD 16x2 com R8C/25

Pessoal,

Após ler em alguns sites como por exemplo o RenesasRuls, e mais alguns foruns pela internet notei uma preocupação no startup de alguns "novos usuários" como eu da plataforma renesas quanto à utilização de LCDs diferentes do 8x2 que acompanha o Kit.

Pois bem, resolvi brincar com isso nestes dias, apesar de estar bem corrido no trabalho e claro, colocar o resultado aqui pra vocês...

Este é o esquema do cabo, usando um LCD normal de 16 pinos. No meu caso não liguei o Led do LCD por motivos óbvios, não queria puxar isso do E8, visto que o limite do mesmo é de 300mA, portanto se alguém quiser ligar isso sugiro uma fonte separada para o mesmo, ou até pode ligar diretamente da alimentação da placa. No entanto será necessário usar uma fonte ligada na mesma e não mais a alimentação pelo emulador. NÃO ESQUECER de não ligar o VCC no E8 ao iniciá-lo no HEW.

Esta foto é o aspecto final do cabo ligado na placa de desenvolvimento.

Um detalhe do cabo. Notem que eu usei um cabo pinhead macho e coloquei um adaptador macho-macho. E cobri tudo com fita isolante...

Aqui eis a traseira de nosso LCD... notem o pot de 47k que eu coloquei... poderá ser utilizado pots de 10k até 50k ... dê preferência para pots mais próximos de 10k. Alguns LCDs não gostam muito de resistências altas no contraste... ajuste o mesmo ao ligar o kit todo.

Mais um detalhe do módulo com o conector encaixado no lugar...

Aqui o módulo ligado... e os caracteres no LCD...

Aqui o programa rodando....

Bom ... mas nada disso adiantaria se não desse pra fazer um improvement no código do LCD em relação ao do 8x2 original que é bem lerdinho...

Bom ... a primeira coisa é editar o arquivo lcd.h e trocar as seguintes constantes...

#define DELAY_TIMING 0x02 // (original era 0x20)
#define NUMB_CHARS_PER_LINE 16 // óbvio
#define LCD_LINE2 16 // óbvio 2

Em seguida eu declarei uma funçãozinha para apagar a tela... ClrScr()...

void ClrScr(void);

bem no final do lcd.h....

Chegou a hora de modificarmos o lcd.c e implementar o ClrScr()...

Eis a rotina...

void ClrScr(void) {
LCD_write(CTRL_WR,LCD_CLEAR);
DisplayDelay(1530);
}

Espetacularmente simples... porém usual...

Como sempre ... matando a cobra e mostrando o pau...

E vai aí mais um videozinho mostrando o que acabo de mostrar pra vcs neste POST...

sábado, 28 de junho de 2008

Soldando Componentes SMD

Caros, demorou mas saiu o Post desta semana... não me lembro de ter tido uma semana tão complicada como essa ... bom seguinte...
Como eu sei que várias pessoas como eu estão começando coma soldagem de componentes SMD, segue um pequeno tutorial que eu encontrei na internet sobre o assunto...

Enjoy!

terça-feira, 24 de junho de 2008

Chegou o Starter Kit H8/36077

Grande notícia...

Chegou no final da tarde de meu segundo kit da Renesas... baseado desta vez no MCU H8/36077.

Aí estão as provas ... em breve terei novidades em relação aos dois MCUS... e talvez um comparativo entre os dois...














Enjoy IT!

segunda-feira, 23 de junho de 2008

Utilizando o Timer no R8C/25

Caros,

Antes de iniciar o assunto gostaria de falar um pouco sobre os Timers do R8C/25.
O MCU possui quatro timers distintos.
  • Timer X
  • Timer Y
  • Timer Z
  • Timer C
Os timers X,Y e Z são de 8Bits com um Pre-Scaler de 8Bits e o timer C é de 16 Bits.

Utilizando o IOWizard para configurar um timer, primeiro configuramos o chip e a velocidade do clock do mesmo. Isso é necessário para o IOWizard poder calcular corretamente o valor do Counter e do Pre-Scaler. Na tela do timer.

Nas telas de configuração vemos os Timers RA(TimerX), RB(TimerY), RC(TimerZ) e RD(TimerC).


Vemos as chaves geradas com os valores de 249 para o Pre-Scaler e 79 para o Counter.
Estes valores geram uma interrupção de Timer a cada 1ms. Se contarmos mil destas temos aproximadamente 1 segundo.

Feito isso temos as seguintes configurações:

tck0_tramr=0;tck1_tramr=0;tck2_tramr=0;
//count source:f1(tramr bit 4 to 6)
f1 é o clock sem divisões

trapre=249;
//Timer value for timer mode or half period timing for pulse output mode
trapre é o valor do Pre-Scaler

tra=79;
//Timer value for timer mode or half period timing for pulse output mode
tra é o valor do Counter

tmod0_tramr=0;tmod1_tramr=0;tmod2_tramr=0;
//Timer mode(tramr bit 0-2)
tmod é o registro que seleciona a origem dos pulsos do contador, no caso 0,0,0 é o clock que está sendo utilizado pelo MCU. No caso do Cristal.

traic=0x07;
//Set interrupt piority level 7(traic)
Seleciona o nível de prioridade das interrupções geradas.

O próximo passo é configurar tudo isso dentro de um projeto no HEW.
Após criar um projeto, vamos começar a alterar os arquivos necessários para configurar o timer.

O primeiro arquivo a ser alterado é o hwsetup.c. Vamos declarar a função ConfigureInterrupts() e implementá-la. Também vamos descomentar sua chamada dentro da função HardwareSetup().
Veja:

#include "sfr_r825.h"
#include "rskR8C25def.h"
#include "hwsetup.h"

void ConfigureOperatingFrequency(void);
void EnablePeripheralModules(void);
void ConfigurePortPins(void);
void ConfigureInterrupts(void);

void HardwareSetup(void) {
ConfigureOperatingFrequency();
ConfigurePortPins();
EnablePeripheralModules();
ConfigureInterrupts();
}

...

void ConfigureInterrupts(void) {
// Timer RA Setting (TIMERX)
tck0_tramr=0;tck1_tramr=0;tck2_tramr=0;
trapre=249;
tra=79;
tmod0_tramr=0;tmod1_tramr=0;tmod2_tramr=0;
traic=0x07;
}

Vamos declarar o ponto de entrada para a interrupção em main.h:

void main(void);
#pragma INTERRUPT TimerRAHandler
void TimerRAHandler(void);

E escrevemos a função em main.c:


#include "sfr_r825.h"
#include "lcd.h"
#include "main.h"
#include

int xVal;
unsigned long counter;

void main(void) {
int t;

// Inicializa o LCD
InitialiseDisplay();

// Mostra o Banner da aplicação
DisplayString(LCD_LINE1,"Youlink!");
DisplayString(LCD_LINE2,"LedBlink");

for(t=0; t<10000; t++) asm("NOP");

// Prepara a tela para rodar...
DisplayString(LCD_LINE1,"LedBlink");
DisplayString(LCD_LINE2," ");

pd2=0xF0;
xVal=0b00001000;
counter=0;
// Inicia o timer
tstart_tracr = 1;
while(1) {
asm("NOP");
}
}

void TimerRAHandler(void) {
char cBuffer[10];

// Para o timer
tstart_tracr = 0;

if(counter>249) {
xVal=xVal<<1;
p2=~xVal;
if(xVal==0b10000000) xVal=0b00001000;
counter=0;
sprintf(cBuffer,"Val:%d \0",xVal);
DisplayCharBuffer(LCD_LINE2,cBuffer);
} else {
counter++;
}

// Inicia o timer
tstart_tracr = 1;
}

Antes de entrar no loop do programa é necessário inicar a contagem do timer usando o tstart_tracr.
Quando entramos na interrupção, nós a paramos, processamos e depois reiniciamos a mesma.

Até aí tudo bem, agora vem o grande segredo. Somente faltou declarar na configuração do MCU o ponto de entrada da interrupção na tabela de vetores. Editaremos o arquivo sect30.inc:

Após a linha 659 colocamos:
.glb _TimerRAHandler
e depois no vetor 22 colocamos o link
.lword _TimerRAHandler ; vector 22

Pronto... está configurado o projeto para funcionar com TimerX.

Existem inúmeros modos de configuração para os Timers do R8C/25. Como gerar PWM, Seguidor de pulso, Medidor de Largura de pulso, entre outros.

Para quem quiser puxar o projeto e rodar localmente, segue o link para Download:

http://rapidshare.com/files/124593122/LedBlinkTimer.rar.html

E pra quem quiser acompanhar um vídeo deste programa funcionando... tá aí o link para o YouTube...



Mais uma vez matando a cobra e mostrando o PAU!

domingo, 22 de junho de 2008

Star Wars com M16C/62PU

Eu achando que meu nível de "nerdisse" já estivesse chegando em um nível insuportável... me deparo com essa jóia tecnológica no Youtube ... Enjoy It! hauhuauhauahuah

Led Blink com Renesas R8C/25 Parte2

Pois é pessoal... a insomnia pegou pesado por aqui hoje... filhotão acordou as 3:00AM... tomou um leite e dormiu ... pergunta se o papai aqui conseguiu voltar pra cama... bom ... tudo tem um lado de bom nesta vida... vim para o note ... liguei meu E8 e vamo-que-vamo aprendendo um pouco mais com o bichim...

Pois bem ... só pra melhorar um pouco... eu dei um tapinha no código do meu exemplo de Led Blink que havia postado anteriormente:

Eu passei tudo para binário para ficar mais legível em relação aos bits que estamos manipulando. Ficou legal ! Olha um vídeo disso funcionando...

sábado, 21 de junho de 2008

Usando um Umax Powerlook antigo como expositora para gravação de placas de PCI por processo fotográfico

Comprei um frasco de Fotocril para testar. No entanto eu precisava de uma forma de expor... como eu tinha um Powerlook da Umax em desuso esperando a desmontagem para aproveitar os motores de passo e os trilhos para montagem de um ploter/CNC ...
Iria sobrar a carcaça... então resolvi adiantar a desmontagem aproveitar a carcaça para exposição de placas...
No final coloquei uma lâmpada halógena de 3800 Lux, com acabamento de papel laminado interno para uma bos reflexão.
Ainda tenho mais duas lampadas para colocar por dentro.
Tirei fotos da desmontagem e da instalação da lâmpada e do papel laminado.


Esta é a tampa do módulo de transparência.


Este é o trilho e o conjunto com a lampada do conjunto de transparência.


Esta é a placa controladora do motor de passo com a saída para o sensor de final de curso no trilho.


Este é o motor de passo do módulo de transparência.


Esta é a fonte DC-DC da lâmpada do módulo de transparência.



Este é o frame da parte interna...


Este é o motor de passo do módulo principal do leitor de scanner.



Esta é a placa controladora do Scanner.


Esta é a placa da fonte.



Esta é a Zona que eu fiz no escritório desmontando tudo.



A parte de baixo do scanner com o papel laminado aplicado para refletir a luz da lâmpada de halogêneo.


A lâmpada de halogêneo.


A lâmpada acessa... curiosamente na foto não sai o Warm dela... ;-)

sexta-feira, 20 de junho de 2008

Reconhecimento de Vídeo em Tempo Real

Pessoal,

Esse vídeo aí embaixo faz parte de uma das Festas que fizemos no ano de 2007 para a Nokia... conhecidos como Nokia Trends. Foram 10 festas onde os DJs discotecavam usando celulares 5200... com aquela frase toda de "A Música Nos Conecta" quem ninguém mais aguenta ouvir... pelo menos a gente que viu isso durante 10 festas.



Esse é um exemplo do nosso programa funcionando.



E mais um exemplo.

A solução é composta por um computador com uma placa de vídeo nervosa da NVidia... mais uma camera e uma capturadora de vídeo da Pinacle... o software foi todo escrito em C#, claro!

Bom é isso ... mais uma vez... mostrando o pau que nós matamos uma cobra no ano passao... aliás ... 10 cobras... hehehe

quinta-feira, 19 de junho de 2008

Puck Game com Acelerômetro

Recentemente conversando levantamos a possibilidade de fazer esse game eletronicamente... olha que legal... só uma coisa... e se for aquele com duas bolinhas e o labirinto?

Achei esse link na net... bem interessante apesar de bem primário... com certeza dá pra fazer melhor!



Vai lá!

http://www.neufeld.newton.ks.us/electronics/?p=204

quarta-feira, 18 de junho de 2008

Computador que reconhece movimento


Para quem me conhece sabe que tenho interesses especiais em sistemas para reconhecimento de movimentos. Olhando no site da PopSci Gringolês bacana ... achei um post legal... um Note da Toshiba enchertado com tecnologia do PS3 da Sony que reconhece alguns comandos para navegação. Vale a pena olhar ...

http://www.popsci.com/gear-gadgets/article/2008-06/computer-reads-hand-signals

Chegamos, dividimos e conquistamos...

Pois é pessoal... Ontem postei sobre o codecamp da Nokia no hotel Grand Melliat Mofarrej ... e num é que voltamos com dois N95 8Gb no bolso... matamos a cobra sim e MOSTRAMOS O PAU!

Aqui vão algumas fotos do evento pra vocês sentirem o warm que rolou por lá!

Grande abraço a todos... de N95 8Gb novinho em folha!!!

Acordando, belo dia para ganhar uma competição de programação..

Minha parte do arsenal sendo carregada...

A caminho da peleja...

And the battle begins...

Nosso Bunker...

Alguns dos concorrentes...

Nós concentrados (tá certo eu nem tanto, tava tirando a foto) e o pessoal programando ao fundo... nessa foto dá pra ver metade do pessoal que estava lá...

Como não sou de ferro ... levantei pra ir fazer xixi...

Essa é a primeira cara do nosso protótipo...

Denilson tirando onda e descontraindo um pouco... o clima estava tenso por lá!

A concorrência perdendo tempo comendo durante a competição...

Fazendo o setup da apresentação... eu fiquei no nosso bunker levatando o note para demonstrar o celular enviando comando lá do palco e acionando os programas... além disso o cabo de rede nao chegava até lá ! huahuauhahu

A hora mais tensa... a votação...

E o prêmio...

terça-feira, 17 de junho de 2008

Forum Nokia Tech Day Code Camp

É nóis participando do codecamp do Forum Nokia ... Prêmio... 2 N958Gb ... quem sabe ...
Vamos tentar apresentar um projeto integrando hardware com WRT... depois posto fotos e demais detalhes... quem sabe uma foto da gente recebendo o prêmio ...uahuahuahu

Grande abraço!

Vamos ver se desta vez conseguiremos matar a cobra e claro... mostrar o PAU!

domingo, 15 de junho de 2008

Tesla Coil como amplificador de guitarra

Para os meus amigos guitarristas, uma novidade... que tal trocar aquele amplificador Fender ou Marshal po um modelo mais elétrico??? Heim???



Insane!!! imagina só se o cara resolve tocar com a lingua??? huahuahuahua

Pivete monta reator nuclear

A notícia já é velhinha... mas é legal... olha só o que esse pirralho fez no tempo livre dele...



Se você se achava inteligente dá seus pulo porquê com certeza ficou prá traz...

http://www.popsci.com/diy/article/2007-03/popsci-videoteen-builds-basement-nuclear-reactor

sábado, 14 de junho de 2008

Forum Nokia Tech Days

Ae povo... estava esquecendo ... nesta segunda vai rolar Forum Nokia Tech Day... se você é desenvolvedor para plataformas móveis é essencial participar... acho que ainda dá tempo de se registrar...



Vai lá!

http://mktools.forum.nokia.com/invitation/nokiatechdays

IO Wizard Renesas... configurando o R8C/25

Pessoal,

No meu ultimo post sobre o R8C/25 eu disse que faltava acertar o clock para 20Mhz... na verdade o clock já estava acertado para 20Mhz externos...
Conversando com o meu Guru na Renesas, ele me deu uma dica que salvou minha vida não só para acertar o clock do MCU como também para configurar todos os IOs do MCU!

É um programa chamado IOWizard...

Eu capturei as telas passo a passo, para uma configuração para o R8C/25 R5F21256SDFP.

Vamos lá!

Inicialmente configuramos o tipo de clock que queremos. As opções são:

1. On-chip oscillator(default) - oscilador interno do MCU
2. Main clock(Xin-Xout) - oscilador externo com cristal ligado aos pinos Xin-Xout
3. High-speed on-chip - clock de alta frequencia interno
4. Sub-clock(Xcint-Xcout) - oscilador externo com cristal ligado aos pinos Xcin-Xcout

Após escolher isso é só selecionar a frequencia do clock e seu divisor.



Clicando no botão next é apresentada a tela para configuração de todas as IOs do MCU. Aqui vamos passar direto... mas é possível configurar tudo... desde as UARTs até os Timers, ADC etc...



Clicando em Generate o IOWizard pergunta onde salvar o programa com a configuração selecionada no programa.



Selecione o local onde quer gravar e aparecerá o notepad com o código gerado para sua configuração... um arquivos de header(.h)...



... e outro arquivo de código(.c) ... é só copiar e colar ou importar os arquivos para seu projeto no HEW.



Taí gente... matando a cobra e mostrando o pau ... mais uma vez... abraços a todos...