segunda-feira, 31 de agosto de 2009

Semana da Engenharia Unesp 2009

Semana passada estive na Unesp - Bauru, apresentando aos alunos a Renesas, bem como seus microcontroladores R8C. Considero que o evento foi um sucesso, sempre com algumas oportunidades de melhoria aqui e ali, mas crescendo ano após ano.
Gostaria de aqui agradecer aos organizadores pelo empenho e pela oportunidade que me foi dada, aos professores Castanho, Alceu e Ivo pela atenção durante o evento e, não poderia esquecer, de me desculpar junto ao pessoal da engenharia Civil que estava na palestra errada, prometo na próxima levar algumas informações pertinentes sobre vigas protendidas, concreto pré-moldado e resistência dos materiais!
Aos alunos da engenharia elétrica que participaram, agradeço pela atenção, espero que as informações passadas sejam úteis e me coloco a disposição para qualquer esclarecimento. Acredito que a recepção do pessoal no hands-on foi bem positiva, espero que em breve possamos manter contato novamente.

Link do evento: http://www.semeng.feb.unesp.br/

Até mais!

Deu na EETimes

Bom, como já faz uma semana que não publico nada, vou começar devagar, e divagar, por que não? Quem me conhece sabe que eu vivo falando que a Renesas é muito boa no quesito imunidade a ruídos, e compatibilidade eletromagnética, mas eu nunca mostrei nada que provasse além das documentações da Renesas, pois bem, na EETimes do dia 18/08/2009 saiu uma matéria sobre a aprovação dos micros H8/Tiny, R8C e SH/Tiny nos testes realizados pela Langer-emv, e adivinha? Foram todos aprovados nos testes de compatibilidade!
Reproduzo abaixo um trecho da matéria:
"Langer EMV-Technik commented that the Renesas MCUs are rated highly with almost all pins being able to withstand bursts of 480-V, Renesas said. In certain circumstances this helps reduce costs as the microcontroller does not need to be protected by a transient voltage surge suppressor or a multilayer ceramic capacitor."
Leia a matéria completa aqui: LINK
Até a próxima!

segunda-feira, 17 de agosto de 2009

Eu uso Linux, e agora?

Calma, calma, calma! Usa Linux, acha o tio Bill pior que mocotó de ontem?
Não tem problema, a Renesas apoia um grupo de desenvolvimento de ferramentas GNU, este grupo tem inclusive uma IDE Eclipse para Linux pronta para você usar!
Você usa Windows e acha o Eclipse a melhor coisa do mundo? Não se desespere, tem uma versão para Windows também!
Tem até para o MAC OS, como não entendo de MAC, não me perguntem para que versão nem nada, acessem o site e tirem suas conclusões.

Enfim, não vai ser por falta de ferramentas de desenvolvimento que seu projeto vai enroscar.

Quer saber mais, acesse o site KPIT GNU Tools - www.kpitgnutools.com - e divirta-se!

Até a próxima.

quinta-feira, 13 de agosto de 2009

Gravação - Esse mistério distante...

