Mensagem

"Sonhar mais um sonho impossível, lutar quando é fácil ceder, vencer o inimigo invencível, negar quando a regra é vender."
Miguel de Cervantes.

"Os microprocessadores RISC funcionam a partir do princípio genial de se encarregar das coisas mais fáceis e deixar todas as partes difíceis para outras pessoas resolverem."
Douglas Adams.

ARM CORTEX-M3 ATSAM3X8E - Arduino Due

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


  • 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.
         //Funções do Borges:
        desenha_pixel(...)
        desenha_linha(...)
        desenha_circulo(...)
        desenha_retangulo(...)
        desenha_triangulo(...)
        desenha_figura(...)

        escreve_Nr_Peq(...)
      

2 comentários:

  1. Muito obrigado pelas dicas. As bibliotecas me deram uma luz a respeito dos registradores DUE :)

    ResponderExcluir
  2. Esclareceu muita coisa. Porque você não expande um pouco mais, com CAN, Usarts, Usb, Etc. O datasheet é muito confuso e a grande maioria dos posts sao para programação Arduino e não C

    ResponderExcluir