EL08D - MICROCONTROLADORES

Documentos relacionados
Microcontroladores 2 EL08D Turma M12

Sistemas Embutidos Prática. Prof. Marcos Augusto Menezes DCC/ /UFMG

MSP430 - Arquitertura

Conversor Analógico Digital do MSP430G2553

Microcontroladores 2 EL08D Turma M12

EL08D - MICROCONTROLADORES

Por Fernando Koyanagi

Portas de entrada e saída; Interrupções; Interrupções externas; Temporizadores Contadores; Interface Serial

PSI3441 Arquitetura de Sistemas Embarcados

MSP 430 Lab 04 Fontes de clock e configuração das entradas e saídas digitais

Microcontrolador MSP430G2xxx:

LABORATÓRIO DE ARQUITETURA DE COMPUTADORES PREPARAÇÃO 03: INTERRUPÇÕES

Laboratório de Microprocessadores e Microcontroladores

Introdução ao Microcontrolador PIC

Laboratório de Microprocessadores e Microcontroladores

RTC Real Time Counter e Pinos do JM60

Interrupções e Timers

Prof. Adilson Gonzaga

Jadsonlee da Silva Sá

1.2 Registradores relacionados as Interrupções. 3. TOSE Sentido da transição da borda do sinal aplicado am TMR0

Temporização Interrupções. Prof: Evandro L. L. Rodrigues. Rotinas de Atraso

Curso de Microcontroladores PIC 16F84A

AAAA AAAA SEL Aplicação de Microprocessadores I. Aula 5 Temporização e Interrupção. Marcelo Andrade da Costa Vieira

Sistemas Digitais e Microcontrolados

1.1 Noções básicas sobre interrupções em Microcontroladores

Programação em Linguagem C

Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina. Temporização Interrupções Rotinas de Atraso

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES

Eder Terceiro. Programação C com o PIC16F628a. Eder Terceiro. 31 de Outubro de 2016

Sistemas Embarcados:

6. Estrutura do Programa em Assembly

Interrupção. Prof. Adilson Gonzaga

Sistemas Microcontrolados

Registros do 16F628A. Prof. Luiz Antonio Vargas Pinto Prof. Vargas

Descrição dos pinos de entrada e saída e de funções especiais. Descrição dos modos de acesso: individual e por porto

Estudo dos Microcontroladores MSP430 por intermédio do desenvolvimento de interface com a placa didática McLab2

1. CONFIGURAÇÃO DO PINO

Sistemas Digitais e Microcontrolados

PRÁTICAS. Microcontroladores: (LT36D) Prof: DaLuz. Práticas - 2º sem Microcontroladores LT36D - 26/04/ :56 1/16

Sistemas Microcontrolados. Período Aula 9. 1 Saulo O. D. Luiz

Microcontrolador 8051

ENG-1450 Microcontroladores e Sistemas Embarcados. Lab03 Execução Experiência 01, Keypad, 7-seg, Exercícios

MSP 430 Lab 04 Fontes de clock e configuração das entradas e saídas digitais

Faculdade de Tecnologia SENAI Pernambuco - Unidade Santo Amaro Curso de Tecnologia em Mecatrônica Industrial

LABORATÓRIO DE PROCESSAMENTO DIGITAL DE SINAIS II. Filtros FIR utilizando matlab e arduino duo LAB 4 (BRF)

Sistemas Microcontrolados

ARDUINO BÁSICO E T A P A 1 O QUE É ARDUINO? Prof. Amadeu Zanon Neto

LABORATÓRIO DE PROCESSAMENTO DIGITAL DE SINAIS II. Filtros FIR utilizando matlab e arduino duo LAB 1 (LPF)

Interrupção Externa. Capítulo 1. Noções básicas sobre interrupções em Microcontroladores PIC

Temporizadores e Contadores (Timer/Counter)

Microcontrolador 8051:

Microcontroladores PIC. Interrupções e Timers

2a Prova de ELT024 Programação para Sistemas Embarcados Prof. Rodrigo Maximiano Antunes de Almeida

MICROCONTROLADOR 8051

Application Note FBEE Controle de Placas com entradas Analógicas REV01. 1 Rev01

ENG-1450 Microcontroladores e Sistemas Embarcados. Lab02 Apresentação Kit PicGenios Interrupção e Timers

Arquitetura de Computadores. Prof. João Bosco Jr.

UTFPR Departamento Acadêmico de Eletrônica Curso Técnico em Eletrônica Microcontroladores 1 - Prof. Cion nov/2010 (atualizado em jul 2015)

PROGRAMAÇÃO DO TREINAMENTO:

O Pino P2.7 não está sendo usado e cada Display mostrará valores de 0 a 9.

