Tutorial Microcontroladores AVR Atmega8

Tamanho: px
Começar a partir da página:

Download "Tutorial Microcontroladores AVR Atmega8"

Transcrição

1 Tutorial Microcontroladores AVR Atmega8 Instrumentação UnBall Engenharia Mecatrônica Universidade de Brasília Integrantes: José Oniram Limaverde João Vitor Vilela David Bevilaqua Heyder Araújo Tiago Silva 12 de Abril de 2010

2 Sumário 1. Introdução 2. Microcontrolador Atmel AVR ATmega8 2.1 Arquitetura AVR RISC 2.2 Memória EEPROM 2.3 Memória Flash 2.4 Memória SRAM 2.5 Registradores do Avr 3. Tipos de Variáveis 4. Arquitetura de um Programa 4.1 Estrutura Fundamental de um Programa 4.2 Códigos Exemplos 5. Registradores e Comandos I/O 5.1 Registradores I/O 5.2 Acesso às portas 6. Interrupções 6.1Funcionamento Básico 6.2 Registradores de Controle 6.3 Códigos Exemplos 7. Timers/Counters 7.1Características dos Temporizadores 7.2 Códigos Exemplos 8. USART 8.1 Registradores de Controle 8.2 Códigos Exemplos 9. Conclusões 10. Bibliografia

3 1. Introdução Na área de Controle e Automação, a necessidade de alguma unidade de processamento se tornou algum imprescindível nas mais diversas aplicações. Dentre essas, os microcontroladores se destacam como uma alternativa de menor custo, confiabilidade satisfatória, simplicidade, menor consumo de energia, no entanto, com limitada capacidade de memória e processamento. Um microcontrolador contém um processador, acesso a memória e periféricos de entrada/saída. É um microprocessador que pode ser programado para funções específicas, em contraste com outros microprocessadores de propósito gerais (como os utilizados nos PCs). Basicamente, o uso de um microcontrolador consiste no processamento de dados obtidos em um de seus periféricos, tendo como saída outro conjunto de dados. Por exemplo, envio de dados via porta serial ou gerar uma reação no sistema como acender um led. A arquitetura de um microcontrolador em geral consiste em um núcleo de processamento, barramento e periféricos: Núcleo de processamento consiste no processador de dados (cálculos, controle de fluxo de programa, etc) e na administração dos periféricos. Barramento é dividido em dados e endereços, consiste nas linhas de comunicação entre o processador e os periféricos. Periféricos caracterizam o conjunto de funcionalidades disponíveis pelo microcontrolador e são controlados pelo processador. Por exemplo, memória, porta serial, porta paralela e conversor AD. Microcontroladores são geralmente utilizados em automação e controle de produtos e periféricos, como sistemas de controle de motores automotivos, controles remotos, máquinas de escritório e residenciais, brinquedos, sistemas de supervisão, etc. Dentre os disponíveis no mercado, destaca-se a família de microcontroladores AVR da Atmel, em especial o modelo ATmega8, o qual vai ser utilizado nos projetos do grupo de Instrumentação da UnBall.

4 2. Microcontrolador Atmel AVR ATmega8 O ATmega8 é um microcontrolador de 8-bit com baixo consumo de tecnologia CMOS e arquitetura RISC. Apresenta a capacidade de executar uma instrução por ciclo de relógio devido à conexão direta de seus 32 registradores gerais com a unidade lógica aritmética e uma freqüência de funcionamento numa faixa de 0 a 20 MHz. Além disso, apesar de ser RISC, possui um grande número de instruções, o que permite melhor otimização do código de alto nível em linguagem C. Outras características que permitem a maximização do desempenho e do paralelismo são a arquitetura Harvard e a técnica do pipeline Além disso, destacam-se a presença de memórias Flash, EEPROM e SRAM, de três temporizadores/contadores e acionar interrupções. \ 2.1 A Arquitetura AVR RISC A arquitetura RISC, (Reduced Instruction Set Computer), requer menos instruções que, por exemplo, a tradicional arquitetura CISC, permitindo que os sistemas, nela baseados, possam rodar mais rápido porque o microprocessador tem funções limitadas, em benefício de seu desempenho. O AVR utiliza o conceito de arquitetura Harvard na qual os barramentos de dados e de instruções são fisicamente separados. A memória de programa é executada em pipeline de dois estágios. Enquanto uma instrução está sendo executada, a próxima instrução é previamente buscada da memória de programa. Esse conceito habilita a execução de instruções em todo ciclo de clock. A memória de programa é do tipo flash, ou seja, com as instruções relativas de jump e call, todo o espaço de endereçamento de 8 K é diretamente acessado. A maioria das instruções AVR tem um único formato de palavra de 16-bit. Todo endereço da memória de programa contém uma instrução de 32-bit. 2.2 Memória EEPROM A EEPROM presente no AVR possui 512 bytes e está ligada ao barramento de dados 8-bit interno permitindo que possa ser escrita diretamente sobre o microcontrolador durante o processo de gravação ou que o próprio microcontrolador escreva os dados nas posições desta memória. O tempo de acesso de gravação é em média de 2,5 a 4ms, dependendo da tensão a qual é submetida. 2.3 Memória Flash A memória flash ou flash ROM pode ser definida como uma EEPROM que utiliza baixas tensões de apagamento, e este é feito em um tempo reduzido. O apagamento da memória flash é extremamente rápido e, ao contrário da EEPROM, não é possível reprogramar apenas um único endereço, isto é, quando a memória é apagada, todos os seus endereços são zerados. O AVR apresenta 8 Kbytes de memória Flash Programável on-chip para armazenamento de programas. 2.4 Memória SRAM As informações existentes em uma memória RAM (Random Access Memor) não são estáveis e, caso não sejam salvas fisicamente, são perdidas ao se desligar o computador. Os 608 endereços baixos pertencem às alocações da Memória de Dados do Register File, à Memória de I/O e a SRAM

5 interna. Os primeiros 96 endereços representam o Register File + Memória de I/O, e os próximos 512 endereços a SRAM interna. 2.5 Registradores do AVR Uma característica básica é a presença de um grupo de registradores internos. A arquitetura AVR, apresenta 32 registradores de 8 bits, que podem ser manipulados tanto para leitura como para escrita, como 16 palavras de 16-bit. Há também os registradores de I/O, os quais são em número de 64 e podem ser endereçados diretamente em instruções de apenas um ciclo de clock. O grupo de instrumentação propõem o desenvolvimento de um tutorial sobre as diversas funcionalidades que o ATmega8 pode oferecer para o usuário. Além disso, introduzir alguns conhecimentos básicos sobre a arquitetura de um programa e sobre comandos de entrada/saída. A partir desse tutorial, o grupo acredita ser possível que os próximos integrantes do mesmo possam adquirir informações importantes para manter a continuação dos projetos em desenvolvimento.

6 3. Tipos de Variáveis Para fazer o processamento, muitas vezes é necessário uso de variáveis para armazenar valores a serem usados posteriormente. Como a memória é limitada, é interessante que o compilador saiba o tanto de espaço na memória para reservar em relação a cada tipo de variável, e que o programador saiba utilizá-las de forma a otimizar o uso de memória. O compilador gcc-avr nos permite a criação dessas variáveis através de funções que alocam essas variáveis em endereços na memória do microcontrolador. A biblioteca referenciada pelo cabeçalho inttypes.h, define os seguintes tipos: typedef signed char int8_t; typedef unsigned char uint8_t; typedef short int16_t; typedef unsigned short uint16_t; typedef long int32_t; typedef unsigned long uint32_t; typedef long long int64_t; typedef unsigned long long uint64_t;

7 4. Arquitetura de um Programa 4.1 Estrutura Fundamental de um Programa Existem basicamente dois métodos de se escrever um programa, independentemente da linguagem utilizada, para um microcontrolador: Programação Seqüencial e Programação com Interrupções Controladas Programação Seqüencial Nessa técnica, temos que o programa fica envolvido por um laço continuo em que os dados de saída retornam rotina inicial indefinidamente, como observado na Figura 4.1. Figura 4.1 Estrutura básica de um programa seqüencial Programação com Interrupções Controladas Neste método, primeiramente, são ativadas as entradas das interrupções para permitir a utilização das mesmas. Assim, dentro do loop contínuo do programa, temos que, se uma interrupção é ativada, automaticamente o código referente à interrupção é executado. Figura 4.2 Estrutura básica de um programa com interrupção controlada

8 4.2 Códigos exemplos Uma simples implementação de um programa seqüencial pode ser visualizado na Figura 5.3. O loop contínuo é caracterizado pelo while(1) {} em que toda seqüência do código deve está presente em seu interior. Figura 4.3 Exemplo de um programa seqüencial Para um programa com interrupções controladas, temos uma implementação que pode ser visualizada na Figura 4.4. Neste caso, temos que o programa responde a uma interrupção externa, a qual é feita através de um botão para alterar o estado de um LED. Figura 4.4 Exemplo de um programa com interrupção controlada

9 5. Registradores e Comandos I/O Os microcontroladores AVR possuem múltiplos registradores, mas a maior parte deles é utilizada para entrada/saída. Outros possuem funções especiais e alguns para acesso de dados na memória do microcontrolador. Além disso, há registradores exclusivos em alguns modelos de AVR. Os nomes dos registradores são definidos nos header files para os tipos apropriados de AVR, por exemplo, #include<avr/io.h>. 5.1 Registradores I/O Os registradores de I/O são bastante utilizados para as diversas funções de controle no AVR. Eles controlam os acessos as portas e as interfaces com o microcontrolador. Deve-se ressaltar que há diferenciação entre os registradores de 8-BITS e os de 16-BITS Leitura de um registrador de I/O Para leitura, podem-se acessar os registradores de I/O como simples variáveis. Em códigos fonte, o acesso de leitura é feito pela função inp(). Em versões mais atuais do compilador o acesso pode ser feito de forma direta e a função inp() não é mais necessária, como observado no código abaixo. #include <arv/io.h> Uint8_t foo;... int main(void) { // Copia o status dos pinos da porta B na variavél foo foo = PINB... } Leitura de um bit A biblioteca do AVR possui funções para averiguação de um bit individual do registrador: bit_is_set (<Register>, <Bitnumber>): A função examina se um bit foi ativado, retornando um valor diferente de 0. bit_is_clear (<Register>, <Bitnumber>): A função examina se o bit foi desativado, retornando um valor diferente de Escrevendo em um registrador I/O Para escrita, podem-se acessar os registradores de I/O como simples variáveis. Em códigos fonte o acesso de leitura é feito pela função outp(). Em versões mais atuais do compilador o acesso pode ser feito de forma direta e a função outp() não é mais necessária, como observado a seguir.

