Como baixar e usar a biblioteca avr/io.h
Se você estiver trabalhando com microcontroladores AVR, você pode ter encontrado o avr/io.h biblioteca. Essa biblioteca é um arquivo de cabeçalho que inclui as definições de E/S apropriadas para o dispositivo que você está usando. Ele permite acessar os registradores IO e seus respectivos valores de bit, bem como os nomes de interrupção para funções de interrupção. Neste artigo, você aprenderá como baixar e usar o avr/io.h biblioteca para seus projetos AVR.
avr io.h library download
O que é a biblioteca avr/io.h e o que ela faz?
O avr/io.h library é um arquivo de cabeçalho que faz parte dos cabeçalhos padrão AVR C. Ele é incluído por padrão no Arduino IDE, que é uma plataforma popular para programar microcontroladores AVR. O avr/io.h A biblioteca fornece macros e definições para acessar os registradores IO e seus respectivos valores de bit, bem como os nomes de interrupção para funções de interrupção. Eles são úteis para executar operações de E/S de baixo nível, como definir ou ler níveis digitais nos pinos, configurar a direção dos pinos, habilitar ou desabilitar resistores pull-up, etc. avr/io.h A biblioteca também fornece alguns nomes de registro comuns que são compartilhados por todos os dispositivos AVR, como SREG, SP, SPH, etc
O avr/io.h A biblioteca é específica do dispositivo, o que significa que inclui as definições de E/S apropriadas para o dispositivo que você está usando. Isso é feito desviando para o arquivo apropriado , onde XXXX é o nome do dispositivo, como atmega328p, attiny85, etc. Esses arquivos nunca devem ser incluídos diretamente, mas sim através do avr/io.h biblioteca. O nome do dispositivo é especificado pelo -mmcu= chave de linha de comando do compilador, que geralmente é definida pelo Arduino IDE ou outras ferramentas.
Para usar o avr/io.h biblioteca, você precisa incluí-la em seu código usando o #incluir diretiva, conforme abaixo:
Isso incluirá as definições de E/S apropriadas para o seu dispositivo, bem como alguns outros arquivos de cabeçalho necessários, como <avr/sfr_defs.h>, <avr/portpins.h>, <avr/common.h>, e <avr/version.h>. Você pode então usar as macros e definições fornecidas pelo avr/io.h biblioteca em seu código.
Como baixar a biblioteca avr/io.h
Se você estiver usando o Arduino IDE, você não precisa baixar o avr/io.h biblioteca separadamente, pois já está incluída na plataforma Arduino AVR Boards. Você pode encontrá-lo na seguinte pasta:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\avr\io.h
Se você estiver usando outras ferramentas ou plataformas, pode ser necessário baixar o avr/io.h biblioteca de outras fontes. Aqui estão algumas opções:
Usando o GitHub
Você pode encontrar o repositório central oficial do Arduino AVR no GitHub, que contém o código-fonte e os arquivos de configuração da plataforma Arduino AVR Boards, incluindo o avr/io.h biblioteca. Você pode baixar ou clonar o repositório neste link: . Você pode então copiar o avr/io.h arquivo e os outros arquivos de cabeçalho para a pasta do projeto ou inclua o caminho. Usando outras fontes
Você também pode encontrar o avr/io.h library e os outros cabeçalhos padrão AVR C de outras fontes, como o Atmel AVR Toolchain oficial, que é uma coleção de ferramentas para desenvolver aplicativos para microcontroladores AVR. Você pode baixar a cadeia de ferramentas neste link: . Você pode então extrair o avr/io.h arquivo e os outros arquivos de cabeçalho da cadeia de ferramentas e copie-os para a pasta do projeto ou inclua o caminho.
Outra fonte é o projeto AVR Libc, que é um projeto de software livre que fornece uma biblioteca C de alta qualidade para uso com o GCC em microcontroladores Atmel AVR. Você pode baixar o AVR Libc neste link: . Você pode então extrair o avr/io.h arquivo e os outros arquivos de cabeçalho do AVR Libc e copie-os para a pasta do projeto ou inclua o caminho.
Como usar a biblioteca avr/io.h
Depois de baixar e incluir o avr/io.h biblioteca em seu código, você pode usá-la para executar operações IO de baixo nível em seu dispositivo AVR. Aqui estão algumas dicas sobre como usar o avr/io.h biblioteca:
Inclua o arquivo de cabeçalho em seu código
O primeiro passo é incluir o avr/io.h arquivo de cabeçalho em seu código usando o #incluir diretiva, conforme abaixo:
Isso incluirá as definições de E/S apropriadas para o seu dispositivo, bem como alguns outros arquivos de cabeçalho necessários, como <avr/sfr_defs.h>, <avr/portpins.h>, <avr/common.h>, e <avr/version.h>. Você pode então usar as macros e definições fornecidas pelo avr/io.h biblioteca em seu código.
Use as macros e definições para operações IO
O avr/io.h A biblioteca fornece macros e definições para acessar os registradores IO e seus respectivos valores de bit, bem como os nomes de interrupção para funções de interrupção. Eles são úteis para executar operações de E/S de baixo nível, como definir ou ler níveis digitais nos pinos, configurar a direção dos pinos, habilitar ou desabilitar resistores pull-up, etc. As macros e definições são nomeadas de acordo com uma convenção que consiste em três partes: um prefixo, um nome de registro e um sufixo. Por exemplo, PINB0 é uma macro que representa o bit 0 do registro de entrada da porta B.
O prefixo indica o tipo de registro ou operação, como:
PINx: porta x registrador de entrada (somente leitura)
PORT x: porta x registrador de dados (ler/escrever)
DDRx: porta x registrador de direção de dados (leitura/gravação)
PUD: bit de desabilitação pull-up no registro MCUCR (leitura/gravação)
_BV(): função de valor de bit que retorna um valor com um conjunto de bits (por exemplo, _BV(3) retorna 0b00001000)
_SFR_IO8(): macro que acessa um registrador IO de 8 bits (ex. _SFR_IO8(0x05) acessa o registro PINB)
_SFR_IO16(): macro que acessa um registrador IO de 16 bits (ex. _SFR_IO16(0x04) acessa o registrador TCNT1)
_SFR_MEM8(): macro que acessa um registrador mapeado em memória de 8 bits (ex. _SFR_MEM8(0x6F) acessa o registro SREG)
_SFR_MEM16(): macro que acessa um registrador mapeado em memória de 16 bits (ex. _SFR_MEM16(0x6 E) acessa o registro OCR1A)
O nome do registrador indica o nome do registrador ou bit, como:
PINB: registro de entrada da porta B
PORTB: registro de dados da porta B
DDRB: registro de direção de dados da porta B
TCNT1: temporizador/contador 1 registrador
OCR1A: registrador de comparação de saída 1A
SREG: registro de status
MCUCR: registro de controle MCU
INT0: interrupção externa 0 bit
TIMSK1: temporizador/contador 1 registro de máscara de interrupção
TOIE1: bit de habilitação de interrupção de estouro do temporizador/contador 1
O sufixo indica o número ou a posição do bit, como:
PINB0: bit 0 do registro de entrada da porta B
PINB7: bit 7 do registro de entrada da porta B
PORTB0: bit 0 do registrador de dados da porta B
PORTB7: bit 7 do registrador de dados da porta B
DDRB0: bit 0 do registrador de direção de dados da porta B
DDRB7: bit 7 do registrador de direção de dados da porta B
PUD: bit de desabilitação pull-up no registro MCUCR
INT0_vect: nome do vetor de interrupção para a função de interrupção externa 0
TIMER1_OVF_vect: nome do vetor de interrupção para função de estouro do temporizador/contador 1
TOIE1: bit de habilitação de interrupção de estouro do temporizador/contador 1 no registro TIMSK1
Você pode usar essas macros e definições para executar operações IO em seu dispositivo AVR, como:
// Define PORTB0 como saída DDRB = _BV(PORTB0); // Define PORTB0 para alto PORTB = _BV(PORTB0); // Definir PORTB0 para baixo PORTB &= _BV(PORTB0); // Ler PINB0 uint8_t pinb0 = PINB & _BV(PINB0); // Habilita resistor pull-up em PINB0 PORTB = _BV(PINB0); // Desabilita o resistor pull-up no PINB0 PORTB &= _BV(PINB0); // Habilita interrupção externa 0 na borda de descida MCUCR = _BV(ISC01); MCUCR &= _BV(ISC00); GIMSK = _BV(INT0); // Definir função de interrupção externa 0 ISR(INT0_vect) // Fazer algo quando ocorrer uma interrupção // Habilitar interrupção de estouro do temporizador/contador 1 TIMSK1 = _BV(TOIE1); // Definir a função de estouro do temporizador/contador 1 ISR(TIMER1_OVF_vect) // Fazer algo quando o temporizador estourar
Use os nomes de interrupção para funções de interrupção
O avr/io.h A biblioteca também fornece os nomes de interrupção para funções de interrupção, que são usadas para definir as funções que são executadas quando ocorre uma interrupção. Os nomes das interrupções estão na forma de _vect, onde é o nome da fonte de interrupção, como INT0_vect, TIMER1_OVF_vect, etc. Você pode usar esses nomes para definir suas funções de interrupção usando o ISR() macro, como mostrado abaixo:
// Define a função de interrupção externa 0 ISR(INT0_vect) // Faz algo quando ocorre uma interrupção // Define a função de estouro do temporizador/contador 1 ISR(TIMER1_OVF_vect) // Faz algo quando o temporizador estoura
O ISR() A macro cuida de salvar e restaurar o contexto do programa interrompido, bem como limpar o sinalizador de interrupção, se necessário. Você também pode usar o SINAL() macro em vez de ISR(), que não limpa o sinalizador de interrupção, mas isso não é recomendado, pois pode causar um comportamento inesperado. Você pode encontrar mais informações sobre as interrupções e seus nomes na folha de dados do seu dispositivo.
Exemplos de uso da biblioteca avr/io.h
Para demonstrar como usar o avr/io.h biblioteca, aqui estão alguns exemplos de projetos AVR simples que usam a biblioteca para realizar operações de E/S.Você pode tentar esses exemplos em seu próprio dispositivo AVR, como um Arduino Uno, conectando os componentes apropriados e carregando o código usando o Arduino IDE ou outras ferramentas.
Piscando um LED
Este exemplo mostra como usar o avr/io.h biblioteca para piscar um LED conectado ao pino 13 (PORTB5) de um Arduino Uno. O código usa o PORTB e DDRB registra para controlar o nível de saída e direção do pino, e o _delay_ms() função para criar um atraso. O código também usa o F_CPU macro para definir a frequência do relógio do dispositivo, que é necessária para a função de atraso. O código é o seguinte:
#include #include #define F_CPU 16000000UL // Define a frequência do clock como 16 MHz int main(void) DDRB
Este código fará o LED piscar a uma taxa de 1 Hz (um segundo ligado, um segundo desligado).
Lendo um botão
Este exemplo mostra como usar o avr/io.h biblioteca para ler um botão conectado ao pino 2 (PORTD2) de um Arduino Uno. O código usa o PIND e DDRD registra para ler o nível de entrada e direção do pino, e o PUD e PORTD registra para habilitar o resistor pull-up interno no pino. O código também usa um LED conectado ao pino 13 (PORTB5) para indicar o estado do botão. O código é o seguinte:
#include int main(void) = _BV(PORTB5); // Define PORTB5 como saída while (1) if (PIND & _BV(PIND2)) // Se PORTD2 é alto (botão não pressionado) PORTB &= _BV(PORTB5); // Define PORTB5 como baixo (LED apagado) else // Se PORTD2 estiver baixo (botão pressionado) PORTB return 0;
Este código fará com que o LED acenda quando o botão for pressionado e apague quando o botão for solto.
Usando um temporizador
Este exemplo mostra como usar o avr/io.h biblioteca para usar um temporizador/contador para gerar uma interrupção a cada segundo. O código usa timer/counter 1, que é um timer/counter de 16 bits que pode operar em diferentes modos. O código configura o temporizador/contador no modo normal, sem prescaler, e define o valor de estouro para corresponder à frequência do relógio. O código também usa uma função de interrupção para alternar um LED conectado ao pino 13 (PORTB5) toda vez que o temporizador estoura. O código é o seguinte:
#include #include #define F_CPU 16000000UL // Define a frequência do clock como 16 MHz int main(void) = _BV(OCIE1A); // Ativa a interrupção de comparação de saída 1A sei(); // Habilita interrupções globais while (1) // Não faz nada, deixa a interrupção lidar com o LED return 0; // Define a função 1A de interrupção de comparação de saída ISR(TIMER1_COMPA_vect) PORTB ^= _BV(PORTB5); // Alterna PORTB5 (LED)
Este código fará o LED piscar a uma taxa de 0,5 Hz (um segundo ligado, um segundo desligado).
Conclusão
O avr/io.h library é um arquivo de cabeçalho que inclui as definições de E/S apropriadas para o dispositivo que você está usando. Ele permite acessar os registradores IO e seus respectivos valores de bit, bem como os nomes de interrupção para funções de interrupção. É útil para executar operações IO de baixo nível em seu dispositivo AVR, como definir ou ler níveis digitais nos pinos, configurar a direção dos pinos, habilitar ou desabilitar resistores pull-up etc. avr/io.h biblioteca em seu código usando várias fontes, como Arduino IDE, GitHub ou outras ferramentas. Você pode então usar as macros e definições fornecidas pelo avr/io.h biblioteca em seu código para executar operações IO em seu dispositivo AVR.
O avr/io.h biblioteca tem alguns benefícios e limitações. Alguns dos benefícios são:
Ele fornece uma maneira conveniente e consistente de acessar os registradores IO e seus respectivos valores de bit, bem como os nomes de interrupção para funções de interrupção.
É específico do dispositivo, o que significa que inclui as definições de E/S apropriadas para o dispositivo que você está usando.
É compatível com diversas ferramentas e plataformas, como Arduino IDE, GCC, AVR Libc, etc.
Algumas das limitações são:
É de baixo nível, o que significa que requer algum conhecimento do hardware e da ficha técnica do seu dispositivo.
Não é portátil, o que significa que pode não funcionar com outros dispositivos ou arquiteturas.
Pode não suportar alguns recursos ou funções disponíveis em outras bibliotecas ou estruturas, como PWM, ADC, SPI, I2C, etc.
Se você quiser saber mais sobre o avr/io.h biblioteca e como usá-la em seus projetos AVR, você pode conferir alguns desses recursos:
A folha de dados do seu dispositivo, que contém informações detalhadas sobre os registradores IO e seus respectivos valores de bit, bem como os nomes de interrupção para funções de interrupção.
A documentação dos cabeçalhos padrão AVR C, que contém informações sobre as macros e definições fornecidas pelo avr/io.h biblioteca e outros arquivos de cabeçalho.
O repositório principal do Arduino AVR no GitHub, que contém o código-fonte e os arquivos de configuração da plataforma Arduino AVR Boards, incluindo o avr/io.h biblioteca.
O site do projeto AVR Libc, que contém informações sobre a biblioteca AVR C para uso com GCC em microcontroladores Atmel AVR.
O site Atmel AVR Toolchain, que contém informações sobre a coleção de ferramentas para desenvolvimento de aplicativos para microcontroladores AVR.
Esperamos que este artigo tenha ajudado você a entender como baixar e usar o avr/io.h biblioteca para seus projetos AVR. Se você tiver alguma dúvida ou feedback, sinta-se à vontade para deixar um comentário abaixo. Codificação feliz!
perguntas frequentes
Aqui estão algumas perguntas frequentes sobre o avr/io.h biblioteca:
O que é a biblioteca avr/io.h?
O avr/io.h library é um arquivo de cabeçalho que inclui as definições de E/S apropriadas para o dispositivo que você está usando. Ele permite acessar os registradores IO e seus respectivos valores de bit, bem como os nomes de interrupção para funções de interrupção.
Como baixar a biblioteca avr/io.h?
Você pode baixar e incluir o avr/io.h biblioteca em seu código usando várias fontes, como:
O Arduino IDE, que já inclui o avr/io.h biblioteca em sua plataforma Arduino AVR Boards.
O repositório GitHub do núcleo Arduino AVR, que contém o código-fonte e os arquivos de configuração da plataforma Arduino AVR Boards, incluindo o avr/io.h biblioteca.
O Atmel AVR Toolchain, que é uma coleção de ferramentas para desenvolvimento de aplicações para microcontroladores AVR, que inclui o avr/io.h biblioteca e outros arquivos de cabeçalho.
O projeto AVR Libc, que é um projeto de software livre que fornece uma biblioteca C de alta qualidade para uso com GCC em microcontroladores Atmel AVR, que inclui o avr/io.h biblioteca e outros arquivos de cabeçalho.
Como usar a biblioteca avr/io.h?
Para usar o avr/io.h biblioteca, você precisa incluí-la em seu código usando o #incluir diretiva, conforme abaixo:
Isso incluirá as definições de E/S apropriadas para seu dispositivo, bem como alguns outros arquivos de cabeçalho necessários. Você pode então usar as macros e definições fornecidas pelo avr/io.h biblioteca em seu código para executar operações IO de baixo nível em seu dispositivo AVR, como definir ou ler níveis digitais nos pinos, configurar a direção dos pinos, habilitar ou desabilitar resistores pull-up, etc. Você também pode usar os nomes de interrupção fornecidos pelo avr/io.h biblioteca para definir as funções que são executadas quando ocorre uma interrupção, usando o ISR() macro.
Quais são os benefícios e limitações da biblioteca avr/io.h?
O avr/io.h biblioteca tem alguns benefícios e limitações. Alguns dos benefícios são:
Ele fornece uma maneira conveniente e consistente de acessar os registradores IO e seus respectivos valores de bit, bem como os nomes de interrupção para funções de interrupção.
É específico do dispositivo, o que significa que inclui as definições de E/S apropriadas para o dispositivo que você está usando.
É compatível com diversas ferramentas e plataformas, como Arduino IDE, GCC, AVR Libc, etc.
Algumas das limitações são:
É de baixo nível, o que significa que requer algum conhecimento do hardware e da ficha técnica do seu dispositivo.
Não é portátil, o que significa que pode não funcionar com outros dispositivos ou arquiteturas.
Pode não suportar alguns recursos ou funções disponíveis em outras bibliotecas ou estruturas, como PWM, ADC, SPI, I2C, etc.
Este é o fim do artigo. Obrigado por ler e espero que tenha achado útil. Se você tiver alguma dúvida ou feedback, sinta-se à vontade para deixar um comentário abaixo. Codificação feliz! 0517a86e26
Comments