Microprocessadores Tópicos Esp. em Eletrônica Industrial

Documentos relacionados
Microprocessadores Tópicos Esp. em Eletrônica Industrial

Microprocessadores Tópicos Esp. em Eletrônica Industrial

Microprocessadores Tópicos Esp. em Eletrônica Industrial

Microprocessadores Tópicos Esp. em Eletrônica Industrial

Registradores. Registradores e Instruções Especiais. Link Register. Stack Pointer. Registradores Especiais. Contador de Programa 29/03/2018

Microprocessadores Tópicos Esp. em Eletrônica Industrial

Universidade Tecnológica Federal do Paraná (UTFPR) Departamento Acadêmico de Eletrônica (DAELN) SISTEMAS EMBARCADOS

Registradores. Registradores Especiais e Exceções no ARM Cortex-M4. Link Register. Stack Pointer. Registradores Especiais. Contador de Programa

Sistemas Digitais e Microcontrolados

Revisão: Modo Real, pt 2 Interrupções

Sistemas Digitais e Microcontrolados

Sistemas Microprocessados

Interrupções e DMA. Mecanismos de I/O

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

Acetatos de apoio às aulas teóricas

Paradigma CISC. Arquitetura ARM Cortex-M3. Paradigma CISC. Paradigma RISC. Paradigma RISC. Resumo: RISC x CISC 18/08/2016

Sistemas Embarcados:

Controladores do IBM-PC. Gustavo G. Parma

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CURSOS DE ENGENHARIA E TECNOLOGIA DAELT

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

Laboratório de Microprocessadores e Microcontroladores

Exceções no Fluxo de Execução: Interrupções e Traps

Laboratório de Microprocessadores e Microcontroladores

EXPERIÊNCIA 5: IMPLEMENTAÇÃO DE UM CRONÔMETRO COM INTERRUPÇÃO

Programação ARM. Engenharia de Sistemas Embarcados Prof. Abel Guilhermino

EL08D - MICROCONTROLADORES

SISTEMAS EMBARCADOS. Controle de Kernel, gerenciamento de Threads e funções de espera. Prof. André Schneider de Oliveira

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

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES

Periféricos possuem características diferentes. Periféricos são mais lentos que UCP e Memória Necessita-se de módulos de Entrada/Saída


Prof. Adilson Gonzaga

Microcontroladores 2 EL08D Turma M12

Interrupções e Timers

Interrupção

Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia (Material Adaptado)

Plano de Aula. 1 o semestre. Aula número 010 Interrupções Internas Timers. Uso de interrupções internas produzidas pelos timers

Entrada e Saída. Walter Fetter Lages

Interrupção. Prof. Adilson Gonzaga

Interrupções do Interrupções Gabriel Kovalhuk. UTFPR DAELN - Tecnologia em Mecatrônica Industrial

SSC510 Arquitetura de Computadores 1ª AULA

Arquitetura Cortex-M

Circuitos Digitais. Tipos de circuitos digitais: Circuitos combinacionais Circuitos sequenciais

Jadsonlee da Silva Sá

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Disciplina de. Organização de Computadores Digitais

Dispositivos de Entrada e Saída

Barramento. Prof. Leonardo Barreto Campos 1

SISTEMAS EMBARCADOS Arquitetura ARM Cortex-M3

Microprocessadores 1º Ano - LECOM. Universidade do Minho Dept. De Electrónica Industrial

Problemas com Entrada e Saída

Sistemas Embarcados:

Interrupções por hardware

Sistemas de Entrada e Saída

Arquitetura PIC - Interrupções e timers + Motores de passo

Prof. Gabriel Kovalhuk

Microprocessadores 1º Ano - LECOM

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

29/03/2017. Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina

Sistemas de Entrada e Saída

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

Sistemas Operacionais. Interrupção e Exceção

Estrutura de Sistemas Operacionais. Capítulo 1: Introdução

RTC Real Time Counter e Pinos do JM60

Organização de Computadores

