Manual
do
Maker
.
com
Em minha opinião, a Atmel abriu novos horizontes na eletrônica digital com a criação não só do open-hardware Arduino, mas também com sua IDE de desenvolvimento de tão alto-nível que levou diversos hobistas a se introduzirem nesse mundo da eletrônica digital. E como consequência de sua qualidade, concorrentes começaram a surgir, de forma direta ou indireta, mas seguindo as linhas definidas pela Atmel.
Especificamente nesse post, fiz essa chamada no título mais como uma brincadeira. Não quero influenciar opiniões, além de que meu objetivo na aquisição dessa board teve um fim muito específico, que citarei mais adiante. Mas tendo ambas em mãos, é inevitável fazer um comparativo, ainda mais por que a proposta da board parece ser a tal concorrente direta. Se realmente fosse uma disputa entre os recursos que cada uma oferece, qual seria a vencedora? Vejamos.
O Arduino UNO utiliza um chip Atmega328P-PU.
Ela possúi 14 pinos de I/O digital, dos quais 6 podem ser utilizados como saida PWM.
Possui um cristal de 16Mhz, conexão USB e jack para alimentação externa, um header ICSP, um botão de reset e um conversor USB-serial.
Sumário:
Controladora: ATmega328
Voltagem de operação: 5V
Voltagem de entrada recomendada: 7-12V
Limites de entrada: 6-20V
Pinos de I/O: 14 (dos quais 6 oferecem saída PWM)
Pinos de entrada analógicos: 6 (10bits)
Corrente DC por pino de I/O: 40 mA
Corrente DC para pino 3.3V : 50 mA
Flash Memory 32 KB (ATmega328) - 0.5 KB utilizado pelo bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Clock Speed 16 MHz
Todas as definições dos pinos podem ser encontradas aqui. Vejamos agora a...
Cristal de 20Mhz
Até 4 pinos PWM
Master Synchronous Serial Port (MSSP) suportando
3-wire SPI™ (todos os 4 modos) e I2C™ nos modos Master e Slave.
Serial endereçavel.
Até 13 canais analógico-digital de 10bits
Modo de operação: entre 2V e 5.5V
Flash: 32K
SRAM: 1536B
EEPROM:256B
Pinos de I/O: 25
Canais A/D: 10
PWM: 2
EUSART: 1
Timers 8/16bits: 1/3
"Uau"?
Parece bem interessante, mas perde em muito na EEPROM e SRAM, enquanto ganha no clock; mas perde também no número de pinos configuráveis.
No datasheet é possível ver a relação das portas com as funcionalidades internas do processador.
Mas nem tudo é Ardui...; digo, simples. Para programar até pode-se fazê-lo em C, mas não há uma interface de tão alto-nível como a do Arduino. O que tenho utilizado nessa minha inicialização em PIC é o MikroC, da MikroEletronica. É sem dúvida o melhor (talvez o único?) SDK (pelo menos dos que conheci) para programar PIC. Nele estão contidas diversas bibliotecas para interagir com muitos componentes, sendo que o mais impressionante é o help - para cada PIC selecionada para o desenvolvimento, ele gera uma imagem das ligações por exemplo, com um CI RS485. Isso ajuda bastante, mas ainda assim diversos conceitos precisam ser pré-absorvidos para gerar algum código.
Como o grande 'Hello World' da eletrônica digital é acender um LED, vou exemplificar em ambos os ambientes o processo, mas para piscá-lo.
void setup(){
//pino 5
pinMode(5,OUTPUT);
}
void loop(){
digitalWrite(5,HIGH);
delay(1000);
digitalWrite(5,LOW);
delay(1000);
}
//TRISA
TRISA = 0; //OUTPUT em todos os pinos A
do {
PORTA.B0 = 0xFF; //HIGH
Delay_ms(1000);
PORTA.B0 = 0x00; //LOW
Delay_ms(1000);
} while (1);
Não foi simples de primeira, mas agora já sei acender um LED. Então, é necessário olhar o datasheet para saber as relações entre os pinos e os nomes, por exemplo, RA se refere à porta A, que controla um conjunto de pinos. Então, PORTA.B2 é o pino 5 desse modelo de PIC, pelo que entendi (alguém de PIC aí para dar uma introdução?).
Para o PIC.Duino, subir o programa também não é tão difícil, mas também não é tão Ardu...; digo, simples. Tem um programinha específico que pode ser baixado do site da SmartRadio, onde se encontra esse e outros hardwares interessantes, como por exemplo, o gravador de PICs com debugger.
Basicamente, o programa sobe o arquivo hexa gerado pela IDE de desenvolvimento. Para tal, é necessário mudar o jumper da board. Esse é um processo bastante prático, considerando o modo tradicional de escrita na micro-controladora, que é através de um gravador, como será visto em outro post.
Programar diretamente em assembly pode não ser o ideal para lazer ou até mesmo para produção, pelo tempo que consome. De qualquer forma é o modo mais comum de programação PIC, onde o código resultante acaba ficando bem mais enxuto. Seria como comparar C++ puro ao Qt; o Qt eleva o nível de programação a ponto de facilitar a programação tal como Python (para conhecedores de C++), em contrapartida o binário resultante não terá a mesma pontualidade de um programa escrito diretamente em C++. Além disso, alguns modelos de PIC tem um recurso de memória tão escasso que até minha bisavó guarda mais informação que ela, portanto, implementar código pode comprometer recursos necessários para outra tarefa.
Por fim, farei alguns posts com exemplos em PIC dos mesmos processos executados em Arduino e aos poucos vamos nos acostumando com sua aparência diferentona, mas muito divertida!
Se gostou, não deixe de compartilhar; dê seu like no video e inscreva-se no nosso canal Manual do Maker Brasil no YouTube.
Próximo post a caminho!
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.