Você está na página 1de 23

MICROCONTROLADORES - BSICO PIC Microchip

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 1/23

1. Introduo
As circunstncias que se apresentam hoje no campo dos microcontroladores tm os seus primrdios no desenvolvimento da tecnologia dos circuitos integrados. Este desenvolvimento tornou possvel colocar centenas de milhares de transistores num nico chip. Isso constituiu um pr-requisito para a produo de microprocessadores, e os primeiros computadores foram construdos adicionando perifricos externos tais como memria, linhas de entrada e sada, temporizadores e outros. Um crescente aumento do nvel de integrao permitiu o aparecimento de circuitos integrados contendo simultaneamente processador e perifricos. Foi assim que apareceu o primeiro chip contendo um microcomputador e que mais tarde haveria de ser designado por microcontrolador.

2. Histria
O primeiro microprocessador foi desenvolvido por uma ento pequena empresa chamada Intel (acrnimo de Integrated Electronics) nos primrdios dos anos 1970. O cliente era uma companhia japonesa de nome Busicon, que no comprou a idia. Como a Intel teve que arcar com os custos do desenvolvimento e no tinha um cliente que comprasse o produto, resolveu coloc-lo no mercado como um sistema microprocessador de uso geral (ou, como chamam em ingles, general purpose) para aplicaes onde componentes discretos de lgica digital eram empregados. O componente foi um sucesso e logo a Intel desenvolveu um novo microprocessador de 4 bits chamado 4004. Em 1974, um microprocessador mais poderoso de segunda gerao (denominado 8008) foi anunciado e fornecido como um componente simples, que foi rapidamente seguido pelo Intel 8080. Ambos, o 8008 e o 8080 eram alimentados a partir de uma fonte de 5 VCC, usando tecnologia N-MOS. No mesmo perodo, a Motorola lanou o seu primeiro microprocessador, denominado 6800, que possuia um processador de 8 bits com a mesma capacidade de processamento do Intel 8080. Nesta ocasio, a arquitetura interna usada no Intel 8080 e no Motorola 6800 eram muito diferentes. O Intel 8080 utilizava uma arquitetura de registros AX, BX, CX, DX e HL, todos de 16 bits porm, capazes de serem utilizados como pares de registros de 8 bits, isto , o registro AX poderia ser usado como dois registros separados AH e AL onde AH era a parte alta (H = high) do byte do registro AX, e AL era a parte baixa (L = low) do byte do registroAX. Desta forma, os registros de 16 bits AX, BX, CX, DX e HL poderiam ser utilizados como AH, AL, BH, BL, CH, CL, DH, DL, H e L, todos de 8 bits. O Intel 8080 possuia o mapa de I/O (Input/Output Entrada/Sada) separado da memria de dados. Isto significa que, para comandar entrada/sada do dispositivo, instrues especiais deveriam ser implementadas tais como IN para instruo de entrada e OUT para instruo de sada. O acesso memria de dados (que possuia um mapa diferente), utilizava a instruo MOV. O Motorola 6800 utilizava o que se chamava de Memory Mapped I/O (memria mapeada como I/O), o que significa que tanto a memria de dados quanto de Entrada/Sada dividiam o mesmo mapa. O conjunto de registros era muito menor, consistindo em dois acumuladores de 8 bits (A e B) e um registro indexador de 16 bits chamado X. Estes registros podem suportar uma gama de modos de enderaamento totalmente voltados para um nmero pequeno de registros (o que torna a programao tambm mais simples). Para se ter acesso a dados da memria ou das Entradas/Sadas necessrio utilizar uma instruo do tipo LDAA; para escrever dados na memria ou nas Entradas/Sadas necessrio utilizar uma instruo do tipo STAA. O acesso ao registro X dever ser via suas prprias instrues, isto , LDX e STX. Intel e Motorola mantiveram as diferenas fundamentais na arquitetura de seus processadores mesmo nos modelos mais modernos.
Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 2/23

No caso dos processadores desenvolvidos pela Intel, o modelo 8080 evoluiu no modelo 8085 (tambm com registros de 8 bits como no modelo 8080) at o processador de terceira gerao (com registro de 16 bits), o modelo 8086 que, na sua forma de pseudo-16 bits 8088, foi empregado na construo dos primeiros IBM PC (IBM Personal Computer). O modelo 8088 era o modelo 8086 com um barramento de dados de 8 bits, o que tornava fcil a interligao com os dispositivos de 8 bits existentes naquela ocasio. Na sequencia, foram seguidos pelos modelos 80286, 80386 (com processador de 32 bits), e o 80486, chegando aos modelos Pentium (com processadores de 64 bits) exitentes atualmente. A famlia 80x86 e Pentium foram desenvolvidos para aplicaes em computadores pessoais e possuem um vasto mapa de memria. Os processadores da Motorola seguiram caminho semelhante com o modelo 6800 que foi substitudo pelo 6809 (8 bits), o 68000 (16 bits), os 68010,68020 e 68030, utilizados em muitas estaes de trabalho e principalmente no modelos Apple MAC. O ncleo do processador Intel 8080 foi utilizado na linha de microcontroladores 8048 e 8051, que sobrevive at os dias atuais. A Intel, hoje, desenvolve uma gama de microcontroladores muito mais complexa que os modelos bsicos originais. Motorola seguiu pelo mesmo caminho com os microcontroladores baseados no modelo 6800 (6805,6808 e 6811, utilizado atualmente). Logo, muitos dos atuais microcontroladores so originrios nas famlias 8080 e 6800. Outros fabricantes, como a Rockwell que produziu microprocessadores com arquitetura 6800 (6502), enquanto que a Zilog desenvolveu o famoso Z80 (com arquitetura 8080). O desenvolvimento dos modelos mais recentes de microcontroladores utilizando a arquitetura Harvard e o uso de Instrues Reduzidas (RISC Reduced Instruction Set Computers) levou aos componentes comercializados pela Microchip (PIC), Motorola (MSP), STMicroelectronics (ST7) e outros. Este texto foi escrito em JUL/2005. O futuro vai, com certeza, aumentar esta histria.

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 3/23