PSI2662 Projeto em Sistemas Eletrônicos Embarcados: Sensores e Atuadores. Apresentação do Kit Freescale Freedom FDRM-KL25Z e Portas de Entrada e Saída

Lista de Exercícios A2

Enviando Dados Pela Porta Serial na placa LaunchPad MSP430 Utilizando o ambiente ENERGIA

Microprocessadores. Cap. 4 Assembly

Experiência. Montagem Kit Didático. 2. Turma: Nota: 5. MICRO-I Prof. Mauricio. Identificação dos Alunos:

Atividade de laboratório 003. Prof: Carlos Eduardo de Brito Novaes 29 de abril de Alunos RA Nome Curso Semestre

Sistemas Digitais e Microcontrolados

Temporizador com PIC 12F675

Sistemas Embarcados:

Introdução ao PIC. Guilherme Luiz Moritz 1. 6 de novembro de DAELT - Universidade Tecnológica Federal do Paraná

MSP430 Lab 06 Comunicação com display de 40 2 e análise das formas de onda no analisador lógico

Data Sheet FBEE Kit V05

LINGUAGEM C PARA O 8051

Microcontroladores: Programação em C

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Sistema Digitais. Bacharelado de Informática UEM DIN - Prof. Elvio 2017

Tutoriais PET-Tele. Introdução à Amostragem de Sinais com o kit Arduino (Versão: A2016M06D21)

LABORATÓRIO DE ARQUITETURA DE COMPUTADORES PREPARAÇÃO 02: DISPLAY DE 7 SEGMENTOS MICROCONTROLADO

Arquitetura e Organização de Computadores. Conjunto de Instruções da Arquitetura CompSim

Microcontroladores PIC

Microcontrolador PIC 16F877

Transcrição:

Curso Técnico de Nível Médio Integrado Eletrônica - 8o Período Disciplina de Microcontroladores 2 (EL08D) 1º Sem 2016 Professor Gabriel Kovalhuk Email: kovalhuk@utfpr.edu.br Página pessoal: http://paginapessoal.utfpr.edu.br/kovalhuk

General Purpose Input Output GPIO

General Purpose Input Output GPIO São os pinos de entrada e saída do microcontrolador; São responsáveis pela comunicação do microcontrolador com o mundo externo; No MSP430, cada pino, possui mais de uma função, isto é, o pino fornece acesso a diversos periféricos do microcontrolador. O acesso a estas funções se dá através da multiplexação dos pino;

General Purpose Input Output GPIO No diagrama simbólico do microcontrolador estas funções aparecem separadas por uma barra '/';

General Purpose Input Output GPIO A família MSP430 possui até 8 portas de entrada e saída O MSP430G2553 possui apenas 2 portas de entrada e saída; Cada porta possui até 8 pinos de entrada/saída; Cada pino pode ser individualmente configurado como entrada ou saída; É possível configurar resistores de pull-up ou pull-down, individualmente em cada pino; As portas P1 e P2 tem a capacidade de gerar interrupção;

General Purpose Input Output GPIO A cada porta está associado um conjunto de registradores de controle; O padrão de nomenclatura deste registradores é: PxYYY, onde x indica a porta e YYY indicam a função do registrador; Exemplo: P1OUT Registrador de saída PORT 1

General Purpose Input Output GPIO A nomenclatura dos pinos de GPIO do MSP430 segue o seguinte padrão: PX.Y: onde X indica qual é a porta e Y qual é o pino desta porta; Exemplo: P1.3 indica o pino 3 da porta 1; Obs. na linguagem C o acesso a cada pino é feito através de máscaras de bits nos registradores: P1OUT = 0x01; // coloca o pino P1.0 '1' P1OUT &= 0xFE; // coloca o pino P1.0 '0' Observe que 0xFE é igual a 0x01.

General Purpose Input Output GPIO Como funcionam as máscaras de bits nos registradores: Para setar um bit fazemos uma operação lógica OR do registrador com um valor que possua bits iguais a 1 nas posições que se deseja setar no registrador e zeros nas demais posições; Exemplo: para setar os bit 2, 5 e 6 do registrador P1OUT, fazemos um OR com o valor 01100100b, ou seja, 0x64 P1OUT = P1OUT 0x64; ou P1OUT = 0x64;

General Purpose Input Output GPIO Assim, supondo que P1OUT esteja com os bits 0, 4, e 6 setados e os demais em zero: Fazendo um OR com 0x64, temos: 7 6 5 4 3 2 1 0 P1OUT 0 1 0 1 0 0 0 1 7 6 5 4 3 2 1 0 P1OUT 0 1 0 1 0 0 0 1 0x64 0 1 1 0 0 1 0 0 Novo P1OUT 0 1 1 1 0 1 0 1 no fim, os bits 2 e 5 foram setados e os demais permaneceram inalterados, inclusive o bit 6 que já estava setado.