10 #include <arv/io.h>... int main(void) { DDRA = 0xff; PORTA = 0x03... } Escrita de Bits // Define todos os pintos como saída // Define o nivel de lógico de cada saída Uma das maneiras de se alterar o valor de um bit individual é através de operações lógicas. X = (1 << BitNumber); X &= ~(1 << BitNumber); // A bit in X is set // A bit is deleted in X No exemplo abaixo, temos que o segundo bit do registrador está sendo ativado e, em seguida, está sendo desativado. #include <arv/io.h> #define MyBIT 2 PORTA = (1 << MyBIT); // O bit 2 da Porta A é igual a 1 PORTA &= ~(1 << MyBIT); // O bit 2 da Porta A é igual a Acesso às portas do AVR Há três endereços de memória (registradores) que são alocados para cada uma das portas do AVR: PORTx (Data Register), DDRx (Data Direction Register) e PINx (Port Inputs Pins). Este último só é utilizado para leitura enquanto que os outros dois podem ser utilizados tanto para leitura como escrita. Estes estão especificados na Tabela 5.1. Tabela 5.1 Registradores para direcionar as portas do Avr Para definir os pinos de 0 a 4 da porta B como saída, podemos utilizar os seguintes comandos: DDRB=0x0F; ou DDRB = (1 << DDB0) (1 << DDB1) (1 << DDB2) (1 << DDB3); Assim, para definir uma saída de nível lógico alto, podemos utilizar os seguintes comandos: PORTB =(1 << PB2) (1 << PB4);

11 6. Interrupções Interrupções são eventos de software ou de hardware que ocasionam uma mudança no fluxo do programa para uma sub-rotina que tratará esse evento. 6.1 Funcionamento Básico Após ocorrer o evento de interrupção, o programa é desviado (instrução jump ), para um endereço fixo pré-definido para cada CPU. Cada tipo de evento tem um endereço distinto, dessa forma o compilador avr-gcc dispõe da macro ISR( _vect ) que, a partir do vetor de interrupção, se encarrega de carregar o código no endereço destinado a interrupção. Os eventos que podem ocasionar uma interrupção, junto com respectivos vetores de interrupção, são: RESET External interrupt 0 - (INT0_vect) External interrupt 1 - (INT1_vect) Timer/Counter 2 Compare match - (TIMER2_COMP_vect) Timer/Counter 2 overflow - (TIMER2_OVF_vect) Timer/Counter 1A Compare match - (TIMER1_COMPA_vect) Timer/Counter 1B Compare match - (TIMER1_COMPB_vect) Timer/Counter 1 overflow - (TIMER1_OVF_vect) Timer/Counter 0 overflow - (TIMER0_OVF_vect) UART indication receive - (USART_RXC_vect) UART indication sent - (USART_TXC_vect) UART data pointer empty - (USART_UDRE_vect) Versões antigas no iom8.h 6.2 Registradores de Controle No AVR, as interrupções são controladas por registradores específicos. I) MCU Control Register - MCUCR Este registrador contém os bits de controle para interrupções e funções gerais do MCU. Bit 3,2 ISC11, ISC10: Interrupt Sense Control 1 Bit 1 and Bit 0 A interrupção externa 1 é ativada pelo pino INT1 (PD3) caso o 1-bit de SREG e a mascara de interrupção correspondente no registrador GICR está ativados. Para mais informações de como gerar uma interrupção a partir de INT1, observar a Tabela 6.1.

12 Tabela 6.1 Bits de controle para a interrupção externa 1 Bit 1,0 ISC01, ISC00: Interrupt Sense Control 0 Bit 1 and Bit 0 A interrupção externa 0 é ativada pelo pino INT0 (PD2) caso o 1-bit de SREG e a mascara de interrupção correspondente no registrador GICR está ativados. Para mais informações de como gerar uma interrupção a partir de INT0, observar a Tabela 6.2. Tabela 6.2 Bits de controle para a interrupção externa 0 II) General Interrupt Control Register - GICR Bit 7 INT1 External Interrupt Request 1 Quando este bit é ativado junto com o 1-bit de SREG, temos que o pino de interrupção externa é ativado, no caso, o pino PD3. Os bits de controle ISC11 e ISC10 vão definir o modo como a interrupção será ativada. Bit 6 INT0 External Interrupt Request 0 Quando este bit é ativado junto com o 1-bit de SREG, temos que o pino de interrupção externa é ativado, no caso, o pino PD2. Os bits de controle ISC01 e ISC00 vão definir o modo como a interrupção será ativada. III) General Interrupt Flag Register - GIFR

13 Bit 7 INTF1 External Interrupt Flag 1 Quando um evento no pino INT1 dispara um pedido de interrupção, temos que ITNF1 é ativado. Se o 1-bit de SREG e o bit INT1 do GICR estão ativados, o MCU vai para o correspondente vetor de interrupção. O flag é desativado quando a rotina de interrupção é executada. Bit 6 INTF0 External Interrupt Flag 0 Quando um evento no pino INT0 dispara um pedido de interrupção, temos que ITNF0 é ativado. Se o 1-bit de SREG e o bit INT0 do GICR estão ativados, o MCU vai para o correspondente vetor de interrupção. O flag é desativado quando a rotina de interrupção é executada. 6.3 Códigos exemplos Para nosso exemplo, utilizaremos a interrupção para alterarmos o valor dos pinos da porta B à medida que fazemos uma transição de 0 para 5V na porta PD2. Antes de qualquer coisa habilitamos a interrupção geral no registrador SREG (Status-Register, Accumulator flags) através do comando sei(), para mais detalhes: Ativando a habilitação geral, definimos os registradores de controle para podermos perceber a interrupção em INT0 na borda de subida. Observemos que, logo após configurarmos, um loop infinito em um for é iniciado, isso é, para mostrar que o processamento não ficará gastando processamento com esse evento e ele só irá para o endereço de INT0_vect, quando o evento ocorrer, ou seja, a rotina principal poderá atender outras possíveis prioridades. // Funcao que responde aa interrupcao externa 0 ISR(INT0_vect) { PORTB = ~PORTB; } int main(void) { // Configurando a interrupcao sei(); // habilitacao global das interrupcoes MCUCR = _BV(ISC01) _BV(ISC00); // Transicao positiva em PD2 (INT0) GICR = _BV(INT0); // habilita interrupcao INT0 DDRB = _BV(DDB1); // Definindo Port B como saída } for(;;) { } Por último, é comum encontrarmos exemplos que usam as macros INTERRUPT() ou SIGNAL() em programas mais antigos. A diferença de uma e da outra é que a primeira permite que outras interrupções ocorram durante outra interrupção que ainda está sendo executada, enquanto que a segunda não permite assim como IST() que é a versão mais nova de SIGNAL().

14 7. Timers/Counters Os timers são facilidades presentes no AVR responsáveis por realizar contagens de eventos externos, geração de freqüência e de sinais PWM (Pulse Width Modulation) e outros. Em termos simples, todos os timers incrementam ou decrementam em 1 o valor de um registrador (TCNTx) para cada pulso de clock. Assim, o que nós podemos fazer com esses valores é que se torna bastante interessante. Tais valores podem ser o máximo valor disponível pelo contador, constantes, valores de outros registradores ou zero. O AVR compara continuamente o valor do contador com algum outro especificado por nós e, assim, pode realizar algum evento caso ocorra uma igualdade. Cada timer difere na sua resolução (8 bits ou 16 bits), nos valores que podemos definir como TOP, em quais I/O pinos são acessíveis pelo contador e quais eventos os timers podem fornecer durante a contagem. Estes eventos podem ativar certo tipo de interrupção (a qual é a única forma para executar um código arbritário) ou set/clear/toggle o valor de um I/O pino. Há três tipos de timers no ATmega8: timer0 (8-bit), timer1 (16-bit) e timer2 (8-bit). O timer2 tem acesso a um I/O pino (OC2) e o timer1 tem acesso a dois I/O pinos (OC1A e OC1B). Enquanto que o timer0 não possui acesso externo. A contagem para cada um é armazenada no registrador TCNTx. Os contadores sempre incrementam a partir do zero, exceto quando decrementam durante a segunda metade do modo Phase Correct PWM em que os timers 1 e 2 são capazes de fazer. O timer0 sempre incrementa. Há alguns registradores que são compartilhados pelos três temporizadores como o TIFR (Timer/Counter Interrupt Flag Register) e TIMSK (Timer/Counter Interrupt Mask Register), os quais são responsáveis por controlar a execução de interrupções. 7.1 Características dos Temporizadores Timer Características Gerais É o mais simples dos temporizadores no ATmega8 e não possui acesso a I/O pino. Assim, ele não pode ser utilizado diretamente para PWM ou como um gerador de freqüência externa. O registrador que armazena o valor da contagem é o TCNT0. Em relação à forma que o contador pode ser clockeado, depende de valores atribuídos aos bits CS02:0 que estão definidos no registrador de controle do timer0 (TCCR0). Basicamente, há duas formas: internamente (diretamente ou por frações do clock interno) ou externamente. De qualquer forma, o timer0 não apresenta uma unidade de comparação, ou seja, ele simplesmente inicia a contagem de 0 (BOTTOM) a 255 ou 0xFF (MAX) repetidamente. Há somente uma interrupção quando ocorre overflow (retorna de 255 a 0). Além disso, a freqüência de operação é igual a de entrada divida por 256.

15 Timer/Counter Register Description I) Timer/Counter Control Register 0 TCCR0 Bit 2:0 CS02:0 Clock Select Esses três bits selecionam a fonte do clock a ser usado pelo contador. Para informações complementares, observar Tabela 7.1. Tabela 7.1 Clock Select Bit Description II) Timer/Counter Register 0 TCNT0 Oferece direto acesso e permite operações de escrita e leitura para o contador. III) Timer/Counter Interrupt Mask Register TIMSK No caso do timer0, somente o bit 0 se referem a ele. Quando o TOIE0 (Timer/Counter0 Overflow Interrupt Enable) é ativado, temos que uma interrupção pode ser executada se ocorrer um overflow no timer2.

16 IV) Timer/Counter Interrupt Flag Register TIFR No caso do timer0, somente o bit 0 se refere a ele. TOV1 (Timer/Counter2 Overflow Flag 1) é ativado quando ocorre um overflow no timer0 e pode ser utilizado para que uma interrupção seja executada neste instante, logo TOIE0 também precisa está ativado Timer Características Gerais O MAX para o timer2 é 255 já que ele possui uma resolução de 8 bits. É possível determinar o TOP de duas formas: 0xFF (MAX) ou qualquer valor armazenado no registrador OCR2. Este contador incrementa na maioria das vezes, mas, no modo Phase Correct PWM ele pode decrementar. Algumas definições bastante utilizadas, as quais podem ser visualizadas na Tabela 7.2. Tabela 7.2 Definições padrão para o timer2 A Unidade de Comparação continuamente compara TCNT2 com OCR2. Toda vez que ocorre uma igualdade entre estes dois registradores, OCF2 = 1 para o próximo ciclo de clock. Caso OCIE2 = 1, temos que uma interrupção pode ser gerada. Assim, após a execução da interrupção, temos que OCF2 = 0. O timer2 apresenta 4 modos de geração de onda definidos por WGM20 e 21 bits: NORMAL MODE O contador sempre incrementará; Overflows para o zero após atingir o MAX (255); Pode disparar alguma interrupção quando o temporizador overflows de volta até o zero; Pode disparar alguma interrupção quando TCNT2 = OCR2; Pode set/clear/toggle o pino OC2 quando TCNT2 = OCR2; Freqüência = clock/(2 * prescale * 256) ;