3. Microprocessador versus Microcontrolador


Um microcontrolador difere de um microprocessador em vrios aspectos e o mais importante, a sua funcionalidade. Para que um microprocessador possa ser usado, outros componentes devem ser adicionados, tais como memria e componentes para receber e enviar dados (Entradas/Sadas). Em resumo, isso significa que o microprocessador o verdadeiro corao do computador.

Fig. 3.1 - Estrutura bsica do microprocessador

A fig.3.1 mostra a interconexo entre o microprocessador e a unidade externa de memria. Se houver a incluso de unidades de Entrada/Sada (I/O), novos componentes e interconexes devero ser acrescentadas. Por outro lado, o microcontrolador foi projectado para ter tudo num s. Nenhum outro componente externo necessrio nas aplicaes, uma vez que todos os perifricos necessrios j esto contidos nele.

Fig.3 2 - Estrutura bsica do microcontrolador

A fig.3 2 mostra a estrutura interna de um microcontrolador (no expandido) contendo todas as interfaces e memrias necessrias dentro de um nico encapsulamento, reduzindo drsticamente o nmero de componentes externos na aplicao.
Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 4/23

4. O que um Microcontrolador
Um microcontrolador um computador em um nico chip otimizado para controlar dispositivos externos enfatizando a auto-suficiencia e baixo custo. Inclui um ncleo contendo a Unidade Central de Proceessamento (CPU Central Processing Unit), memria de programa normalmente do tipo Flash, memria para dados dos tipos RAM e EEPROM, um ou mais temporizadores, entrada/sadas para ligao com elementos perifricos externos, tudo isto dentro de um nico circuito integrado. A fig. 4.1 mostra esquematicamente os dispositivos normais no interior de um microntrolador comercial:

Fig. 4.1 Microcontrolador Arquitetura Interna

Na sequencia, vamos descrever os diversos elementos do microcontrolador: 4.1. Memria Memria a parte do microcontrolador que tem a funo de guardar dados. Pode-se imaginar que uma memria como um armrio com diversas gavetas onde, em cada gaveta soguardadas diversas informaes. Se identificarmos cada gaveta do armrio com um nome especfico e nico para cada uma, ento o contedo de cada gaveta ser conhecido atravs do nome daquela gaveta. As memrias so componentes semelhantes ao armrio - para um determinado endereo, possvel obter o contedo deste endereo portanto, uma memria nada mais do que o conjunto de todos os locais de memria (gavetas) e endereamento nada mais que seleccionar um deles. Isto significa que precisamos seleccionar o endereo desejado (gaveta) e esperar que o contedo desse endereo seja apresentado (abrir a gaveta). Alm de ler um local de memria (ler o contedo da gaveta), tambm possvel escrever num endereo de memria (introduzir um contedo na gaveta). Isto feito utilizando uma linha adicional chamada linha de controle.
Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 5/23

A fig. 4.2 mostra um diagrama simplificado de memria. Para uma entrada especfica, obtem-se uma sada correspondente. A linha R/W (read/write - ler/escrever) utilizada do seguinte modo: R/W = 1 - operao de leitura l o contedo da localizao da memria R/W = 0 - operao de escrita escreve um contedo na localizao da memria

Fig. 4.2 Exemplo de Memria

A memria de um controlador utiliza 3 tipos bsicos: Memria de Programa: armazena o programa que o controlador utiliza quando em operao. Esta memria do tipo FLASH, isto , mesmo quando o dispositivo for desligado da fonte de alimentao, os dados armazenados nesta memria no so perdidos (apagados). Permite ser apagada e gravada inmeras vezes (cerca de 10.000 ciclos de gravao) o que torna seu uso de extrema importancia em microcontroladores. RAM (Randomic Access Memory): armazena os registros especiais bem como os resultados das operaes realizadas pelo programa. Uma vez desligada a fonte de alimentao, os valores contidos nesta memria so perdidos (apagados). EEPROM (Electrally Erasable Programable Read Only Memory): os registros que no devem ou no podem ser perdidos quando a fonte desligada so armazenados neste tipo de memria, que s pode ser gravada/apagada mediante comandos especficos. 4.2. Unidade Central de Processamento (CPU) Admitindo que existam 3 localizaes de memria em um bloco especfico para que se possa ter a capacidade de realizar operaes de somar, multiplicar, dividir, subtrair e mover os seus contedos de um local de memria para outro, este bloco recebe o nome de "Central Processing Unit" (CPU) ou Unidade Central de Processamento, e os locais de memria nela contidos chamam-se registros, conforme se pode ver na fig. 4.3.

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 6/23

