Livro Microcontroladores RL78: Guia Básico Disponível para Download!

17, junho, 2013 Sem comentários

Pessoal,

Finalmente o livro está disponível para download gratuíto!

Para fazer o download do livro basta clicar na imagem do mesmo abaixo:

rl78

 

O material para download (arquivos de exemplo e bibliotecas) pode ser baixado AQUI.

Boa leitura a todos!

Categories: Microcontroladores, RL78

Novo livro disponível: Microcontroladores RL78 Guia Básico!

12, junho, 2013 Sem comentários

Olá Pessoal!

Finalmente o meu novo livro está disponível para venda!

rl78

 

O livro aborda a linha RL78 de microcontroladores de 16 bits da Renesas. Ao longo de 297 páginas o livro aborda em detalhes a família RL78/G13, incluindo detalhes da CPU e modelo de programação, periféricos (como portas de E/S, timers, ADC, portas seriais, etc.) até temas mais avançados como DMA, gravação da flash, etc. O livro está disponível na versão impressa, publicada através da Perse e também em versão eletrônica, distribuída gratuitamente em formato PDF.

A página do livro possui também os arquivos de exemplo para download. A versão eletrônica deverá estar disponível em breve!

Categories: RL78

Utilizando o Modo de Comparação do CCP do PIC18

23, maio, 2013 Sem comentários

Neste artigo eu falo um pouco sobre o modo de comparação das unidades CCP dos PIC18.

O modo de comparação funciona praticamente como o recíproco do modo de captura, ou seja, a contagem proveniente do temporizador de referência é constantemente comparada com um valor programado nos registradores do CCP (CCPRxH e CCPRxL). Quando a contagem do timer atinge o valor programado um evento de comparação é disparado originando por sua vez um dos seguintes eventos:

  1. O pino de saída (RC2/CCP1 ou RC1/CCP2 conforme o módulo) é setado;
  2. O pino de saída é apagado;
  3. O pino de saída tem o seu estado invertido (0->1 ou 1->0);
  4. O pino de saída não é alterado;
  5. Um evento especial é disparado (no caso do CCP1 este evento provoca o reset do timer 1 e no caso do CCP2 este evento provoca o reset do timer 1 ou timer 3 e também inicia uma conversão do ADC caso o mesmo esteja ativo).

Em todos os casos o evento de comparação também seta o flag de interrupção do módulo (CCP1IF ou CCP2IF).

Esta funcionalidade pode ser utilizada para gerar sinais periódicos, modificando o estado de um pino a cada intervalo de tempo ou gerando interrupções periódicas.

O figura abaixo mostra que, no instante em que a contagem do timer 1 atinge o valor programado nos registradores de comparação do canal 1 (CCPR1H e CCPR1L), um evento de comparação é gerado, fazendo com que o estado do pino CCP1 seja invertido. A ISR do CCP1 deverá providenciar a recarga dos registradores CCPR1H e CCPR1L com o valor desejado para a próxima comparação.

PIC18_CCP

Leia mais…

Categories: Microcontroladores, PIC

Exemplo básico do ADC do RL78

21, maio, 2013 Sem comentários

Neste artigo falo um pouco sobre o ADC dos RL78. O conversor A/D dos RL78 é um conversor do tipo SAR (aproximação sucessiva) com resolução de 10 bits. Este conversor possui uma configuração e operação bastante similares aos ADCs encontrados em outros microcontroladores no mercado. Seus principais diferenciais são:

  1. Modo auto scan, onde o conversor realiza conversões em quatro canais distintos em sequência;
  2. Comparador digital: que estabelece valores máximos e mínimos para a conversão, gerando uma interrupção caso o resultado esteja dentro ou fora da janela;
  3. Operação em modo snooze: o conversor pode permanecer operando mesmo quando a CPU está em modo de baixo consumo de energia.

A seguir apresento um pequeno exemplo que demonstra a operação do conversor. Ele foi retirado do livro Microcontroladores RL78: Guia Básico e demonstra como efetuar a leitura do resultado das conversões de um canal em modo contínuo. O exemplo foi escrito para o R5F100LE na placa YRPBRL78G13. O programa monitora a tensão do cursor do trimpot R15 da placa, ligando o led quando o valor lido no ADC é maior que 511 (o equivalente a aproximadamente 2,5V).

Categories: Microcontroladores, RL78

Termômetro Digital com o RL78

17, maio, 2013 Sem comentários

Neste artigo eu mostro como utilizar o sensor interno de temperatura, a referência interna de tensão e o conversor A/D do RL78/G13. A aplicação faz a leitura da tensão de saída do sensor interno de temperatura e a tensão da referência interna. Este procedimento é necessário para corrigir a saída do sensor conforme a tensão de alimentação do conversor A/D (que no caso é a mesma tensão de alimentação do restante do microcontrolador).

O ADC é configurado para operar no modo contínuo, convertendo alternadamente a tensão proveniente da referência interna de tensão (1,45V) e do sensor de temperatura integrado (esta alternância é controlada pela ISR do ADC).

A tensão de alimentação é determinada através da medição da tensão da referência interna de 1,45V, baseando-se no princípio de que o valor convertido será proporcional a tensão de alimentação do chip (mais detalhes sobre isso são mostrados no livro Microcontroladores RL78: Guia Básico). A medição da tensão de alimentação é necessária pois a tensão de saída do sensor interno de temperatura é uma função da tensão de alimentação do sistema.

