MCO018703 2024 1 AULA01

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Introdução aos Microcontroladores

APRESENTAÇÃO
Nesta unidade curricular vamos a projetar e implementar circuitos eletrônicos digitais com microcontroladores. Para isso precisamos identificar as diferentes arquiteturas de microcontroladores, bem como conhecer as técnicas de programação de microcontroladores. Ainda, vamos apresentar a simbologia e linguagem técnica, bem como programar e gravar microcontroladores. Entre outros assuntos, abordaremos os conteúdos: de Memória, arquitetura interna do Arduino e linguagem C para microcontroladores.


OBJETIVOS
Nesta aula o aluno deverá:
  • Identificar as diferentes arquiteturas utilizadas em microcontroladores;
  • Saber as principais características dos microcontroladores AVR; e
  • Conhecer o Microcontrolador ATmega328P é utilizado nas placas ARDUINO UNO.


METODOLOGIA
A aula será expositiva e dialogada, utilizando apresentação de texto base na Internet, onde serão mostrados exemplos executados programas para programação de microcontroladores.


INTRODUÇÃO

Os avanços tecnológicos demandam cada vez mais dispositivos eletrônicos. Os Microcontroladores têm alcançado grande desenvolvimento nas últimas décadas e a sua facilidade de uso, com ampla faixa de aplicações, permite um projeto relativamente rápido e fácil de novos equipamentos eletrônicos. O Microcontrolador é o agrupamento de vários componentes em um sistema microprocessado. Basicamente o Microcontrolador é um microprocessador com memória RAM e de programa, temporizadores e circuitos de clock embutidos. O único componente externo é o cristal para determinar a frequência de trabalho. Os Microcontroladores têm agregado inúmeras funcionalidades como: gerador interno de clock; memória SRAM, EEPROM e FLASH; conversores A/D, D/A; vários temporizadores/contadores; comparadores analógicos; PWM; diferentes tipos de interface de comunicação, incluindo USB, UART, I2C, CAN, SPI, JTAG; relógios de tempo real; circuitos para gerenciamento de energia no chip; circuitos para controle de reset, alguns tipos de sensores; interface para LCD; e outras funcionalidades de acordo com os fabricantes.


Arquiteturas: Von-Neumann x Harvard

Existem duas arquiteturas clássicas para os microprocessadores em geral: a arquitetura Von-Neumann, onde existe apenas um barramento interno por onde circulam instruções e dados e a arquitetura Harvard, que é caracterizada por dois barramentos internos, sendo um de instruções e outro de dados. Pode-se dizer que a primeira é uma arquitetura serial e a segunda paralela; da mesma forma, pode-se dizer que a arquitetura Von-Neumann permite produzir um conjunto complexo de código de instruções para o processador (CISC – Complex Instructions Set Computer), com um tempo de execução por instrução de vários ciclos de clock. Já a arquitetura Havard produz um conjunto simples de códigos de instruções e, dado ao paralelismo de sua estrutura, é capaz de executar apenas uma instrução por ciclo de clock. A arquitetura Von-Neumann é mais simples, com menor número de portas lógicas, entretanto, sua velocidade é menor que a Havard. A arquitetura Havard necessidade de mais linhas de código para executar a mesma tarefa. Enquanto uma arquitetura Von-Neumann possui muito mais tipos de instruções.


Fig050 MCO018703.png

Figura 1 - Arquiteturas clássicas de processadores: Von-Neumann x Harvard.

Atualmente nas modernas arquiteturas de microcontroladores está havendo o domínio da Harvard, que evoluiu para uma arquitetura que pode ser chamada de Harvard estendida ou avançada. Sendo composta por um grande número de instruções e ainda com a redução da quantidade necessária de portas lógicas, produzindo um núcleo de processamento compacto, veloz e com programação eficiente com menor número de linhas de código. Devido às questões de desempenho, compatibilidade eletromagnética e economia de energia, hoje é praticamente inaceitável que um microcontrolador não execute a maioria das instruções em poucos ciclos de clock diminuindo o consumo e a dissipação de energia.

Microcontroladores AVR

Os microcontroladores AVR foram desenvolvidos na Noruega em 1995 e são produzidos pela ATMEL, apresentam ótima eficiência de processamento e núcleo compacto com poucos milhares de portas lógicas. Com uma estrutura RISC avançada, apresentam mais de uma centena de instruções e uma arquitetura voltada à programação C, que permite produzir códigos compactos. Também, dado sua arquitetura, o desempenho do seu núcleo de 8 bits é equivalente ao desenvolvido por microcontroladores de 16bits.

