Sistemas Embarcados Introdução aos sistemas embarcados
Introdução aos Sistemas embarcados Definição de um sistema embarcado Exemplos de sistemas embarcados Processadores utilizados em sistemas embarcados A linguagem C Os compiladores C O compilador CCS PICC Exemplo de código fonte em CCS PICC Introdução aos Sistemas Embarcados 2
Definição de um sistema embarcado Um sistema embarcado é um sistema informático dedicado ao controle de um determinado dispositivo. Este sistema informático muitas vezes se confunde com o próprio dispositivo. Dependendo do sistema, pode possuir funcionalidades de aquisição de sinais analógicos e digitais vindos de sensores ou outras interfaces. Introdução aos Sistemas Embarcados 3
Definição de um sistema embarcado Estes dispositivos possuem capacidade de processamento para prover a funcionalidade que se deseja. Estes dispositivos também possuem dispositivos de saída para o acionamento de atuadores destinados ao controle do processo ao que estão associados. Introdução aos Sistemas Embarcados 4
Exemplos de Sistemas Embarcados Monitores de computador; Telefones celulares; Osciloscópios digitais; Televisores com ajustes digitais; Injeção eletrônica de automóveis; Sistemas de freios ABS; etc. Introdução aos Sistemas Embarcados 5
Processadores utilizados em Sistemas Embarcados Microcontroladores de 8, 16 e 32 bits Microchip, Atmel, Motorola, Intel, TI, ARM, Philips, etc. Processadores digitais de sinais (DSPs) de 16 e 32 bits (ponto fixo e/ou flutuante) Microchip, Motorola, TI, Analog Devices, etc. Processadores dedicados e SoC (System on a Chip) de diferentes fabricantes Introdução aos Sistemas Embarcados 6
Processadores utilizados em Sistemas Embarcados Cada um dos tipos de processadores utilizado em sistemas embarcados são indicados de acordo com as suas particularidades e dispositivos periféricos embarcados no mesmo. Introdução aos Sistemas Embarcados 7
Processadores utilizados em Sistemas Embarcados Microcontroladores de 8 bits são utilizados quando não se necessita uma grande capacidade de processamento ou velocidade. Controle de monitores de computador Controle de modems MP3 players Introdução aos Sistemas Embarcados 8
Processadores utilizados em Sistemas Embarcados Microcontroladores de 16 bits são utilizados quando o processo a ser controlado requer o processamento de informações mais complexas. O processamento de dados de 16 bits em um microcontrolador de 8 bits pode ser realizado, mas a uma velocidade muito inferior. Em geral, os microcontroladores de 16 bits podem operar a velocidades mais altas. Introdução aos Sistemas Embarcados 9
Processadores utilizados em Sistemas Embarcados Os microcontroladores de 32 bits são os dispositivos mais avançados neste campo. Alguns incorporam funções de DSPs. Alguns não apresentam periféricos e são meros microprocessadores. Introdução aos Sistemas Embarcados 10
Processadores utilizados em Sistemas Embarcados Microchip PIC32: Baseada na arquitetura MIPS; Opera a até 80MHz (124,8 MIPS); Incorpora funções de DSP; Inclui um grande número de dispositivos periféricos como portas de comunicação e conversores A/D. Introdução aos Sistemas Embarcados 11
Processadores utilizados em Sistemas Embarcados NXP Philips Baseados na arquitetura ARM; Opera até 266 Mhz (292,6 MIPS) (ARM9); Não incorpora funções de DSP; Inclui um grande número de dispositivos periféricos como portas de comunicação e conversores A/D. Introdução aos Sistemas Embarcados 12
Processadores utilizados em Sistemas Embarcados TI OMAP Baseados na arquitetura ARM; Opera até 600 Mhz (1200MIPS); Inclui um grande número de dispositivos periféricos como portas de comunicação e conversores A/D ou interfaces para SD e telas gráficas de LCD, câmeras, etc.; Alguns modelos incorporam um DSP que opera em paralelo com o núcleo ARM (3440 MMACS). Introdução aos Sistemas Embarcados 13
Processadores utilizados em Sistemas Embarcados Os processadores digitais de sinais (DSPs) são processadores especializados. Ferramentas de hardware especializadas: Endereçamento em bit reverso; Funções MAC (Multiply and Accumulate) Registro de trabalho para MAC com múltiplos bits de overflow Barrel Shifter para deslocamentos múltiplos em 1 ciclo Introdução aos Sistemas Embarcados 14
Processadores utilizados em Sistemas Embarcados Os DSPs normalmente não incorporam muitos periféricos como os microcontroladores. Os DSCs (Digital Signal Controllers) incorporam as ferramentas dos DSPs com a flexibilidade dos microcontroladores. Microchip e Texas Instruments produzem DSCs Introdução aos Sistemas Embarcados 15
A linguagem C A linguagem C pode ser utilizada para a programação de microcontroladores, DSPs e DSCs. A estrutura de um programa em C para um microcontrolador ou DSP é muito similar à estrutura de um programa em C para um computador. Introdução aos Sistemas Embarcados 16
A linguagem C Linguagem de alto nível Descrição do programa em uma maneira mais legível Tradução mais fácil de um algoritmo a um programa Introdução aos Sistemas Embarcados 17
A linguagem C Existem diferentes compiladores C para microcontroladores. Cada compilador apresenta diferentes estruturas preparadas para facilitar a implementação de sistemas embarcados. Introdução aos Sistemas Embarcados 18
Os compiladores C Para a família PIC existem vários compiladores para as diferentes famílias. Para a família PIC16, Microchip não produz um compilador C. Para as famílias PIC18, PIC24, PIC32 e dspic, Microchip produz um compilador C baseado em gcc, mas com otimizações de código fechado. Introdução aos Sistemas Embarcados 19
Os compiladores C Os compiladores produzidos por Microchip possuem versões de estudante com algumas limitações, comparadas às versões comerciais. Outras empresas produzem compiladores para a toda a família PIC. Introdução aos Sistemas Embarcados 20
O compilador CCS PICC Possui muitas funções predefinidas para o manejo de tarefas como o atendimento das interrupções e configuração de periféricos. Pode ser integrado ao ambiente MPLAB. Possui versões para os PIC16, PIC18, PIC24 e dspic. Introdução aos Sistemas Embarcados 21
O compilador CCS PICC Possui um ambiente de desenvolvimento próprio com um assistente de desenvolvimento que auxilia na escrita do programa ao inserir as chamadas das funções já definidas na biblioteca do compilador. Introdução aos Sistemas Embarcados 22
Exemplo de código fonte em CCS PICC Inicialização e definições iniciais #include <16f877A.h> // Define processador #device ADC=10 // Define ADC de 10 bits #fuses HS,NOWDT,NOPROTECT,PUT,NOLVP,NOCPD // Define condicoes de compilacao #use delay(clock=10000000) // Informa o clock para rotinas de tempo #priority rb,psp,ext,rtcc //Define prioridade entre as interrupcoes //********************************************************** // Diretiva para comunicacao serial RS232 * //********************************************************** #use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7, bits=8) Introdução aos Sistemas Embarcados 23
Exemplo de código fonte em CCS PICC Declaração de Variáveis //*********************************************************** // Inicio do Programa Principal - Declaracao das variaveis * //*********************************************************** unsigned int ta, cont, vbr[20], //Periodo de amostragem //Quantidade de contagens do TMR0 //Vetor de bytes recebidos Introdução aos Sistemas Embarcados 24
Exemplo de código fonte em CCS PICC Rotina de atendimento de interrupção associada ao Timer0 (RTCC) //************************************************ // Rotina de interrupcao - Periodo de Amostragem * //************************************************ #INT_RTCC void amost() { tmr0 = 217; cont = cont - 1; //Define quantas contagens do TMR0 para 1 ms if(cont==0) fl_t = 0; //Libera o processamento para proximo Tamost } Introdução aos Sistemas Embarcados 25
Exemplo de código fonte em CCS PICC Programa principal Inicialização 1 void main() { delay_ms(1000); disable_interrupts(global); disable_interrupts(int_rtcc); disable_interrupts(int_rb); disable_interrupts(int_psp); disable_interrupts(int_ext); setup_timer_0(rtcc_internal RTCC_DIV_64); setup_timer_1(t1_disabled); Introdução aos Sistemas Embarcados 26
Exemplo de código fonte em CCS PICC Programa principal Inicialização 2 //******************************** // Configuracao da conversao A/D * //******************************** setup_adc_ports(ra0_ra1_ra3_analog); setup_adc(adc_clock_div_32); /********************************/ /* Habilitacao das interrupcoes */ /********************************/ enable_interrupts(global); enable_interrupts(int_rtcc); Introdução aos Sistemas Embarcados 27
Exemplo de código fonte em CCS PICC Programa principal Loop principal //***************************************** // Loop principal de execucao do Programa * //***************************************** while(1) { bit_clear(portc,4); //Limpa o bit que define interrupcao } } Introdução aos Sistemas Embarcados 28
Preparação para tarefa de laboratório Elabore um sistema com o PIC16F877 para a leitura do valor de uma entrada analógica e a visualização dos valores em um conjunto de displays de 7 segmentos. Elaborar o circuito a ser utilizado utilizando o Proteus. Escrever o programa para a leitura e visualização do valor utilizando CCS PICC Introdução aos Sistemas Embarcados 29