Periféricos e Interfaces Ano lectivo 2003/2004 Docente: Ana Paula Costa. Aula Teórica 5

Lógica Externa à CPU. Transferência de Dados. Entrada/Saída por Interrupção. Entrada/Saída por Interrupção

Aula 10 Microcontrolador Intel 8051 Parte 1

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

Arquitetura de Computadores. Revisão Volnys Bernal. Agenda. Revisão: Arquitetura de Computadores. Sobre esta apresentação

SSC0611 Arquitetura de Computadores

Lógica Externa à CPU

Paradigma CISC. Arquitetura ARM Cortex-M3. Paradigma CISC. Paradigma RISC. Paradigma RISC. Resumo: RISC x CISC 16/03/2018

Curso de Microcontroladores PIC 16F84A

INTERFACE DE CONVERSORES E MICROPROCESSADORES

William Stallings Computer Organization and Architecture

Métodos de Sincronização

Ex.: Rotinas de tempo

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

Sistemas Operacionais. BSI / UAB 2013 Hélio Crestana Guardia

Introdução aos Sistemas Operacionais

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

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

Microcontrolador 8051

Capítulo 13: Sistemas de E/S. Operating System Concepts with Java 7th Edition, Nov 15, 2006

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

9/3/2009. Aula 4. Engenharia de Sistemas Embarcados. Cenário: Sistema de Controle de LEDs

Aula 4. Engenharia de Sistemas Embarcados. Prof. Abel Guilhermino Tópico: Arquitetura de um microcontrolador 8051

High Performance Programmable DMA Controller 8237A, 82237

Plano de Aula. 1 o semestre. Aula número 009 Interrupções. Fazer uso das interrupções externas no Arduíno

Entrada e Saída. Walter Fetter Lages.

Sistemas Operacionais Processos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Sistemas Embarcados:

PSI3441 Arquitetura de Sistemas Embarcados

CEFET-RS Curso de Eletrônica

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

Sistemas Operacionais

Escrito por Gabriel Yoshiaki Hotta em 2013/12/17, sugestões, correções, comentários, etc, podem ser enviadas para

Transcrição:

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ - UTFPR DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA - DAELT CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA MESTRADO EM SISTEMAS DE ENERGIA - PPGSE Microprocessadores Tópicos Esp. em Eletrônica Industrial - amauriassef@utfpr.edu.br paginapessoal.utfpr.edu.br/amauriassef 1

Interrupção do Tiva C Módulo NVIC (Texas Instruments www.ti.com) Interrupções são eventos importantes que devem ser reconhecidos e atendidos por um programa principal de forma prioritária 2

Configuração do GPIOF para o Tiva C TM4C123G LauchPad #define RED_LED GPIO_PIN_1 //PF1 #define BLUE_LED GPIO_PIN_2 //PF2 #define GREEN_LED GPIO_PIN_3 //PF3 #define SW1 GPIO_PIN_4 //PF4 #define SW2 GPIO_PIN_0 //PF0 // Habilita clock geral do sistema para rodar em 50 MHz a partir do PLL com cristal SysCtlClockSet(SYSCTL_SYSDIV_4 SYSCTL_USE_PLL SYSCTL_XTAL_16MHZ SYSCTL_OSC_MAIN); // Habilita e espera o acesso ao PORTF SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); while(!sysctlperipheralready(sysctl_periph_gpiof)) {} // Desbloqueia o pino PF0 HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY; HWREG(GPIO_PORTF_BASE + GPIO_O_CR) = 0x01; HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0; #include <inc/tm4c123gh6pm.h> //Desbloqueio do pino PF0 GPIO_PORTF_LOCK_R = 0x4C4F434B; GPIO_PORTF_CR_R = 0x1F; // Configura o GPIOF para operação com LEDs GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, RED_LED BLUE_LED GREEN_LED); // Configura os dois pinos para leitura do estado das chaves SW1 e SW2 GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, SW1 SW2); // Configura a força para 2 ma e resistor fraco de pull-up GPIOPadConfigSet(GPIO_PORTF_BASE, SW1 SW2, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU); 3

