Académique Documents
Professionnel Documents
Culture Documents
Embarcados
Introduo aos sistemas embarcados
A linguagem C
Os compiladores C
Monitores de computador;
Telefones celulares;
Osciloscpios digitais;
etc.
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
Os microcontroladores de 32 bits so os
dispositivos mais avanados neste campo.
Alguns incorporam funes de DSPs.
Alguns no apresentam perifricos e so meros
microprocessadores.
10
Microchip PIC32:
11
NXP Philips
Baseados
na arquitetura ARM;
Opera at 266 Mhz (292,6 MIPS) (ARM9);
No incorpora funes de DSP;
Inclui um grande nmero de dispositivos perifricos como
portas de comunicao e conversores A/D.
12
TI OMAP
13
14
15
A linguagem C
16
A linguagem C
17
A linguagem C
18
Os compiladores C
19
Os compiladores C
20
21
22
#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)
23
Declarao de Variveis
//***********************************************************
// 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
24
//************************************************
// Rotina de interrupcao - Periodo de Amostragem *
//************************************************
#INT_RTCC
void amost()
{
tmr0 = 217;
cont = cont - 1;
if(cont==0) fl_T = 0;
}
25
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);
26
//********************************
// 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);
27
//*****************************************
// Loop principal de execucao do Programa *
//*****************************************
while(1) {
bit_clear(portc,4);
28
29