Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Sistemas Embarcados: Microcontroladores DCA0119 Sistemas Digitais Heitor Medeiros Florencio
Sistemas Embarcados Um sistema embarcado é um software dedicado embarcado em um hardware/computador. Sistemas embarcados são sistemas eletrônicos que tem um microcontrolador ou um microprocessador embarcados em um sistema. 2
Sistemas Embarcados Alternativas de projetos de sistemas embarcados: Sistemas baseados em microprocessadores (MPU): Microprocessadores contêm apenas a unidade de processamento (CPU). Unidades de memória e interfaces de entrada/saída precisam ser conectados à unidade (MPU). Permite maior expansão e seleção de interfaces. Sistemas baseados em microcontroladores (MCU): Microcontroladores contêm CPU, memórias e interfaces de entrada/saída. 3
Sistemas Embarcados: Elementos 4
Sistemas Embarcados: Elementos 5
Automatizando com Sistemas Embarcados Sistema Embarcado Memória Programa Interfaces para Usuário Sensores ADC CPU DAC Atuadores Ambiente 6
Microcontroladores 7
Microcontroladores Microcontroladores têm agregados vários componentes de um sistema microprocessado: Microprocessador; Memórias: SRAM, EEPROM e FLASH; Temporizadores; Circuitos de clock embutidos. Agregação de outras funcionalidades: Conversores A/D e D/A (mundo analógico!!); Sinais modulados PWM (mundo analógico!!); Temporizadores/contadores; Comparadores; Interfaces de comunicação; 8
MCU: Características Gerais 8, 16 e 32 bits. Tecnologia de fabricação CMOS com baixa consumo de potência. Consegue executar várias instruções em um único ciclo de clock. Velocidade é caracterizada pela quantidade de ciclos de máquina necessários para se executar uma instrução: MIPS (milhões de instruções por segundo). 9
Calculando Tempo de Execução 1. Dado que um microcontrolador funciona com um oscilador de 4MHz e cada ciclo de instrução gasta um pulso de clock. Qual a duração de cada ciclo de instrução (t)? 2. Dado que um microcontrolador funciona com um oscilador de 4MHz e cada ciclo de instrução gasta quatro pulsos de clock. Qual a duração de cada ciclo de instrução (t)? 10
Calculando Tempo de Execução Dado que um microcontrolador funciona com um oscilador de 4MHz e cada ciclo de instrução gasta um pulso de clock. Qual a duração de cada ciclo de instrução (t)? t = 1 f osc f osc = 4 MHz 1 t = 4MHz = 250ns Conclusões: Cada ciclo tem duração de 250 ns. O microcontrolador executa 4 milhões de instruções em um segundo (4 MIPS). 11
Calculando Tempo de Execução Dado que um microcontrolador funciona com um oscilador de 4MHz e cada ciclo de instrução gasta quatro pulsos de clock. Qual a duração de cada ciclo de instrução (t)? t = 1 f osc /4 t = f osc = 4 MHz; 1 4 MHz 4 = 1 us Conclusões: Cada ciclo tem duração de 1 us. O microcontrolador executa 1 milhão de instruções em um segundo (1 MIP). 12
Sistema de Clock do Microcontrolador O clock dos microcontroladores podem ser gerados por: Circuito de clock interno. Circuito de clock externo. 13
Alguns fabricantes Lista de microcontroladores da Microchip: http://www.atmel.com/products/microcontrollers/avr/megaavr. aspx Lista de microcontroladores da Texas Instruments: http://www.ti.com/lsds/ti/microcontrollers_16-bit_32- bit/products.page Lista de microcontroladores da Atmel: http://www.atmel.com/products/microcontrollers/avr/megaavr. aspx?tab=parameters 14
Microcontrolador: PIC16F628 15
Microcontroladores PIC PIC: Programmable Interface Controllers Controlador Integrado de Periféricos. Principais características dos microcontroladores da família PIC: CPU RISC. Arquitetura Harvard. Estrutura pipeline. Famílias de MCU PIC: Low Range: microcontroladores PIC com palavra de instrução de 12 bits. Mid Range: microcontroladores PIC com palavra de instrução de 14 bits. High Range: microcontroladores PIC com palavra de instrução de 16 bits. 16
Microcontroladores PIC 8-bits 17
MCU PIC16F628 Frequência máxima: 20 MHz. Memória de programa (Flash): 2048 palavras. Memória RAM: 224 bytes. Memória EEPROM: 128 bytes. Temporizadores: 3 (TMR0, TMR1, TMR2). Comparadores: 2. Módulo PWM: 1. Módulo I/O: 16 pinos (2 portas). Comunicação serial: USART. Tensões: 2.0V ~ 5.5V. 18
PIC16F628: Pinagem 19
MCU PIC16F628 Diagrama de blocos: 20
PIC16F628: Diagrama Endereçamento da próxima instrução: 21
PIC16F628: Diagrama Unidade de processamento lógico e aritmético: 22
PIC16F628: Diagrama Temporizadores, comparadores, módulo de comunicação serial: 23
PIC16F628: Memória de Dados A memória de dados (RAM) é subdividida em banco de registradores: 24
PIC16F628: Memória de Dados A memória de dados (RAM) é subdividida em banco de registradores: É obrigatório conhecer os registradores do MCU para conseguir programá-lo. 25
PIC16F628: Ciclo de instrução 26
MCU PIC16F628: Formato das Instruções As instruções do PIC16F628 são formadas por 14 bits e divididas em quatro grupos: 27
Fontes de Clock do PIC16F628 Existem 4 grupos de circuitos fonte de clock: Circuito RC. Circuito com osciladores de cristal. Circuito com ressonadores. Circuitos híbridos. PIC16F628 permite 6 formas de conexão: 28
Fontes externas de clock: Circuito com cristal (ou ressonador) Circuitos com osciladores de cristal são mais precisos e mais caros que circuitos com ressonadores e circuitos RC. Circuito formador por 1 oscilador de cristal e dois capacitores. 29
Fontes externas de clock: Circuito com cristal (ou ressonador) Ressonador 30
Fontes externas de clock: Circuito RC Os osciladores RC são mais simples e mais baratos, porém menos precisos. 31
Fontes externas de clock: Outros 32
Microcontrolador: ATMega328 33
Microcontroladores AVR Principais características dos microcontroladores da família AVR: CPU RISC. Arquitetura Harvard. Estrutura pipeline de 1 nível. Conjunto de 133 instruções, a maioria sendo executada em um ciclo de clock. Famílias de MCU AVR: 32-bits AVR: MCU de 32 bits projetados para maiores processamentos. AVR XMega. megaavr. tinyavr: até 8Kbytes de Flash. BatteryManagement: características especiais de consumo baixo. 34
ATMega328: Características Frequência máxima: 20 MHz. Memória de programa (Flash): 32 KB. Memória SRAM: 2048 B. Memória EEPROM: 1024 B. Registradores de 8 bits de uso geral. Temporizadores: 3. Comparador: 1. Módulo PWM com 6 canais. Módulo ADC: 6 conversores de 10bits. Interfaces de Comunicação: USART, SPI. Tensões: 1.8V ~ 5.5V. 35
ATMega328: Pinagem 36
ATMega328: Diagrama de Blocos 37
ATMega328: Memória de Dados A memória de dados (SRAM) é subdividida em blocos de registradores: 38
ATMega328: Memória de Dados A memória de dados (SRAM) é subdividida em blocos de registradores: É obrigatório conhecer os registradores do MCU para conseguir programá-lo. 39
ATMega328: Diagrama AVR CPU 40
Fontes de Clock do ATMega328 41
Fontes de Clock do ATMega328 Sinais de clock derivados da fonte primária. 42
Fontes de Clock do ATMega328 Existem 5 possibilidades de fontes de clock: Oscilador de cristal/ressonador de baixa potência. Oscilador de cristal de baixa frequência. Clock externo. Fonte externa Oscilador RC interno de 128 KHz. Oscilador RC interno calibrado (7.6 a 8.4 MHz). Fonte interna 43
Fontes externas de clock Oscilador de cristal ou ressonador: Um oscilador de cristal e dois capacitores. Ou um ressonador. Clock externo: EXTCLK: XTAL1. 44
Gravação/Programação de Microcontroladores 45
Gravação de Microcontroladores A programação de microcontroladores, normalmente, é realizada na linguagem C. Um compilador da linguagem C para microcontroladores deve ser utilizado para gerar o arquivo hexadecimal (extensão.hex) que será gravado na memória Flash do MCU. Programa em C Compilador C Arquivo.hex Programas (firmwares) podem ser gravados nos microcontroladores por duas formas: Circuito de gravação especifico do microcontrolador. Transferência via comunicação serial. 46
Gravação de Microcontroladores Formas de gravação do firmware no MCU: Programa em C Compilador C Arquivo.hex Gravador A forma de gravação do gravador vai depende do MCU. Microcontroladores PIC: Gravador PIC + ICSP. Microcontroladores AVR: Gravador AVR + ICSP (SPI). 47
ICSP (In-circuit Serial Programming) Gravação PIC Gravação AVR 48
Gravação do PIC via ICSP + PICKIT3 Exemplo: Gravação do PIC16F628 utilizando o gravador PICKIT3. USB ICSP 49
Gravação do PIC via ICSP + PICKIT3 Exemplo: Gravação do PIC16F628 utilizando o gravador PICKIT3. USB ICSP 50
Gravação AVR via ICSP + Arduino Gravador AVR 51
Gravação de Microcontroladores Outra alternativa de gravação é utilizando o bootloader. Programa em C Compilador C Arquivo.hex Gravador Permite uma gravação sem o uso de gravadores específicos. Realiza uma comunicação serial direto com o MCU. 52
Bootloader Bootloader é um programa simples e robusto que será armazenado na memória Flash do MCU com o intuito de receber um novo programa principal e regravar na memória flash. 53
Bootloader Bootloader permite a transferência do programa principal (.hex) pela porta serial, utilizando a interface RS232 do MCU, sem a necessidade de remover o MCU do sistema (on-chip). Bootloader deve ser programado previamente na memória do MCU. Programa em C Compilador C Arquivo.hex RS-232 54
Bootloader Programa em C Compilador C Arquivo.hex RS-232 55
Bootloader O bootloader deve perguntar ao computador (via serial) se existir algum programa principal para ser regravar na memória (condição). Se sim, o bootloader deve reprogramar a memória para alocar o novo programa principal e depois deve executar o novo programa. Se não, o bootloader deve executar o programa contido na memória. 56
Arduino + Bootloader A placa Arduino utiliza a estratégia de gravação do programa principal utilizando bootloader. 1º solução: Transferência do programa através de um conversor USB-TTL (FTDI232). USB TTL TX FTDI232: Conversor USB-TTL Arduino RX ATMega328 57
Arduino + Bootloader 2º solução: O conversor FTDI foi substituído pelo MCU ATMega8u2 ou ATMega16u2 (capaz de realizar conversão USB-TTL) para transferência do programa. USB TTL TX ATMega8u2 ou ATMega16u2 Arduino RX ATMega328 58
Arduino + Bootloader 2º solução: 59
Alternativas para programação (PIC; AVR) 60
Exemplo de Programação do PIC16F628 IDE de programação/gravação: MPLAB X. Compiladores: XC8, XC16, XC32. Gravador: PICKIT3. 61
Exemplo de Programação do ATMega328 IDE de programação/compilação/gravação: Atmel Studio. Gravador/Bootloader: Placa Arduino UNO. Atmel Studio avrdude ATMega328 62
AVRDUDE AVRDUDE é um programa aberto que serve para gravar programas na(s) memória(s) (flash, EEPROM) de microcontroladores AVR. Utilizado pela IDE do Arduino para gravar os sketches. Comunica-se com os gravadores externos através da porta serial do PC. Precisa da definição de argumentos e de um arquivo de configuração para gravar o arquivo principal. 63
AVRDUDE: Argumentos Alguns comandos do argumento do avrdude: -p: modelo do microcontrolador. Ex.: atmega328p,atmega168 e attiny2313. -c: modelo de programador. Ex.: bsd, stk200, avrisp. -P: porta do PC (com1, lpt1, usb, etc) onde o programador está conectado. -e: apagar a memória do dispositivo.. -U :w: efetua a gravação da área (flash, eeprom,) com conteúdo de um arquivo. Após a gravação é feita uma verificação. Exemplo: -C C:\arduino-1.0\hardware\tools\avr\etc\avrdude.conf -p m328p -c arduino -P \\.\com3 -U flash:w:"$(projectdir)debug\$(itemfilename).hex":i 64
Integrar AtmelStudio7 com AVRDUDE 1 2 3 Arguments: -C C:\arduino-1.0\hardware\tools\avr\etc\avrdude.conf -p m328p -c arduino -P \\.\com3 - U flash:w:"$(projectdir)debug\$(itemfilename).hex":i 65
Referências Principais referências: Datasheet PIC16F628. Datasheet ATMega328. 66
Dúvidas? Dúvidas por email: heitorm@dca.ufrn.br 67