Professional Documents
Culture Documents
Agenda
Reviso Histrica - Apostila Generalidades - Apostila Sistemas Embarcados Introduo a Microcontroladores Arquitetura bsica de Microcontroladores Arquitetura do Microcontrolador MSP430 Simuladores Exerccio Prtico
Sistemas Embarcados
HARDWARE PC
Sistemas Embarcados
Definio Tipos
Caractersticas
4
Introduo a Microcontroladores
Tudo comeou com a necessidade de usar CPUs mais simples para implementar tarefas dedicadas. Contudo, qualquer controle implicar em:
CPU controle ROM programa de controle RAM pilha e dados Porta Paralela perifricos e I/O Porta Serial comunicao A/D e D/A sinais analgicos Timers temporizao
5
Introduo a Microcontroladores
Surge a necessidade de CPUs dedicadas, menos rpidas, sem instrues complexas, compactas, etc.... Microcontroladores, que so simples, baratos e eficientes.
6
Introduo a Microcontroladores
Introduo a Microcontroladores
Microcontrolador = microcomputador de um nico chip ao qual so adicionados elementos para uso industrial perifricos especializados para aplicaes de automao e controle memria RAM e ROM internas
Introduo a Microcontroladores
Usa-se o nome de Microcontrolador para designar dispositivos de uso genrico; Existem vrios microcontroladores que tm aplicaes especficas:
Controlador de teclado 80C51SL-BG ; Controlador de comunicaes universal 82C152. INTEL 8048, 8049, 8051, 8052, 8096. ZILOG Z8. MOTOROLA 6801, 6804, 6805, 68HC11. NATIONAL COP400, COP800, NS8050.
9
Introduo a Microcontroladores
Vrias combinaes de perifricos so oferecidas caracterizando o que se conhece por famlia de um microcontrolador Perifricos comumente encontrados:
portas de entrada/sada bits, vetores de bits contadores/temporizadores interfaces seriais unidades PWM temporizadores do tipo watchdog conversores A/D unidades detectoras e geradoras de eventos
10
Introduo a Microcontroladores
Microcontroladores podem ser caracterizados como:
genricos especficos
controle de um display de cristal lquido controle de vdeo controle de barramento
A escolha de um microcontrolador baseada na aplicao e no custo Microcontrolador escolhido deve requerer o menor nmero de perifricos externos possvel e o menor esforo de programao
11
Introduo a Microcontroladores
Em resumo: Um controlador usado para controlar processos ou ambientes. Monitorar e controlar (janelas, temperatura, ar condicionado). Aplicaes: Equipamentos eletrnicos Automveis e Controle, Instrumentao, Aeroespacial, Robtica, Integrados em processadores Dependendo da aplicao pode-se escolher microcontr. de 8 bit, 16 bit ou 32 bit.
12
Introduo a Microcontroladores
13
14
Processador
Endereos
Memria
Controle
Escrita A D /W R /R D
Endereo
Leitura
Endereo
Dado
Dado
15
16
Microcontrolador 8051
17
18
19
20
21
22
23
24
25
26
27
28
29
30
O preo da produo da memria EEPROM um pouco mais elevado do que a mem ria FLASH Portanto a memria FLASH uma alternativa mais econmica.
32
Memria 64 k-end
...
A15 A16 A17 A18 A19 rd/wr/ data
Incio
Fim
1 mega-end.
A15 /CS
rd/wr/ data
...
00000 0FFFF 10000 1FFFF 20000 2FFFF 30000 3FFFF 40000 4FFFF
Deve-se adaptar estes sinais a outros nveis de tenso e a outras grandezas (temperaturas, velocidades, etc.) com a utilizao de transdutores e de conversores A/D e D/A.
34
35
Conv. DA
36
Von Newman Dados e instrues no mesmo barramento Simples e prtico Arquitetura Harward - 8051 Barramentos separados para instrues e dados Permite operaes simultneas nos barramentos
Dados Endereos
Memria Programa
Controle
Processador
Dados
Endereo
Memria Dados
Controle
37
38
Instrues de Desvio, Aritmtica, Lgicas, Booleanas e de transferncia de dados Modos de endereamento Circuito de Reset Clock - Cristal Registradores (Reg. Status flags), Pilha Projeto do Hardware - Fonte - EMI BOM Busca e compras de materiais - componentes Esquemtico Layout Problemas de encapsulamentos Montagem - Projeto Mecnico Debugar a placa .................Software - codigo 39
Modos de Endereamento ver Apostila Tipos de Instrues ver Apostila Conjunto de Instrues ver Apostila Exemplos de cdigos Assembler para o 8051 ver Apostila
40
41
MSP430 incorpora CPU 16 bits Sistema de clock flexvel Arquitetura Von-Neuman Arquitetura de baixo consumo de bateria 27 Instrues e 7 modos de endereamento Extensivo vetor de interrupes Flash programvel In-system Etc...
42
43
44
MSP430 incorpora CPU 16 bits Sistema de clock flexvel desenvolvido para aplicaes a bateria.
ACLK um low frequency auxiliary clock usado para o modo stand-by DCO (high-speed digitally controlled oscillator) pode gerar o master clock (MCLK) usado para processamento em alta performance
Arquitetura Von-Neuman Arquitetura de baixo consumo de bateria 27 Instrues e 7 modos de endereamento Extensivo vetor de interrupes Flash programvel In-system
45
46
Modos de operao
47
48
Endereamento
Arquitetura Von Newman Endereamento de 64KB Endereo final da flash 0FFFFh End. Inicial da RAM 0200h 16 bytes para os SFRs
Vetor de interrupes Memria de Programa - Pode ser usada para cdigo e dados Memria de Dados Acesso aos Perifricos usando instrues tipo word ou byte Registrados de Funes Especiais
49
O reset tratado como uma interrupo no mascarvel O circuito interno de reset gera:
Gerado na energizao do chip 0 no pino RST (quando ele ativado na funo reset) Quando o SVS (mod. superv. aliment.) detecta queda de alimentao
POR ativo Estouro do Watchdog quando configurado no modo reset Violao de acesso ao registr. de contr. do watchdog Violao de acesso ao registr. de contr. da flash Busca de instrues em rea de registradores
50
Pino RST configurado para modo reset Portas configuradas modo de entrada digital Registrados SR (status) apagado Watchdog ativado no modo reset O contador de programa carregado com o contedo do vetor de reset 0xFFFE No h ajuste do SP (apontador do topo da pilha) Inicializar o SP para o topo da RAM Inicializar o watchdog para os requisitos da aplicao Configurar os perifricos para os requisitos da aplicao
51
Sistema de Interrupes
Categorias de Interrupes Mascarveis bit GIE=1 para serem reconhecidas pelo controlador de interrupo No Mascarveis no podem ser desativas pelo bit GIE do SR Reset no mascarvel de mxima prioridade Apesar dos 16 vetores de interrupo:
Vrios mdulos possuem flags que especificam o evento originador. A RTI deve providenciar a verificao de cada flag de forma a identificar o evento causador da interrupo H perifricos que possuem um registrador cujo contedo especifica qual das fontes de interrupes internas ao perifrico foi causadora da interrupo. Registradores de habilitao de interrupo IEx Registradores sinalizadores IFGx 52 Os flags esto distribudos nos registradores de controle dos perifricos
Sistema de Interrupes
53
Sistema de Interrupes
Interrupo consiste em um evento que provoca um desvio, de forma que a CPU passa a executar um subprograma RTI (Rotina de Tratamento de Interrupo) ou ISR (Interrupt Servicing Routine) No MSP430 a latncia de interrupo fixa (seis ciclos de clock) Procedimento de interrupo no MSP430
A instruo em execuo completada O contedo do PC e do SR so salvos na pilha Tratamento das prioridades O flag de interrupo apagado (nem sempre) SR apagado (no todo) chip sai do modo de baixo consumo. GIE apagado impedindo novas interrupes mascarveis O vetor da interrupo carregado no PC provocando desvio 54 para RTI
Sistema de Interrupes
55
Sistema de Interrupes
56
Sistema de Interrupes
57
Sistema de Interrupes
Para tratamento de interrupes, utiliza-se a diretiva #pragma vector= que informa ao compilador que a funo seguinte tem o seu endereo de entrada na tabela de vetores de interrupo (posio indicada aps o sinal =). A palavra _interrupt informa ao compilador que a funo definida de tratamento de interrupo Para habilitar as interrupes pode-se utilizar as funes do arquivo intrinsics.h _bis_SR_register(GIE); _enable_interrupt(); _bic_SR_register(GIE); _disable_interrupt(); 58
Sistema de Interrupes
#include <msp430x41x.h> #include <stdio.h> int ticks = 0; void main (void) { //Timer setup code WDTCTL = WDTPW + WDTHOLD; //Stop WDT IE2 |= BTIE; //Enable BT interrupt BTCTL = BTSSEL+BTIP2+BTIP1+BTIP0; _EINT(); //Enable interrupts while (ticks < 100) printf("Done\n"); } // Timer interrupt service routine #pragma vector = BASICTIMER_VECTOR __interrupt void basic_timer(void) { ticks += 1; printf("Interrupt\n"); }
59
Sistema de Interrupes
#include <msp430x41x.h> #include <stdio.h> int ticks = 0; void main (void) { //Timer setup code WDTCTL = WDTPW + WDTHOLD; //Stop WDT IE2 |= BTIE; //Enable BT interrupt BTCTL = BTSSEL+BTIP2+BTIP1+BTIP0; _EINT(); //Enable interrupts while (ticks < 100) printf("Done\n"); } // Timer interrupt service routine #pragma vector = BASICTIMER_VECTOR __interrupt void basic_timer(void) { ticks += 1; printf("Interrupt\n"); }
60
Mdulo Oscilador
Mdulo bsico de clock (BCS) composto por osciladores capazes de funcionar como cristal e um oscilador interno controlado digitalmente (DCO). O BCS pode ser configurado para operar sem componentes externos, com um resistor externo, com um ou dois cristais externos ou com circuitos ressonantes. Os sinais provenientes desses osciladores podem ser selecionados para gerar trs sinais de clock: MCLK (Master clock) utilizado para sincronizar a CPU ACLK (auxiliar clock) fonte de clock de preciso para perifricos durante modos de baixo consumo SMCLK (sub-main clock) fonte de clock alternativo para 61 diversos perifricos
Mdulo Oscilador
62
Mdulo Oscilador
63
Mdulo Oscilador
64
Mdulo Oscilador
65
Mdulo Oscilador
void init_All(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P3SEL |= 0x30; // P3.4,5 = USART0 TXD/ RXD BCSCTL1 |= XTS; // ACLK= LFXT1= HF XTAL do { IFG1 &= ~OFIFG; for (i=0xFF; i>0; i--); } while ((IFG1 & OFIFG)); BCSCTL2 |= SELM_3; ME1 |= UTXE0 + URXE0; UCTL0 |= CHAR; UTCTL0 |= SSEL0; UBR00 = 0x45; UBR10 = 0x00; UMCTL0 = 0x00; UCTL0 &= ~SWRST; IE1 |= URXIE0 + UTXIE0; IFG1 &= ~UTXIFG0;
// Clear OSCFault flag // Time for flag to set // OSCFault flag still set? // MCLK = LFXT1 (safe) // Enable USART0 TXD/RXD // 8 -bit character // UCLK= ACLK // 8MHz 115200 // 8MHz 115200 // 8MHz 115200 modulation // Initialize USART state machine // Enable USART0 RX/TX interrupt // Clear inital flag on POR
66
Portas de E/S
PxOUT Escrita nas portas PxIN Leitura das portas PxDIR Configurao da direo individual dos pinos da porta (1-sada e 0-entrada) PxSEL Funo dos pinos (0-normal e 1alternativa) PxIFG Sinaliz. Mudana de estado nos pinos da porta PxIES Controle da borda de sensibilidade da interrupo da porta PxIE Habilitao das Interrupes das portas
67
Portas de E/S
Exerccio 1. Verifiquem as conexes fsicas da placa 2. Como esta a configurao do hardware com relao as portas 3. Identifique o que pode ser feito visto o hardware j implementado 4. Controle os leds a partir das teclas 5. Compile 6. Simule 7. Rode na placa
68
Timer A
69
Timer A
TACTL Contador Modos de Operao Temporizao
Captura p. Temporizao
Timer A
MCx=01 Contagem progressiva a cada pulso de clock at atingir o valor programado no TACCR0 (mdulo de contagem) EQU0 pe ativado reiniciando TAR=0 TAIFG setado com interrupo habilitada ocorre o desvio.
71
Timer A
72
Timer A
73
Timer A
74
Timer A
75
Timer A
76
Timer A
77
Timer A
78
Timer A
79
Timer A
#include <msp430x14x.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR |= 0x01; // P1.0 output CCTL0 = CCIE; // CCR0 interrupt enabled CCR0 = 50000; TACTL = TASSEL_2 + MC_2; // SMCLK, contmode _BIS_SR(LPM0_bits + GIE); } // Timer A0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { P1OUT ^= 0x01; // Toggle P1.0 CCR0 += 50000; // Add Offset to CCR0 } // Enter LPM0 w/ interrupt
80
Timer A
#include <msp430x14x.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR |= 0x01; // P1.0 output CCTL1 = CCIE; // CCR1 interrupt enabled CCR1 = 50000; TACTL = TASSEL_2 + MC_2; // SMCLK, Contmode _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt } // Timer_A3 Interrupt Vector (TAIV) handler #pragma vector=TIMERA1_VECTOR __interrupt void Timer_A(void) { switch( TAIV ) { case 2: // CCR1 { P1OUT ^= 0x01; // Toggle P1.0 CCR1 += 50000; // Add Offset to CCR1 } break; case 4: break; // CCR2 not used case 10: break; // overflow not used } }
81
Timer A
//******************************************************************************* // MSP-FET430P140 Demo - Timer_a PW M TA1-2 upmode, DCO SMCLK // Description; This program will generate a two PW M outputs on P1.2/1.3 using // Timer_A in an upmode. The value in CCR0, defines the period and the // values in CCR1 and CCR2 the duty PW M cycles. Using ~ 800kHz SMCLK as TACLK, // the timer period is ~ 640us with a 75% duty cycle on P1.2 and 25% on P1.3. // ACLK = na, SMCLK = MCLK = TACLK = default DCO ~ 800kHz. //****************************************************************************** #include <msp430x14x.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR |= 0x0C; // P1.2 and P1.3 output P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 otions CCR0 = 512-1; // PW M Period CCTL1 = OUTMOD_7; // CCR1 reset/set CCR1 = 384; // CCR1 PW M duty cycle CCTL2 = OUTMOD_7; // CCR2 reset/set CCR2 = 128; // CCR2 PW M duty cycle TACTL = TASSEL_2 + MC_1; // SMCLK, up mode _BIS_SR(LPM0_bits); } // Enter LPM0
82
ADC12, ADC10, DAC12 USART (SPI, I2C, ...) Flash Memory controller; Supply Voltage Supervisor; Hardware Multiplier; DMA controller; Watchdog Timer Comparator
83