17 CTC (Clear Timer on Compare) MODE Pode ser utilizado para uma base de tempo bem variável ou geração de uma onda quadrada de freqüência variável no pino OC2; O contador sempre incrementará; Recomeça a contagem quando TCNT2 = OCR2; Pode disparar alguma interrupção quando TCNT2 = OCR2 ( e overflows se OCR2 = MAX); Freqüência = clock/(2 * prescale * ( 1 + OCR2) ); FAST PWM MODE Utilizado para PWM (Pulse Width Modulation); O contador sempre incrementará; Overflows para o zero após atingir o MAX (255); Pode disparar alguma interrupção quando o temporizador overflows de volta até o zero; Pode disparar alguma interrupção quando TCNT2 = OCR2; Freqüência = clock/(2 * prescale * 256) ; A forma de onda PWM é gerada pelo setting (ou clearing ) o registrador OC2 quando TCNT2 = OCR2, e clearing (ou setting ) o registrador OC2 quando o contador retorna ao inicio; PHASE CORRECT PWM MODE Possibilita a geração da forma de onda PWM com alta resolução no pino OC2; A forma de onda de portadora é triangular (dual-slope operation), ou seja, o contador incrementa do BOTTOM ao MAX e, em seguida, do MAX ao BOTTOM; OC2 sofre o toggle quando TCNT2 = OCR2 durante o processo de incremento ou durante o processe de decremento; Preferido para aplicações que envolvam o controle de motores; Freqüência = clock/(prescale * 510) ; Normal mode e CTC mode são bons para temporização interna e não necessita do pino OC2, ao menos que se deseja fazer uma geração de freqüência externa. Os outros dois modos necessitam que o pino OC2 esteja conectado a algo Timer/Counter Register Description I) Timer/Counter Control Register TCCR2

18 Bit 7 - FOC2 Force Output Compare O bit FOC2 é somente ativo quando WGW bits especificam Non-PWM mode (Normal ou CTC Mode). Quando ativado, imediatamente uma comparação é forçada, logo, OC2 vai apresentar um comportamento de acordo com valores presentes nos bits COM2:0. Bit 6:3 WGM21:0 Waveform Generation Mode Estes bits são responsáveis por controlar a seqüência de contagem do contador, definir o valor de TOP e qual o tipo de geração da forma de onda a ser utilizada. Informações complementares seguem na Tabela 7.3. Tabela 7.3 Wave Generation Mode Bit Description Bit 5:4 COM21:0 Compare Match Output Mode O COM21:0 determinam o comportamento do pino OC2. Dependendo do modo de geração de onda, OC2 pode se comportar de maneiras diferentes como se pode observar nas Tabelas 7.4, 7.5 e 7.6. Tabela 7.4 Comportamento de OC2 para o Non-PWM Mode Tabela 7.5 Comportamento de OC2 para o Fast PWM Mode

19 Tabela 7.6 Comportamento de OC2 para o Phase Correct PWM Mode Bit 2:0 CS22:0 Clock Select Esses três bits selecionam a fonte do clock a ser usado pelo contador. Para informações complementares, observar Tabela 7.7. Tabela 7.7 Clock Select Bit Description II) Timer/Counter Register 2 TCNT2 Oferece direto acesso e permite operações de escrita e leitura para o contador. Escrevendo no registrador, temos que a comparação entre TCNT2 e OCR2 é bloqueada no próximo intervalo de clock. III) Output Compare Register 2 OCR2

20 O registrador armazena o valor de 8-bit que é constantemente comparado com o valor de TCNT2. Uma igualdade entre os valores pode ser utilizada para gerar uma forma de onda (saída) no pino OC2. IV) Timer/Counter Interrupt Mask Register TIMSK No caso do timer2, somente os bits 7 e 6 devem se referem a ele. Quando OCIE2 (Timer/Counter2 Output Compare Match Interrupt Enable) é ativado, temos que uma interrupção pode ocorrer se a igualdade entre TCNT2 e OCR2 for válida. Quando TOIE2 (Timer/Counter2 Overflow Interrupt Enable) é ativado, temos que uma interrupção pode ser executada se ocorrer um overflow no timer2. V) Timer/Counter Interrupt Flag Register TIFR No caso do timer2, somente os bits 7 e 6 devem se referem a ele. Quando OCF2 (Output Compare Flag 2) é ativado, uma interrupção será executada quando a igualdade entre TCNT2 e OCR2 for válida, logo OCIE2 também precisa está ativado. Quando TOV2 (Timer/Counter2 Overflow Flag 2) é ativado, uma interrupção será executada quando ocorrer um overflow no timer2, logo TOIE2 também precisa está ativado Timer Características Gerais Diferentemente dos dois outros contadores, esse apresenta a resolução de 16 bits. Essa característica permite que se alcance mais precisão no tempo de execução de eventos, geração de ondas e medições envolvendo sinais. Um ponto importante a se ressaltar é capacidade de gerar sinais PWM de forma mais eficiente que o timer2. Isso se deve há presença de duas unidades de comparação (OC1A e OC1B) e, além disso, com 16 bits em vez de 8 aumenta-se a quantidade de diferentes de duty cycles disponíveis (256 para 65536). Em relação aos registradores, temos que TCNT1 (Timer/Counter 1), OCR1A/B (Output Compare Registers) e o ICR1 (Input Capture Register 1) são todos de 16 bits. Há também o

21 TCCR1A/B (Timer/Counter Control Registers), mas esses são de 8 bits. As interrupções são realizadas mediante aos bits de controle presentes nos registradores TIFR e TIMSK. Sabe-se que os valores armazenados em OCR1A/B são comparados com valor presente no contador todo o tempo. O resultado dessa comparação pode ser utilizado na geração de formas de onda ou um sinal PWM. O valor de TOP, ou o máximo valor permitido pelo contador, pode, em alguns modos de operação, ser definido pelo registrador OCR1A, pelo ICRI ou por valores já fixados. No entanto, a utilização de cada um pode causar algumas desvantagens, por exemplo, se utilizarmos o OCR1A como TOP no modo PWM, este não pode ser utilizado para a geração de sinais PWM na saída. Além de TOP, algumas outras definições para o timer0 são importantes de serem analisadas, como podemos observar na Tabela 7.8. Tabela 7.8 Definições padrão para o timer1 Em relação à forma que o contador pode ser clockeado, depende de valores atribuídos aos bits CS12:0 que estão definidos no registrador de controle B do timer0 (TCCR1B). Basicamente, há duas formas: internamente (diretamente ou por frações do clock interno) ou externamente. A seqüência de contagem será determinada a partir dos valores atribuídos aos bits WGM13:0, os quais estão definidos nos registradores de controle A e B do timer0 (TCCR1A e TCCR1B). Escolhendo o modo de operação é que vai ser possível determinar como será a forma de onda gerada na saída. Além disso, a geração de uma interrupção é determinada a partir de uma flag especifica do timer1 TOV1. Assim, a partir da combinação entre os bits CS12:0 e WGM13:0, podemos definir um dos 5 modos de operação do contador. O primeiro grupo de bits não interfere na seqüência de contagem enquanto que o segundo interfere. Além disso, os bits CS12:0 se comportam de forma diferente entre os modos. Naqueles que fornecem um sinal PWM na saída, temos que são responsáveis por determinar se a saída deve ser ou não invertida. No outro caso, temos que são responsáveis por determinar se a saída vai ser ativada, desativado ou invertida (toggle) quando a unidade de comparação informa que ocorreu uma igualdade. Os diagramas de tempo para cada um dos modos pode ser visualizado do datasheet. As características gerais de cada um podem ser visualizadas a seguir.

22 NORMAL MODE Dentre todos, é o mais simples; A contagem é sempre no sentido de incrementar o valor; Ao atingir o MAX (0xFFFF), o contador retorna ao BOTTOM (0x0000); No momento que o contador retorna ao inicio, a flag TV01 é ativada, permitindo, assim, que uma interrupção possa ser executada nesse instante; Pode-se utilizar o a unidade de comparação para gerar interrupções em um dado instante; Não é recomendado para a geração de formas de onda; CTC (Clear Timer on Compare) MODE Utilizam-se os registradores OCR1A ou ICR1 para manipular a resolução do contador, ou seja, definem o valor máximo do contador (TOP); O contador retorna a zero quando TCNT1 = OCR1A ou TCNT1 = ICR1; Uma interrupção pode ser gerada a cada momento que o contador chega ao TOP utilizando a flag OC1A ou ICF1 flag, de acordo com que registrador vai definir TOP; Em relação à geração de onda, a saída OC1A pode ser invertida (toggle) a cada momento que a unidade de comparação reconhece uma igualdade de valores. A freqüência máxima obtida é a metade da freqüência de clock. No caso geral, temos que freqüência = clock/(2 * prescale * ( 1 + OCR2) ); Como no modo Normal, TOV1 é ativado no ciclo de clock que o contador vai do MAX até BOTTOM; FAST PWM MODE Utilizado para geração de sinais PWM (Pulse Width Modulation) de alta freqüência; Difere dos modos seguintes ao utilizar uma onda dente-de-serra (single-slope operation) para geração dos sinais PWM; O contador somente incrementará; No modo não-inversor, temos que OC1x será desativado (cleared) quando TCNT1 = OCR1x, enquanto que será ativado (set) quando o contador retorna ao BOTTOM. No modo inversor, ocorre a situação contrária; Utilizados para regulação de potência e retificação; TOP é definido a partir dos valores atribuídos aos bits WGM13:0 podendo ser: valores fixos definidos, ICR1 ou OCR1A. Ao atingir o TOP, o contador voltará a zero no ciclo de clock seguinte; TOV1 é ativado a cada vez que o contador atingir TOP. Além disso, as flag OCF1A e ICF1 também são ativadas no mesmo ciclo de clock que TOV1 quando um deles é definido como TOP; Para sinas PWM, temos que freqüência = clock/(prescale * ( 1 + TOP) ) ;

