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

segunda-feira, 9 de julho de 2012

PROJETO COMPLETO - PicOClock, um relógio na tela do osciloscópio!!!

Encontrei mais um projetinho por acaso, achei muito legal louco e resolvi postar aqui. O cara meteu um relógio na tela do osciloscópio!!!!


Tela do "relogioscópio". Fonte: micro-examples.com

O circuito é muito simples:
 
Circuito. Fonte: micro-examples.com

No site do projeto estão disponíveis:
- Explicação em texto e vídeo;
- Esquema elétrico;
- Programa em C completo (compilador MicroC).

Livro/curso/manual/sei-lá-o-quê sobre PIC em português

Um material bem explicado, apresenta a arquitetura interna sem muitas delongas. Tradução do original "PIC by Example" italiano. Antiguinho, mas de qualidade.



Índice do curso/livro/manual/algo-parecido


Outras opção de link para o mesmo material:
http://jtuga.net23.net/brasiliano/index.htm
http://jtuga.net23.net/brasiliano/lezioni.htm
http://jtuga.net23.net/brasiliano/principale.htm

Já em pdf:
http://rmeletronica.com.br/files1/apostiladepic.pdf

Em italiano:
http://jtuga.net23.net/

sexta-feira, 8 de junho de 2012

PROJETO COMPLETO - PIC Trainer


Lhes apresento aqui mais um projeto de uma placa para situações de desenvolvimento e aprendizagem. Uma não, várias. O projeto foi desenvolvido pelo pessoal da revista argentina uControl e é composto por várias placas diferentes, uma para cada funcionalidade.

Fonte da imagem: www.ucontrol.com.ar


Este é um projeto de hardware livre. No site da uControl estão todos os desenhos, esquemas, placas, fotos, instruções...

Lista dos módulos já disponíveis no site (em breve, outros provavelmente virão):

Legal pra quem quer montar um kit pra aprender ou desenvolver com microcontroladores, ou também pra quem quer dar uma espiada sobre como implementar um item especifico, como teclado matricial por exemplo.





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



Uso de Microcontroladores para o acionamento de tiristores

Excelente artigo escrito por Francisco Fambrini e publicado no site do Newton C. Braga, explicando o acionamento de cargas CA com tiristores, efetuando o controle com microcontroladores.


Fonte da imagem: www.newtoncbraga.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


Variáveis locais e globais


Na linguagem de programação C as variáveis podem ter três visibilidades diferentes, de acordo com o local de sua declaração (PEREIRA, 2003, pg 61):

-          Variáveis globais: podem ser acessadas de qualquer ponto do programa. As variáveis globais são declaradas no corpo do programa e não de funções.

-          Variáveis locais: são declaradas no interior de uma função ou bloco de código (como um laço de repetição) e somente dentro deste trecho podem ser acessadas. Quando a função que criou uma variável local ou o bloco em que ela está inserida termina sua execução a memória alocada para esta variável é liberada.

-          Parâmetro formal de uma função: a linguagem C permite a declaração de variáveis nos parâmetros formais de uma função. Estas variáveis constituem um tipo especial de variáveis locais, pois são visíveis no interior da função e são acessíveis em qualquer ponto do programa (pela chamada da função).



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


sexta-feira, 1 de junho de 2012

Material de aula - Série: Relógio e Teclas Episódio I


Atendendo a pedidos dos alunos do curso superior, vou iniciar agora uma nova micro série de postagens abordando as teclas de ajuste do horário no relógio implementado como exercício em sala.

Vou mostrar algumas formas diferentes de realizar este ajuste, tanto em termos de implementação, quanto com relação à interface disponível para o usuário.

A primeira versão apresentada agora faz uso de 4 teclas, uma para aumentar hora, uma para diminuir hora, um apara aumentar minuto e outra para diminuir minuto.

Figura 1 - Preview do esquema elétrico

O programa foi criado no CCS para o PIC16F877A e está bastante comentado, indicando o que cada instrução e/ou bloco significa. Se ainda restar alguma dúvida, grita aí nos comentários.

Figura 2 - Preview do programa

O projeto está compactado em um arquivo rar, contendo:
- Código fonte em C (com e sem os comentários);
- Biblioteca para o LCD;
- Arquivo hex para simulação ou gravação;
- Arquivo de esquema elétrico e simulação do ISIS (Proteus).


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)


quarta-feira, 30 de maio de 2012

PROJETO COMPLETO - Repetidor de Sinal de Controle Remoto com PIC

Projeto completo de um repetidor de sinal de controle remoto com microcontrolador PIC Apresentado no site Eletromaniacos.com. Na forma em que ele é apresentado pode ser usado para aumentar o alcance de um controle remoto. 
Até aí, nada demais... :-/

Fonte da imagem: Eletromaniacos.com

Mas, como este projeto implementa a recepção E o envio de informação (recebe e repete) pode ser facilmente adaptado para ser o controle de algum dispositivo, ou ainda ser o receptor para poder controlar outro projeto com um controle remoto de TV, por exemplo.

Vale a pena conferir!!

No site do projeto, estão disponíveis:
- Código fonte em assembly para os PICs 12F629, 12F675 e 12F683;
- Arquivos HEX para estes mesmos microcontroladores;
- Esquema elétrico;
- Desenhos da placa (em pdf).


Cartão de referência CCS (PICC)

Caros amigos, colegas e coisa e tal...

Trago aqui um documento que encontrei na internet, intitulado "Cartão de Referência" para  o compilador da CCS, e mostra um resumos das instruções, operadores, tipos de dados (variáveis), formatações de saída com printf, estruturas de seleção e repetição, exemplos, mensagens de erro apresentadas pelo compilador, além de outras informações importantes.