General Purpose Input Output GPIO Para zerar um bit fazemos uma operação lógica AND do registrador com um valor que possua bits iguais a 0 nas posições que se deseja zerar no registrador e uns nas demais posições; Exemplo: para zerar os bit 2, 5 e 6 do registrador P1OUT fazemos um AND de P1OUT = P1OUT & 0x9B; P1OUT &= 0x9B;

General Purpose Input Output GPIO Os arquivos.h dos diversos MSP430 possuem constantes definidas para cada bit individualmente: #define BIT0 (0x0001u) #define BIT8 (0x0100u) #define BIT1 (0x0002u) #define BIT9 (0x0200u) #define BIT2 (0x0004u) #define BITA (0x0400u) #define BIT3 (0x0008u) #define BITB (0x0800u) #define BIT4 (0x0010u) #define BITC (0x1000u) #define BIT5 (0x0020u) #define BITD (0x2000u) #define BIT6 (0x0040u) #define BITE (0x4000u) #define BIT7 (0x0080u) #define BITF (0x8000u) Assim, para ficar mais bem documentado, podemos usar BIT6 + BIT5 + BIT2 no lugar de 0x64 Como 0x9B é 0x64 negado, para zerar os bits com AND usamos ~(BIT6 + BIT5 + BIT2) no lugar de 0x9B

Registradores dos Ports 1 e 2

Registradores dos Ports 1 e 2 PxDIR (registrador de direção): Define se é pino de entrada ou se é pino de saída; Bit = 0 o pino é uma entrada; Bit = 1 o pino é uma saída; Exemplo: Definindo os pinos P2.0 e P2.1 como saída: P2DIR = BIT0 + BIT1; //Define P2.0 e P2.1 como saída Definindo o pino P1.7 como entrada: P1DIR &= ~BIT7; // define o pino P1.7 como entrada Obs: no reset todos os pinos são definidos como entrada;

Registradores dos Ports 1 e 2 PxOUT (registrador de saída): contém o valor do pino correspondente, quando o pino está configurado como saída; Exemplo: colocando o pino P1.0 em '0': P1OUT &= ~BIT0; // coloca o pino P1.0 em '0' colocando o pino P1.6 em '1': P1OUT = BIT6; // coloca o pino P1.6 em '1'

Registradores dos Ports 1 e 2 Exercício: faça um programa em C para que o LED vermelho, ligado ao pino P1.0 pisque numa frequência aproximada de 1HZ.

#include msp430g2553.h GPIO Exemplo int main() { WDTCTL = WDTHOLD + WDTPW; P1DIR = BIT0; // desativa watch dog // define P1.0 como saida While(1) { P1OUT ^= BIT0; //inverte o estado de P1.0 For( long int t=0; t<50000; t++); // delay } }

Funções Intrínseca No IAR existem algumas funções chamadas intrínsecas. Estas funções executam o processamento de baixo nível (assembly) no MSP430; Estas funções já estão pré definidas no IAR; Para usá-las é necessário acrescentar #include intrinsics.h no início do código; Algumas funções intrinsecas: delay_cycles(int n); // gasta n ciclos de máquina enable_interrupt(); // habilita as interrupcoes disable_interrupt(); // desabilita as interrupcoes

Registradores dos Ports 1 e 2 Exercício: faça um programa em C para que o LED vermelho, ligado ao pino P1.0, e o LED verde, ligado ao pino P1.6, pisquem alternadamente numa frequência aproximada de 1HZ. Use delay_cycles(563000); para gerar o delay.

Registradores dos Ports 1 e 2 PxIN (registrador de entrada): reflete o valor do pino correspondente, quando o pino está configurado como entrada; Exemplo: testando se o valor do pino P1.3 é zero: if((p1in & BIT3) == 0) { }

Registradores dos Ports 1 e 2 PxREN: Habilita o resistor de pull-up/pull-down do pino; Bit = 0 sem resistor de pull-up/pull-down; Bit = 1 com resistor de pull-up/pull-down; Esta função somente deve ser usada com o pino selecionando como entrada; Nesta situação, o registrador de saída (PxOUT) é usado para definir se o resistor é de pull-up ou se é de pull-down: Bit = 0 resistor de pull-down; Bit = 1 resistor de pull-up;

PxREN PxOUT Dvss (GND) DVcc 0 1 R pull-up/pull-down PxIN Pino

Registradores dos Ports 1 e 2 Exercício: faça um programa em C para que o LED vermelho, ligado ao pino P1.0, e o LED verde, ligado ao pino P1.6, mudem de estado, alternadamente, cada vez que o botão de uso geral (ligado ao pino P1.3) for pressionado.