23 PHASE CORRECT PWM MODE Utilizado para geração de sinais PWM (Pulse Width Modulation) de alta freqüência; Utiliza uma onda triangular (dual-slope operation) para geração dos sinais PWM, ou seja, o contador incrementa do BOTTOM ao MAX e, em seguida, do MAX ao BOTTOM; No modo não-inversor, temos que OC1x será desativado (cleared) quando TCNT1 = OCR1x durante o processo de incremento, enquanto que será ativado (set) durante o processo de decremento. No modo inversor, ocorre a situação contrária; TOP é definido a partir dos valores atribuídos aos bits WGM13:0 podendo ser: valores fixos definidos, ICR1 ou OCR1A (recomendado). Ao atingir o TOP, o contador voltará a zero no ciclo de clock seguinte; A atualização do registrador OCR1x pode ser feita durante um período; Para sinas PWM, temos que freqüência = clock/(2* prescale * (TOP)); Utilizado para aplicações que envolvem controle de motores; PHASE and FREQUENCY CORRECT PWM MODE Utilizado para geração de sinais PWM (Pulse Width Modulation) de alta freqüência; Utiliza uma onda triangular (dual-slope operation) para geração dos sinais PWM, ou seja, o contador incrementa do BOTTOM ao MAX e, em seguida, do MAX ao BOTTOM; No modo não-inversor, temos que OC1x será desativado (cleared) quando TCNT1 = OCR1x durante o processo de incremento, enquanto que será ativado (set) durante o processo de decremento. No modo inversor, ocorre a situação contrária; TOP é definido a partir dos valores atribuídos aos bits WGM13:0 podendo ser: ICR1 ou OCR1A; A principal diferença, em relação ao modo anterior, é que a saída gerada será simétrica em todos os períodos. Isso se deve ao fato que o valor dos registradores OCR1x só são atualizados no fim de um período, garantido assim a simetria da saída; Para sinas PWM, temos que freqüência = clock/(2* prescale * (TOP)); Utilizado para aplicações que envolvem controle de motores; Timer/Counter Register Description I) Timer/Counter 1 Control Register A TCCR1A Bit 7:6 - COM1A1:0 Compare Output Mode for channel A Bit 5:4 COM1B1:0 Compare Output Mode for channel B Esses pares de bits controlam o comportamento dos pinos OC1A e OC1B respectivamente. Além disso, o modo de operação é fundamental para determina esse junto com os bits como podemos ver nas Tabelas 7.9, 7.10 e 7.11.

24 Tabela 7.9 Comportamento de OC1A e de OC1B para o Non-PWM Mode Tabela 7.10 Comportamento de OC1A e de OC1B para o Fast PWM Mode Tabela 7.11 Comportamento de OC1A e de OC1B para o Phase Correct e Phase and Frequency Correct PWM Mode Bit 3 FOC1A Force Output Compare for channel A Bit 2 FOC1B Force Output Compare for channel B Esses pares de bits somente são ativados quando estamos em Non-PWM mode. Assim, deve-se garantir que eles estão desativados quando estivermos operando em modo PWM. Quando ativamos FOC1A/FOC1B, força-se uma comparação que pode ser utilizada para gerar uma forma de onda. A saída é determinada a partir da Tabela 09. Bit 1:0 WGM11:0 Waveform Generation Mode Combinado com os pares de bits WGM13:2 presentes no registrador TCCR1B, são responsáveis por controlar a seqüência de contagem do contador, o valor definido para TOP e que tipo de geração da saída (forma de onda) a ser usada. Para informações mais detalhadas, observar a Tabela 7.12.

25 Tabela 7.12 Wave Generation Mode Bit Description II) Timer/Counter 1 Control Register B TCCR1B Bit 7 ICNC1 Input Capture Noise Canceler Quando ativado, requere-se que 4 amostras iguais na entrada para que se possa alterar a saída, ou seja, ocorre uma filtragem para garantir a qualidade do sinal de entrada, no entanto, teremos um atraso na resposta da saída. Bit 6 ICES1 Input Capture Edge Select O nível lógico deste bit indica qual a borda utilizada para definir um evento no pino ICP1. Caso seja devido uma mudança 1 para 0 (borda negativa), devemos desativar ICES1. Caso contrário, seja devido por borda positiva, devemos ativá-lo. Em cada um dos casos, temos que o valor do contador será copiado para ICR1. Bit 5 Reserved Bit Este bit é reservado para uso futuro, logo se deve mantê-lo desativado. Bit 4:3 WGM13:2 Waveform Generation Mode Observar a descrição do TCCR1A.

26 Bit 2:0 CS12:0 Clock Select Esses três bits selecionam a fonte do clock a ser usado pelo contador. Para informações complementares, observar Tabela Tabela 7.13 Clock Select Bit Description III) Timer/Counter 1 TCNT1H e TCNT1L Oferecem direto acesso e permite operações de escrita e leitura para o contador de 16 bits. IV) Output Compare Register 1A (OCR1AH e OCR1AL) e Output Compare Register 1B (OCR1BH e OCR1BL) Cada registrador armazena um valor de 16-bits que é constantemente comparado com o valor em TCNT1. Uma igualdade entre os valores pode ser utilizada para gerar uma forma de onda (saída) no pino OC1A ou OC1B.

27 V) Input Capture Register 1 ICR1H e ICR1L É atualizado com o valor armazenado em TCNT1 a cada vez que um evento ocorre no pino ICP1. Além disso, esse registrador pode ser utilizado para definir o valor de TOP. VI) Timer/Counter Interrupt Mask Register TIMSK No caso do timer1, somente os bits de 5 a 2 se referem a ele. Quando TICIE1 (Input Capture Interrupt Enable) é ativado, temos que uma interrupção pode ocorrer caso ocorra uma captura de evento no pino de entrada ICP1. Quando OCIE1A (Output Compare A Match Interrupt Enable) é ativado, temos que uma interrupção pode ocorrer se a igualdade entre TCNT1 e OCR1A for válida. Quando OCIE1B (Output Compare B Match Interrupt Enable) é ativado, temos que uma interrupção pode ocorrer se a igualdade entre TCNT1 e OCR1B for válida. Quando TOIE1 (Overflow Interrupt Enable) é ativado, temos que uma interrupção pode ser executada se ocorrer um overflow. VII) Timer/Counter Interrupt Flag Register TIFR No caso do timer1, somente os bits de 5 a 2 se referem a ele. ICF1 (Input Capture Flag) é ativado quando ocorre a captura de um evento no pino ICP1, logo pode ser usado para executar uma interrupção. OCF1A (Output Compare A Match Flag) é ativado no ciclo de clock após a igualdade entre TCNT1 e OCR1A é válida, logo podendo ser usado para executar uma interrupção caso OCIE1A também esteja ativado.

28 OCF1B (Output Compare B Match Flag) é ativado no ciclo de clock após a igualdade entre TCNT1 e OCR1B é válida, logo podendo ser usado para executar uma interrupção caso OCIE1B também esteja ativado. TOV1 (Overflow Flag 1) tem seu comportamento definido, ou seja, será ativado de acordo com os WGM13:2 e WGM11:0. Além disso, TOIE1 também precisa está ativado. Para maiores detalhes, observar a Tabela Códigos exemplos Para melhor compreender a forma de utilizar os registradores de controle junto com os timers para a geração de sinais PWM, vamos analisar o seguinte código. De forma geral, podemos dizer que o programa se resume a definir os registradores de controle para o timer1 com o propósito de utilizar o Phase and Frequency Correct PWM Mode e, em seguida, determina uma interrupção para quando ocorrer um overflow no contador. /* Geração de sinais PWM a partir do contador1 utilizando o modo de correção de fase e frequencia */ #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/sleep.h> #define OC1A 1 #define OC1B 2 /* Esta funcao servira para definir o modo de operacao do contador1, assim como estabelecer o valor de TOP, que constitui uma segunda maneira de alterar a frequencia de operacao, alem do fator divisor do clk de entrada */ void inicializa_pwm(void) { /* Primeiro, vamos definir os pinos OC1A e OC1B como saida. Para isso devemos inicializar a mascara de i/o da porta correspondente, o registrador DDROC */ DDRB = (1<<OC1A) (1<<OC1B); // OC1A = PB1 e OC1B = PB2 OCR1A = 0; OCR1B = 0; /* Vamos configurar o modo de operacao do PWM. Para isso serao necessarios os registradores TCCR1A:B */ /* TCCR1A: bit7(com1a1) bit6(com1a0) bit5(com1b1) bit4(com1b0) bit3(foc1a) bit2(foc1b) bit1(wgm11) bit0(wgm10)

29 COM1A1:0: Para o Phase and Frequency Correct PWM Mode, eles serao inicializados como 3, fazendo com que OC1A seja ativado (1) quando o valor do contador1 igualar o valor de comparacao OCR1A na subida, e desativado (0) na descida; COM1B1:0: Serao inicializados como 2, para observar o PWM invertido; FOC1A:b: Serao inicializados como 0, pois estamos operando no modo PWM e, como vimos, são exclusivos para modos Non-PWM; WGM11:0: Para operar no modo de operação desejado nesse exemplo, serã inicializados como 0; */ TCCR1A = 0xC0; // Simplificando a configuração de TCCR1A /* TCCR1B:bit7(ICNC1) bit6(ices1) bit5(void) bit4(wgm13) bit3(wgm12) bit2(cs12) bit1(cs11) bit0(cs10) ICNC1: Nao tem utilidade nesta aplicacao, portanto sera inicializado como 0 para evitar algum problema. ICES1: Neste exemplo, utilizaremos ICR1 para definir o valor de TOP, logo esse bit será inicializado como 0. WGM13:2: Para operar no modo de operação desejado nesse exemplo, serã inicializados como 2. CS12:0: Vamos inicializa-lo como 1, para utilizar o valor original do clk. */ TCCR1B = 0x11; // Simplificando a configuração de TCCR1B /* Em seguida vamos definir o valor maximo do contador1(top) utilizando o registrador ICR1. Para isso vamos utilizar o registrador ICR1 */ ICR1 = 0xFF; // TOP = MAX /* Para garantir que a interrupção ocorra no momento em que ocorrer um overflow no timer1, precisamos definir alguns bits no registrador TIMSK. */ /* TIMSK:bit7(OCIE2) bit6(toie2) bit5(ticie1) bit4(ocie1a) bit3(ocie1b) bit2(toie1) bit1(void) bit0(toie0) Como estamos utilizando o timer1, apenas os bits5:2 interessam. Por precaução, os outros serao definidos como 0. TICIE1: Como não interfere em nada, neste caso, iguala-se a 0.

30 OCIE1A: Como não estamos interessados em habilitar uma interrupção quando o valor do contador atinge o valor armazenado no registrador OCR1A, iguala-se a 0. OCIE1B: Segue o mesmo raciocinio do bit anterior. TOIE1: Para habilitar interrupcao quando ocorre overflow no contador1, iguala-se a 1. De acordo os bits definidos para WGM13:0, temos que a interrupcao correspondente(tov1) será ativada quando o contador1 atinigir o valor de BOTTOM. */ TIMSK = 0x04; // Simplificando a configuração de TIMSK // Definindo a rotina a ser executada durante a interrupção ISR(TIMER1_OVF_vect) { static uint16_t pwm; static uint8_t sentido; switch(sentido) { case 1: if(++pwm == ICR1) sentido = 0; break; } case 0: if(--pwm == 0) sentido = 1; break; } OCR1A = pwm; OCR1B = pwm; // Rotina principal do programa int main(void) { inicializa_pwm(); while(1) sleep_mode(); } return(0); Assim, após a definição de todos os registradores de controle, observamos que a interrupção é utilizada para fazer com que o contador incremente de BOTTOM até MAX e, em seguida, de MAX até BOTTOM, como desejado no modo de operação utilizada em nosso exemplo. Toda vez que a interrupção é executada, temos que o nível lógico do sinal PWM no pino de saída é alterado.

