Mostrando postagens com marcador arquitetura_interna. Mostrar todas as postagens
Mostrando postagens com marcador arquitetura_interna. Mostrar todas as postagens

quarta-feira, 6 de junho de 2012

Curso de PIC - Iniciando no mundo PIC - Robotizando.com.br

Material do site robotizando.com.br que é lá apresentado como "Curso de PIC - Iniciando no mundo PIC".

Particularmente, acho meio pretensioso demais chamar de curso, mas é um bom material de consulta, e sempre se aprende alguma coisa nova!


Fonte da imagem: Captura de tela do curso no site www.robotizando.com.br



domingo, 3 de junho de 2012

Planilha para cálculo dos tempos do Timer0

Esta é uma planilha que auxilia nos cálculos de tempos para o timer0 do PIC.

Entra-se com os valores de frequência do oscilador e prescaler. Os valores de ciclo de clock, ciclo de instrução, tempo de estouro do timer e número de estouros por segundo são apresentados automaticamente.


Fonte da imagem: SistemasEmbarcados.net


quinta-feira, 31 de maio de 2012

CICLO DE INSTRUÇÃO (para os microcontroladores PIC)


Para a família PIC, cada ciclo de instrução dura quatro pulsos de clock. Os microcontroladores PIC fazem uso do pipeline para aumentar a velocidade de execução das instruções. Pipeline é uma técnica utilizada pelos processadores mais modernos e consiste em dividir a execução das instruções em partes e cada uma destas partes pode ser executada em paralelo em um formato semelhante a uma linha de montagem de carros. No caso dos microcontroladores PIC pode-se visualizar a execução das instruções como sendo dividida em dois estágios: busca (fetch) e executa (execute), onde cada estágio gasta 4 ciclos de clock.

O pipeline permite que quase todas as instruções possam ser executadas em um ciclo de máquina, com exceção das que alteram o contador de programa, como chamadas de rotinas e seus retornos. Nestes casos, o pipeline sofre uma penalidade de um ciclo de clock devendo descartar (flush, na figura 8) a instrução que já havia sido buscada para então carregar a instrução no endereço correto, consumindo, portanto, dois ciclos de instrução (SOUZA, 2000, pg 6).

A figura 1 (MATIC, 2000, pg 18) mostra o fluxo das instruções no pipeline em um pequeno trecho de um programa escrito em assembly.

Figura 1: Pipeline de um trecho de código


No ciclo 0, o código da instrução MOVLW 55h é buscado da memória (desconsiderando a instrução que é executada neste ciclo). No ciclo 1, a instrução MOVLW 55h é executada e a instrução MOVWF PORTB é buscada da memória. No ciclo 2 a instrução MOVWF PORTB é executada e é buscada da memória a instrução CALL SUB_1. A chamada da sub-rotina SUB_1 e a leitura da instrução BSF PORTA, BIT3 são feitas no ciclo 3. Como a instrução BSF PORTA, BIT3 não é a que será executada no momento e sim a primeira instrução da sub-rotina SUB_1, deve ser feita outra busca de instrução. Esta situação mostra porque as instruções de chamada de sub-rotina consomem dois ciclos de máquina, já que a instrução BSF PORTA, BIT3 terá que ser lida novamente ao término da sub-rotina. O ciclo 4 é usado somente para ler a primeira instrução da sub-rotina e nenhuma instrução é executada. A primeira instrução da sub-rotina é então executada no ciclo 5.


Fonte:
Duarte, Rafael Lindemann. SISTEMA INTELIGENTE DE MONITORAMENTO E CONTROLE DE IRRIGAÇÃO. São José: UNIVALI, 2006. (TCC Ciência da Computação)


terça-feira, 22 de maio de 2012

OSCILADORES - FONTES DE CLOCK NOS MICROCONTROLADORES PIC



1         FONTES DE CLOCK NOS MICROCONTROLADORES PIC

Neste item serão apresentados os circuitos geradores de clock que podem ser utilizados nas aplicações com microcontroladores PIC e discutidas suas principais características.

Os microcontroladores necessitam de um sinal de clock (um trem de pulsos de onda quadrada) para gerar sincronismo e permitir que ele funcione e execute o programa corretamente.

Alguns microcontroladores da família PIC, normalmente os menores e que são destinados a projetos compactos, possuem um oscilador interno e não necessitam de um circuito oscilador adicional.

Existem quatro tipos de osciladores que podem ser utilizados com os microcontroladores PIC: circuito RC, com ressoadores, com cristal e os circuitos híbridos, que são apresentados a seguir.

