respostas dos exercícios

Download Respostas dos exercícios

If you can't read please download the document

Upload: anizio-peres-da-silva

Post on 30-Jun-2015

812 views

Category:

Documents


4 download

TRANSCRIPT

Microcontroladores PIC18 com Linguagem CUma Abordagem Prtica e Objetiva com Base no PIC18F4520Wagner da Silva Zanco

Respostas dos Exerccios

Editora rica Ltda.

Respostas dos Exerccios

1

Captulo 11. 2. 3. 40MHz com o PLL ativo. 36 pinos, divididos em cinco grupos denominados Ports. So eles: Port A, Port B, Port C, Port D e Port E. Dez configuraes diferentes. So elas: LP: cristal de baixa potncia (at 200KHz). XT: cristal/ressonador (at 4MHz). HS: cristal/ressonador de alta frequncia (acima de 4MHz). HSPLL: cristal/ressonador de alta frequncia com o PLL habilitado. RC: RC externo com sada de clock. Essa opo fornece ao pino OSC2CLKO/RA6 um sinal digital com frequncia quatro vezes menor que a do oscilador principal (Fosc/4). RCIO: RC externo. Nessa opo o RA6 funciona como pino digital. INTIO1: oscilador interno com Fosc/4 no pino RA6 e pino RA7 configurado como digital. INTIO2: oscilador interno com RA6 e RA7 configurados como pinos digitais. EC: oscilador externo com sada de clock. Essa opo fornece no pino OSC2CLKO/RA6 um sinal digital com frequncia quatro vezes menor que a do oscilador principal. ECIO: oscilador externo. Nessa opo o pino RA6 funciona como digital. 4. 5. Quando a aplicao exige um bom nvel de preciso para o oscilador, como no caso de aplicaes que envolvem comunicao de dados ou temporizadores. O PIC18F4520 possui dois osciladores internos que, se ativados, dispensam a utilizao de componentes externos. So eles o INTOSC e o INTRC. O oscilador principal, o INTOSC, possui uma frequncia de 8MHz e pode ser utilizado como oscilador de clock. Esse oscilador tem associado o recurso postscaler que permite prover frequncias na faixa de 31kHz-4MHz. O oscilador principal INTOSC habilitado quando selecionada uma frequncia de clock dentro da faixa de 125kHz a 8MHz. O outro oscilador interno, o INTRC, prov uma frequncia de 31kHz. O oscilador INTRC habilitado se ele for selecionado como origem do sinal de clock. O PIC18F4520 possui trs fontes diferentes que podem gerar o sinal de clock. O sinal de clock pode vir do oscilador primrio, do oscilador secundrio ou de um dos osciladores internos. O oscilador primrio inclui as opes cristal/ressonador externo, RC externo, oscilador externo e os osciladores internos. O oscilador secundrio associado ao mdulo Timer1 e inclui a conexo de um cristal de baixa frequncia entre os pinos T1OSO e T1OS1. Para que o oscilador secundrio possa ser utilizado, necessrio que o mdulo Timer1 esteja habilitado. O cristal de baixa frequncia conectado entre os pinos T1OSO e T1OS1 normalmente de 32,768kHz e pode ser utilizado como base de tempo para um RTC (Real Time Clock). Os osciladores internos, alm de fazerem parte do set de opes do oscilador primrio, esto disponveis como fontes de clock para o modo de energia gerenciado (power-managed).

6.

2

Microcontroladores PIC18 com Linguagem C

7.Modo Sleep PRI_RUN SEC_RUN RC_RUN PRI_IDLE SEC_IDLE RC_IDLE OSCCON IDLEN 0 N/A N/A N/A 1 1 1 SCS1:SCS0 N/A 00 01 1x 00 01 1x Off Recebe Recebe Recebe Off Off Off Sinal de clock CPU Perifricos Off Recebe Recebe Recebe Recebe Recebe Recebe Disponibilidade do clock e origem do oscilador Nenhum - todos os clocks esto desligados Primrio - LP, XT, HS, HSPLL, RC, EC e oscilador interno Este o modo de execuo normal Secundrio - oscilador do TIMER 1 Osciladores internos Primrio - LP, XT, HS, HSPLL, RC, EC Secundrio - oscilador do TIMER 1 Osciladores internos