31 8. USART Em diversas situações, a execução de programas e a tomada de decisões por parte do microprocessador empregado no controle de alguma ou uma série de tarefas depende de ordens ou dados externos. Uma maneira simples e versátil de estabelecer a comunicação entre AVR s ou entre um AVR e um hardware periférico ou mesmo um PC ou qualquer que seja o dispositivo a se comunicar com o AVR, é a USART (Universal Synchronous Asynchronous serial Receiver and Transmitter). A USART difere da tradicional RS232 somente pelos níveis de tensão utilizados (na RS232 0 є (3V,25V) e 1 є(-3v,-25v) ). Desta forma, com o auxilio de apenas um adaptador de nível de tensão (MAX232, por exemplo), podemos acoplar um PC diretamente a um AVR através da porta serial. Existem diversas configurações possíveis para a interface USART, dado que se deve escolher tanto entre o modo síncrono (clock MASTER ou SLAVE) ou o assíncrono de operação, quanto às características de protocolo como nº de bits de dados, nº de bits de parada, tipo de paridade e taxa de transmissão. O controle dessas variáveis, que definem a transmissão, é realizado obviamente através de registradores. No entanto, antes de descrever estes registradores é importante saber como determinar o fator UBRR (USART Baud Rate Register). Ele especifica a taxa de amostragem da porta, portanto é fundamental inicializá-lo com um valor correto, para que transmissor e receptor estejam sincronizados. Como o AVR possui um clk interno, o calculo de UBRR está atrelado a este valor, dessa forma podemos calcular UBRR: É importante lembrar que esta formula é adequada para o modo de operação que seguiremos neste tutorial. Caso fosse utilizado um modo alternativo, como o Asynchronous Double Speed Mode(fator 8 ao invés de 16 no denominador), ou os Modos síncronos obteríamos uma formula diferente (fator 2 ao invés de 16 no denominador). 8.1 Registradores de Controle Agora, podemos prosseguir e detalhar os registradores envolvidos. I) USART Data Register - UDR Registrador que contém os dados recebidos e a serem enviados. Apesar de estarem endereçados no mesmo registrador, os dados recebidos e transmitidos estão atrelados a pinos diferentes da porta D: RXD(PD0) e TXD(PD1).

32 Deve-se ressaltar que só é permitido utilizar a operação de escrita quando a flag UDRE alocada no registrador UCSRA está ativada, se não, a mesma é simplesmente ignorada. II) USART Control and Status Register A UCSRA Bit 7 - RXC USART Receive Complete Este bit sinaliza quando há dados não-lidos no buffer de entrada. Pode ser utilizado como flag de interrupção através do bit RXCIE alocado no registrador UCSRB. Bit 6 TXC USART Transmit Complete Este bit sinaliza quando o buffer de transmissão está vazio. Pode, da mesma forma, ser utilizado como flag de interrupção através do bit TXCIE alocado no registrador UCSRB. Bit 5 UDRE USART Data Register Empty Indica quando o buffer de transmissão esta pronto para receber dados. Basicamente nos diz que o AVR está pronto para enviar uma mensagem nova. Também é um flag que, se habilitado através do bit UDRIE alocado no registrador UCSRB, pode ser utilizado para realizar interrupções. Bit 4 FE Frame Error Sinaliza quando ocorre um erro no formato da recepção, ou seja, o primeiro bit de parada possui um valor incorreto. Este flag só é válido enquanto o valor de UDR não é lido, portanto, para ser monitorado, este deve ser lido antes de UDR, o mesmo vale para DOR e PE. É importante que quando formos escrever em UCSRA, deveremos escrever 0 neste bit. Bit 3 DOR Data OverRun Indica que houve uma indicação de nova mensagem enquanto os buffers de entrada estavam cheios, ou seja, uma nova mensagem chegou e não pôde ser lida. É importante que quando formos escrever em UCSRA, deveremos escrever 0 neste bit. Bit 2 PE Parity Error Avisa quando ocorre um erro de paridade na mensagem recebida. É importante que quando formos escrever em UCSRA, deveremos escrever 0 neste bit. Bit 1 U2X Double the USART Transmission Speed Dobra a velocidade de funcionamento assíncrona. Quando for utilizada a velocidade normal ou modos síncronos deve ser inicializado como 0. Bit 0 MPCM Multi-processor Communication Mode

33 Habilita a comunicação multiprocessador, que será abordada posteriormente. Atua no sentido de filtrar as mensagens que contem endereços, ignorando as que contêm dados. III) USART Control and Status Register B UCSRB Bit 7 - RXCIE RX Complete Interrupt Enable Quando é ativado, temos que este bit habilita interrupções para a flag RCX. Bit 6 TXC USART Transmit Complete Quando é ativado, temos que este bit habilita interrupções para a flag TCX. Bit 5 UDRE USART Data Register Empty Quando é ativado, temos que este bit habilita interrupções para a flag UDRE. Bit 4 RXEN Receiver Enable Ativa o receptor da USART. Caso não seja ativado, o pino comporta-se como um i/o normalmente. Bit 3 TXEN Transmitter Enable Ativa o transmissor da USART. Caso não seja ativado, o pino comporta-se como um i/o normalmente. Entretanto, enquanto houver mensagens pendentes ou mensagens sendo transmitidas não surtirá efeito. Bit 2 UCSZ2 Character Size Combinado com UCSZ1:0, o qual está alocado no registrador UCSRC, define a quantidade de bits de dados em cada mensagem. Bit 1 RXB8 Receive Data Bit 8 Comporta-se como nono bit de dados recebido quando a quantidade de bits de dado em cada mensagem é igual a 9. Deve ser lido antes de UDR, pois após a leitura deste, RXB8 é apagado. Bit 0 TXB8 Transmit Data Bit 8 Mesma função de RXB8, mas para transmissão. Neste caso, deve ser escrito antes de UDR, para que seja mandado. IV) USART Control and Status Register C UCSRC Existe um detalhe com relação ao UCSRC. Ele compartilha com UBRRH a mesma localização de i/o. Sendo assim, para escrevê-lo, é necessário ativar URSEL, caso contrário o valor será escrito em UBRRH.

34 Bit 7 - URSEL Register Select Como explanado anteriormente, este bit seleciona qual dos registradores será escrito. Bit 6 - UMSEL USART Mode Select Seleciona o modo de operação: assíncrono (0) ou síncrono (1). Bit 5:4 UPM1:0 Parity Mode Estes dois bits definem os bits de paridade da mensagem. Para maiores informações, observar a Tabela 8.1. Tabela 8.1 Configurações dos bits UPM Bit 3 - USBS Stop Bit Select Seleciona o número de bits de parada: 1-bit (0) ou 2-bits (1). Bit 2:1 UCSZ1:0 Character Size Como exposto anteriormente, junto com UCSZ2 estes bits definem o Character Size, ou seja, a quantidade de bits de dados em cada mensagem. Para maiores informações, observar a Tabela 8.2. Tabela 8.2 Configurações dos bits UCSZ

35 Bit 0 UCPOL Clock Polarity Define as bordas utilizadas para amostragem e transmissão de dados quando se utiliza o modo síncrono. Deve ser escrito como 0 quando o modo a ser utilizado é o assíncrono. Para maiores informações, observar a Tabela 8.3. Tabela 8.3 Configurações do bit UCPOL V) USART Baud Rate Registers UBRRL e UBRRHs São os registradores que armazenam o valor que será utilizado para calcular a taxa de amostragem e transmissão de dados, de acordo com a fórmula apresentada anteriormente. UBRRH constitui os 4 bits mais significativos de UBRR. Além disso, temos que definir URSEL como 0 para que a operação de escrita seja em UBRRH e não em UCSRC. Os outros bits são reservados, mas devem ser escritos como 0 quando estivermos escrevendo em UBRRH por segurança. Além disso, temos que UBRRL armazena os bits menos significativos de UBRR. 8.2 Códigos Exemplos Uma vez que descrevemos os registradores envolvidos na interface USART e como cada um funciona, estamos aptos a gerar um código. Inicialmente, vamos a um exemplo simples de envio de mensagem. Primeiramente vamos escrever a função transmitir. Esta função recebe a mensagem a ser enviada, espera pela sinalização de que o buffer está apto a receber dados e, portanto, enviar uma nova mensagem. No programa principal devemos definir o modo de utilização. Neste caso, foi configurada uma transmissão feita a 9600 bps, considerando um clk interno de 1MHz, assíncrona, com 8 bits de dados, paridade ímpar e apenas 1 bit de parada. Em seguida, habilitamos UDRE. Os registradores foram escritos explicitando-se cada bit, mas poderiam ter sido simplesmente atribuídos seus valores hexadecimais, por exemplo, poderíamos ter escrito UCSRC = 0xB6.

Sistemas Microprocessados

Sistemas Microprocessados Sistemas Microprocessados satoutfpredubr http://pessoal.utfpr.edu.br/sato/ Temporizadores e Contadores do ATmega8 satoutfpredubr Sobre o material Essas transparências foram

Leia mais

Sistemas Embarcados:

Sistemas Embarcados: Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Sistemas Embarcados: Temporizadores e Contadores DCA0119 Sistemas Digitais Heitor Medeiros Florencio Temporizadores

Leia mais

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

Sistema Digitais. Bacharelado de Informática UEM DIN - Prof. Elvio 2017 5197 - Sistema Digitais Bacharelado de Informática UEM DIN - Prof. Elvio 2017 Roteiro ATmega328 (SPI) ATmega328 (USART) Introdução Interfaces de comunicação Interface Síncrona HW mais simples que interface

Leia mais

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

Plano de Aula. 1 o semestre. Aula número 010 Interrupções Internas Timers. Uso de interrupções internas produzidas pelos timers Diretoria de Curso Plano de Aula 1 o semestre Nome do curso Eng. Ciências da Computação + TI + TADS + Eng. Elétrica Nome da Unidade Curricular Microprocessadores e Microcontroladores Aula número 010 Tema

Leia mais

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

