Skip to main content

Hello, World!

Nesse exemplo vamos dar os nossos primeiros passos na programação da Franzininho DIY usando a AVR Libc.

Como de costume o nosso "Hello, World!" na eletrônica será um blink LED. Ao final desse experimento você terá uma estrutura mínima para desenvolver aplicações para o ATtiny85 em C.

Bora, colocar em prática!

Recursos Necessários

  • Placa Franzininho DIY(com Micronucleus)
  • Computador com as ferramentas de software instaladas(link)

Hello, World em linguagem C

Esse exemplo básico nos dará estrutura para todos nossos exemplos daqui pra frente. Como já mencionado, vamos usar a linguagem C em conjunto com a biblioteca AVR Libc. Para esse exemplo você só precisará da placa Franzininho DIY e as ferramentas de softwares.

O código exibe a estrutura mínima de um programa em linguagem C para microcontroladores. Se você tem dificuldades com a linguagem C, recomendo que confira os seguintes materiais:

Nesse momento é importante que você se atente a estrutura do código. Vamos usar alguns registradores para acionar o LED, mas não serão o foco da explicação. Confira os comentários no código a seguir:

Código

#include <avr/io.h>            // Biblioteca para acesso aos registradores do MCU
#include <util/delay.h> // Biblioteca para funções de delay

#define F_CPU 16500000L // Frequencia de clock que o mcu está trabalhando

/**
Essa é a função principal onde é iniciada aplicação
*/
int main(void)
{
DDRB |= (1 << PB1); // Configura Pino PB1 como saída (Pino do LED)

// O programar ficará nesse loop enquanto a placa estiver ligada
while (1)
{
PORTB |= (1 << PB1); // Liga LED
_delay_ms(500); // Aguarda 500 ms

PORTB &= ~(1 << PB1); // Desliga LED
_delay_ms(500); // Aguarda 500 ms
}

return (0); // Necessário um retorno (pois a função retorna int) mesmo que a função nunca retornará
}

Compilação e upload

para compilar o programa, acesse a pasta do exemplo e em seguida o comando make:

exemplos-avr-libc/exemplos/hello$ make

Já temos o makefile configurado na pasta, assim, será feita a compilação e em seguida aparecerá a mensagem para conectar a placa:

../../micronucleus/2.0a4/launcher  -cdigispark --timeout 60 -Uflash:w:main.hex:i
Running Digispark Uploader...
Plug in device now... (will timeout in 60 seconds)
> Please plug in the device (will time out in 60 seconds) ...

Conecte a placa no PC ou pressione o botão de RESET se ela já estiver conectada.

Será iniciado o upload.

Resultados

Nesse exemplo o LED irá piscar em intervalos de 500 ms (on) e 500 ms (off).

No próximo exemplo vamos detalhar sobre os registradores de IO. Nesse momento, além da estrutura inicial é importante que você entenda como usar a função _delay_ms().

Essa função espera o tempo passado em milissegundos.

Altere o código para que o led fique 100 ms(on) e 1000 ms (off), veja o efeito.

Conclusão

Nesse exemplo tivemos o primeiro contato com a programação em linguagem C para microcontroladores. Notamos que devemos incluir as bibliotecas externas através do #include e que o programa precisa necessariamente ter a função int main(void).

Dentro da função main temos um loop infinito onde os comandos se repetirão enquanto a placa estiver ligada.

AutorFábio Souza
Data:24/04/2021