Captulo 21. O PIC18F4520 possui trs tipos de memria integrados. So elas: memria de programa Flash-ROM, memria de dados RAM e memria no voltil EEPROM. A memria nesse microcontrolador est dividida da seguinte forma: Memria de programa (Flash-ROM): 32kx16 Memria RAM (de dados): 1536x8 Memria EEPROM: 256x8 2. 3. 4. Na localidade 0000h da memria de programa. At 31 chamadas. A memria de dados do PIC18F4520 implementada em memria SRAM e est dividida em 16 bancos de 256 localidades cada, com capacidade de armazenamento de 8 bits em cada localidade. um tipo de acesso memria em que no necessrio o chaveamento entre bancos para acessar uma localidade de memria. O Access Bank, como chamado, utiliza um segmento do banco 0 e um segmento do banco 15 para formar um nico banco de memria no qual podemos acessar tanto os SFRs quanto os GPRs. O acesso memria de dados via Access Bank no leva em considerao o valor armazenado no registrador BSR. Registrador BSR. A memria EEPROM interna classificada na arquitetura do PIC18F4520 como um perifrico e ocupa a faixa de endereos 00h - FFh.

5.

6. 7.

Respostas dos Exerccios

3

Captulo 31. 2.Condio Power-on Reset Instruo RESET Brown-out Reset Contador de Programa 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h PC + 2 PC + 2(1) Registrador RCON Registrador STKPTR

Power-on Reset (POR).

RI1 0 1 u u u u u u u u u

TO1 u 1 1 1 0 u u u u 0 u

PD1 u 1 u 0 u u u u u 0 0

POR0 u u u u u u u u u u u

BOR0 u 0 u u u u u u u u u

STKFUL 0 u u u u u u 1 u u u u

STKUNF 0 u u u u u u u 1 1 u u

MCLR Reset durante a execuo dos power-managed modes MCLR Reset durante os power-managed idle modes and sleep modeWDT time-out durante a execuo do full power or power-managed mode

MCLR Reset durante a execuo em full powerStack full Reset (STVREN = 1) Stack underflow Reset (STVREN = 1) Stack underflow error (no um Reset atual, STVREN = 0) WDT time-out durante os power-managed idle or sleep modes Sada da interrupo dos power-managed modesLegenda: Nota 1:

u - no alterado. Quando um wake-up ocorre devido a uma interrupo e os bits GIEH e GIEL esto setados, o PC carregado com vetor de interrupo (008h ou 0018h).

3.

O Power-up Timer (PWRT) prov um time-out tpico de 72ms aps o POR. Um circuito RC interno o responsvel pela temporizao. O PWRT um recurso que precisa ser ativado e o seu objetivo manter o microcontrolador em Reset at que a tenso de alimentao esteja estabilizada. O Oscillator Start-up Timer um circuito que prov um delay de 1024 ciclos de clock do oscilador principal, aps o Power-up Timer, antes de colocar o circuito oscilador em funcionamento. Isso garante que o oscilador esteja estabilizado na sua partida, evitando travamento. O Oscillator Start-up Timer s invocado para os modos de funcionamento do oscilador XT, LP e HS no POR ou quando o microcontrolador acorda aps ter entrado no modo Sleep.

4.

5.

Quando o PLL est habilitado, a sequncia time-out (temporizao) que segue o POR diferente dos outros modos de funcionamento do oscilador. Uma parte do Power-up Timer utilizada para prover um time-out suficiente para o PLL estabilizar a frequncia do oscilador principal. O delay gerado para o PLL de 2ms e ocorre aps o Start-up Timer-out (OST).

4

Microcontroladores PIC18 com Linguagem C

6.