Sistema Digitais. Bacharelado de Informática UEM DIN - Prof. Elvio 2017 5197 - Sistema Digitais Bacharelado de Informática UEM DIN - Prof. Elvio 2017 Roteiro ATmega328 (Interrupções) ATmega328 (Interrupções Externas) ATmega328 (Portas de E/S) ATmega328 (Temporizador/Contador

Leia mais

Sistemas Microprocessados

Sistemas Microprocessados Sistemas Microprocessados satoutfpredubr http://pessoal.utfpr.edu.br/sato/ Interrupções no ATmega8 satoutfpredubr Sobre o material Essas transparências foram baseadas no manual

Leia mais

Aula 10 Microcontrolador Intel 8051 Parte 1

Aula 10 Microcontrolador Intel 8051 Parte 1 Aula 10 Microcontrolador Intel 8051 Parte 1 SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Marcelo A. C. Vieira SEL 0415 Microcontroladores Grupo de Sistemas Digitais n Microcontrolador é o nome

Leia mais

Jadsonlee da Silva Sá

Jadsonlee da Silva Sá Introdução aos Sistemas Microcontrolados Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br www.univasf.edu.br/~jadsonlee.sa Introdução aos Sistemas Microcontrolados Assembly, C, java,... Circuito Reset

Leia mais

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

Interrupções do Interrupções Gabriel Kovalhuk. UTFPR DAELN - Tecnologia em Mecatrônica Industrial Interrupções do 8051 Interrupções Interrupções do 8051 Evento aleatório à sequência normal do programa; Quando ocorre o evento, o programa é desviado para a função de atendimento da interrupção; O endereço

Leia mais

Introdução aos microcontroladores Microcontroladores e microprocessadores Tecnologia em Manutenção Industrial

Introdução aos microcontroladores Microcontroladores e microprocessadores Tecnologia em Manutenção Industrial Introdução aos microcontroladores Microcontroladores e microprocessadores Tecnologia em Manutenção Industrial 1 Definição de microcontroladores É um circuito integrado que pode ser programado para realização

Leia mais

Microcontrolador 8051

Microcontrolador 8051 Microcontrolador 8051 Inicialmente fabricado pela INTEL, atualmente fabricado por várias empresas; Possui uma grande variedade de dispositivos, com diversas características, porém compatíveis em software;

Leia mais

Acetatos de apoio às aulas teóricas

Acetatos de apoio às aulas teóricas Microprocessadores e Aplicações Acetatos de apoio às aulas teóricas Ana Cristina Lopes Dep. Engenharia Electrotécnica http://orion.ipt.pt anacris@ipt.pt Ana Cristina Lopes, 22 de Novembro de 2004 Microprocessadores

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I BARRAMENTO Slide 1 Sumário Introdução Componentes de Computador Funções dos Computadores Estruturas de Interconexão Interconexão de Barramentos Slide 2 Introdução

Leia mais

Sistemas Embarcados:

Sistemas Embarcados: Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Sistemas Embarcados: Interrupções DCA0119 Sistemas Digitais Heitor Medeiros Florencio Tópicos Conceito de

Leia mais

07/06/2015. Outras características importantes em Microprocessadores/Microcontroladores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

07/06/2015. Outras características importantes em Microprocessadores/Microcontroladores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Redução de Potência de Operação As versões CHMOS (89C51, 89S52, etc ) da família MCS-51 possuem dois modos de controle de redução de potência de operação do chip.

Leia mais

Estrutura Básica de um Computador

Estrutura Básica de um Computador SEL-0415 Introdução à Organização de Computadores Estrutura Básica de um Computador Aula 2 Prof. Dr. Marcelo Andrade da Costa Vieira INTRODUÇÃO n Organização Æ implementação do hardware, componentes, construção

Leia mais

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

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador; 1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e

Leia mais

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

Introdução ao PIC. Guilherme Luiz Moritz 1. 6 de novembro de DAELT - Universidade Tecnológica Federal do Paraná Guilherme Luiz Moritz 1 1 DAELT - Universidade Tecnológica Federal do Paraná 6 de novembro de 2013 Características do PIC Arquitetura Harvard RISC, 35 instruções 8 a 84 pinos Mais de 180 modelos Vários

Leia mais

Prof. Adilson Gonzaga

Prof. Adilson Gonzaga Prof. Adilson Gonzaga Outras características importantes em Microprocessadores/Microcontroladores Redução de Potência de Operação As versões CHMOS (89C51, 89S52, etc ) da família MCS-51 possuem dois modos

Leia mais

Sistemas Embarcados:

Sistemas Embarcados: Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Sistemas Embarcados: Microcontroladores DCA0119 Sistemas Digitais Heitor Medeiros Florencio Sistemas Embarcados

Leia mais

COMUNICAÇÃO SERIAL. Prof. Clayrton Henrique Microprocessadores Aula 30 Rev.02

COMUNICAÇÃO SERIAL. Prof. Clayrton Henrique Microprocessadores Aula 30 Rev.02 COMUNICAÇÃO SERIAL Prof. Clayrton Henrique Microprocessadores Aula 30 Rev.02 Roteiro Introdução EIA RS232 UART Arquitetura Registradores Especiais Configuração Exemplo Referências Introdução Serial É o

Leia mais

INTRODUÇÃO: MICROCONTROLADORES

INTRODUÇÃO: MICROCONTROLADORES INTRODUÇÃO: MICROCONTROLADORES MICROCONTROLADOR X MICROPROCESSADOR Baixa capacidade de processamento Freq. Operação em MHz Custo de R$ 7,00 a 30,00 Aplicações mais restrita Alta capacidade de processamento

Leia mais

Barramento. Prof. Leonardo Barreto Campos 1

Barramento. Prof. Leonardo Barreto Campos 1 Barramento Prof. Leonardo Barreto Campos 1 Sumário Introdução; Componentes do Computador; Funções dos Computadores; Estrutura de Interconexão; Interconexão de Barramentos Elementos de projeto de barramento;

Leia mais

Sistema Digitais. Bacharelado de Informática UEM DIN - Prof. Elvio v. 17a

Sistema Digitais. Bacharelado de Informática UEM DIN - Prof. Elvio v. 17a 5197 - Sistema Digitais Bacharelado de Informática UEM DIN - Prof. Elvio v. 17a Roteiro A Família AVR Introdução ao ATmega328 Características Gerais Memórias Família AVR AVR = Advanced Virtual RISC Fundadores

Leia mais

Experimento 6 Conversor analógico digital e comunicação serial

Experimento 6 Conversor analógico digital e comunicação serial Experimento 6 Conversor analógico digital e comunicação serial Objetivo: O objetivo deste experimento é verificar o funcionamento e a utilização do conversor analógico digital e da porta de comunicação

Leia mais

Microcontrolador 8051:

Microcontrolador 8051: Microcontrolador 8051: Fonte: CORRADI 2009 O Microcontrolador 8051: Começou a ser produzido no início da década de 80, pela Intel; Hoje é fabricado por várias empresas e com muitas variações; Atualmente,

Leia mais

Controladores do IBM-PC. Gustavo G. Parma

Controladores do IBM-PC. Gustavo G. Parma Controladores do IBM-PC Gustavo G. Parma IBM-PC baseado em ISA Sistema de interrupção do x86 Duas entradas de solicitação de interrupção NMI: Non-maskable interruption Erro de paridade da RAM Channel Check

Leia mais

Plano de Aula. 1 o semestre. Cronômetro Interrupções, Timers. Utilizar interrupções para criar um cronômetro com parciais

Plano de Aula. 1 o semestre. Cronômetro Interrupções, Timers. Utilizar interrupções para criar um cronômetro com parciais Diretoria de Curso Plano de Aula 1 o semestre Nome do curso Nome da Unidade Curricular Aula número Tema Período Turma Eng. Ciências da Computação + TI + TADS + Eng. Elétrica Microprocessadores e Microcontroladores

Leia mais

Lista de Exercícios A2

Lista de Exercícios A2 Lista de Exercícios A2 Nota: Aluno: RA: Curso: Turma: 1 1 Em um sistema microprocessado, interrupção é o nome dado a um mecanismo que permite interromper a execução normal do programa, para atender a um

Leia mais

ARDUINO. Profº. Engº. Robson Dias Ramalho

ARDUINO. Profº. Engº. Robson Dias Ramalho ARDUINO Profº. Engº. Robson Dias Ramalho 3. Microprocessador (E/S) 4. Memória RAM (E/S) 5. Placa de vídeo (E/S) 8. Disco Rígido (E/S) 9. Mouse (Saída) 10. Teclado (E/S) 2. Placa mãe (barramento de dados)

Leia mais

Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP. Memórias de Dados e de Programa

Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP. Memórias de Dados e de Programa 4. Memórias de Dados e de Programa Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP 4.1 Memórias Semicondutoras Algumas definições Célula: Dispositivo de armazenamento de 1 bit. Palavra:

Leia mais

Comunicação Serial PIC16F877A. Leandro Resende Mattioli. Centro Federal de Educação Tecnológica de Minas Gerais Unidade Araxá

Comunicação Serial PIC16F877A. Leandro Resende Mattioli. Centro Federal de Educação Tecnológica de Minas Gerais Unidade Araxá Síncrona Assíncrona PIC16F877A Leandro Resende Mattioli Centro Federal de Educação Tecnológica de Minas Gerais Unidade Araxá Sumário Síncrona Assíncrona 1 2 Síncrona 3 Assíncrona 4 5 Síncrona Assíncrona

Leia mais

Lista de Exercícios 2

Lista de Exercícios 2 Conceitos envolvidos: a) Contadores e Temporizadores b) Interface serial RS232 c) Interrupções Lista de Exercícios 2 1. Fazer um contador hexadecimal que coloque o valor de contagem na porta P1 em intervalos

Leia mais

MSP430 - Arquitertura

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

Leia mais

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca PCS-2529 Introdução aos Processadores Prof. Dr. Paulo Sérgio Cugnasca 1 2 Existem 4 esquemas diferentes de E/S possíveis, cada um se aplicando em uma determinada situação. E/S Programada. E/S Acionada

Leia mais

ELE Microprocessadores I

ELE Microprocessadores I ELE 1078 - Microprocessadores I AULA 13 Conjunto de Instruções do Microprocessador 8085A - Entrada e Saída (I/O) - 13.1 - Grupos de Instruções As instruções no 8085 são distribuídas em 5 grupos: Grupo

Leia mais

Organização de Memórias

Organização de Memórias Intel 8051 O Intel 8051 é um microcontrolador de 8 bits que pertence a família MCS-51 da Intel e foi lançado em 1977. É tido como o microcontrolador mais popular do mundo, pois é muito versátil e possui

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Entrada e Saída Slide 1 Entrada e Saída Dispositivos Externos E/S Programada Organização e Arquitetura de Computadores I Sumário E/S Dirigida por Interrupção

Leia mais

Objetivos MICROCONTROLADORES HARDWARE. Aula 03: Periféricos. Prof. Mauricio. MICRO I Prof. Mauricio 1. Arquitetura de um Microcontrolador