Registradores dos Ports 1 e 2 PxSEL e PxSEL2: Definem a função do pino, isto é, a qual periférico interno o pino está atrealado; Fonte: SLAU144J. Sempre se deve consultar os registradores dos periféricos para verificar se é necessário definir a direção do pino; Quando PxSEL ou PxSEL2 estão setados, a função de interrupção do pino é desabilitada;

Registradores dos Ports 1 e 2 Alguns periféricos (como o ADC) possuem registradores específicos para configurar os pinos Exemplo de possibilidade de configuração para o pino P1.0:

Interrupções dos Ports 1 e 2 Cada pino dos ports 1 e 2 podem, individualmente, gerar interrupções de I/O; Cada pino dos ports 1 e 2 podem ser configurados individualmente para gerar interrupções por borda de descida ou por borda de subida; Existe uma posição no vetor de interrupção para as interrupções geradas pelos pinos do port 1 e outra posição para as interrupções geradas pelos pinos do port 2;

Registradores de Interrupções dos Ports 1 e 2 PxIE: Habilita a interrupção do pino correspondente: BIT = 0 interrupção desabilitada; BIT = 1 interrupção habilitada; PxIES: Define se a interrupção será gerada por borda de subida ou por borda de descida: BIT = 0 borda de descida; BIT = 1 borda de subida; PxIFG: Indica que existe uma interrupção pendente: BIT = 0 não existe interrupção pendente; BIT = 1 existe interrupção pendente;

Funções de Interrupção As rotinas de interrupção são executadas a partir de uma chamada de hardware; No IAR, para definir que uma função é para atender uma interrupção, usa-se a diretiva: #pragma vector=tipo_de_interrupcao Onde tipo_de_interrupcao indica o endereço da interrupção no vetor de interrupção; O valor tipo_de_interrupcao pode ser encontrado no msp430g2553.h;

Funções de Interrupção #define TRAPINT_VECTOR (0 * 2u) /* 0xFFE0 TRAPINT */ #define PORT1_VECTOR (2 * 2u) /* 0xFFE4 Port 1 */ #define PORT2_VECTOR (3 * 2u) /* 0xFFE6 Port 2 */ #define ADC10_VECTOR (5 * 2u) /* 0xFFEA ADC10 */ #define USCIAB0TX_VECTOR (6 * 2u) /* 0xFFEC USCI Transmit */ #define USCIAB0RX_VECTOR (7 * 2u) /* 0xFFEE USCI Receive */ #define TIMER0_A1_VECTOR (8 * 2u) /* 0xFFF0 Timer0A CC1, TA0 */ #define TIMER0_A0_VECTOR (9 * 2u) /* 0xFFF2 Timer0_A CC0 */ #define WDT_VECTOR (10 * 2u) /* 0xFFF4 Watchdog Timer */ #define COMPARATORA_VECTOR (11 * 2u) /* 0xFFF6 Comparator A */ #define TIMER1_A1_VECTOR (12 * 2u) /* 0xFFF8 Timer1_A CC1 4, TA1 */ #define TIMER1_A0_VECTOR (13 * 2u) /* 0xFFFA Timer1_A CC0 */ #define NMI_VECTOR (14 * 2u) /* 0xFFFC Non maskable */ #define RESET_VECTOR (15 * 2u) /* 0xFFFE Reset [Highest Priority] */

Funções de Interrupção A função deve começar com interrupt; A função não pode retornar nenhum valor e não pode receber nenhum parâmetro Exemplo: interrupt void funcao(void) { //escreva aqui sua função }

Funções de Interrupção Exemplo: função de interrupção para o pino P1.3 #pragma vector=port1_vector interrupt void port1_int() { } P1OUT ^= BIT0; // inverte o estado de P1.0 P1IFG &= ~BIT3;// reseta o flag de interrupcao

Funções de Interrupção Configuração da interrupção do pino P1.3 int main() { } // realiza as demais configuracoes P1IE = BIT3; // habilita a interrupcao pelo pino // P1.3 P1IFG &= ~BIT3;// reseta o flag de interrupcao enable_interrupt(); // habilita as interrupcoes // continua o programa

Registradores dos Ports 1 e 2 Exercício: faça um programa em C para que o LED vermelho, ligado ao pino P1.0, e o LED verde, ligado ao pino P1.6, mudem de estado, alternadamente, cada vez que o botão de uso geral (ligado ao pino P1.3) for pressionado, usando interrupção.

Recomendações da Texas Os pinos não utilizados devem ser configurados como saída e deixados em aberto. Assim contribuem para a redução de consumo do MSP430.

Referência Bibliográfica MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013; MSP430G2x53 Datasheet (SLAS735J), Texas Instruments, 2011/2013.