Em funcionamento normal, o pino /MCLR (Master Clear) precisa estar recebendo nvel '1'. Quando o nvel lgico nele forado a '0', o microcontrolador resetado e s sai do Reset quando o nvel lgico retornar a '1'. O Brown-out Reset um recurso que, quando est ativado, faz o microcontrolador resetar caso a tenso de alimentao caia abaixo de um determinado valor, que pode ser configurado por software. Uma vez que o microcontrolador entrou em Reset devido ao Brown-out Reset, ele s volta ao seu funcionamento normal, ou seja, a executar o programa, quando a tenso de alimentao voltar ao nvel especificado pelo fabricante para correto funcionamento do microcontrolador. Este um recurso muito poderoso utilizado para evitar a paralisao do sistema em caso de travamento do oscilador devido a uma interferncia eletromagntica, ou qualquer outro tipo de rudo que o faa parar de oscilar, exceto em caso de defeito no circuito oscilador. O WDT um temporizador que provoca um Reset no programa sempre que ele produzir um time-out, ou seja, quando o tempo programado para o time-out terminar sem que seja executada a instruo CLRWDT. A instruo RESET pertence ao set de instrues dos microcontroladores da srie PIC18. Essa instruo, quando executada, provoca um /MCLR Reset por software. O bit RCON=0 sinaliza que o ltimo Reset foi provocado pela instruo RESET.

7.

8.

9.

10. O Reset ligado aos eventos Stack Full RESET e Stack Underflow RESET est associado ao recurso Return Adress Stack, o qual permite ao programa efetuar at 31 chamadas sub-rotina ou a funes associadas ocorrncia de uma interrupo. Quando executada a instruo CALL, a instruo RECALL ou quando ocorre uma interrupo, o programa sai da sequncia normal de execuo e desviado para outro ponto. Antes de ocorrer o desvio, no entanto, o endereo de retorno armazenado em uma pilha, chamada Return Adress Stack, para que o programa possa voltar ao ponto de onde ocorreu o desvio. O registrador STKPTR um ponteiro para a posio da pilha onde est armazenado o prximo endereo de retorno. Quando ocorre um desvio com retorno, o endereo de retorno armazenado na pilha e o registrador STKPTR incrementado. Da mesma forma, quando ocorre um retorno de uma sub-rotina, o endereo de retorno retirado da pilha e o registrador STKPTR decrementado. Se no registrador STKPTR for armazenado o valor 31 quando for executado um desvio com retorno, ocorre um overflow no Return Adress Stack. Na sequncia, o bit STKFUL (STKPTR) ser setado e ocorrer um Reset se o bit de configurao Stack Overflow Reset estiver ativado. Da mesma forma, se no registrador STKPTR for armazenado o valor 0 quando for executado um retorno, ocorre um underflow no Return Adress Stack. Na sequncia, o bit STKUNF (STKPTR) ser setado e ocorrer um Reset se o bit de configurao Stack Overflow Reset estiver ativado. Os bits STKFUL e STKUNF podem ser testados aps a ocorrncia de um Reset para o programa detectar se o Reset foi provocado por um overflow ou por um underflow no Return Adress Stack e tomar as devidas providncias.

Respostas dos Exerccios

5

Captulo 41. Quando configurados como digitais, os pinos do PIC18F4520 so divididos em cinco grupos chamados Ports de I/O, identificados como Port A, Port B, Port C, Port D e Port E. O Port A composto pelos pinos RA7:RA0. O Port B pelos pinos RB7:RB0. O Port C pelos pinos RC7:RC0. O Port D pelos pinos RD7:RD0. O Port E pelos pinos RE3:RE0. O registrador TRISx. O TRISA configura os pinos do Port A, o TRISB os pinos do Port B e assim sucessivamente. Eles so o elo entre o software e o hardware, ou seja, entre o programa e os pinos do microcontrolador. Significa que preciso conectar uma fonte de alimentao externa no pino. Porque os resistores de pull-up so implementados na pastilha de silcio e por isso possuem uma potncia muito pequena. Qualquer sobrecarga de corrente pode queim-los. Pino RE3. Para ativar a funo digital desse pino, preciso desabilitar a funo /MCLR. Um Schmitt Trigger um circuito comparador incorporado de realimentao positiva. Quando o nvel de tenso de entrada maior que um limiar escolhido, a sada est em nvel alto; quando a entrada est abaixo de outro limiar, a sada est em nvel baixo; quando a entrada se encontra entre os dois limiares, a sada retm o valor anterior at a entrada se alterar suficientemente para mudar o estado do Trigger. Parallel Slave Port.