A tensão de saída do sensor, para uma dada temperatura, pode ser obtida pela seguinte fórmula:

RL78_temp_sensor1

Já a temperatura pode ser calculada através do resultado da conversão em ADCR e considerando-se a tensão de alimentação VDD, através da seguinte fórmula:

RL78_temp_sensor2

Após os cálculos, o valor da tensão de alimentação e da temperatura ambiente são apresentados no display LCD da placa RSK do RL78/G13.

Este exemplo também ilustra uma técnica de formatação de dados para apresentação em display (ou outro meio) utilizando variáveis inteiras para representar valores fracionários. A função LCD_write_frac_int recebe um valor inteiro como parâmetro e o imprime no display utilizando o seguinte formato: X.YY onde a X corresponde à parte superior a 100 e YY à parte inferior a 100, que é tratada como a parte fracional do valor. Isto significa que o valor 100 será impresso como 1.00 e o valor 9999 será impresso como 99.99.

Note que a aplicação utiliza um valor de offset fixo para a temperatura (variável “toff”). Este valor foi determinado através de ensaio, utilizando como referência um termômetro medindo a temperatura ambiente. Em aplicações profissionais cada placa deveria ser calibrada na linha de produção e o valor de calibração salvo na memória flash.

Leia mais…

Categories: Microcontroladores, RL78

Utilizando o modo MSSP do PIC18 para comunicação com um 4094

15, maio, 2013 Sem comentários

Muitas vezes necessitamos utilizar mais pinos de E/S do que a quantidade disponível num determinado microcontrolador. A opção de utilizar um modelo com mais pinos pode não ser viável, especialmente quando já se utiliza um modelo menor em larga escala. Seja qual for a razão, uma das possibilidades de expansão das portas de E/S é a utilização de um chip conversor serial/paralelo como o 4094. Este chip recebe serialmente  8 bits de dados através de duas linhas (clock e dados) e disponibiliza o dado através de 8 pinos de saída.

A comunicação do PIC com o 4094 pode ser feita inteiramente por software ou utilizando o módulo MSSP. A utilização do módulo MSSP, caso o mesmo esteja disponível, facilita enormemente a tarefa, pois permite que toda a operação de comunicação (deslocamento serial dos dados) seja feita pelo hardware, liberando a aplicação para outras tarefas.

Além disso, a comunicação utilizando o módulo MSSP é muito simples: uma vez configurado o módulo, tudo o que é necessário fazer é ativar a linha de seleção do 4094, escrever o dado no registrador SSPBUF e, após a transmissão, desativar a linha de seleção do 4094. Também é possível utilizar a interrupção de fim de transmissão e inserir na ISR o código para desativar a linha de seleção do 4094.

pic_4094

Leia mais…

Categories: Microcontroladores, PIC

Geração de PWM nos RL78

14, maio, 2013 Sem comentários

A geração de PWM (modulação por largura de pulso) é o tipo de tarefa comumente necessária em aplicações envolvendo MCUs, seja para controle de brilho de leds, controle de potência, controle de velocidade de motores, etc. Neste artigo eu mostro como utilizar os canais da unidade TAU dos RL78 para gerar sinais PWM.

Uma unidade TAU é composta basicamente de 4  ou mais (até 8) canais. Estes canais consistem praticamente em unidades de temporização autônomas de 16 bits, capazes de fazer temporizações, captura de sinais e outras tarefas. Cada canal possui um registrador de contagem (TCRmn), um registrador de comparação ou captura (TDRmn), um registrador de configuração (TMRmn). Além disso, a unidade TAU possui um registrador de configuração para os 4 prescalers disponíveis (TPSm) e registradores para a configuração dos pinos de E/S associados aos canais (é possível habilitar/desabilitar os pinos, controlar a polaridade e o nível fixo de cada pino). Também há registradores para controlar os filtros de ruído disponíveis quando os canais fazem captura ou recebem clock através dos pinos.

Os canais podem ainda ser associados numa configuração mestre/escravo, onde um canal mestre pode estar associado a um ou mais escravos. Este tipo de configuração é que viabiliza a geração de sinais PWM. Desta forma, utiliza-se um canal (mestre) configurado para operar no modo temporizador e responsável pelo controle do período do sinal PWM, que pode ser calculado através da seguinte fórmula:

RL78_pwm_periodo

Os sinais PWM propriamente ditos são gerados pelos canais escravos que devem ser configurados para operar no modo de contagem única (one count), sendo disparados em sincronia com o canal mestre. O ciclo ativo é calculado através da seguinte fórmula:

RL78_pwm_ciclo

Leia mais…

Categories: Microcontroladores, RL78

Interrupção Externa IRQ nos HCS08

13, maio, 2013 Sem comentários

Os microcontroladores HCS08 da Freescale apresentam duas fontes de interrupção externa: a interrupção externa IRQ e a interrupção de teclado. O pino IRQ pode ser configurado para gerar interrupções nas bordas de descida, de subida ou em nível lógico baixo/alto.

Ao ser detectada uma borda ou nível pré-definido no pino IRQ o flag IRQF é setado e poderá gerar uma interrupção da CPU. Esta fonte de interrupção também pode ser utilizada para fazer o chip retornar ao modo ativo (saída de um modo de baixo consumo).

O exemplo a seguir, retirado do livro HCS08 Unleashed, demonstra como utilizar este tipo de interrupção no microcontrolador MC9S08QG8 (com base na placa DEMOQG8 da Freescale).

Categories: HCS08