Exemplo de teste de chaves while(1) { chave_temp = GPIOPinRead(GPIO_PORTF_BASE,SW1 SW2); // testa se SW1 e SW2 estao abertas if ( (chave_temp & SW1) && (chave_temp & SW2)){ GPIOPinWrite(GPIO_PORTF_BASE, RED_LED BLUE_LED GREEN_LED, RED_LED); SysCtlDelay(atraso_100ms); } // testa se SW1 fechada e SW2 aberta else if (!(chave_temp & SW1) && (chave_temp & SW2)){ GPIOPinWrite(GPIO_PORTF_BASE, RED_LED BLUE_LED GREEN_LED, GREEN_LED); SysCtlDelay(atraso_100ms); } // testa se SW1 aberta e SW2 fechada else if ((chave_temp & SW1) &&!(chave_temp & SW2)){ GPIOPinWrite(GPIO_PORTF_BASE, RED_LED BLUE_LED GREEN_LED, BLUE_LED); SysCtlDelay(atraso_100ms); } // SW1 e SW2 fechadas else { GPIOPinWrite(GPIO_PORTF_BASE, RED_LED BLUE_LED GREEN_LED, RED_LED, GREEN_LED, BLUE_LED); SysCtlDelay(atraso_100ms); } } 4

Visão global do módulo de Interrupções As Interrupções possibilitam uma maneira para que os periféricos interrompam o programa corrente e sejam atendidos rapidamente Podem ser desencadeados por dispositivos de E/S, temporizadores, ou periféricos que requerem maior atenção para a criação de aplicativos de alto desempenho Por exemplo, ao invés de verificar e esperar ativamente o fim de algum processamento (polling), o periférico poderia gerar uma interrupção quando o MCU está executado outro código Muitos sistemas embarcados exigem temporização precisa para gerar eventos em tempos específicos, embora seja possível utilizar um temporizador por software (maneira imprecisa de controlar o tempo) Os microcontroladores incluem timers implementados em hardware que operam com base no clock do dispositivo Ao utilizar contadores de hardware o MCU pode controlar o tempo com precisão e ser capaz de executar outras funções simultaneamente 5

Termos relacionados com módulo de Interrupção Asynchronous Event: Um evento que ocorre e não está sincronizado com o relógio interno do microcontrolador. Pode acontecer em qualquer momento do ciclo de execução da instrução; Interrupt Enable: Um bit de um subsistema que habilita a geração um pedido de interrupção; Interrupt Flag Clearing: Em muitos microcontroladores, sub-sistemas internos, tais como o temporizador pode gerar pedidos de interrupção. Por exemplo, um pedido de interrupção pode ser gerado quando o bit sinalizador de overflow do temporizador (transbordamento) está setado. Quando isso ocorre, a rotina de serviço de interrupção deve resetar o flag que causou o pedido de interrupção a ser gerado; Interrupt Latency: É o tempo entre quando um pedido de interrupção é afirmado e a CPU começa a executar a rotina de serviço de interrupção; Interrupt Mask: Bit de controle para mascarar (impedir) que a CPU aceite pedidos de interrupção. A CPU tem instruções que podem mascarar ou desmascarar interrupções; Interrupt Prioritization: Quando várias interrupções ocorrem simultaneamente o sistema deve ter uma maneira de estabelecer qual deles é o mais importante e deve ser atendido primeiro; Interrupt Request (IRQ): Sinal com o qual algum dispositivo, tal como um bit de overflow do timer ou um sinal externo, solicita que seja atendido um pedido de interrupção; 6

Interrupt Return: A rotina do serviço de interrupção necessita desta instrução especial para retornar ao programa interrompido; Interrupt Service Routine (ISR): Rotina de software escrita para executar as tarefas relativas ao pedido de interrupção para um dispositivo específico; Interrupt Vector: Quando ocorre uma interrupção a CPU busca o endereço de início da rotina do serviço de interrupção a partir de um local específico e dedicado na memória. O endereço inicial é chamado de vetor e o local da memória onde este é armazenado é chamado o vetor de localização ou endereço de vector; Pending Interrupt: Quando ocorre um pedido de interrupção e a respectiva rotina do serviço de interrupção não foi atendida, a interrupção é dita pendente; Real-Time System: Um sistema em tempo real é aquele que usa interrupções para executar tarefas de processamento quando estas são necessárias; Real-Time Operating System (RTOS): Muitos sistemas de tempo real usam um sistema operacional que permite que o desenvolvedor de software crie tarefas e agende sua execução sob o controle de interrupção. 7

Fluxo da interrupção Programa Salva contexto (registradores) Interrupção... Identifica a origem da interrupção Obtém o endereço da rotina de tratamento Rotina de interrupção Restaura contexto (registradores) Quando a CPU recebe uma interrupção, primeiro salva o estado atual do programa (registros). Então, verifica qual ISR irá executar usando uma tabela de vetores de interrupção. Em seguida, executa o ISR e antes de concluído, flags de interrupção serão apagados. Depois de concluído, o estado do programa é restaurado e continua a ser executado 8

GPIO - Pinos Digitais do Tiva Registros de Controle de Interrupção 9

GPIOIS (GPIO Interrupt Sense) Valor Descrição 0 Configura o pino correspondente para detectar mudança de borda 1 Configura o pino correspondente para detectar mudança de nível GPIOIBE (GPIO Interrupt Both Edges) Valor Descrição 0 A geração de interrupção é controlada pelo GPIOIEV (GPIO Interrupt Event) 1 Ambas as bordas no pino correspondente disparam uma interrupção 10

GPIOIEV (GPIO Interrupt Event) Valor Descrição 0 Uma borda de descida ou nível 0 no pino correspondente disparou uma interrupção 1 Uma borda de subida ou nível 1 no pino correspondente disparou uma interrupção GPIOIM (GPIO Interrupt Mask) Valor Descrição 0 A interrupção do pino correspondente é mascarada (desabilitada) 1 A interrupção do pino correspondente é enviada ao controlador de interrupção GPIORIS (GPIO Raw Interrupt Status) (Read only - RO) Valor Descrição 0 Não ocorreu uma condição de interrupção no pino correspondente 1 Ocorreu uma condição de interrupção no pino correspondente 11

Valor GPIOMIS (GPIO Masked Interrupt Status) Descrição 0 Uma condição de int. no pino correspondente não ocorreu ou está mascarada 1 Uma condição de int. no pino correspondente disparou uma int. para o controlador de interrupções Valor GPIOICR (GPIO Interrupt Clear) (W1C) Descrição 0 A interrupção correspondente não é afetada 1 A interrupção correspondente é limpa 12

ARM Nested Vector Interrupt Controller (NVIC) É o controlador de interrupções das séries ARM Cortex-M Responsável por tratar a maior parte das interrupções no MCU O NVIC no Cortex-M4 apresenta: 1) Suporte de até 240 interrupções com 256 níveis de prioridade para cada interrupção A implementação do NVIC no Tiva TM4C123G suporta 78 interrupções com 8 (0-7) níveis de prioridade, sendo 0 o nível mais alto de prioridade Baixa latência nas exceções e encaminhamento de interrupções Sempre 12 cycles, ou apenas 6 cycles com tail-chaining Detecção de nível e borda de sinais de interrupção Repriorização dinâmica de interrupções Uma interrupção externa não mascarável NMI (Non-maskable interrupt) 13