2. 3. 4. 5. 6. 7.

8.

Captulo 51. 2. Um compilador executado em um computador que pode gerar cdigos que so executados em um diferente tipo de computador. Um bloco de cdigo escrito em linguagem Assembly contm um menor nmero de instrues, sendo, consequentemente, executado mais rapidamente do que um bloco de cdigos escrito em linguagem C que executa a mesma tarefa. Suporte para microcontroladores de 8 bits, MPLAB IDE, MPLAB SIM, MPASM, MPLAB ICD 2 (opcional se for utilizar um gravador/debugger compatvel com o ICD 2). Project Wizard. Clicar no menu Project/Project Wizard.

3. 4.

6

Microcontroladores PIC18 com Linguagem C

5.Arquivo MPASMWIN.exe mplink.exe mcc18.exe mplib.exe Caminho C:\MCC18\mpasm\MPASMWIN.exe C:\MCC18\bin\mplink.exe C:\MCC18\bin\mcc18.exe C:\MCC18\bin\mplib.exe

6.

Criar o programa-fonte, criar o projeto e configurar o MPLAB IDE, associar o programa-fonte ao projeto, compilar o projeto, debugar o projeto e, finalmente, gravar o programa no microcontrolador. Neles o MPLAB ir procurar os arquivos cabealho e os arquivos biblioteca includos na aplicao. MPLAB SIM.

7. 8.

Captulo 61. 2. 3. enum, const, signed, void e volatile. Funo main(). So informaes que a funo pode receber quando for chamada para que ela seja executada corretamente. As informaes recebidas podem ser qualquer tipo de dado vlido em C. Para no receber nenhum valor, lista_de_parametros deve ser declarada como void. Um bloco de cdigo uma sequncia de comandos compreendidos entre chaves, o qual visto como uma unidade nica. A linguagem C possui cinco tipos bsicos de dados: caractere, inteiro, ponto flutuante, ponto flutuante de preciso dupla e sem valor. So eles, respectivamente, char (8 bits), int (16 bits), float (32 bits), double (32 bits) e void (sem valor). Chamamos de identificador o nome atribudo a uma varivel, constante, funo, label e a outros elementos do sistema. Um identificador pode conter letras, nmeros e o caractere alfanumrico underline _. Ele deve comear com uma letra ou com o caractere underline. proibido na linguagem C um identificador iniciar com um valor numrico. Uma varivel global aquela que foi declarada fora de qualquer funo, inclusive da funo main(). A varivel global se mantm ativa durante toda a execuo do programa. Uma varivel local quando ela declarada dentro de uma funo. A varivel local destruda na sada da funo. Alm disso, uma varivel local s reconhecida dentro da funo na qual ela foi criada. A principal componente da linguagem C a funo. Uma funo formada por um conjunto de comandos que so agrupados em um ou mais blocos de cdigo. A funo executa uma tarefa bem definida dentro do programa.

4. 5.

6.

7.

8.

Respostas dos Exerccios

7

9.

Do ponto de vista lgico uma funo um bloco de comandos que executa uma tarefa bem definida.

10. Comentrio de linha nica. Comea com dois caracteres barra // e identifica como comentrio tudo que vier aps as duas barras at o final da linha. Comentrio de linha mltipla. Deve sempre comear com os caracteres /* e terminar com os caracteres */. Alm disso, ele pode conter vrias linhas./*Comentrio... Comentrio... Comentrio...*/

11. O arquivo cabealho disponibiliza ao projeto uma biblioteca de funes que podem ser utilizadas quando solicitadas. Para incluir um arquivo cabealho no projeto deve-se utilizar a diretiva #include.#include