Começando este novo post, finalmente falaremos da gravação, assim quem já recebeu a placa e não vai usá-la como peso para papel ou acumulador de poeira vai finalmente gravar seu firmware!
Primeiro de tudo as ferramentas necessárias, a sua placa, se não tem uma ainda, compre logo! Um cabo serial (cabo direto, não é cross!), uma fonte de alimentação (não esqueça de fechar os jumpers Alim conforme a sua fonte! Veja o post anterior), o seu computador e o software FlashSta.exe, que você encontra no CD que recebeu com a placa na pasta do CD:
\Utils_Andre\CableM3A-0806\m3a0806v020046exe\
Ou no site da Renesas, na página de informações do cabo M3A-0806: LINK
É só clicar nos downloads e ser feliz, além do software para Windows você encontra os fontes se quiser fuçar, no CD também tem um arquivo flash-guide.pdf, que explica como é o processo de gravação, além do link para a página do DJ Delorie (http://people.redhat.com/dj/m32c/) afinal, se você quiser gravar o micro usando Linux, vai precisar disso.

Com o cabo conectado, na placa, placa alimentada, abra o Hyperterminal, configure a porta que tem disponível para 19200bps,8,n,1, feche o jumper nos pinos TX e RX da placa fazendo assim o loop back, se tudo estiver certo, o que você digitar no Hyperterminal vai ecoar de volta. Se não funcionar, verifique a configuração da porta, a alimentação da placa e se ainda assim não funcionar, me escreva! Funcionou, feche o Hyperterminal, ou pelo menos desconecte.

Se você continuou é por que está tudo certo, então execute o FlashSta.exe, você deve ter uma janela assim na sua tela:
A opção Select program deve ficar como está, Internal flash memory, selecione a porta serial que vai usar, neste momento você deve garantir que o microcontrolador está em Boot, como fazer isso? Feche o jumper MODE na placa, dê um pulso no RESET (SW1), pronto, está em modo de boot! Tudo certo? Clique no OK!

Se tudo estiver correto, a janela abaixo deve abrir, senão virá uma mensagem de erro, em caso de erro, verifique alimentação, conexão, fechou o Hyperterminal, não resolveu, me escreva!
Na figura acima, eu já havia selecionado o arquivo que vou gravar previamente, isso é feito clicando em Refer..., selecione o arquivo .mot que você vai gravar, como na figura abaixo, observe onde estava meu arquivo .mot, se você copiou o exemplo do grupo, o arquivo também deve estar lá.
Feito isso ele já vai carregar o ID do programa que você selecionou para gravar, se você usou um ID diferente no código que está no microcontrolador, este é o momento de colocá-lo nos campos ID. Aqui vai um lembrete, se você gravar o micro com um ID diferente de FFFFFFFFFFFFFF, anote! Sem o ID você não consegue conectar ao micro para apagar, ler, gravar ou qualquer coisa que implique acesso externo à memória flash.

Tudo certo? Clique em OK, se o ID estiver correto vamos para janela abaixo:

Aqui temos várias opção, vamos ficar com as principais por enquanto, são elas, ERASE, que apaga a memória, BLANK, que testa se o micro está apagado e PROGRAM, que grava o programa previamente selecionado.Então vamos lá, clique no ERASE, então no OK, recebeu o Erase OK?
Vamos conferir! Clique no BLANK, ele vai testar o range de memória do programa carregao, ok? Então não precisa mudar nada na janela que abre, somente clique no OK! Sem erros? Está em branco.
Clique no PROGRAM, novamente ele vai pegar os ranges de memória do programa escolhido, logo, clique em OK e novamente OK. Recebeu a mensagem de Program OK. Clque no EXIT, retire o jumper de MODE e pulse o RESET, seu programa já deve rodar!

Se você não tem o CD, basta baixar o flashsta.exe neste link.

Simples não? Fazendo é mais simples ainda, qualquer dúvida, me escreva! Até a próxima.

quarta-feira, 12 de agosto de 2009

Mais Hardware!

Continuando nosso estudo, vamos falar um pouco sobre as conexões na placa de desenvolvimento. Abaixo você pode ver um scan da placa, nele vemos diversos jumpers, as explicações sobre cada um estão logo abaixo:





Primeiro de tudo, a alimentação, com a placa montada você vai ter um Jack (P1) para ligar sua fonte de alimentação, mas se preferir retirar e ligar dois fios neste local, a polaridade é a indicada na figura abaixo:



O circuito de alimentação da placa permite que ela seja alimentada com tensões abaixo dos 5V (o R8C/1A funciona de 2,7V até 5,5V). Para tensões de alimentação acima dos 6,2V (a tensão ideal para sua fonte de alimentação seria 9V), precisamos fechar os jumpers Alim (P10) de modo a usar o LM7805 da placa, conforme a figura abaixo:


Se estiver usando uma tensão menor que 5,5V, além do LM7805 não funcionar direito, temos um diodo de proteção me série no circuito (D1), logo uma queda de ~0,6V na linha, então podemos ligar o jumper de modo a não utilizar o LM7805, conforme a figura abaixo:


Vale ressaltar que na ligação acima, a tensão de alimentação - 0,6V vai direto para o microcontrolador, então, cuidado para não passar dos 6,2V! Outra coisa para se lembrar é que segundo o datasheet do MAX232 ele funciona com tensão de alimentação de 4,5V a 5,5V, logo é bom respeitar esse limite também. Eu já usei abaixo dos 4,5V, mas nada é garantido.


Com o circuito devidademente alimentado, podemos testar a comunicação serial, abrar o Hyperterminal, configure para uma velocidade abaixo de 115200bps, 8, N, 1, N. Com o cabo conectado à placa e a porta serial do micro, feche o jumper TX e RX da placa conforme a figura abaixo, fazendo o loop back, desta forma tudo que você digitar vai "ecoar" na tela, desta forma você garante que a comunicação serial está ok! Abaixo, ligação para o loop-back:


Feito o teste, feche a conexão do TX e RX conforme a figura abaixo, deixando assim a Uart1 do R8C/1A conectada ao MAX232. Caso queira conectar outro hardware para comunicação, como um conversor USB<=>Serial montado com FTD232, é só mudar o jumper para as posições próximas aos pontos P18 e P19, e ligar o seu conversor ali, pronto!


Outro jumper que deve ser configurado é o VRef, que ao ser conectado liga o VCC a entrada de referência de tensão do conversor AD. Essa referência pode ser ligada a uma fonte mais precisa ou menor que VCC (minimo 2,7V) dependendo da sua aplicação, ou até mesmo ser usada como uma entrada caso não se utilize o ADC na sua aplicação. O VRef pode ser visto na figura abaixo:



O último jumper que vamos explicar é o MODE, esse jumper deve ser fechado para colocar o microcontrolador em modo de boot, possibilitando a gravação via porta serial. Veja a figura abaixo:


Neste figura também vemos o conector para o E8/E8a, se você tiver um, é só instalar os terminais na placa, conectar e E8 ou E8a e fazer o debug e gravação direto na placa, qualquer dúvida sobre como fazer isso, entre em contato. Por último, temos também o botão de RESET, que reseta a MCU (CLARO!) e, caso você pulse o RESET com enquanto o jumper MODE estiver fechado, o microcontrolador entra em Boot.

Falaremos mais do boot mode e gravação no próximo post. Até mais!

sexta-feira, 7 de agosto de 2009

Mais código! Configurando AD com o IO Wizard.

Continuando nossa saga, vamos agora fazer a configuração do ADC usando o IO Wizard.O procedimento é basicamente o mesmo, se já fez toda a configuração do post anterior, é só abrir o IO Wizard e fazer a configuração abaixo do ADC.

Eu usei o AN1, pino 14 do micro, mas nada impede o uso de qualquer outra entrada do conversor.

Uma coisa interessante para se fazer é alternar a entrada escolhida e na janela de código gerado observar os registradores ch0, ch1 e ch2 mudando de acordo com a entrada selecionada. A configuração fica como na figura abaixo:




Já que vamos usar o ADC, por que não colocar um timer rodando também? Eu escolhi o Timer X por que gosto do nome, mas o Timer Z também pode ser usado para essa função!
Simples, selecione o Timer X, ative e selecione o modo de opeção timer.
O Timer X é um timer de 8 bits com um preescaler de 8, o que para mim é um timer de 16 bits, mas chamem como quiserem.

O registradores que determinam o tempo são os prex e o tx, preescaler e registrador do timer respectivamente.

Como selecionei sem divisão (no division) o timer está rodando a 20MHz, logo 50nS de período para cada incremento do preescaler.

A conta para saber o tempo é: t = (prex + 1) * (tx + 1) * período

No nosso caso: t = (249 + 1) * (79 + 1) * 50*10^-9 = 1*10^-3 = 1mS

Mais fácil que furar um olho, não? Veja na figura abaixo:

Eu usei ambos recursos em um projeto, aproveitando a paranoia da gripe suina, fiz um termometro com um LM35, claro que sem precisão, não usei uma referência boa, só o velho 7805 da placa e o LM35 ligado direto na entrada do ADC! Olha como ficou a montagem na placa.

Com o software rodando no micro, conectado a serial, Hyperterminal aberto, 19200 8-N-1, deve aparecer a tela abaixo:

Como sempre, o WorkSpace completo, LM35_serial.zip está na seção arquivos no site do grupo, para quem ainda não conhece:

http://groups.google.com.br/group/renesas_brasil

Até a próxima!

quinta-feira, 6 de agosto de 2009

Usando o código do IO Wizard.

Bom, se você seguiu todos os passos do post anterior, você deve ter em mãos, ou no local em que escolheu salvar os arquivos, 3 arquivos:

config.c - Este vamos usar

config.h - Este não vamos usar

sfr_R8C1Aconfig.h - Este já temos no nosso projeto, é o mesmo que o sfr_r81b.h

O config.h basicamente tem o protótipo de algumas funções e interrupções, nada que não possa ser reescrito no ktp.c, ou mesmo criar um ktp.h. Para manter as coisas simples, vou reescrever tudo no ktp.c. O outro arquivo que vamos solenemente ignorar é o que contém os special function registers (sfr para os intimos), pois já temos um no nosso projeto.

Vamos as modificações no ktp.c. Primeiro os includes, que no nosso caso é só um! No arquivo, antes do main escreva:

#include "sfr_r81b.h"

Pronto, agora como você pode ver, temos o main mas não o protótipo dele, logo, escreva antes do #include o famoso void main(void); uma outra função que vamos precisar de protótipo é a init, então já coloca o protótipo dela, juntando tudo fica assim:

void main(void);
void init(void);
#include "sfr_r81b.h"


Agora é só copiar do arquivo config.c da linha int i=0; para baixo até as funções de interrupção da serial, essas não vamos precisar, e colar no lugar do main no arquivo ktp.c, fácil não? Se tudo correr bem seu arquivo deve ficar assim:


Falta só uma coisa para nossa serial funcionar, primeiro na configuração do IO WIzard ele faz a padrão, ou seja, apenas transmite, então mude o re_u1c1=0 para re_u1c1=1, este é o Receive Enable bit do registrador u1c1, ok?

Também não foi feita a configuração dos IO's a serem utilizados, então temos que colocar logo abaixo desta linha a linha:

u1sel0=1; u1sel1=1;

Que faz a seleção dos pinos do TX e RX da UART1.

É claro que vou colocar esse arquivo no files do grupo, se ainda não entrou, entre!http://groups.google.com.br/group/renesas_brasil

Procure pelo arquivo mod1.zip, descompacte no workspace que você já tem, substituindo o ktp.c existente e teste.

Até a próxima.

quarta-feira, 5 de agosto de 2009

WorkSpace pronto, o que colocar lá?

Agora que você já tem o seu WorkSpace pronto e compilando sem erros, que tal colocar uns erros, quer dizer, códigos lá?

Para isso precisamos de duas coisas, o manual de hardware do R8C/1A, que você pode obter aqui: Manual de Hardware


Com este arquivo em mãos, vamos ao que interessa, não precisa necessáriamente ler o bicho inteiro, seria interessante, mas vamos por partes. Para iniciar vamos usar uma ferramenta da Renesas, o IO Wizard, com ele você gera código para os periféricos do micro, inicialização do clock e interrupções mesmo sem saber o que está fazendo.

Claro que não é o ideal, mas é um bom começo. Após baixar o IO Wizard, instalar e rodar, vai cair nestá janela.


Claro que eu já selecionei ali algumas coisa que vamos precisar, como Series, Group e Part no., além disso também já escolhi o CPU Clock: Main clock, a frequência do mesmo, 20MHz, CPU Division Clock: No division e o Main Clock Drive Capacity: High. Todas essas opções são para alta performance e consumo de energia, mais para frente estudaremos modos de economizar energia, ok? Clique no NEXT.


Agora, o que colocar de código nesta placa? Bom, como já temos uma porta serial ligada no micro e isso conectado ao PC, por que não configurar a UART1, que é a que está ligada. Abaixo vemos que os pinos da UART1 estão no 2 (p3_7/TXD1) e no 9 (p4_5/RXD1) do micro.





Isso dito, precisamos fazer o pino 2 funcionar como saída, o 9 como entrada não precisa se preocupar, todos os GPIOs tem como configuração padrão entrada. Então vamos clicar no Port3 e selecionar o pin7 como entrada, fica como na figura abaixo:



Após essa configuração simples, vamos para uma complicada, a porta serial, selecione a UART1 e faça as configurações como na figura abaixo: Qualquer dúvido sobre isso, me escreva ou consulte o manual de hardware!



Por último, clique em Generate vai abrir a janela abaixo, escolha onde quer salvar o código gerado e clique no OK.



Agora é só copiar e colar as partes que interessam no seu código. Isso fica para o próximo post. Até mais!







Começando seu primeiro projeto - WorkSpace

Conforme prometido, vamos ao tutorial de como criar seu primeiro projeto com o HEW.
Primeira coisa a se definir, o que é um WorkSpace. Bom, como o nome já diz, é um espaço de trabalho onde você vai concentrar todos os arquivos *.c e *.h relativos ao seu projeto bem como as configurações de debug e simulação.
O primeiro passo, ao abrir o HEW, é selecionar a opção Create a new project workspace e clicar no OK, figura abaixo:



Próximo passo, em Project types, selecione C source startup application, poderia ser também o Application, mas dai o startup seria em assembly, eu prefiro em C.
Feito isso, coloque um nome no workspace, eu coloquei ktp, automaticamente ele coloca o mesmo nome no projeto. No campo de baixo aparece o local onde o projeto será salvo, se for mudar de lugar a hora é agora!
CPU type family é o M16C mesmo, o core do R8C é o mesmo do M16C, logo compartilham compilador, ambiente de desenvolvimento e ferramentas.
Falando em compilador, no campo de baixo você vai selecionar o compilador a ser utilizado, o famoso Tool chain, deixe o Renesas M16C Standard e clique no OK.


Próximo passo, selecionar o target CPU, Toolchain version, escolha a mais nova, se fez todos os ultimos updates deve ter a versão 5.45.00.
Abaixo, selecione o CPU Series, R8C/Tiny e o CPU Group, 1A. Assim se forma o nome, R8C/1A, se fosse usar um R8C/1B, era só escolher o Grupo 1B e por ai vai, simples não?
NEXT!


Agora vamos aos detalhes, tamanho da memória, apesar de estar escrito ROM, é memória flash.
Selecione o tamanho desejado, no nosso caso, 4k.
Vai usar o Standard I/O Library (UART1), se sim, é só setar a opção, feito isso após configurar a UART1 tudo que vc mandar um printf vai sair na serial.
Vai usar Heap Memory selecione a opção, nem sabe o que é heap memory? Deixe desmarcado! Quer saber o que é Heap Memory? Clique aqui.
Como estamos criando um projeto vazio, deixa ele criar o main(), não tem o on-chip debugger para usar, deixe como none.
NEXT!



A próxima janela não tem muito o que mexer, vamos usar Stack, o tamanho padrão costuma resolver, se precisar de mais, ou menos, é só mudar.
NEXT!



Setting the Target System, bom se não tem um emulador ou in-circuit debugger, vá de simulador mesmo, selecione o M16C R8C Simulador, External Debugger none e confirme o Target type e o Target CPU.
NEXT!




Nada para fazer no item 5/6, não temos Debugger, o simulador está pronto para rodar, NEXT!



Item 6/6, se quiser mudar algum nome de arquivo, este é o ponto, normalmente mantenho os nomes padrão, FINISH!



Aparece uma janela de sumário do que foi feito, pode dar o famoso OK, se tudo correu bem você deve chegar a janela abaixo:



Por enquanto os arquivos importantes para nós são os seguinte, ktp.c, onde está nossa função main( ), veja abaixo:


O arquivo intprog.c, onde ficam todos os vetores de interrupção e onde trataremos das interrupções, abaixo:

Finalmente, temos também o arquivo sfr_r8c1b.h, que é onde se dá nome aos bois, ou seja, todos os registros pertinentes recebem nomes, sempre inclua esse arquivo quando quiser ter acesso ao hardware, como por exemplo, fazer p3_4 = 1;
Veja abaixo:



Para acabar, se usar o famoso atalho F7 no seu teclado, o projeto deve ser compilado com 0 erros! O arquivo zipado deste projeto (ktp.zip) pode ser baixado no site do grupo:
http://groups.google.com.br/group/renesas_brasil

Até a próxima!