Índice:
- Suprimentos
- Etapa 1: Instalação do Bascom e configuração
- Etapa 2: vamos examinar mais de perto o chip
- Etapa 3: O primeiro circuito
- Etapa 4: Escreva o primeiro programa
- Etapa 5: adicionar um botão para usar entradas
Vídeo: Introdução ao Bascom AVR: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:34
Este é o início de uma série para ensiná-lo a programar seu microcontrolador AVR com Bascom AVR.
Por que estou fazendo isso.
A maioria dos exemplos de programa desta série pode ser feita com o Arduino.
Alguns mais fáceis e outros mais difíceis, mas no final ambos rodarão no mesmo controlador.
Mas a forma de programação é diferente em cada ambiente de desenvolvimento. O Arduino precisa de uma biblioteca para tudo, exceto as funções básicas. Bascom também funciona com bibliotecas, mas raramente preciso incluir uma. Com o Arduino, todas as configurações específicas do hardware são feitas por meio das bibliotecas. você tem muito pouca influência na potência real do microcontrolador. Começando com os temporizadores que o controlador possui. com o arduino, você precisa de uma biblioteca novamente. se você tiver o cronômetro até que ele funcione, pode ser que outra biblioteca esteja colidindo com suas configurações. Na bascom, você tem acesso gratuito ao hardware completo, incluindo o setor de boot ocupado pelo arduino. por exemplo, algumas bibliotecas da bascom perguntam qual cronômetro você deseja usar. por outro lado, como o arduino torna muito fácil criar uma biblioteca você mesmo, ele naturalmente o torna uma plataforma onde novos hardwares e sensores geralmente têm uma biblioteca diretamente. o que costuma ser associado a muitas pesquisas na bascom e às funções que uma biblioteca normalmente assumia, deve ser meticulosamente incorporado ao código do programa. mas boas notícias: a comunidade bascom também é muito grande, por isso existe uma solução para cada ideia.
Portanto, depende em parte do projeto o que é usado para um ambiente de desenvolvimento e em parte do know-how do programador.
mas por que estou fazendo esta série. por um lado, economiza muito dinheiro. Não preciso comprar uma placa Arduino para cada projeto. Por exemplo: Um noname Arduino uno custa cerca de 12 € o controlador que está nele custa apenas 2,5 € com o circuito mínimo necessário para uma função estável, custa cerca de 4 €. por outro lado, você tem uma seleção completa de chips avr que são suportados disponíveis. atmegas 8 a 256 e attiny 8 a 2313 e muitos tipos xmega sobre os quais não tenho experiência. Se você quiser usar apenas um servo e um sensor ultrassônico que reconheça uma mão, por exemplo, e depois abra a tampa de uma lata de lixo, pode usar o menor chip possível. Portanto, há muitos motivos para aprender um segundo idioma.
Então vamos começar
Suprimentos
Esta é uma lista de peças mínimas necessárias para uma operação estável do chip e programação.
Placa de ensaio para teste
Atmega 8-16PU (melhor você comprar 2 ou 3 se você matá-los por engano)
Regulador de tensão 7805 5V
Resistor de 10 kohm
Capacitor de filme 100nF
Capacitor eletrolítico de 10µF
Capacitor eletrolítico de 100µF
alguns fios para placa de ensaio
PC com Windows 7/8 / 8.1 / 10
Programador ISP (vou usar aqui o USBasp você pode comprar na amazon por pouco dinheiro)
Bascom AVR (você pode baixar aqui uma DEMO. Todas as funções são desbloqueadas, mas você pode escrever código apenas até o tamanho de 4Kb que é o suficiente para muitos códigos).
Partes opcionais:
LED's com resistores
botões de pressão
peças específicas do projeto
Etapa 1: Instalação do Bascom e configuração
Baixe o arquivo e instale o Bascom AVR. Instale todas as partes, incluindo a última caixa de seleção após a instalação.
Depois disso, reinicie o PC, caso contrário, o bascom não iniciará.
Após a reinicialização, inicie o bascom.
Vá para Opções -> Programador e escolha USBasp na lista, salve as configurações e feche o Bascom.
Use este programa para instalar o usbasp. Depois disso, reinicie o PC novamente. Agora conecte o USBasp ao seu PC e inicie o gerenciador de dispositivos. O USBasp deve aparecer nos dispositivos libusb.
Stat Bascom novamente e crie um novo arquivo. Salve-o no seu PC e aperte o botão F7 do teclado.
O compilador inicia e compila o programa vazio. Agora você pode testar a funcionalidade do programador.
Aperte o botão F4 em seu teclado para iniciar a janela do programador. Agora vá para chip -> identifique para iniciar uma interação. Os LEDs do USBasp devem piscar brevemente. Você deve receber uma mensagem como o chip Id FFFFFF não pôde ler o dispositivo. É um bom sinal de que o programador está funcionando, mas não encontrou nenhum chip.
Agora podemos começar a construir o primeiro circuito.
Etapa 2: vamos examinar mais de perto o chip
Se você olhar a pinagem do chip, parece que o chip não tem nenhuma semelhança com a placa arduino. Claro, usamos um Atmega8 e no Arduino uno é um Atmega328. Mas o Pinout é quase o mesmo, mas o chip da placa do Arduino Uno tem mais funções. Aqui estão os nomes dos pinos. VCC e GND são os pinos da fonte de alimentação.
AREF e AVCC são pinos para a tensão de referência e fonte de alimentação para o conversor analógico para digital.
PB 0-7 PC 0-6 PD 0-7 são pinos de saída de entrada de propósito geral com ocupação múltipla.
pino de redefinição é o que o nome diz. Para reiniciar o chip. A linha acima do nome do reset significa negação. Isso significa que, para reinicializar o chip, você precisa baixá-lo para 0V.
Para os seguintes pinos, separem instructables que virão em breve.
RXD TXD são pinos de hardware para comunicação serial UART.
INT0 INT1 são pinos de interrupção de hardware
Fonte de relógio XCK / T0 UART / temporizador / fonte de relógio Counter0
Os pinos XTAL / TOSC são para um cristal externo de até 16 MHz (diferentes modelos até 20 MHz) / os pinos de cristal para um RTC interno
T1 é semelhante a T0
Os pinos AIN são para o comparador analógico
ICP1 é semelhante a T0 / T1
OC1A é o pino de saída de hardware para pwm timer1 canal A
PIN de seleção de chip SS / OC2 para SPI / como OC1B, mas canal B
MOSI MISO SCK / OC2 são os pinos SPI de hardware e os pinos para programação / temporizador de saída PWM2
ADC0 a ADC5 são as entradas analógicas
SDA SCL são os pinos para hardware I2C
O chip normal pode trabalhar de 4, 5V a 5, 5V o Atmega 8L pode trabalhar com tensão muito mais baixa.
Você vê que até mesmo este chip pode fazer mais do que um Arduino Uno parece não fazer. Mas o Arduino também pode fazer isso, basta programá-lo.
Etapa 3: O primeiro circuito
Agora é hora de construir seu primeiro circuito.
Qual é normalmente o primeiro circuito? Direito! Vamos piscar um LED.
O LED está conectado ao PB0. O resistor próximo ao chip tem 10k Ohms.
O resistor próximo ao LED tem 470 Ohms.
Agora você pode conectar o USBasp ao Atmega conforme mostrado na imagem.
Mas antes de ligar a energia, deixe-nos escrever o programa.
Etapa 4: Escreva o primeiro programa
Crie um novo arquivo no Bascom e digite o seguinte texto.
$ regfile "m8def.dat"
$ crystal = 1000000 config portb.0 = saída do portb.0 = 1 espera 1 portb.0 = 0 espera 1 loop
depois disso, compile-o pressionando F7 no teclado.
Agora podemos programar o chip pressionando F4. A janela do programador é exibida. Agora é hora de ligar a alimentação da placa de ensaio. Você deve aplicar algo entre 6 e 12 Volts.
Agora vá para chip -> autoprogram. Se a janela do programador fechar automaticamente, a programação foi bem-sucedida.
O LED deve piscar na frequência de um segundo.
Agora dê uma olhada mais de perto no programa para entender a sintaxe.
$ regfile "m8def.dat"
$ crystal = 1000000
com $ regfile dizemos ao compilador o tipo do chip usado, o nome do chip Arduino seria "m328pdef.dat"
com $ cristal, dizemos a ele a velocidade da CPU em cerca de 1MHz.
config portb.0 = Saída
isso significa que PB0 deve atuar como saída.
A propósito, a abreviatura PB0 significa porta B bit 0. O chip é dividido em várias portas. Cada porta recebe uma carta para identificação clara. e cada pino de porta um bit de 0 a 7. Por exemplo, posso escrever um byte completo no registro de saída da porta, que será enviado por meio dos pinos de porta individuais.
Faz
ciclo
Isso é o que significa a instrução void loop no Arduino. Todos esses dois comandos se repetirão para sempre. (com algumas exceções, mas mais tarde sobre isso)
Portb.0 = 1
aguarde 1 portb.0 = 0 aguarde 1
Aqui geramos o piscar do led.
Portb.0 = 1 diz ao chip para mudar a saída PB0 para 5V
o comando wait 1 deixa o chip esperar por um segundo. Se você deseja alternar o led mais rápido, você deve substituir o comando de espera por waitms agora, você pode inserir algum tempo agora em milissegundos, por exemplo, waitms 500. (waitus significa espera em nanossegundos)
Portb.0 = 0 diz ao chip para mudar a saída PB0 para 0V.
Etapa 5: adicionar um botão para usar entradas
Agora vamos adicionar um botão para acender o led se o botão for pressionado.
Insira o botão conforme mostrado na imagem.
agora digite o seguinte programa.
$ regfile "m8def.dat"
$ crystal = 1000000 config portb.0 = configuração de saída portd.7 = entrada Portd.7 = 1 faça se pind.7 = 0 then portb.0 = 1 else portb.0 = 0 loop
Se você carregar esse programa para o chip, o led só acenderá quando o botão for pressionado. Mas por que?
o programa começa de forma idêntica ao último até
configuração portd.7 = entrada. Isso significa que o pino PD7 que conectou com o botão atua como uma entrada.
Portd.7 = 1 não muda o pino para alto, mas ativa o resistor pull up interno do Atmega.
O comando if parece um pouco estranho se você estiver acostumado com o arduino.
se você usar a instrução if, terá que usar a instrução "then". Neste exemplo, a instrução if é usada para operações de comando único. Se você quiser usar mais comandos, terá que escrever assim.
se pind.7 = 0 então
portb.0 = 1 algum código algum código algum código else portb.0 = 0 end if
para este uso da instrução if, você deve usar a instrução "end if" no final.
o que ainda é importante. Talvez você já tenha visto. as entradas não são consultadas com portx.x, mas com pinx.x. Você pode se lembrar disso facilmente. As saídas têm o "o" (porta) na palavra e as entradas têm o "i" (pino).
Agora é a sua vez de brincar um pouco.
Meu próximo instrutível virá em breve (instruções padrão como while, select case, for e variables.)
Se gostar do meu instrutível e quiser mais me diga nos comentários.
Recomendado:
Capacete de segurança Covid Parte 1: uma introdução aos circuitos do Tinkercad !: 20 etapas (com fotos)
Capacete de segurança Covid Parte 1: uma introdução aos circuitos do Tinkercad !: Olá, amigo! Nesta série de duas partes, aprenderemos como usar os circuitos do Tinkercad - uma ferramenta divertida, poderosa e educacional para aprender como os circuitos funcionam! Uma das melhores maneiras de aprender é fazendo. Então, vamos primeiro criar nosso próprio projeto: o
Introdução aos sensores de vibração e temperatura sem fio de longo alcance: 7 etapas
Introdução aos sensores de vibração e temperatura sem fio de longo alcance: Às vezes, a vibração é a causa de problemas sérios em muitas aplicações. De eixos e rolamentos da máquina ao desempenho do disco rígido, a vibração causa danos à máquina, substituição antecipada, baixo desempenho e inflige um grande impacto na precisão. Monitorando
Introdução aos circuitos de infravermelho: 8 etapas (com imagens)
Introdução aos circuitos IR: IR é uma peça de tecnologia complexa, mas muito simples de trabalhar. Ao contrário dos LEDs ou LASERs, o infravermelho não pode ser visto com o olho humano. Neste Instructable, demonstrarei o uso do infravermelho através de 3 circuitos diferentes. Os circuitos não serão u
Jogos !!! - Introdução: 5 etapas
Jogos !!! - Introdução: Olá! Eu estarei ensinando como criar três jogos diferentes no code.org. Em cada tutorial de jogo, postarei um modelo que você pode remixar e usar enquanto assiste meu vídeo. Espero que você se divirta !! Se vocês querem apenas ver meus jogos em o
Introdução ao ADC no microcontrolador AVR - Para iniciantes: 14 etapas
Introdução ao ADC no microcontrolador AVR | para iniciantes: Neste tutorial você saberá tudo ADC em microcontrolador AVR