1.1       Oscilador RC

Os osciladores RC (circuito resistor-capacitor) são os mais simples e também os mais baratos, porém são os menos precisos. Os circuitos RC sofrem influência da tensão de alimentação, da temperatura e da tolerância do resistor e do capacitor. Um exemplo de oscilador RC para PIC é apresentado na figura 1.


Figura 1: Circuito oscilador RC


Os valores recomendados (MICROCHIP, 2001, pg 124) para o resistor e o capacitor são:
-          Resistor: entre 3KR e 100KR;
-          Capacitor: maior que 20pF.


1.2       Oscilador com ressoador

Os osciladores montados com ressoador cerâmico são mais precisos e estáveis que os circuitos RC, mas nem tão baratos (SOUZA, 2000, pg 40). São encontrados ressoadores com dois ou três pinos, cujos circuitos de exemplo são mostrados respectivamente nas figuras 2 e 3.

 Figura 2: Circuito oscilador com ressoador de 2 pinos

 Figura 3: Circuito oscilador com ressoador de 3 pinos



A tabela 1 mostra o valor dos capacitores em relação à freqüência de operação utilizada (MICROCHIP, 2001, pg 123).
 Tabela 1: Valor dos capacitores para o oscilador com ressoador


1.3       Oscilador com cristal

Os osciladores com cristal são os mais precisos, mas são mais caros que os circuitos RC e os ressoadores (SOUZA, 2000, pg 41). Este tipo de oscilador é utilizado em sistemas que necessitam de grande precisão. Um circuito de exemplo é apresentado na figura 4.

Figura 4: Circuito oscilador com cristal


O resistor Rs serve para evitar a flutuação do cristal e pode ser de valor baixo, como por exemplo, 10R.

A Microchip, empresa fabricante dos microcontroladores da família PIC, subdivide os cristais em três grupos (MICROCHIP, 2001, pg 123):
-          LP: Cristais de baixa potência - para cristais entre 32 kHz e 220 kHz;
-          XT: Cristais - para cristais entre 220 kHz e 4 MHz;
      -          HS: Cristais de alta velocidade - para cristais entre 4 MHz e 20 MHz


Os valores para os capacitores estão na tabela 2 (MICROCHIP, 2001, pg 124).


Tabela 2: Valor dos capacitores para o oscilador com cristal

 

1.4       Osciladores híbridos

Os osciladores híbridos normalmente são compostos de circuitos próprios para oscilação ou cristais híbridos (SOUZA, 2000, pg 41). Este tipo de oscilador é ainda mais caro que os cristais, mas permite a utilização de um único circuito de clock em sistemas com mais de um microcontrolador, garantindo o perfeito sincronismo entre eles. Neste tipo de sistema, um circuito híbrido pode se tornar mais barato do que a utilização de um cristal para cada PIC.


Fonte:
Duarte, Rafael Lindemann. SISTEMA INTELIGENTE DE MONITORAMENTO E CONTROLE DE IRRIGAÇÃO. São José: UNIVALI, 2006. (TCC Ciência da Computação)

quinta-feira, 17 de maio de 2012

MODO SLEEP


“Os microcontroladores possuem um modo de operação exclusivo para economia de energia, o modo sleep. Ao executar a instrução ‘SLEEP’ o microcontrolador praticamente é posto para "dormir". Este modo de operação é utilizado em sistemas que podem ficar paralisados temporariamente, principalmente quando alimentado por pilhas ou baterias (SOUZA, 2000, pg 126).

O microcontrolador possui um driver interno para tratar o sinal que recebe do oscilador. Quando entra em modo sleep, este driver é desligado, deste modo, o sinal do oscilador chega ao pino de entrada do PIC mas não chega à CPU e o processamento é paralisado. O WDT não é paralisado (SOUZA, 2000, pg 126) porque este timer possui um oscilador independente que não é afetado pela função ‘SLEEP’.

As portas de E/S mantêm o estado em que se encontravam antes da execução da instrução SLEEP (MICROCHIP, 2003, pg 100), ou seja, as portas que estavam configuradas como entrada continuam como entrada e as portas configuradas como saída mantêm seu nível lógico (SOUZA, 2000, pg 126).

O consumo de energia do PIC, que pode chegar a 300mA no modo de operação normal (MICROCHIP, 2003, pg 117), pode cair para até 2uA em modo sleep (SOUZA, 2000, pg 126). Para garantir o mínimo consumo de energia em modo sleep é recomendável configurar todas as portas de E/S como entrada quando isto for possível (SOUZA, 2000, pg 126).