Exceções do Core ARM (System Handler Vectors) Reset: invocada no power on NMI: interrupção não mascarável usando o sinal NMI ou por software usando o registro Interrupt Control and State (INTCTRL) Hard Fault: exceção que ocorre devido a um erro durante o processo de exceção, ou porque um exceção não pode ser gerenciada por outro mecanismo de exceção Memory Management Fault: ocorre devido a uma violação de acesso à memória Bus Fault: ocorre devido a uma falha relacionada à memória durante uma transação de instrução ou memória de dado Usage Fault: ocorre devido a uma falta relacionada à execução de instrução, tais como: instrução indefinida, acesso ilegal, estado inválido de instrução, erro de retorno de exceção (divisão por zero) 14

SVCall: uma chamada de supervisor (SVC - Supervisor Call) é uma exceção sincronizada pela instrução SVC em um ambiente de sistema operacional (SO) para acessar funções do Kernel e device drivers Debug Monitor: esta exceção é causada pelo monitor de depuração e só é ativa quando habilitada PendSV: indica uma requisição de interrupção pendível usada em um ambiente de SO para troca de contexto e sincronizada pelo registro Interrupt Control and State (INTCTRL) SysTick: exceção que o sistema de temporização decrescente gera quando chega no valor 0 e é habilitado como interrupção. Interrupt (IRQ): é uma IRQ sinalizada por um periférico ou gerada por requisição de software a alimentado através do NVIC 15

