Iniciando com Teensy: Versão Revisada
##1. Prefácio
Faz algum tempo, postei um texto no Laboratório de Garagem com o intuito de divulgar as placas de desenvolvimento Teensy. Agora, fiz uma revisão e adições no texto e trago para vocês do Fazedores.
##2. Introdução
Teensy são placas de desenvolvimento de microcontroladores completas baseadas em USB. Criadas pela PJRC a linha se constitui das seguintes placas:
Teensy 1.0 (descontinuada);
Teensy ++ 1.0 (descontinuada);
Teensy 2.0;
Teensy ++ 2.0;
Teensy 3.0;
Teensy 3.1;
A linha Teensy 2, utiliza microcontroladores AVR de 8 bits da Atmel a saber: ATMega32U4 (Teensy 2.0, mesmo microcontrolador do Arduino Leonardo) e AT90USB1286 (Teensy 2.0 ++). Já a linha Teensy 3 usa microcontroladores Cortex-M4, baseados em ARM de 32 bits da linha Kinetis, fabricados pela Freescale que são: MK20DX128 para a placa Teensy 3.0 e MK20DX256 para a Teensy 3.1.
As placas Teensy 2 tem fama de oferecerer um baixo custo e alta qualidade sendo reconhecidas como uma excelente opção ao Arduino, mesmo até porque, além de poderem ser programadas em C, também podem ser programadas com Arduino, via addon para a IDE Arduino estável, chamado Teensyduino. Já as Teensy 3 suportam Arduino por padrão via Teensyduino.
##3. Utilização
Não é necessário muito para começar a utilizar Teensy, basta conectar o cabo USB e ligar a placa, assim como no Arduino, a placa iniciará a piscar o LED, que nada mais é que um código de blink que já vem gravado no microcontrolador para fins de teste.
Quando você pressiona o botão de reset da placa, ela carrega um bootloader, um código proprietário e fechado da PJRC chamado HalfKay, é ele quem gerencia o carregamento de novos programas para as placas Teensy através do Teensy Loader. O código do HalfKay é mantido fechado pela PJRC por questão de negócios, a fim de evitar cópias chinesas de qualidade duvidosa, sendo que não é possível extraí-lo das placas pois os Lock Bits do MCU foram setados, só é possível reescrever um outro bootloader, se você preferir, mas não será mais possível usar o Teensy Loader.
O bootloader HalfKay, diferente dos outros bootloaders, como AVR109, utiliza apenas 512 bytes ao invés de 2Kbytes/4Kbytes, liberando mais espaço para o programa do usuário.
O Teensy Loader é mandatório para trabalhar com Teensy, para aqueles que irão programar diretamente em C ou para aqueles que irão trabalhar com Arduino ou outra linguagem que o Teensy tenha suporte (como é o caso de BASIC e Python).
##4. Programando com C (AVR Libc)
Para iniciar a programação em C, é necessário instalar o WinAVR (no caso so Windows). A PJRC disponibiliza instruções e um exemplo de blinky alterado para responder a sinais de código morse em: http://pjrc.com/teensy/gcc.html
O código de blinky virá com um Makefile genérico que você pode usar em seus outros projetos, com poucas alterações, para ganhar tempo, basicamente, após instalar o WinAVR, simplesmente navegue via CMD do Windows e digite make, e o projeto será compilado, após isso, basta usar o Teensy Loader para fazer o upload do arquivo HEX para a placa Teensy.
O WinAVR é baseado em AVR Libc, por isso, é interessante para todos aqueles que desejam trabalhar com C, que estudem a referência da biblioteca. O equivalente ao Blink do Arduino em C, tendo em vista que o led da Teensy 2 está conectado ao pino D6, seria este código:
#include <avr/io.h>
#include <util/delay.h>
#define LED_CONFIG (DDRD |= (1 << 6)) // Configura a Porta D6 para OUTPUT (referente a pinMode)
#define LED_ON (PORTD |= (1 << 6)) // Seta o bit na porta D6 (referente a digitalWrite(pin, HIGH))
#define LED_OFF (PORTD &= ~(1 << 6)) // Limpa o bit na porta D6 ( referente a digitalWrite(pin, LOW))
#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
void main(){ CPU_PRESCALE(0); LED_CONFIG; while(1){ // loop infinito (referente ao void loop()) LED_ON; _delay_ms(1000); LED_OFF; _delay_ms(1000); }}
É possível também usar o Atmel Studio 6 e até biblioteca LUFA para realizar a programação em C.
##5. Programando com Arduino (Teensyduino)
Para programar as linhas Teensy 2 e 3 utilizando Arduino, basicamente você deve instalar o Teensyduino como Administrador do Sistema, ele irá instalar o Addon, o driver para Serial e bibliotecas opcionais.
Vale ressaltar, que na linha Teensy 2 nem todas as bibliotecas de Arduino são compatíveis, é necessário verificar a lista de compatibilidade. Porém, a linha 3 é completamente compatível com Arduino e o mesmo é padrão para programação do Teensy 3.
Claro que, ao encaminhar o código de exemplo Blink para a placa Teensy, é necessário saber em qual porta o led está ligado, no caso do Teensy 2, você deve trocar o pino 13 pelo pino 6, por exemplo e pronto, daqui, é só programar seus próprios projetos com Arduino!
##6. Considerações Finais
Eu comecei por Arduino Uno, talvez levado pela popularidade da plataforma, mas sinceramente, se hoje eu tivesse que escolher uma placa para iniciar, pensaria seriamente em uma Teensy, pelo fato de serem mais baratas e oferecerem mais que o Arduino, a Teensy ++ 2.0 além de ser mais barata, utilizar um microcontrolador melhor, ainda possui 45 portas e pode ser programada por código de Arduino.
Além disso, oferecem host de USB, HID e muitas outras possibilidades, eis aqui uma vasta lista de projetos criados com Teensy: Robôs, reposição de processadores, shield para Arduino, leitores e gravadores de eeprom, memórias nor/nand e muitas outras coisas interessantes!
E claro, são placas pequenas e baratas! Além disso contam com um excelente suporte num fórum de discussão privativo, onde o próprio criador da placa tem a atenção de responder questões, guiar projetos, atualizar software. Atualmente, mesmo podendo comprar diretamente da PJRC, eles ainda estão buscando distribuidores de placas originais na América Latina, como podemos notar.
Para consultar preços e especificações, visite a página oficial do Teensy.