As principais características dos microcontroladores AVR são:

  • Executam instruções em um simples ciclo de clock e operam com tensões entre 1,8 e 5,5 V, com velocidades de até 20 MHz. Sendo disponíveis em diversos encapsulamentos (de 8 até 64 pinos).
  • Alta integração e grande número de periféricos com efetiva compatibilidade entre toda a família AVR.
  • Possuem vários modos para redução do consumo de energia e características adicionais (picoPower) para sistemas críticos.
  • Possuem 32 registradores de propósito geral, memória de acesso load-store e a maioria das instruções é de 16bits.
  • Memória de programação FLASH programável in-system, SRAM e EEPROM, para desenvolvimentos rápidos e flexibilidade de projeto.
  • Facilmente programados e com debug in-system via interface simples, ou com interfaces JTAG compatível com 6 ou 10 pinos.
  • Possuem um conjunto completo e gratuito de softwares.
  • Preço acessível.

Existem microcontroladores AVR específicos para diversas áreas, tais como: automotiva, controle de LCDs, redes de trabalho CAN, USB, controle de motores, controle de lâmpadas, monitoração de bateria, Bluetooth, 802.15.4/ZigBeeTM e controle por acesso remoto.


Dentre os principais componentes da família AVR podemos citar:

  • tinyAVR® - ATtiny: microcontroladores de propósito geral de até 8 kB (kilobytes) de memória Flash, 512 bytes de SRAM e EEPROM.
  • megaAVR® - ATmega: microcontroladores de alto desempenho com multiplicador por hardware, com até 256 kbytes de memória Flash, 4 kbytes de EEPROM e 8 kbytes de SRAM.
  • picoPowerTM AVR: microcontroladores com características especiais para economia de energia.
  • XMEGATM ATxmega: Os novos μcontroladores XMEGA 8/16-bit dispõem de novos e avançados periféricos com aumento de desempenho, DMA (Direct Memory Access) e sistema de eventos .
  • AVR32 (não pertence às famílias acima): microcontroladores de 32 bits com arquitetura RISC projetada para maior processamento por ciclos de clock, com eficiência de 1,3 mW/MHz e até 210 DMIPS (Dhrystone Million Instructions per Second) a 150 MHz, conjunto de instruções para DSP (Digital Signal Processing) com SIMD (Single Instruction, Multiple Data) com soluções SoC (System-on-a-chip) e completo suporte ao Linux.

Nessa Unidade Curricular será abordado o ATmega328p por ser um microcontrolador que apresenta a maioria das características da família AVR e ser compacto (28 pinos PDIP), apresentando uma memória Flash de tamanho razoável. O importante é saber que ao programar este microcontrolador, os conceitos de programação de qualquer outro da família AVR são aprendidos dada a similaridade entre as famílias. As pequenas mudanças de hardware e software são resolvidas com uma busca ao referido Datasheet.


Fig051 MCO018703.png

Figura 2 - Microcontrolador ATmega328P utilizado nas placas ARDUINO UNO.


Microcontrolador ATmega328P é utilizado nas placas ARDUINO UNO e oferece performance que permite executar desde um simples programa que faz piscar um LED até um controle de um robo ou ainda um programa de controle de acesso controlado por rede.

Arduino Uno R3 - ATmega328P 5V 16MHz

Descrição
Arduino UNO R3 é uma placa de desenvolvimento microcontrolada baseada no ATmega328P. Ela possui 14 pinos de entrada/saída digital (dos quais 6 podem ser usados como saídas analógicas PWM), 6 entradas analógicas, um cristal oscilador de 16 MHz, uma conexão USB, uma entrada para alimentação, um cabeçalho ICSP e um botão de reset. Ele contém tudo que é necessário para que o microcontrolador funcione.
Fig052 MCO018703.jpeg

Figura 3 - Arduino Uno R3 - ATmega328P 5V 16MHz.

Especificações
  • Microcontrolador: ATmega328
  • Tensão de Operação: 5V
  • Tensão de Entrada: 7-12V
  • Portas Digitais: 14 (6 podem ser usadas como PWM)
  • Portas Analógicas: 6
  • Corrente Pinos I/O: 40mA
  • Corrente Pinos 3,3V: 50mA
  • Memória Flash: 32KB (0,5KB usado no bootloader)
  • SRAM: 2KB
  • EEPROM: 1KB
  • Velocidade do Clock: 16MHz