Core ARM Tiva 16

ISR e Interrupt Vector Table Para utilizar as interrupções é necessário encontrar o número do vetor correspondente O número de vetor é utilizado para encontrar a localização na tabela do vetor para incluir o nome da ISR (página 104 do manual do TM4C123GH6PM) Core ARM IRQ Tiva 17

18

Configuração do NVIC com o TivaWare //*******************************************************************// // Arquivo driverlib/interrupt.h // Prototypes for the APIs. //******************************************************************* bool IntMasterEnable(void); bool IntMasterDisable(void); void IntRegister(uint32_t ui32interrupt, void (*pfnhandler)(void)); void IntUnregister(uint32_t ui32interrupt); void IntPriorityGroupingSet(uint32_t ui32bits); uint32_t IntPriorityGroupingGet(void); void IntPrioritySet(uint32_t ui32interrupt, uint8_t ui8priority); int32_t IntPriorityGet(uint32_t ui32interrupt); void IntEnable(uint32_t ui32interrupt); void IntDisable(uint32_t ui32interrupt); uint32_t IntIsEnabled(uint32_t ui32interrupt); void IntPendSet(uint32_t ui32interrupt); void IntPendClear(uint32_t ui32interrupt); void IntPriorityMaskSet(uint32_t ui32prioritymask); uint32_t IntPriorityMaskGet(void); void IntTrigger(uint32_t ui32interrupt); 19

Configuração da interrupção do GPIO com o TivaWare //*******************************************************************// // Arquivo "driverlib/gpio.h // Prototypes for the APIs. //******************************************************************* void GPIOIntEnable(uint32_t ui32port, uint32_t ui32intflags); void GPIOIntDisable(uint32_t ui32port, uint32_t ui32intflags); uint32_t GPIOIntStatus(uint32_t ui32port, bool bmasked); void GPIOIntClear(uint32_t ui32port, uint32_t ui32intflags); 20

Configuração do NVIC com o TivaWare 1) IntMasterEnable(void) Função que permite ao CPU responder a todas as chamadas de interrupção utilizadas 2) IntEnable(uint32_t ui32interrupt) Função para habilitar a interrupção do periférico indicado 3) GPIOIntEnable(uint32_t ui32port, uint32_t ui32intflags) Função onde um pino da GPIO do microcontrolador é configurado como interrupção e o parâmetro ui32intflags representa o pino a ser configurado: GPIO_INT_PIN_0, GPIO_INT_PIN_1,... ou GPIO_INT_PIN_7 21