Bem útil pra hora em que aparecer aquela dúvida cruel. É bom ter ele por perto sempre!

Preview da primeira página (são 9 no total)

Este arquivo não cita o nome do autor e já o encontrei em diversos sites diferentes, então, não consigo afirmar quem é seu criador. Se alguém souber, por favor, prenda o grito!!



quarta-feira, 23 de maio de 2012

Projeto completo - MICROCONTROLADORES PIC – CONTROLE DE MOTOR DE PASSO - ArneRobotics


Mais um projeto completo do Arne, com esquemas e programa. Como de costume, absurdamente bem explicado!!!

Este projeto se trata de um controlador de motor de passo com microcontrolador PIC. Muito legal para entender como fazer o controle de posição, velocidade, sentido de giro (etc...) pelo microcontrolador.



Fonte da imagem: arnerobotics.com.br


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)

MPLAB XC - Microchip lança uma nova linha de compiladores C (gratuitos) para todas as famílias de MCUs e DSCs



A Microchip (fabricante dos PICs) lançou recentemente um anova linha de compiladores C, com versões totalmente funcionais gratuitas.



Veja a matéria bem mastigadinha da ElektorBrasil:


Mais informações, no site da Microchip:


Para baixar a versão windows para PICs 8bits (PIC10, 12, 16 e 18):
http://www.microchip.com/mplabxc8windows (Ainda tem versões para linux e OS X).


Tô instalando pra testar, em breve posto minhas impressões...

Abaixo, a transcrição do e-mail que recebi da Microchip anunciando a novidade em 3/5/2012:
"

$Account.OrganizationName


Escreva código mais rápido e optimizado para todos os Microcontroladores PIC® e Controladores Digitais de Sinal dsPIC®

Obtenha a melhor velocidade de execução e dimensão de código para qualquer Microcontrolador (MCU) PIC® ou Controlador Digital de Sinal (DSC) dsPIC® com a nova gama melhorada de Compiladores C, MPLAB® XC da Microchip.

A nova gama de Compiladores C da Microchip permite aumentar a velocidade de código de qualquer MCU PIC® ou DSC dsPIC® em cerca de 30%, ao mesmo tempo reduzindo a dimensão do código em 35%.

Os compiladores MPLAB® XC oferecem a escolha dos níveis de optimização de código nas versões Free, Standard ou Pro, para desenvolvimento em arquitecturas 8-bit, 16-bit ou 32-bit, ou uma única suite de compilação C com suporte para todos os mais de 900 MCUs e DSCs da Microchip.

A edição grátis (Free) do MPLAB XC é um compilador totalmente funcional sem qualquer restrição de licenças para aplicações comerciais, enquanto as edições Standard e Pro aumentam a optimização de código em até 25% ou 50%, respectivamente. A edição Pro também está disponível numa versão de teste gratuita, durante 60 dias, totalmente funcional e sem restrições.

A operação totalmente harmonizada entre os compiladores e depuradores / programadores existentes no premiado ambiente de desenvolvimento MPLAB X ou no anterior MPLAB IDE, tornam o MPLAB XC simples de usar e maximizam o investimento já efectuado em ferramentas de desenvolvimento da Microchip.

Ferramentas de Desenvolvimento
Totalmente compatíveis com as ferramentas de desenvolvimento existentes da Microchip, como por exemplo:

  • PICkitTM 3 - Depurador / Programador Integrado de Baixo Custo (PG164130)
  • MPLAB ICD 3 - Sistema Depurador Integrado (DV164035)
  • MPLAB REAL ICETM - ISistema Emulador Integrado (DV244005)
Desenvolvimento simplificado com optimização de código Free, Standard ou Pro

  • MPLAB XC8 para MCUs a 8-bit
  • MPLAB XC16 para MCUs e DSCs a 16-bit
  • MPLAB XC32 para MCUs a 32-bit
  • MPLAB XC Suite para todos os +900 MCUs PIC e DSCs dsPIC.

Descarregue os compiladores Free e consulte toda a informação em: www.microchip.com/mplabxc

"

segunda-feira, 21 de maio de 2012

Projeto completo - Placa de desenvolvimento e testes, para microcontroladores PIC

Encontrei uma proposta de placa de desenvolvimento bem legal, do engenheiro português Antonio Sérgio Sena.

Ele disponibilizou o esquemático completo, além da foto da placa já montada (clique na foto acima para aumentar).



sexta-feira, 18 de maio de 2012

Material de aula - padrao.c

Arquivo com cabeçalho para o PIC16F877A, também conhecido por "programa em branco".

Use este arquivo para desenvolver seus novos programas no CCS (PICC ou PCW), ou você mesmo pode criá-lo utilizando o PICWizard.

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)

LabVirtual versão 3.2 - arquivo para simulação com microcontrolador PIC16F877A no ISIS

Saiu a versão 3.2 do LabVirtual para simulação com microcontrolador no Proteus.
O arquivo está salvo para a versão 7 e contém os seguintes periféricos:
- LEDs;
- Teclas;
- Buzzer;
- Motor CC;
- Sinais analógicos (por potenciômetros);
- Bargraph;
- LCD 16x2;
- 7 segmentos.


Além dos circuitos oscilador e RESET.


Agora em A3, melhorando muito a organizaçã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)

PROJETO COMPLETO - Relógio com GPS

Projeto completo de um relógio com GPS disponibilizado pelo Luiz Bertini.

O esquema elétrico do circuito, em pdf, está aqui: http://www.luizbertini.net/microcontroladores/RELOGIO_COM_GPS.pdf
O programa (hex para gravação do microcontrolador), neste link: http://www.luizbertini.net/microcontroladores/relogio_com_gps_1.rar

Fonte: http://www.luizbertini.net/