Objetivos MICROCONTROLADORES HARDWARE. Aula 03: Periféricos. Prof. Mauricio. MICRO I Prof. Mauricio 1. Arquitetura de um Microcontrolador MICROCONTROLADORES HARDWARE 1 Prof. Mauricio Aula 03: Objetivos 2 Arquitetura de um Microcontrolador Unidade Central de Processamento Portas de Entrada e Saída Porta Serial Temporizador / Contador Conversor

Leia mais

Disciplina: Arquitetura de Computadores

Disciplina: Arquitetura de Computadores Disciplina: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof a. Carla Katarina de Monteiro Marques UERN Introdução Responsável por: Processamento e execução de programas armazenados na

Leia mais

Anatomia do Arduino Bootloader

Anatomia do Arduino Bootloader Anatomia do Arduino Bootloader Fábio Olivé (fabio.olive@gmail.com) Tópicos A plataforma Arduino A família Atmel AVR ATmega Padronização da configuração e uso do ATmega Detalhando o ATmega328P Especificações

Leia mais

SSC510 Arquitetura de Computadores 1ª AULA

SSC510 Arquitetura de Computadores 1ª AULA SSC510 Arquitetura de Computadores 1ª AULA REVISÃO DE ORGANIZAÇÃO DE COMPUTADORES Arquitetura X Organização Arquitetura - Atributos de um Sistema Computacional como visto pelo programador, isto é a estrutura

Leia mais

Programa Trainee 2012 Módulo 4 Microcontroladores AVR

Programa Trainee 2012 Módulo 4 Microcontroladores AVR Programa Trainee 2012 Módulo 4 Microcontroladores AVR Conteúdo 01 Arquitetura de microcontroladores AVR Mayara de Sousa Prof. Leandro Schwarz Tempo Estimado 2 h.a. Projeto de Placas de Circuito Impresso

Leia mais

UNIVERSIDADE PAULISTA (UNIP) Curso de Engenharia Mecatrônica Disciplina: Microprocessadores e Microcontroladores (MM) LISTA III

UNIVERSIDADE PAULISTA (UNIP) Curso de Engenharia Mecatrônica Disciplina: Microprocessadores e Microcontroladores (MM) LISTA III UNIVERSIDADE PAULISTA (UNIP) Curso de Engenharia Mecatrônica Disciplina: Microprocessadores e Microcontroladores (MM) LISTA III Orientações: Esta lista de Exercícios deve ser entregue juntamente com a

Leia mais

Família de Microcontroladores AVR

Família de Microcontroladores AVR www.iesa.com.br 1 AVR é o nome dado a uma linha ou família de microcontroladores fabricada pela empresa Atmel nos Estados Unidos. A sigla AVR é em homenagem a dois estudantes de doutorado de uma universidade

Leia mais

Sistemas Microprocessados

Sistemas Microprocessados Sistemas Microprocessados satoutfpredubr http://pessoal.utfpr.edu.br/sato/ A satoutfpredubr Sobre o material Essas transparências foram baseadas no manual do ATmega8 da Atmel,

Leia mais

Guia da Placa de desenvolvimento PD Mega16 N1

Guia da Placa de desenvolvimento PD Mega16 N1 Guia da Placa de desenvolvimento PD Mega16 N1 Este tutorial consiste mostrar detalhes de hardware da placa de desenvolvimento PD Mega16 N1, necessário para iniciar a programação e testes. Boa aprendizagem...

Leia mais

Interrupções. O que é uma interrupção? Como funciona uma interrupção no AVR?

Interrupções. O que é uma interrupção? Como funciona uma interrupção no AVR? Interrupções O que é uma interrupção? Irei agora começar a falar de interrupções a partir do mais básico o que é uma interrupção? Uma interrupção é basicamente uma pausa no programa, enquanto o processador

Leia mais

Microcontroladores. Interface Serial e RTC. Prof. Guilherme Peron Prof. Heitor S. Lopes Prof. Ronnier Rohrich Prof. Rubão

Microcontroladores. Interface Serial e RTC. Prof. Guilherme Peron Prof. Heitor S. Lopes Prof. Ronnier Rohrich Prof. Rubão Microcontroladores Interface Serial e RTC Prof. Guilherme Peron Prof. Heitor S. Lopes Prof. Ronnier Rohrich Prof. Rubão Conceitos Paridade Bit acrescentado ao dado, destinado à detecção de erro. A paridade

Leia mais

Interrupções 8051 Porta Serial

Interrupções 8051 Porta Serial Interrupções 8051 Porta Serial Disciplina de Microcontroladores Prof. Ronnier Prof. Rubão Finalidade Introduzir ao aluno a ideia de que se possa interromper o programa, de forma temporária, e desta vez

Leia mais

Família 8051 (introdução) 2011/1

Família 8051 (introdução) 2011/1 Família 8051 (introdução) 2011/1 Refresh Microprocessador vs. microcontrolador. Periféricos built-in. Single-chip computer 2 Objetivos Histórico Modelos da família original Principais características Diagrama

Leia mais

Prof. Adilson Gonzaga

Prof. Adilson Gonzaga Prof. Adilson Gonzaga Temporização da CPU Todos os Microcontroladores da família MCS-51 têm um oscilador interno. Para uso deste oscilador deve-se conectar um cristal entre os pinos Xtal1 e Xtal2 da CPU.

Leia mais

Introdução ao Uso do LCD Inteligente (Versão Preliminar) Por Gilson Yukio Sato. Introdução

Introdução ao Uso do LCD Inteligente (Versão Preliminar) Por Gilson Yukio Sato. Introdução Introdução ao Uso do LCD Inteligente (Versão Preliminar) Por Gilson Yukio Sato Introdução O display de cristal líquido (LCD) inteligente é bastante usado como dispositivo de interface entre o usuário e

Leia mais

Microprocessadores. São máquinas elétricas onde podemos armazenar instruções lógicas, aritméticas e de tomada de decisão;

Microprocessadores. São máquinas elétricas onde podemos armazenar instruções lógicas, aritméticas e de tomada de decisão; Microprocessadores São máquinas elétricas onde podemos armazenar instruções lógicas, aritméticas e de tomada de decisão; CPU (Central Processing Unit Unidade Central de Processamento) CPU (Central Processing

Leia mais

FACULDADE LEÃO SAMPAIO

FACULDADE LEÃO SAMPAIO FACULDADE LEÃO SAMPAIO Microcontroladores Curso de Análise e Desenvolvimento de Sistemas 1 Componentes CPU Memórias Dispositivos de Entrada/Saída (E/S) Input/Output (I/O) 2 CPU A CPU busca informações

Leia mais

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

Circuitos Digitais. Tipos de circuitos digitais: Circuitos combinacionais Circuitos sequenciais 1 Tipos de circuitos digitais: Circuitos combinacionais Circuitos sequenciais Circuitos Digitais Circuito combinacional: Circuito não é capaz de armazenar um valor Possui portas lógicas conectadas para

Leia mais

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação. Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização e Arquitetura Básicas

Leia mais

Aula 16: UCP: Conceitos Básicos e Componentes

Aula 16: UCP: Conceitos Básicos e Componentes Aula 16: UCP: Conceitos Básicos e Componentes Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) UCP: Conceitos Básicos e Componentes FAC 1 / 34

Leia mais

Porta Série SÉRIE x PARALELO PORTA SÉRIE. Comunicação série SÉRIE PARALELA

Porta Série SÉRIE x PARALELO PORTA SÉRIE. Comunicação série SÉRIE PARALELA Porta Série 8051 Aplicações de Microprocessadores 2006/2007 SÉRIE x PARALELO SÉRIE EMISSOR RECEPTOR PARALELA EMISSOR RECEPTOR 2 2 PORTA SÉRIE Comunicação série Síncrona Existe um sinal de relógio entre

Leia mais

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES SEL 0415 Aula 11 Microcontrolador 8051 Parte 3 SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Marcelo A. C. Vieira SEL 415 INTERRUPÇÃO Estrutura de Interrupção do 8051 n 5 Fontes [ 2 Externas

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Unidade Central de Processamento (CPU) Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br Baseado nos slides do capítulo

Leia mais

ENGENHARIA DE SISTEMAS MICROPROCESSADOS

ENGENHARIA DE SISTEMAS MICROPROCESSADOS ENGENHARIA DE SISTEMAS MICROPROCESSADOS Prof. Pierre Vilar Dantas Turma: 0040-A Horário: 4N Aula 01-26/07/2017 Plano de ensino Professor www.linkedin.com/in/pierredantas/ TÓPICOS Conceitos gerais. Evolução

Leia mais

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

Portas de entrada e saída; Interrupções; Interrupções externas; Temporizadores Contadores; Interface Serial Periféricos Integrados do 8051 Portas de entrada e saída; Interrupções; Interrupções externas; Temporizadores Contadores; Interface Serial Periféricos Integrados do 8051 Portas de entrada e saída O 8051

Leia mais

Atividade de laboratório 005. Prof: Carlos Eduardo de Brito Novaes 20 de maio de Alunos RA Nome Curso Semestre

Atividade de laboratório 005. Prof: Carlos Eduardo de Brito Novaes 20 de maio de Alunos RA Nome Curso Semestre Atividade de laboratório 005 Prof: Carlos Eduardo de Brito Novaes 20 de maio de 2016 Alunos RA Nome Curso Semestre Resumo Atividade da unidade curricular: Laboratório Integrado de Microprocessadores e

Leia mais

Sistemas Operacionais. Conceitos de Hardware

Sistemas Operacionais. Conceitos de Hardware Sistemas Operacionais Conceitos de Hardware Sumário 1. Introdução 7. RISC e CISC 2. Processador 1. Operações de Processamento 2. Unidade de Controle 3. Ciclos de uma Instrução 3. Memória 1. Memória Principal

Leia mais

14/3/2016. Prof. Evandro L. L. Rodrigues

14/3/2016. Prof. Evandro L. L. Rodrigues SEL 433 APLICAÇÕES DE MICROPROCESSADORES I SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Prof. Evandro L. L. Rodrigues Tópicos do curso Conceitos básicos - Aplicações e utilizações dos microcontroladores

Leia mais

ELE Microprocessadores I. AULA 12 Arquitetura do Microprocessador Interface com as memórias

ELE Microprocessadores I. AULA 12 Arquitetura do Microprocessador Interface com as memórias ELE 1078 - Microprocessadores I AULA 12 Arquitetura do Microprocessador 8085 -Interface com as memórias 12.1 - Estrutura das Memórias Memória de Leitura / Escrita (R / W memory). Grupo de registradores;

Leia mais

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL INTRODUÇÃO À TECNOLOGIA DA ORGANIZAÇÃO COMPUTACIONAL PROFESSOR CARLOS MUNIZ ORGANIZAÇÃO DE UM COMPUTADOR TÍPICO Memória: Armazena dados e programas Processador (CPU - Central Processing Unit): Executa

Leia mais

William Stallings Computer Organization and Architecture

William Stallings Computer Organization and Architecture William Stallings Computer Organization and Architecture Capítulo 3 Como o Processador Funciona Arquitetura von Neumann Como discutido anteriormente, os projetos dos computadores modernos são baseados

Leia mais

ELETRÔNICA DIGITAL II. AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR

ELETRÔNICA DIGITAL II. AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ELETRÔNICA DIGITAL II AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR acjunior@facthus.edu.br 1º SEMESTRE 2009 CONTEÚDO PROGRAMADO: 1 O que é um computador digital? 2 Como funcionam os computadores 3 O agente

Leia mais

Aplicações Avançadas de Microprocessadores. Professor: Marco Shawn Meireles Machado

Aplicações Avançadas de Microprocessadores. Professor: Marco Shawn Meireles Machado Aplicações Avançadas de Microprocessadores Professor: Marco Shawn Meireles Machado Iniciação aos sistemas microcontrolados Objetivos da Aula: Descrever os itens que compõem uma CPU; Detalhar a estrutura

Leia mais

Aula 12: Memória: Barramentos e Registradores

Aula 12: Memória: Barramentos e Registradores Aula 12: Memória: Barramentos e Registradores Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Memória: Barramentos e Registradores FAC 1 / 34

Leia mais

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

Descrição dos pinos de entrada e saída e de funções especiais. Descrição dos modos de acesso: individual e por porto Tópicos Descrição dos pinos de entrada e saída e de funções especiais Descrição dos modos de acesso: individual e por porto Acesso individual aos pinos Objetivos Compreender o que são periféricos em um

Leia mais

Microprocessadores I. Aula 6 Arquitetura do Microprocessador Pinagem e Diagrama de Temporização

Microprocessadores I. Aula 6 Arquitetura do Microprocessador Pinagem e Diagrama de Temporização Microprocessadores I Aula 6 Arquitetura do Microprocessador 8085 - Pinagem e Diagrama de Temporização 1 O 8085 contém em seu CI circuitos para executar operações de cálculos e comunicação com periféricos.

Leia mais

Disciplina : Microcontroladores AVR

Disciplina : Microcontroladores AVR Curso: Técnico em Automação Industrial Integrado ao Ensino Médio Disciplina : AVR Prof. Thiago Javaroni Prati Família AVR Os microcontroladores AVR da fabricante ATMEL são microcontroladores de 8 bits

Leia mais

Lista de Exercícios 1

Lista de Exercícios 1 Conceitos envolvidos: a) Contadores e Temporizadores b) Interface serial RS2322 c) Interrupções Lista de Exercícios 1 1. Fazer um contador hexadecimal que coloque o valor de contagem na porta P1 em intervalos