4) GPIOIntTypeSet(uint32_t ui32port, uint8_t ui8pins, uint32_t ui32inttype) Função onde um pino da GPIO do CPU, que é configurado como interrupção, tem o seu modo de habilitação configurado, e o parâmetro ui32inttype, que representa o modo de habilitação da interrupção, pode ser configurado como: GPIO_FALLING_EDGE (borda de descida), GPIO_RISING_EDGE (borda de subida), GPIO_BOTH_EDGE (qualquer borda), GPIO_LOW_LEVEL (nível lógico baixo) e GPIO_HIGH_LEVEL (nível lógico alto). 5) GPIOIntEnable(uint32_t ui32port, uint32_t ui32intflags) Função onde um pino da GPIO do microcontrolador é configurado como interrupção e o parâmetro ui32intflags representa o pino a ser configurado: GPIO_INT_PIN_0, GPIO_INT_PIN_1,... ou GPIO_INT_PIN_7. 22

Exemplo Exemplo de configuração de uma Interrupção no Port F e Pino 4 (SW1) por borda de descida: 1) Incluir as funções a seguir para configurar a interrupção do PF4 // Configura o PF4 com interrupção na borda de descida GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_FALLING_EDGE); // Habilita a interrupção do pino PF4 GPIOIntEnable(GPIO_PORTF_BASE, GPIO_PIN_4); // Habilita a interrupção do GPIOF IntEnable(INT_GPIOF); 23

2) Para que uma função de interrupção ISR seja executada, é necessário declará-la no arquivo startup_ccs.c do projeto que possui a tabela de vetor de gerenciamento das funções. Na linha da IRQ para o GPIOF, alterar o nome da função a ser chamada GPIOD_Int_Handler (nome arbitrário) 24

Alterar o nome padrão IntDefaultHandler para o novo nome da função ISR GPIOD_Int_Handler 25

3) Declare a função a ser chamada através da interrupção desejada como função externa ao código arbitrário //*********************************************************** // Declarações externas para encaminhamento de interrupções //*********************************************************** extern void GPIOD_Int_Handler(void); 4) No arquivo principal, escrever a função de interrupção associada ao pino e limpar o flag de interrupção que o gerou. //*********************************************************************** // Interrupção por borda de descida no GPIOF Pino 4 (SW1) //*********************************************************************** void GPIOD_Int_Handler(void){ GPIOPinWrite(GPIO_PORTF_BASE, RED_LED BLUE_LED GREEN_LED, RED_LED); SysCtlDelay(atraso_100ms); GPIOPinWrite(GPIO_PORTF_BASE, RED_LED BLUE_LED GREEN_LED, 0x00); GPIOIntClear(GPIO_PORTF_BASE, SW1); } 26

Configuração dos registros do NVIC sem o TivaWare Pesquisar a função dos registradores: Interrupt 0-31 Set Enable (ENn) Interrupt 0-31 Clear Enable (DISn) Interrupt 0-31 Set Pending (PENDn) Interrupt 0-31 Clear Pending (UNPENDn) Interrupt 0-31 Active Bit (ACTIVEn) Interrupt 0-3 Priority (PRIm) onde n=0...4 e m = 0...34 Exemplo: Qual é o registro EN e qual o bit deve ser setado para habilitar a interrupção do GPIOF (IRQ 30)? Resp: IRQ/32 => 30/32 = 0 (EN0) e resto 30 (bit 30) EN0 = 1<<30; 27

28

Referências Main page: www.ti.com/launchpad Tiva C Series TM4C123G LaunchPad: http://www.ti.com/tool/ek-tm4c123gxl TM4C123GH6PM folder: http://www.ti.com/product/tm4c123gh6pm LaunchPad Wiki: www.ti.com/launchpadwiki Valvano, Jonathan. Embedded Systems (Introduction to Arm\xae Cortex\u2122-M Microcontrollers) (p. 260). Jonathan Valvano. E Microcontroladores ARM7 (Philips - Família LPC213x) : O poder dos 32 Bits - teoria e prática / Daniel Rodrigues de Sousa Microcontroladores ARMTM CortexTM-M3 (família LPC175x/6x da NXP) : Programação em linguagem C / Alberto Noboru Miyadaira Introdução aos microcontroladores ARM Cortex-M4 Tiva C Series da Texas Instruments, Stéfano Andrade de Souza, Março de 2015 29