Alimentação
O Arduino UNO pode ser alimentado pela conexão USB ou por qualquer fonte de alimentação externa. Alimentação externa (não-USB) pode ser tanto de uma fonte ou de uma bateria. A fonte pode ser conectada com um plug no conector de alimentação. Cabos vindos de uma bateria podem ser inseridos nos pinos Gnd (terra) e Vin (entrada de voltagem) do conector de alimentação. A placa pode operar com uma alimentação externa de 7 a 12 volts. Se a alimentação for inferior a 7 volts o pino 5V pode fornecer menos de 5 volts e a placa pode ficar instável. Se a alimentação for superior a 12 volts o regulador de voltagem pode super-aquecer e avariar a placa.
Os pinos de alimentação são
  • VIN: Entrada de alimentação para a placa Arduino quando uma fonte externa for utilizada.
  • Você pode fornecer alimentação por este pino ou, se usar o conector de alimentação, acessar a alimentação por este pino.
  • 5V: A fonte de alimentação utilizada para o microcontrolador e para outros componentes da placa.
  • Pode ser proveniente do pino Vin através de um regulador on-board ou ser fornecida pelo USB ou outra fonte de 5 volts.
  • 3V3: Alimentação de 3,3 volts fornecida pelo chip FTDI. A corrente máxima é de 50 mA.
  • GND: Pino terra.
Memória
O ATmega328P tem 32 KB de memória flash para armazenar código.
Entrada e Saída
Cada um dos 14 pinos digitais do Arduino UNO pode ser usado como entrada ou saída usando as funções de pinMode(), digitalWrite(), e digitalRead(). Eles operam com 5 volts. Cada pino pode fornecer ou receber um máximo de 40 mA e tem um resistor pull-up interno (desconectado por padrão) de 20-50 kOhms.
Além disso, alguns pinos têm funções especializadas
  • Serial: 0 (RX) e 1 (TX). Usados para receber (RX) e transmitir (TX) dados seriais TTL. Estes pinos são conectados aos pinos correspondentes do chip serial FTDI USB-to-TTL.
  • External Interrupts: 2 and 3. Estes pinos podem ser configurados para disparar uma interrupção por um baixo valor, uma elevação ou falling edge ou uma mudança de valor. Veja a função attachInterrupt() para mais detalhes.
  • PWM: 3, 5, 6, 9, 10, e 11. Fornecem uma saída analógica PWM de 8-bit com a função analogWrite().
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estes pinos suportam comunicação SPI, que embora compatível com o hardware, não está incluída na linguagem do Arduino.
  • LED: 13. Há um LED já montado e conectado ao pino digital 13. Quando o pino está no valor HIGH, o LED acende; quando o valor está em LOW, ele apaga.

O Arduino UNO tem 6 entradas analógicas e cada uma delas tem uma resolução de 10 bits (i.e. 1024 valores diferentes). Por padrão, elas medem de 0 a 5 volts, embora seja possível mudar o limite superior usando o pino AREF e um pouco de código de baixo nível.

Adicionalmente alguns pinos têm funcionalidades especializadas
  • I2C: 4 (SDA) and 5 (SCL). Suportam comunicação I2C (TWI) usando a biblioteca Wire (documentação no site do WIRE).

Há ainda alguns outros pinos na placa:

  • AREF: Referência de voltagem para entradas analógicas. Usados comanalogReference().
  • Reset: Envie o valor LOW para resetar o microcontrolador. Tipicamente utilizados para adicionar um botão de reset aos shields que bloqueiam o que há na placa.


Fig053 MCO018703.jpeg

Figura 4 - Detalhes da placa Arduino Uno R3.

Exercícios

1. Por que e pra que utilizar microcontroladores?
2. Qual o componente externo utilizado para gerar o sinal de clock?
3. Cite pelo menos 5 funcionalidades para o uso de microcontroladores.
4. Qual a diferença física na arquitetura microprocessadores entre Von-Neumann x Harvard?
5. O que acontece com a execução das instruções numa e em outra arquitetura?
6. Quando surgiu os microcontroladores AVR?
7. Destaque as principais características dos microcontroladores AVR.
8. Cite alguns tipos de microcontroladores AVR e suas principais características.
9. Pesquisa na Internet, quais as principais característica do microcontrolador ATmega328P quanto:
a) Memória Flash (kB)
b) EEPROM (kB)
c) SRAM (Bytes)
d) Pinos de I/O (máximo)
e) Frequência máxima (MHz)
f) Faixa de VCC (V)
g) Conversores A/D (canais)
h) Interrupções Externas (quantidade)
i) Pinos de PWM (quantidade)

Referências

[1] https://wiki.ifsc.edu.br/mediawiki/images/d/dd/Microcapostila.pdf

[2] Apostila ATMega8



Icone menu.png Icone prox.png