Fig. 4.3 Exemplo de CPU

Os registros so locais de memria cujo papel ajudar a executar as vrias operaes matemticas ou quaisquer outras operaes com dados, quaisquer que sejam os locais em que estes se encontrem. 4.3. Barramento de Comunicao (Bus) Com dois blocos independentes (Memria e CPU), existe a necessidade de interligao entre eles para que, por exemplo, uma operao que some os contedos de dois locais da memria e guarde o resultado em outro local da memria seja realizada, isto , precisa de um caminho atravs do qual os dados possam passar de um bloco para outro. Esta interligao designada Barramento (Bus) que corresponde a um grupo de 8, 16 ou mais condutores que interliga eltricamente um bloco a outro. Existem dois tipos de barramento: Barramento de dados: interliga todos os blocos dentro do microcontrolador, o nmero de linhas depende do comprimento da palavra de dados (. Barramento de endereos: interliga a CPU com a Memria, o nmero de linhas depende da quantidade de memrias que devem ser endereadas. A fig.4.4 mostra a conexo entre a Memria e a CPU utilizando barramentos para ganhar funcionalidade.

Fig.4.4 Barramento interligando CPU com Memria

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 7/23

4.4. Entrada/Sada (I/O Input/Output) A Entrada/Sada (I/O) a porta de comunicao do microcontrolador com o mundo exterior. So designadas como PORT e podem reunir, de acordo com o modelo do controlador, diversas funes: Entrada Digital Sada Digital Entrada e Sada Digital Entrada Analgica Entrada/Sada de Comunicao Serial Outras de diversas aplicaes e complexidades

Fsica e eltricamente, o PORT est conectado com os pinos de conexo do circuito integrado logo, os circuitos externos podem enviar sinais e informaes ao microcontrolador bem como receber sinais e informaes do microcontrolador. Um PORT funciona como uma posio de memria, isto , possvel realizar uma operao de escrita bem como realizar uma operao de leitura desta posio de memria. Como est interligado ao exterior pelos pinos do circuito integrado, o resultado das operaes permitem controlar dispositivos externos e ler o estado dos dispositivos externos. A fig.4.5 mostra o diagrama simplificado de uma unidade de I/O para comunicao com o mundo externo ao microcontrolador.

Fig.4.5 Diagrama Simplificado da Unidade I/O

I/O digitais so comumente agrupadas no comprimento equivalente de um registro de 8 bits, que corresponde a um PORT, que pode ser configurado tanto como entrada como sada. Existem excees, que dependem do tamanho e da capacidade do microcontrolador onde um PORT pode conter apenas 1 bit, 4 bits ou 6 bits, considerando os modelos de mdia capacidade.

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 8/23

A fig.4.6 mostra um diagrama lgico simplificado do circuito de entrada, enquanto a fig.4.7 mostra um diagrama lgico simplificado do circuito de sada de um microcontrolador tpico.

Fig.4.6 Diagrama Simplificado de Entrada

Fig.4.7 Diagrama Simplificado de Sada

4.5. Comunicao Serial Os microcontroladores mais modernos costumam incluir dentro do circuito integrado um sistema de comunicao serial completo. Este sistema permite que haja um caminho simples para que o equipamento possa conversar tanto com outros controladores quanto com computadores. Os fabricantes j incluem, dentro do maquinrio de comunicao, o protocolo de transmisso e recepo de tal forma que o usurio no necessita de estudos mais profundos da forma como os dados (ou registros) so transmitidos/recebidos, apenas entender como colocar/retirar de um local apropriado (definido pelo fabricante) o dado e coloc-lo na memria para utilizao. Normalmente so previstas duas linhas independentes de comunicao a partir de dois pinos especficos: Tx para transmisso de dados Rx para recepo de dados A linha de transmisso eltrica e fsicamente independente da linha de recepo, o que permite transmitir um dado e receber outro simultaneamente. Este tipo de comunicao chama-se full-duplex, e os dados so transmitidos/recebidos na forma serial (os bits trafegam pela linha um aps o outro). Eventualmente pode existir uma terceira linha para sincronizar a comunicao entre os divesos dispositivos existentes na rede. Nesta opo, um dispositivo opera como Master (Mestre) enquanto os demais como Slave (Escravo).

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 9/23

Fig.4.8 Diagrama Simplificado do Mdulo de Comunicao Serial

4.6. Temporizador ou Contador Livre Os microcontroladores possuem um registro cujo valor numrico incrementa automticamente uma unidade em intervalos de tempo definidos. Portanto, este registro pode ser utilizado como uma base de tempo precisa e independente de um programa especfico para que seja realizado, podendo ser considerada a mais poderosa ferramenta existente em um controlador. O entendimento do correto funcionamento deste temporizador ou contador livre permite controle sobre variveis cclicas tais como sinais de tenso senoidal da rede de energia que devem ser sincronizados com elementos de controle (Triac) para acionmentos externos. A fig.4.9 mostra o diagrama simplificado do temporizador onde se pode visualizar um sinal de sada de controle.

Fig.4.9 Diagrama Simplificado do Temporizador ou Contador Livre

4.7. Conversor Analgico-Digital (ADC) Nem sempre os sinais que o microcontrolador deve ler so sinais simples do tipo liga/desliga (um/zero), que so os nicos sinais que so processados na CPU. Sinais continuamente variveis (analgicos) devem ser convertidos em um padro (digital) que a CPU pode compreender e processar. Esta converso realizada por um ADC (Analogo to Digital Converter Conversor Analgico Digital) e a maioria dos microcontroladores possuem ao menos 4 canais de utilizao em um ADC interno. A fig.4.10 mostra o diagrama simplificado do ADC de um controlador:

Fig.4.10 Diagrama Simplificado do Conversor Analgico Digital (ADC)

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 10/23

5. Arquitetura
5.1. Mquina von Neumann No comeo dos anos 1950, John von Neumann propos o conceito de computador com programa armazenado, que veio a ser o fundamento dos processadores mais modernos atualmente. Na Mquina von Neumann o programa e os dados ocupam a mesma memria e utilizam o mesmo barramento de comunicao. O tamanho da palavra utiliada para a instruo o mesmo tamanho do dado, isto , 8 bits. Para a realizao de uma operao, o processador l uma instruo para, na sequencia, movimentar o dado na memria at a posio solicitada pela instruo. Enquanto o dado no ocupar a posio da memria, o processador no pode ler a instruo seguinte, uma vez que a atualizao dos endereos ocorre passo a passo. Consequentemente, a sequencia lgica de processamento consiste em: ler instruo movimentar dado ler instruo movimentar dado

e assim sucessivamente. Logo, pelo barramento de comunicao circulam dados e instrues alternadamente. 5.2. Mquina Harvard O conceito Harvard mais recente que o von Neumann e surgiu da necessidade de aumentar a velocidade dos processadores sem aumentar significativamente seu tamanho ou oscilador. Para tanto, foram alocadas duas reas de memria uma para armazenar o programa e outra para armazenar os dados. Ao mesmo tempo, dividiu-se os barramento de comunicao de tal forma que em um barramento circula somente dados enquanto no outro circula somente endereos. Esta separao permitiu que o tamanho da palavra no ficasse limitado a apenas 8 bits, aumentando para 14 bits dividido em OPCODE (cdigo operacional), que especifica o tipo de instruo e um ou mais operadores (colocado nos 6 bits mais signficativos), enquanto os demais 8 bits armzenam o dado. Como o nmero de bits reservados para a instruo pequeno, o nmero de instrues para operar um microcontrolador tambm pequeno. A fig.5.1 mostra um diagrama comparativo entre as duas mquinas:

Fig.5.1 Comparao entre Arquiteturas

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 11/23

5.3. RISC/CISC RISC (Reduced Instruction Set Computer) Computador com Conjunto Reduzido de Instrues: este tipo de processador construdo em arquitetura Harvard onde uma palavra de 14 bits rene tanto a instruo quanto o dado a ser operado. A grande caracterstica desta arquitetura est no reduzido nmero de instrues empregado na programao, o que torna o conjunto extremamente rpido. Os microcontroladores existentes no mercado atualmente so construdos dentro desta arquitetura. CISC (Complex Instruction Set Computer) Computador com Conjunto Complexo de Instrues: este tipo de processador construdo em arquitetura von Neumann onde uma palavra de 8 bits utilizada para a instruo e outra palavra de 8 bits utilizada para conter dado. O conjunto de instrues bastante grande, podendo atingir 250 tipos diferentes. Se por um lado a programao fica mais difcil, por outro a capacidade de resoluo grfica e matemtica mais poderosa. Os processadores existentes nos modernos computadores de mercado atualmente so construdos dentro desta arquitetura. 5.4. Clock - Ciclo de Instruo (Ciclo Q Q Cycle Activity) Para que um microcontrolador possa operar, necessrio que haja uma base de tempo constante e independente de forma que os sinais digitais no interior da memria e da CPU sejam enviados e recebidos corretamente. Esta base de tempo fornecida por um oscilador onde, a cada ciclo, um evento realizado. A velocidade de realizao destes eventos depende da velocidade do oscilador, isto , da sua frequencia. Como este oscilador fornece a base de tempo de funcionamento dos dispositivos eletronicos, recebe o nome tcnico de CLOCK (relgio). Portanto, como em cada ciclo de clock uma instruo realizada, surge o termo Ciclo de Instruo (Tcy) ou Ciclo de Mquina (CM). Nos microcontroladores com arquitetura RISC, cada Ciclo de Instruo (Tcy) compreende 4 ciclos Q (Q1 a Q4) onde cada ciclo Q corresponde ao mesmo tempo de um perodo do clock (Tosc) que equivale ao tempo/designao para Decodificao, Leitura, Processamento do Dado, Escrita etc., de acordo com a fig.5.2:

Fig.5.2 Ciclo Q

Os quatro ciclos Q que formam um ciclo de instruo (Tcy) podem ser generalizados como segue: Q1: Decodificao da Instruo Q2: Ciclo de Leitura de Instruo Q3: Processamento do Dado Q4: Ciclo de Escrita da Instruo
Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 12/23

Internamente na CPU existe um registro cuja funo contar as linhas de programa. Este registro chamado de PC (Program Counter) e incrementado de uma unidade sempre em Q1. Uma instruo chamada da memria sempre no ciclo Q1 e escrita em um registro no ciclo Q4. A decodificao (ou interpretao) e execuo desta instruo sero feitas entre os prximos ciclos Q1 e Q4. A fig.5.3 mostra a relao entre o Ciclo de Instruo e o clock (OSC1) bem como os ciclos internos de Q1 a Q4. O Contador de Programa (PC) guarda o endereo da prxima instruo:

Fig.5.3 Clock Ciclo de Instruo

5.5. Fluxo de Instrues/Pipelining Como foi visto anteriormente, um Ciclo de Instruo consiste de 4 ciclos Q (Q1, Q2, Q3 e Q4). A busca de uma instruo ocupa um ciclo enquanto decodificar e executar a instruo ocupa outro ciclo. Entretanto, devido ao pipelining, cada instruo efetivamente executada em um ciclo. Se uma instruo provoca um desvio (por exemplo, GOTO), um ciclo extra necessrio para completar a instruo (devido a alterao no PC - Program Counter). A instruo busca (fetch) comea quando o PC incrementado em Q1. No ciclo de execuo (execute), a instruo buscada colocada dentro do Registro de Instruo (Instruction Register - IR) no ciclo Q1. Esta instruo decodificada e executada durante os ciclos Q2, Q3, e Q4. A memria de dado lida durante Q2 (ler operando) e escrito durante Q4 (escreve destino) A fig.5.4 mostra a operao do pipeline de dois estgios para a sequencia de instrues indicada:

Fig.5.4 Fluxo de Instruo - Pipelinig

Tcy0: a primeira instruo (MOVLW 55h) buscada na memria de programa (Fetch 1). Tcy1: a primeira instruo executada (Execute 1) enquanto a segunda instruo (MOVWF PORTB) buscada (Fetch 2). Tcy2: a segunda instruo executada (Execute 2) enquanto a terceira instruo (CALL SUB_1) buscada (Fetch 3).
Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 13/23

Tcy3: a terceira instruo (CALL SUB_1) executada (Execute 3) enquanto a quarta instruo (BSF PORTA, BIT3) buscada (Fetch 4). Quando a terceira instruo completada, a CPU fora o endereo da quarta instruo a ser colocado no Stack (registros que armazenam os endereos de retorno dos desvios) e modifica o valor do PC para o endereo SUB_1. Isto significa que a instruo que foi buscada na memria durante o Tcy3 (no caso Fetch 4) teve que ser descarregada do pipeline. Tcy4: a quarta instruo descarregada (uma NOP No Operation realizada) e a instruo existente no endereo SUB_1 (Instruction @ address SUB_1) buscada (Fetch SUB_1). Tcy5: a quinta instruo executada (Execute SUB_1) e a instruo do endereo SUB_1 + 1 (Fetch SUB_1 + 1) buscada Um mtodo til de demonstrao a analogia com uma lavanderia. Vamos considerar que existem quatro cargas de roupa suja que precisamos lavar, secar, passar e dobrar. Ns podemos colocar a primeira carga na lavadora por 30 minutos, secar por 40 minutos e levar 20 minutos para passar e dobrar as roupas. Ento colocamos a segunda carga para lavar, secar, passar e dobrar, e assim sucessivamente para a terceira e quarta carga de roupa. Considerando que iniciamos o trabalho de lavanderia s 18:00 h (na fig. 5.5, equivalente a 6 PM), e procuramos realizar o servio da maneira mais eficiente possvel, s conseguiremos terminar o servio meia-noite.

Fig.5.5 Fluxo de Servios no formato Sequencial

Entretanto, uma forma mais eficiente de resolver o problema seria colocando a segunda carga de roupa suja na lavadora quando a primeira carga estiver limpa e rodando alegremente na secadora. Ento, quando a primeira carga estiver sendo passada e dobrada, a segunda carga estar secando e a terceira poder ser includa no pipeline da lavanderia. Usando este mtodo, o nosso servio termina por volta das 21:30 h., como pode ser observado na fig. 5.6.

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 14/23

Fig.5.6 Fluxo de Servio no formato Pipelinig

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 15/23

6. Estrutura
6.1. Diagrama de Blocos de um Microcontrolador A fig.6.1 mostra o Diagrama de Blocos de um microcontrolador completo com todas as possibilidades de acessrios e dispositivos perifricos que podem ser estruturados no interior do dispositivo.

Fig.6.1 Diagrama de Blocos

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 16/23

6.2. Unidade Central de Processamento (CPU)/Unidade Lgica-Aritmtica (ALU) A Unidade Central de Processamento (CPU Central Processing Unit) pode ser considerada como o crebro do controlador e responsvel por buscar a instruo correta para execuo, decodificar esta instruo e execut-la. A CPU interliga todas as partes do microcontrolador como se fosse uma nica pea. A funo mais importante realizada pela CPU decodificar as instrues do programa. Quando um programador escreve um programa, as instrues escritas tm o formato semelhante a: MOVLW 0x20 O formato literal bastante claro e simples para a compreenso humana, mas completamente imcompreensvel para o microcontrolador. Para que o microcontrolador entenda a instruo neste formato, necessrio que um tradutor reescreva a instruo no formato literal para o formato de uma sequencia de zeros e uns (cdigo binrio nico formato que o microcontrolador consegue ler) chamado de opcode. A traduo do formato literal para o formato binrio feita por um programa residente normalmente chamado de compilador, que contm as correlaes de cdigo (ou dicionrio) para reescrever no formato binrio todas as instrues, variveis, constantes etc.. Portanto, a instruo buscada na memria de programa decodificada pela CPU em um conjunto de aes que executam a tarefa designada pela instruo. Como as instrues podem conter outros comandos que podem requerer diferentes transferencias de dados de uma memria para outra, da memria para os PORTs de I/O ou ainda executar alguns clculos, necessrio que a CPU esteja conectada com todas as partes do microcontrolador a partir de barramentos de dados e de endereos. Algumas vezes a CPU trabalha em conjunto com a Unidade Lgica e Aritmtica (ALU) para completar a execuo de instrues que envolvem operaes aritmticas e lgicas. 6.3. Unidade Lgica-Aritmtica (ALU) Muitas das instrues da memria de programa operam na memria de dados. Para operar a memria de dados existe a Unidade Lgica-Aritmtica (ALU Arithmetic-Logic Unit), que realiza as operaes de lgica e aritmtica e controla os bits de status da memria. A execuo de algumas instrues fora tais bits a assumir um estado dependendo do valor do resultado (por exemplo, um determinado bit de um registro de controle assume valor 1 quando a execuo de uma instruo apresentar resultado nulo). Nos microcontroladores, a ALU emprega registros de 8 bits e capaz de realizar operaes de soma, subtrao, deslocamento e operaes lgicas (booleanas) utilizando um registro de trabalho (registro W) e qualquer outro registro (arquivo ou constante numrica). A fig.6.2 mostra o diagrama simplificado do fluxo de informaes da ALU e do registro W:

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 17/23

Fig.6.2 Fluxo de Informaes na ALU

6.4. Memria - Organizao Existem dois blocos de memria nos microcontroladores : - Memria de programa - Memria de dados A estrutura Harvard permite que o acesso memria de programa seja independente do acesso da memria de dados logo, cada bloco tem seu prprio barramento e o acesso a cada bloco pode ocorrer simultaneamente durante o mesmo ciclo do oscilador (clock). 6.4.1. Memria de programa Nos microcontroladores mais modernos, a memria de programa construda no formato FLASH, que permite um nmero bastante elevado de ciclos de gravao utilizando-se apenas de sinais eltricos. Este tipo de memria facilita tanto o trabalho de desenvolvimento (onde as diversas verses de um programa podem ser gravadas at atingir o funcionamento timo), quanto evoluo natural da aplicao em um dispositivo (possibilita a gravao de uma verso mais avanada em um equipamento j em operao). Os microcontroladores usualmente possuem um contador de programa PC com capacidade para enderear at 8k (8.000) posies de memria. Como todas as instrues utilizam uma nica palavra (ou uma nica posio de memria), um dispositivo com esta capacidade pode conter at 8k instrues, o que torna bem simples determinar qual o modelo mais adequado para a utilizao. A memria de programa dividida em 4 pginas, cada uma com capacidade de 2k posies de memria. Dependendo do modelo de microcontrolador utilizado, apenas parte desta memria pode ser implementada. Logo, o usurio deve ler o manual tcnico do modelo pretendido para saber o tamanho e distribuio da memria de programa.

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 18/23

A fig.6.4 mostra o mapa da memria de programa genrica. Observar que os endereos da memria so mostrados em numerao hexadecimal. Mesmo durante um programa, os endereos que so informados ao programador sero sempre neste formato, uma vez que ocupam comprimento menor que nos formatos binrio ou decimal.

Fig.6.4 Mapa Memria de Programa Genrico

Como mostra a fig.6.4, algumas informaes e referencias devem ser detalhadas, como segue: 6.4.1.1. Vetor de Reset (Reset Vector) O Vetor de Reset identifica a primeira posio, ou o endereo inicial, da memria de programa (0h) portanto, o local onde se inicia o programa inserido pelo usurio. Quando o microcontrolador energizado e aps a estabilizao do seu oscilador (clock), o programa comea por esta posio de memria. Se o microcontrolador j estiver operacional e ocorrer um reset (forado por ao externa ou pelo programa), o contador de programa PC forado a zero, a execuo do programa redirecionada para este endereo de memria e o microcontrolador reinicia novamente, inclusive com paginao de memria, dados e constantes iniciais. Todas as informaes existentes at o instante do reset so perdidas. 6.4.1.2. Vetor de Interrupo (Interrupt Vector) Uma das mais poderosas ferramentas existentes dentro de um microcontrolador a Interrupo, isto , um desvio forado por alterao de estado de algum bit preparado para ocorrer em situaes especiais pelo programador. Quando uma interrupo ocorre, o contador de programa PC forado a assumir o valor 04h. A partir deste endereo, o programa inicia o Tratamento de Interrupo (ISR Interrupt Service Routine) de acordo com as necessidades da aplicao do controlador.

Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 19/23

6.4.1.3. Contador de Programa (Program Counter PC) O Contador de Programa (PC) especifica o endereo de busca na memria da instruo para execuo. O incremento ou modificao dos valores do PC feito automticamente pela CPU (hardware) em funo das necessidades impostas pelo programa. Se no houver nenhuma instruo de desvio, o incremento automtico no ciclo Q1. Se houver uma instruo de desvio (GOTO), ento o novo valor ser colocado no PC de acordo com as premissas de endereamento vindas da CPU. O comprimento do registrodo PC normalmente de 13 bits. Os primeiros 8 bits (de 0 a 7) compreendem o registro PCL (low byte byte baixo) e so acessveis diretamente, isto , podem ser lidos e/ou escritos pelo programa. Os ltimos bits (de 8 a 12) compreendem o registro PCH (high byte byte alto) e no so diretamente acessveis, isto , smente podem ser lidos e/ou escritos atravs de outro registro, o registro PCLATH (Program Counter Latch High). 6.4.1.4. Stack O Stack contm os endereos de retorno dos desvios (sub-rotinas) ou interrupes requisitadas. Permite uma combinao de at 8 desvios, isto , permite at o mximo de 8 desvios de sub-rotina e interrupo. O registro de Stack no faz parte da memria de programa ou da memria de dados, e tambm no possvel ler ou escrever nestes registros. O valor do registro PC colocado no Stack quando uma instruo CALL executada ou quando uma interrupo provoca um desvio (sempre que uma interrupo chamada, a Rotina Principal interrompida no ponto em que se encontra e fora um desvio para o Vetor de Interrupo). O valor do registro PC retorna do Stack quando uma das instrues de retorno (RETURN, RETLW ou RETFIE) executada. Observar que os valores do registro PC so colocados seqencialmente dentro do Stack medida que os desvios ocorrem. Aps oito valores do registro PC serem colocados dentro do Stack, o nono valor sobreescreve o primeiro armazenado, o dcimo sobre-escreve o segundo armazenado e assim sucessivamente. Os demais registros existentes no so modificados.A fig.6.5 mostra o procedimento de escrita dos endereos dentro do Stack:

Fig.6.5 Sequencia de Entrada de Registros no Stack

Observaes: 1. No existe bit indicando a situao do Stack (overflow ou underflow). 2. No existem instrues ou mnemonicos para acionar os valores no Stack somente a CPU pode fazer estas aes. 3. A perda de valores do Stack por overflow (excesso) implica em erro durante a execuo do programa, uma vez que foi perdido um endereo de retorno.
Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 20/23

6.4.2. Memria de Dados A memria de dados formada por Registros de Funo Especial (SFR Special Function Register) e por Registros de Uso Geral (GPR General Purpose Register). A memria de dados formada por bancos cujo acesso feito a partir de bits de controle existentes em um registro especial (SFR) chamado Status. Como os valores so gravados em memria RAM, ao iniciar a operao do microcontrolador todas as posies estaro no nvel 0 (zero) logo, necessrio que o programa do usurio coloque os valores adequados em cada registro (na forma de constantes) para o correto funcionamento do dispositivo. Se ocorrer o desligamento da fonte do controlador, os valores armazenados sero perdidos. No caso de um comando de Reset (interno ou externo) os valores existentes na memria de dados no sofrem alterao. No entanto, como esta ao depende do modelo do dispositivo, necessrio que o usurio leia o manual do modelo especfico para a correta programao. A fig.6.6 mostra o mapa genrico da memria de dados. Observar que este mapa varia conforme o modelo do microcontrolador (ver Notas).

Fig.6.6 Mapa da Memria de Dados


Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 21/23

Notas: 1. Os Registros em negrito esto presentes em todos os modelos de microcontroladores. 2. Nem todas as posies de memria so implementadas portanto, so lidas pelo programa como 0 (zero). 3. Estas posies podem no ser implementadas. Dependendo do modelo do controlador, o acesso s posies no implementadas pode operar de forma diferente. Para maiores detalhes, importante que o usurio consulte o manual do modelo especfico. 4. Alguns modelos no incluem estes registros dentro do Bank0. Os modelos que incluem estes registros dentro do Bank0, so referidos como memria RAM comum. 5. Alguns modelos no possuem estes bancos implementados portanto, as posies relativas so lidas como 0 (zero). 6. Registros de Uso Geral (GPR) podem ser alocados na rea de Registros de Funo Especial (SFR). Para movimentar valores de um registro para outro, os valores precisam passar pelo registro W (ver tem 6.4 e fig.6.3), o que significa que movimentar dados entre registros requer dois ciclos de mquina (2Tcy). A memria de dados organizada em duas reas: 6.4.2.1. Registros de Uso Geral (GPR General Purpose Register) Esta rea de registros utilizada pelo usurio para armazenar dados ou como base de clculos intermedirios no suportados pela CPU. Na fig.6.6 corresponde rea abaixo dos Registros Especiais. 6.4.2.2. Registros de Funo Especial (SFR Special Function Register) So utilizados pela CPU e Mdulos Perifricos para controlar a operao desejada do microcontrolador. Estes registros so implementados em memrias do tipo RAM esttica (static RAM). Estes registros so implementados pelo fabricante de acordo com o modelo e utilidade. Em todos os casos, possvel ler e/ou escrever nestes registros tanto na forma direta quanto na forma indireta. Os Registros Especiais - SFR - podem ser divididos em dois conjuntos distintos: a) Ncleo (Core): controlam e so controlados por funes especficas do ncleo da CPU. Atravs dos bits destes registros possvel controlar funes dentro da CPU e, ao mesmo tempo, receber informaes da CPU dos resultados obtidos. b) Perifricos: controlam e so controlados por funes externas ao ncleo, normalmente esto ligados a conexes externas ao microcontrolador. Os bits destes registros permitem receber informaes das ocorrencias externas bem como tomar decises sobre estas ocorrencias. Na fig.6.6, os Registros Especiais esto identificados pelo acrnimo que corresponde descrio da sua funo. 6.6. Conversando com o Mundo Exterior - Entrada/Sada (I/O) Digital A Entrada/Sada (I/O) de uso geral pode ser considerada como o mais simples perifrico de um microcontrolador, permitindo monitorar e controlar outros dispositivos conectados a ela. Para aumentar a funcionalidade e flexibilidade do dispositivo, as Entradas/Sadas podem ser multiplexadas com outras funes alternativas, que dependem do modelo do dispositivo. Geralmente, estas funes multiplexadas no podem ser utilizadas simultaneamente com Entrada/Sada digital. Cada grupo de Entrada/Sada controlado por um PORT que est, por sua vez, relacionado a um byte (palavra) com no mximo 8 bits. O tamanho do PORT funo do modelo do dispositivo podendo se apresentar como vrios PORTs de 8 bits ou menos em um mesmo dispositivo.
Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 22/23

