Franzininho DIY – Saídas Digitais

franzininho diy avr libc
Este post faz parte da série Franzininho DIY - AVR LibC. Leia também os outros posts da série:

Agora que já estamos com as ferramentas instaladas e a placa Franzininho DIY em mãos, vamos dar início aos estudos dos periféricos internos do ATtiny85.

Nesse artigo vamos explorar os pinos de I/O como saída digital. Ao final, você saberá como acionar dispositivos externos a Franzininho DIY.

Recursos Necessários

Pinos do ATtiny85

O ATtiny85 possui 8 pinos, sendo que 6 deles podemos usar como I/O (entradas ou saídas) digitais. Os pinos de I/O são nomeados conforme a porta que eles pertencem. Na figura a seguir vemos que os pinos do ATtiny85 são nomeados de PBx, onde x é o número correspondente ao pino no registrador (não se preocupe, vamos ver mais detalhes a seguir):

image 26

Cada pino de I/O pode ser usado como entrada ou saída e também como outras funções nesse momento só vamos trabalhar com os pinos funcionando como GPIO (General Porpouse Input/Output).

Conforme exibido na imagem acima, temos os seguintes pinos disponíveis no ATtiny85:

PB0, PB1, PB2, PB3, PB4, PB5.

Algumas Particularidades do circuito da Franzininho DIY

Os pinos de I/O são marcados em Amarelo no Pinout da Franzininho DIY:

Pinagem completa Franzininho DIY V2RV2 fundo branco 1
  • O pino PB5 é configurado como RESET na Franzininho DIY, sendo assim não poderemos usá-lo como I/O.
  • Os pinos PB3 e PB4 são usados para o circuito da USB, sendo assim temos que usá-los com cautela. Geralmente esses pinos são usados apenas como saídas digitais.
  • O LED amarelo da placa está ligado ao pino PB1.
  • Os pinos PB0 E PB2 não possuem circuito ligados a eles.

Registradores responsáveis pelos pinos de I/O

Para trabalhar com os pinos de I/O no ATtiny85 temos 3 registradores:

  • PORTB: Registrador de dados. Responsável pela escrita nos pinos;
  • DDRB: Registrador de direção do pino. Responsável pela configuração dos pinos para definir se será entrada ou saída;
  • PINB: Registrador de entrada da porta. Responsável pela leitura do estado do pino.

Note que todos os registradores terminam com B no final. Isso significa que estamos trabalhando com o PORTB. Caso fosse um microcontrolador com maior quantidade de pinos teríamos os finais A, B,C, etc. Cada porta só possui no máximo 8 pinos.

Na seção 10 do datasheet do ATtiny85 temos todos os detalhes para se trabalhar com os I/O. A tabela a seguir, retirada do datasheet, exibe as configurações possíveis para os pinos:

image 28

A figura abaixo exibe os registradores responsáveis pelos pino de I/O do PORTB:

image 29

Note que cada bit dos registradores é responsável por pino sendo indexado pelo número correspondente ao bit. Dessa forma, se quisermos usar o pino PB1 para acionar o LED, devemos configurar o registrador DDRB da seguinte forma:

76543210
000010

E para acionar ligar/deligar o LED devemos colocar 1 ou no bit correspondente no PORTB.

Vamos a um exemplo para ficar mais claro.

Códigos

O exemplo acima pisca o LED em intervalos de 250 ms. A configuração do pino PB1 como saída foi feito colocando o bit1 de DDRB em 1. Já para ligar e desligar o LED foi manipulado o bit 1 de PORTB, hora em 1 hora em 0.

Projeto disponível em: https://github.com/Franzininho/exemplos-avr-libc

Bacana, não?

Podemos melhorar a manipulação dos bits dos registradores usando macros. As macros são rotinas que facilitam nossas vidas. Recomendo que se você leia esse artigo para entender sobre as macros e as operações efetuadas: https://www.embarcados.com.br/bits-em-linguagem-c/

Vamos usar as seguintes macros:

Os nomes já são auto-explicativos mas vamos verificar como usá-las no programa em C:

Dessa forma manipulamos somente os bits desejados, não alterando os valores dos outros que poderão ser usados para outras aplicações.

Desafio

Coloque outro LED no pino PB0 e o acione alternadamente ao pino PB1, ou seja, quando LED no PB0 estiver ligado o LED em PB1 deve apagar e vice-versa.

Outros artigos da série

<< Hello, World! Linguagem CFranzininho DIY – Entrada Digital >>
Website | Veja + conteúdo

Engenheiro, especialista em sistemas embarcados. Hoje é diretor de operações do portal Embarcados, onde trabalha para levar conteúdos de eletrônica, sistemas embarcados e IoT para o Brasil.

Também atua no ensino eletrônica e programação. É entusiastas do movimento maker, da cultura DIY e do compartilhamento de conhecimento, publica diversos artigos sobre eletrônica e projetos open hardware.

Com iniciativas como o projeto Franzininho e projetos na área de educação, leva a cultura maker para o Brasil capacitando e incentivando professores e alunos a usarem tecnologia em suas vidas. Participou da residência hacker 2018 no Red Bull Basement.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
marco ramos
marco ramos
31/05/2021 10:47

Sr. Fábio Souza.
Obrigado pela sua Caridade e Benevolência para com o Brasil. As bençãos já estão com o Sr.
Obrigado….Obrigado….

FILIPE EMMANUEL ALVES
FILIPE EMMANUEL COELHO ALVES
28/05/2021 21:22

Com que ferramenta é feito o upload do hexa…preguiça de olhar o makefile

Talvez você goste:

Séries



Outros da Série

Menu