Leia mais

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES PROF. DEJAIR PRIEBE

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES PROF. DEJAIR PRIEBE ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES PROF. DEJAIR PRIEBE PROCESSADOR A função de um computador é executar tarefas com a finalidade de resolver problemas. Uma tarefa pode ser executada por meio de

Leia mais

SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

SEL-433 APLICAÇÕES DE MICROPROCESSADORES I SEL 433 APLICAÇÕES DE MICROPROCESSADORES I SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Apresentação do curso Critério de avaliação Média final = 0.8 * MP + 0.2 * ME onde MP = (P1 + P2) / 2 e ME = Notas

Leia mais

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

Tutoriais PET-Tele. Introdução à Amostragem de Sinais com o kit Arduino (Versão: A2016M06D21) Universidade Federal Fluminense UFF Escola de Engenharia TCE Curso de Engenharia de Telecomunicações TGT Programa de Educação Tutorial PET Grupo PET-Tele Tutoriais PET-Tele Introdução à Amostragem de Sinais

Leia mais

Microprocessadores CPU. Unidade de Controle. Prof. Henrique

Microprocessadores CPU. Unidade de Controle. Prof. Henrique Microprocessadores CPU Unidade de Controle Prof. Henrique Roteiro Registradores; Unidade de Controle Níveis de Complexidade Introdução Um sistema microprocessado conta com diversos dispositivos para um

Leia mais

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

AAAA AAAA SEL Aplicação de Microprocessadores I. Aula 5 Temporização e Interrupção. Marcelo Andrade da Costa Vieira SEL 0629 Aplicação de Microprocessadores I Aula 5 Temporização e Interrupção Marcelo Andrade da Costa Vieira Contagem de Tempo Contando tempo Existem 3 maneiras de contarmos tempo com os microcontroladores

Leia mais

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

ENG-1450 Microcontroladores e Sistemas Embarcados. Lab02 Apresentação Kit PicGenios Interrupção e Timers ENG-1450 Microcontroladores e Sistemas Embarcados Lab02 Apresentação Kit PicGenios Interrupção e Timers Atividades 1. Executar tarefas da aula anterior no kit 2. Exemplo1: 1.Acionar o LED por interrupção

Leia mais

Interrupção. Prof. Adilson Gonzaga

Interrupção. Prof. Adilson Gonzaga Interrupção Prof. Adilson Gonzaga Estrutura de Programação Assembly Programa Principal Chamada de Sub-rotina1 Programa Principal Chamada de Sub-rotina2 Sub-rotina1 Subrotina2 Programa Principal Chamada

Leia mais

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

Registros do 16F628A. Prof. Luiz Antonio Vargas Pinto   Prof. Vargas Registros do 16F628A www.mikroe.com Prof. Luiz Antonio Vargas Pinto www.vargasp.com STATUS (03) STATUS (03) Após RESET Chave dos bancos STATUS (03) Bit 7: IRP - Seleção de banco de registradores 0 - seleciona

Leia mais

Plano de Aula. 1 o semestre. Aula número 012 Periféricos Comunicação Serial. Conhecer os princípios de comunicação serial

Plano de Aula. 1 o semestre. Aula número 012 Periféricos Comunicação Serial. Conhecer os princípios de comunicação serial Diretoria de Curso Plano de Aula 1 o semestre Nome do curso Eng. Ciências da Computação + TI + TADS + Eng. Elétrica Nome da Unidade Curricular Microprocessadores e Microcontroladores Aula número 012 Tema

Leia mais

Processador: Conceitos Básicos e Componentes

Processador: Conceitos Básicos e Componentes Processador: Conceitos Básicos e Componentes Cristina Boeres Instituto de Computação (UFF) Fundamentos de Arquiteturas de Computadores Material baseado nos slides de Fernanda Passos Cristina Boeres (IC/UFF)

Leia mais

Acetatos de apoio às aulas teóricas

Acetatos de apoio às aulas teóricas Microprocessadores e Aplicações Acetatos de apoio às aulas teóricas Ana Cristina Lopes Dep. Engenharia Electrotécnica http://orion.ipt.pt anacris@ipt.pt Ana Cristina Lopes, 27 de Outubro de 2004 Microprocessadores

Leia mais

Capítulo 14. Expandindo as portas de comunicação 8031 com a PPI Interface PPI 8255

Capítulo 14. Expandindo as portas de comunicação 8031 com a PPI Interface PPI 8255 Capítulo 14 Expandindo as portas de comunicação 8031 com a PPI 8255 Como discutido ao longo do livro, o 8031 deixa 8 bits para controle genérico de dispositivos. Em situações nas quais se necessita um

Leia mais

Arquitetura e organização de computadores

Arquitetura e organização de computadores Arquitetura e organização de computadores 3º. Semestre - Sistemas de informação Prof. Emiliano S. Monteiro Classificação de computadores Grande porte: Supercomputadores e Mainframes Médio porte: Minicomputadores

Leia mais

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização Hardware: Componentes Básicos Arquitetura dos Computadores Dispositivos de Entrada Processamento Dispositivos de Saída Armazenamento Marco Antonio Montebello Júnior marco.antonio@aes.edu.br Sistema de

Leia mais

Prof. Adilson Gonzaga

Prof. Adilson Gonzaga Exemplo de Projeto com Microcontrolador MCS-51 Prof. Adilson Gonzaga Definições Iniciais: Microcontrolador Tamanho da Memória de Programa Interna define o tamanho da Memória de Programa Externa a ser utilizada.

Leia mais

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

Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia (Material Adaptado) Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia (Material Adaptado) Capítulo 3 Concorrência Agenda Introdução Interrupções e exceções Operações de Entrada/Saída Buffering

Leia mais

Introdução à Plataforma ARDUINO

Introdução à Plataforma ARDUINO MINICURSO Introdução à Plataforma ARDUINO PET Mecatrônica/BSI Geruza M. Bressan O que é um microcontrolador (MCU)? É um computador em um chip Processador Memória Entrada/Saída Controla ações e funções

Leia mais

Nome Endereço IRQ COM1 3F8 4 COM2 2F8 3 COM3 3E8 4 COM4 2E UART - Universal Asynchronous Receiver/Transmitter. descrição

Nome Endereço IRQ COM1 3F8 4 COM2 2F8 3 COM3 3E8 4 COM4 2E UART - Universal Asynchronous Receiver/Transmitter. descrição Capítulo 5 O estudo do funcionamento da porta série nos PC s, é o estudo da UART utilizada para a implementar. Os endereços na memória de entrada/saída, são referidos na tabela 1, em que COM1, COM2, COM3

Leia mais

Parte I Multiprocessamento

Parte I Multiprocessamento Sistemas Operacionais I Estrutura dos SO Prof. Gregorio Perez gregorio@uninove.br 2004 Parte I Multiprocessamento Roteiro 1 Multiprocessadores em Sistemas Fortemente Acoplados 1.1 1.2 1.3 Processamento

Leia mais

Sistemas Embarcados:

Sistemas Embarcados: Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Sistemas Embarcados: Interfaces de Entradas e Saídas DCA0119 Sistemas Digitais Heitor Medeiros Florencio

Leia mais

Mini relatório Controlo de Fase. Projecto ivlab Data Versão 2.1. Participantes Catarina Santiago Gabriel Silva Ricardo Cardoso

Mini relatório Controlo de Fase. Projecto ivlab Data Versão 2.1. Participantes Catarina Santiago Gabriel Silva Ricardo Cardoso Mini relatório Controlo de Fase Projecto ivlab Data 16-07-06 Versão 2.1 Participantes Catarina Santiago Gabriel Silva Ricardo Cardoso Docente Américo Azevedo 1. Propósito do documento Este documento visa

Leia mais

CURSO DE ELETRÔNICA DIGITAL OS FLIP-FLOPS E FUNÇÕES LÓGICAS EM CIRCUITOS INTEGRADOS

CURSO DE ELETRÔNICA DIGITAL OS FLIP-FLOPS E FUNÇÕES LÓGICAS EM CIRCUITOS INTEGRADOS LIÇÃO 7 OS FLIP-FLOPS E FUNÇÕES LÓGICAS EM CIRCUITOS INTEGRADOS Na lição anterior aprendemos como funcionam os principais tipos de flip-flops, verificando que, dependendo dos recursos que cada um possua,

Leia mais