A linha anterior inclui no projeto as funes prototipadas no arquivo cabealho stdio.h, dentre as quais podemos citar a funo printf(). 12. tipo nome_da_funo (lista_de_parmetros){ //sequncia de comandos }

13. So eles os signed, unsigned, long e short. 14. Variveis so localidades de memria reservadas para armazenamento de dados que sero manipulados durante a execuo do programa, o que chamamos de tempo de execuo. Quando uma varivel declarada, necessrio informar o tipo de dado que ela ir receber, ou seja, definir o tipo da varivel. Alm disso, uma varivel pode ter escopo global ou local. A varivel global reconhecidada por todo o programa. A varivel local s reconhecida dentro da funo na qual ela foi criada. 15. tipo lista_de_ variveis; tipo: um tipo de dado vlido em C, com exceo do tipo void. lista_de_variveis: o nome das variveis que sero declaradas. Se mais de uma varivel for declarada, elas devem estar separadas por vrgula. 16. O modificador de tipo de acesso const utilizado quando desejamos criar uma varivel e no permitir que o seu contedo seja alterado por algum elemento do sistema durante o tempo de execuo. Quando uma varivel declarada com o modificador const, aps a inicializao, ningum pode alterar o seu contedo. O modificador de tipo de acesso volatile utilizado quando uma determinada varivel pode ser alterada por algum elemento externo ao programa, sem que seja utilizado um comando de atribuio. O comando de atribuio utilizado no programa para armazenar, por meio de uma instruo de programa, uma informao na varivel. Uma varivel que atualizada automaticamente por um relgio/calendrio um exemplo de uma varivel que deveria ser declarada com o modificador volatile.

8

Microcontroladores PIC18 com Linguagem C

17. extern, static, register, auto 18. O especificador extern utilizado na declarao da varivel quando ela for criada em um determinado arquivo e precisar ser acessada de outro arquivo. O procedimento correto nesse caso declarar a varivel em um arquivo e declar-la com o especificador extern no outro arquivo em que ela ser acessada. O compilador saber que a varivel foi declarada em outro arquivo por causa do especificador extern. O especificador extern s funciona quando a varivel declarada como global no arquivo de origem. 19. Quando uma varivel local declarada como static, o compilador aloca memria como se ela fosse uma varivel global. Em outras palavras, ela se manter ativa durante todo o tempo de execuo. Mas, pelo fato de a varivel ser do tipo local, ela s ser reconhecida dentro do bloco de cdigo no qual ela foi criada. 20. Sim. Uma varivel global static s reconhecida dentro do arquivo no qual ela foi criada. A varivel local static s reconhecida dentro da funo na qual ela foi criada. No entanto, ambas se mantm ativas durante todo o tempo de execuo. 21. Uma varivel register armazenada dentro da CPU. O objetivo aumentar a velocidade no processamento da informao armazenada na varivel. Esse especificador foi criado na poca em que os microprocessadores tinham uns poucos registradores internos que poderiam ser utilizados para o armazenamento de dados temporrios. Os microcontroladores de hoje possuem menria RAM interna, o que elimina a necessidade do especificador register. 22. Dar varivel um escopo local. No necessrio, no entanto, a utilizao desse especificador, uma vez que uma varivel local, quando criada, automaticamente definida como automtica. 23. um valor numrico que no pode ser alterado. Uma constante pode ser tambm uma string. Da mesma forma que o valor numrico, a constante string no pode ser alterada. 24. Decimal: YY Hexadecimal: 0xYY Octal: OYY Binrio: 0bYYYYYYYY ASCII: 'Y' Y: valor numrico 25. Associa um valor numrico a uma string. 26. A forma com que eles so representados. Um caractere representado entre apstrofos e uma string representada entre aspas.

Respostas dos Exerccios

9

Captulo 71. 2. Lgico, relacionais, bit a bit, operadores especiais. Atribuir a uma varivel o resultado de uma expresso.int x; x=10;

3. 4.

x = y = z = 20;Operador + * / % ++ Adio Multiplicao Diviso Resto da diviso Decremento Incremento Ao Subtrao

5. 6. 7.

Deslocar os bits que representam o contedo de uma varivel para a esquerda (). y=15 e x=16. Mais alta ++ * Mais baixa + -/ Operador > >= < >= == < != == && ! >= != ||Operador & | ^ ~ >>