OBSERVAÇÃO: not for Dummies!
Para aplicações relativamente simples um microcontrolado de 8 bits é suficiente. Entretanto, quando se necessita mais desempenho, memória e periféricos, é preciso um microcontrolador mais turbinado e com motor mais potente. Minha escolha foi o Arduino Due devido aos inúmeros Shields disponíveis e por poder ser programado no Atmel Studio, incluindo o FreeRTOS e todas as ferramentas necessárias para um desenvolvimento profissional de firmware.
Para aplicações relativamente simples um microcontrolado de 8 bits é suficiente. Entretanto, quando se necessita mais desempenho, memória e periféricos, é preciso um microcontrolador mais turbinado e com motor mais potente. Minha escolha foi o Arduino Due devido aos inúmeros Shields disponíveis e por poder ser programado no Atmel Studio, incluindo o FreeRTOS e todas as ferramentas necessárias para um desenvolvimento profissional de firmware.
Comecei a programação com alguns programas básicos para entender a complexidade dos registradores de configuração do ATSAM3X. O datasheet da Atmel é algo terrível, pesadelo para estudar e compreender (a Atmel deveria evitar que estagiários escrevessem datasheets!). Assim, resolvi disponibilizar os códigos desenvolvidos e materiais de suporte para ajudar os iniciantes.
Bueno, vamos ao que importa:
PRINCIPAIS CARACTERÍSTICAS DO ARDUINO DUE
PINAGEM aqui. (obrigado Rob Gray, te pago uma gelada quando te encontrar)
- Pinagem compativel com o Arduino Uno (Shields compatíveis), cuidado deve ser tomado pois o Due trabalha com 3.3V (5V pode danificá-lo permanentemente).
- Entrada de alimentação externa 9 VDC.
- Gravação através de conversor serial-usb com bootloader (similar ao Uno).
- Conector SPI.
- Conector JTAG para programação e depuração.
- Botão de reset.
- Botão para apagamento da memória do microcontrolador.
- Possui um microcontrolador ATSAM3X8E.
- 54 pinos de I/O.
- 12 entradas analógicas (ADC).
- 4 UARTs.
- 1 USB OTG.
- 2 saídas DAC.
PINAGEM aqui. (obrigado Rob Gray, te pago uma gelada quando te encontrar)
PRINCIPAIS CARACTERÍSTICAS DO ATSAM3X8E
CONFIGURANDO O ATMEL STUDIO PARA GRAVAR O ARDUINO DUE
- Processador de 32 bits (ARM - Cortex-M3).
- 512 kB de memória Flash.
- 96 kB de memória RAM.
- 84 MHz de frequência de operação máxima.
- Oscilador interno (PLL) para geração precisa de sinais de frequência para os seu trabalho.
- Controlador DMA
- 9 Timers de 32 bits com modos de comparação, captura e PWM.
- RTC
- USB 2.0 On To Go
- 4 UARTs
- 2 I2C
- 2 CAN
- 1 Ethernet MAC10/100 com DMA dedicado.
- 16 canais AD de 12 bits de 1 Msps (com sensor de temperatura interno).
- 2 canais DA de 12 bits 1 MSPs.
- 1 Gerador de Números Aleatórios Verdadeiro.
- 103 I/Os com capacidade de interrupção, filtro para debouncing e glitch, coletor aberto, pull-up.
- Modos para economia de energia.
CONFIGURANDO O ATMEL STUDIO PARA GRAVAR O ARDUINO DUE
Uma característica interessante do Atmel Studio é poder gravar o Due através de sua IDE. São necessários alguns passos de configuração (nada muito complicado) e o programa bossac.exe encontrado nas pastas de instalação da IDE do Arduino. Aqui link explicativo (figuras auxiliares abaixo).
Programa e exemplo do arquivo bat, aqui (eu coloquei a pasta bossa no C:\ e não usei a localização da IDE do Arduino).
CÓDIGOS EXEMPLOS EM C PARA O ARDUINO DUE (sob a licença Beerware)
desenha_pixel(...)
desenha_linha(...)
desenha_circulo(...)
desenha_retangulo(...)
desenha_triangulo(...)
desenha_figura(...)
escreve_Nr_Peq(...)
- Programa Pisca LED: pisca o LED ligado ao pino 13 (PB27). Apresenta as rotinas de atraso, tão importantes em programação: atraso_ms( ), atraso_us( ) e atraso_loops( ). Código das funções em assembly, funções aferidas com o uso de um osciloscópio.
- Programa para controle de LCDs 16x2 (controlador HD44780 pino RW aterrado): Apresenta as funções para inicialização e trabalho com esses LCD, incluindo a função para conversão de um número inteiro em seus dígitos individuais.
- Programa teste do RTC (Relógio de Tempo Real): uso do RTC interno do ATSAM, ajuste de horas com a leitura de botões, tempo apresentado em um LCD 16x2.
- Programa para uso da UART ligado ao conversor USB/serial do Arduino Due: teste e funções de transmissão e recepção de dados, incluindo um buffer de recepção com tamanho ajustável. As mensagens podem ser recebidas em qualquer terminal virtual em um PC.
- Programa teste do ADC usando um sensor LM35 e o sensor interno de temperatura: leitura da tensão gerada por um LM35 e pelo sensor interno do ATSAM, resultado enviado ao computador usando a UART. (Obs.: cuidado, ao habilitar o sensor interno de temperatura AD15, o pino PB27 é desabilitado!!! Pergunte à ATMEL o porquê ..., parece que alguns chips já foram corrigidos!? Referência nula a esse problema apresentada pela ATMEL!)
- Programa para teste do uso dos TIMERs (TCs): emprega a interrupção do TC0 e seus 3 canais. O estudo inicial dos TCs é confuso e este programa ajuda a entender como utilizá-los. O LED ligado ao pino PB27 troca de estado a cada estouro do TC correspondente.
- Programa para o uso do MAX7219 (driver para displays de 7 segmentos): testado com um módulo made in China. Este CI é bem interessante.
- Programa para o LCD NOKIA 5110 (gráfico 48x84 pixels): funções de trabalho para esse display fácil de utilizar e barato, adaptação do código para a IDE do Arduino da Sparkfun. Permite escrever mensagens e imprimir figuras. Inclui programa para gerar os dados da imagem e arquivos auxiliares. Fiz algumas funções para gráficos, só fiz o preenchimento para o retângulo. Produzir uma biblioteca gráfica é relativamente complicado, então aproveite.
desenha_pixel(...)
desenha_linha(...)
desenha_circulo(...)
desenha_retangulo(...)
desenha_triangulo(...)
desenha_figura(...)
escreve_Nr_Peq(...)