Cada bit do PORT est relacionado a uma I/O que, por sua vez, corresponde a um pino externo do controlador. Logo, a direo de utilizao do pino de I/O, isto , sua utilizao como Entrada (Input) ou Sada (Output) determinada por um registro especial chamado TRIS. Consequentemente, cada bit de um PORT est relacionado a um bit de seu TRIS de controle. A seleo da direo de um pino ser feita no registro TRIS da seguinte forma: - Entrada (Input) bit igual a `1 (um) (lembrar que o nmero 1 semelhante letra I de Input) - Sada (Output) bit igual a `0 (zero) (lembrar que o nmero 0 semelhante letra O de Output) A fig.6.7 mostra um PORT I/O digital tpico, no considerando a enventualidade de existir outras funes multiplexadas no pino.

Fig.6.7 Diagrama Tpico de uma I/O Digital

Ler o registro PORT significa ler o estado do pino de I/O (alto -1 ou baixo -0) observar na fig. 21 que a leitura do estado do pino feita atravs de um Schmitt trigger ligado a um flip-flop tipo D e diretamente conectado ao barramento de dados (Data Bus). O comando (ou instruo) de leitura feito atravs do RD PORT que habilita o flip-flop e a chave do buffer de conexo com o barramento de dados. Escrever no registro PORT significa ler o valor do pino, modificar o seu valor e escrever em um flip-flop do tipo D (caracterizado como Data Latch trava de dado), o que faz com que todas as operaes de escrita sejam do tipo read-modify-write (ler-modificar-escrever). Colocando um bit do registro TRIS no nvel `1 significa que a sada correspondente assume o valor de alta impedancia. Colocando um bit do registro TRIS no nvel `0 significa que o contedo do latch de sada ser colocado no pino correspondente. O controle da funo de cada pino deve estar de acordo com o modelo escolhido para a aplicao importante a leitura completa do manual de cada modelo em uso para a correta especificao dos pinos multiplexados.
Bento Alves Cerqueira Cesar Filho - R 1.0 - NOV/07 23/23

Você também pode gostar