O microcontrolador pode ser "acordado" de três formas diferentes (MICROCHIP, 2003, pg 100) (SOUZA, 2000, pg 126):
-          Por um reset externo (no pino /MCRL);
-          Estouro do Watchdog Timer;
-          Interrupção externa ou mudança do estado dos pinos RB0, RB4, RB5, RB6 OU RB7.”


Fonte:
Duarte, Rafael Lindemann. SISTEMA INTELIGENTE DE MONITORAMENTO E CONTROLE DE IRRIGAÇÃO. São José: UNIVALI, 2006. (TCC Ciência da Computação)

quarta-feira, 16 de maio de 2012

Watchdog TIMER (WDT)


Vou começar a postar um pouco de material que eu já produzi. Eis aqui uma explanação sobre watchdog timer, que é um tema um tanto obscuro, mas muito útil e simples de entender e usar!

“Um microprocessador executa instruções da memória. Se ocorrer uma descarga elétrica próxima ao sistema, o barramento de dados do processador pode ser momentaneamente perturbado e fazer com que o processador leia algum byte errado da memória. Pode ocorrer ainda um bug do software que resulte em um estouro de pilha, então o processador pega lixo quando tenta voltar de uma sub-rotina. Nestes dois casos, o processador se perde e passa a executar o programa de forma equivocada.

Se estes problemas acontecerem em um computador, a solução seria simplesmente resetá-lo que ele voltaria a executar o programa normalmente. Porém, em sistemas embarcados, normalmente não existe este botão de reset e para prevenir estes problemas muitos sistemas utilizam o Watchdog Timer (WDT). O WDT é um contador que deve ser resetado pelo microprocessador em um tempo regular. Se isto não acontece, o WDT reseta o microcontrolador.

O Watchdog Timer é incrementado automaticamente com base em um clock independente (o PIC possui um oscilador RC interno exclusivo para o WDT) (Souza, 2000, pg 22). Se o WDT não for zerado pelo programa antes de estourar sua contagem (passar de 0xFF para 0x00), o microcontrolador é resetado. O contador do WDT estoura tipicamente em 18ms, mas pode variar de acordo com a tensão de alimentação, temperatura (SOUZA, 2000, pg 23) ou ainda configurado via prescaler. O prescaler é um divisor que pode ser aplicado ao contador TMR0 ou ao WDT. Com o prescaler o tempo de estouro do WDT pode ser aumentado em 2, 4, 8, 16, 32, 64, 128 ou 256 vezes. O oscilador interno do WDT torna este contador independente da freqüência do oscilador externo e garante o tempo de incremento constante.

A função do WDT é "acompanhar" a execução do código para identificar algum problema (BCL, 2002, pg 17). Se o programa em execução falha e não zera o contador do WDT ele interpreta que o sistema não está operando corretamente e reseta o microcontrolador (BCL, 2002, pg 37).

O programador não tem acesso ao WDT, tanto para leitura quanto para escrita. O programador apenas pode zerá-lo utilizando o comando 'CLRWDT', para evitar que o contador estoure e o sistema seja resetado.

A importância do WDT está no fato de que ele pode identificar quando o sistema opera erroneamente logo que isto acontece. Com o sistema fora de sua execução normal o programa deixa de zerar o contador e este estoura, então o WDT reseta o microcontrolador.

Um problema que envolve o uso do WDT é ter certeza que o programa está rodando corretamente. Por exemplo, um bug de softwarepode colocar erroneamente o processador em um looping infinito, sem fazer nada, mas servindo as interrupções. Se o reset do WDT estiver em uma rotina de interrupção, ele não vai estourar a contagem e não irá gerar o reset do microcontrolador, apesar deste estar funcionando de maneira irregular. De forma contrária, se o reset do WDT estiver dentro de um looping no programa, um bug de softwarepode desabilitar as interrupções e estas não mais serão servidas, mas o WDT “entenderá” que o sistema está executando de forma correta e não ativará o reset.

O WDT pode ser desabilitado no momento da gravação do PIC, mas não pode ser ligado ou desligado em tempo de execução (SOUZA, 2000, pg 23).”

Fonte:
Duarte, Rafael Lindemann. SISTEMA INTELIGENTE DE MONITORAMENTO E CONTROLE DE IRRIGAÇÃO. São José: UNIVALI, 2006. (TCC Ciência da Computação)