Programação básica de microcontroladores

  • 33,467 views
Uploaded on

Apresentação dos microntroladores, especialmente da linha pic16f, onde o alvo foi o PIC16f628a, que é bem simples de encontrar para comprar e de programar. Apesar de trabalhar com apenas 8 bits, é o …

Apresentação dos microntroladores, especialmente da linha pic16f, onde o alvo foi o PIC16f628a, que é bem simples de encontrar para comprar e de programar. Apesar de trabalhar com apenas 8 bits, é o robusto o suficiente para realizar automação que requeira PWM, comparação, USART; 16 I/O; e uma série de outras vantagens.

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • http://www.youtube.com/watch?v=R5JB08ZP-O4
    Are you sure you want to
    Your message goes here
  • http://www.youtube.com/watch?v=QYS1bWfp5SA
    Are you sure you want to
    Your message goes here
  • pic para iniciantes
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
33,467
On Slideshare
0
From Embeds
0
Number of Embeds
6

Actions

Shares
Downloads
872
Comments
3
Likes
6

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Danilo Morais Pagano Mestrando em Mecânica Computacional - UNICAMP
  • 2.
    • Microprocessadores: 4 bits, 8 bits, 16...
    • É um chip:
      • com alta integração de componentes
      • RAM externa
      • memória EEPROM externa
      • HD para armazenamento de programas
      • outros diversos periféricos.
    • Ou seja, você usa um microprocessador dentro de um microcomputador e ele, em conjunto com um monte de outros CIs, trabalham direitinho.
  • 3.
    • Microcontrolador é um componente completo por si só.
    • Basta um programa e ele executa uma função específica.
    • Dentro do microcontrolador temos memória RAM, FLASH, EEPROM ou E2PROM.
  • 4.
    • Vamos simplificar resumindo a lógica em dois números ou como falamos muito, em dois dígitos: O 0 (zero) e o 1 (um).
    • Quando falamos em 0 (zero), estamos nos referindo a zero Volt DC e quando falamos em 1 (um) estamos falando em + Vcc.
    • No caso dos microcontroladores PIC, geralmente, estaremos falando que:
    • 0 = GND e 1 = 5Vcc
  • 5.
    • Memória ROM
    • Memória RAM
    • Memória EPROM
    • Memória EEPROM ou E2PROM
    • Memória FLASH
  • 6.
    • É um endereço na memória
    • Formados por 8 números, ou melhor, 8 bits.
    • Estes bits podem ser 0 (zero) ou 1 (um).
    • Muitas vezes chamamos estes bits de Flags.
    • Flag então é um bit dentro de um registrador.
  • 7.
    • Imaginemos 8 posições:
    • Cada posição pode ter um valor de 0 (zero) ou 1 (um). Esta posição com um valor é um bit, ou melhor, bit é o valor que há dentro da posição.
    • Quando juntamos 8 bits, como no exemplo a seguir:
    • “ 00110011” ⇒ Chamamos isto de byte. Um byte então é um conjunto de 8 bits.
  • 8.
    • Às vezes os bits podem ser agrupados em números de 4, veja:
    • “ 0101” ⇒ Damos a isto o nome de “nibble”.
    • Outras vezes os bits podem se agrupar com números maiores que 8, veja:
    • “ 001100110011” ⇒ Chamamos isto de “Word”: 16 bits ou 2 bytes
  • 9.
    • Nos PICS existem registradores especiais
    • Podemos através dos bits ou flags destes registradores
    “ ajustar” o funcionamento do PIC ou saber como ele está operando, para isto basta escrever ou ler os flags destes registradores.
  • 10.
    • Os primeiros microcontroladores usavam uma estrutura interna que tinha apenas um caminho para trafegar os dados e endereços.
    • Lembre-se, dados são informações e endereços são os locais onde serão armazenados os dados.
    • O nome mais correto para este “caminho” é Bus. Com apenas um bus tínhamos que trafegar hora endereços, hora dados.
    • Esta arquitetura de construção recebe o nome de “Von Neumann”.
  • 11.
    • Hoje em dia, os PICs particularmente, trabalham com dois bus. Um para dados e outro para endereços.
    • Este tipo de arquitetura recebe o nome de “Harvard”.
    • Os PICs possuem ainda um outro recurso, chamado de “Pipeline”.
  • 12.
    • “ CISC” : possuía mais de 100 instruções, o que dificultava a memorização do programador.
    • “ RISC”: Este set tem entre 33 a 35 instruções dependendo do PIC. Isto ajuda na memorização, mas, exige mais do programador. É como falar fluentemente um outro idioma, conhecendo poucas palavras, all right?
    • C omplex
    • I nstruction
    • S et
    • C omputer
    • R educed I nstruction
    • S et
    • C omputer
  • 13.
    • Introdução à arquitetura interna e suas configurações
  • 14.
    • Fabricado pela Microchip ( www.microchip.com )
    • Possui 18 pinos
    • Possui 35 instruções
    • Clock até 20MHz
    • Memoria de programa tipo Flash de 2k words
    • 224 bytes de memoria RAM de dados
  • 15.
    • 128 bytes de memoria EEPROM para dados
    • Instruções de 14 bits com 200ns de execução
    • Dados de 8 bits
    • 15 registradores especiais
    • 16 pinos de entrada/saida (I/O)
    • ICPS, timer interno, watchdog, CPP, USART, etc...
  • 16.  
  • 17.  
  • 18.  
  • 19.  
  • 20.  
  • 21.  
  • 22. 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1
  • 23.
    • Com 8 níveis (imagine que você quer guardar 8 caixas iguais uma sobre a outra, cada caixa contém algumas coisas. Pois bem, cada caixa é um nível). Há de se ter cuidado para não “derrubar” esta pilha ou como se diz em programação, estourar a pilha (vai que dentro de uma pilha você colocou dinamite.).
  • 24.
    • O Watch dog é um contador independente de tudo dentro do PIC, que reseta o mesmo, após um certo período.
    • Para que serve isto?
    • Digamos que você fez um projeto com um PIC para controlar um elevador, de repente um pico de tensão o PIC trava-o fazendo com que o elevador pare. Depois de um curto período o Watch dog reseta o PIC, o programa volta a funcionar e o elevador volta a funcionar também.
    • Há de saber como se travar bem este cão, mas isto é, literalmente, outro capítulo...
  • 25.
    • Uma USART serial, mas o que é isto?
    • É um recurso que permitirá que você converse com outros equipamentos, como uma porta serial de um microcomputador.
    • USART significa “Universal Synchronous Asynchrous Receiver transmiter” ou Transmissor Universal Síncrono ou Assíncrono.
  • 26.
    • Só para lembrar PWM quer dizer modulação por largura de pulso, com este recurso você conseguirá variar o brilho de uma lâmpada, a velocidade de um motor DC ou até fazer uma fonte chaveada.
  • 27.
    • 2 comparadores analógicos com referência interna, programável, de tensão. Quem gosta de amplificadores operacionais prepare-se para se divertir, e quem não os conhece vamos ler um livro sobre AOPs.
  • 28.
    • É um sinal de onda quadrada que serve para fazer um circuito lógico funcionar ou para sincronizar diversos dispositivos ou circuitos.
    • O nível alto do clock =+Vcc
    • O nível baixo = zero volt.
    • O período alto (+Vcc) é chamado de “Ton” e o período baixo de “Toff”.
    • Ton = Toff. É melhor que sejam iguais
    • T = Ton + ToFF ( a soma resulta no periodo)
    • T = 1
    • F
  • 29.
    • Ao usarmos um cristal de 4MHz teremos uma freqüência de 4MHz e o período de:
    • T = 1 = 1 = 250ns ou 250 nano segundos
    • F 4.000,000
    • Ou 0,000. 000.25 segundos.
  • 30.
    • Divide-se clock por quatro, formando as fases Q1, Q2, Q3 e Q4
    • PIPELINE: Busca a informação em um ciclo e a executa no próximo
    • Para um clock de 4MHz, cada instrução é executada 1  s, desde que não afete o Program Counter
  • 31.
    • RC_CLKOUT = oscilador RC externo que deve estar ligado no pino 16. No pino 15 teremos este sinal dividido por 4.
    • RC_I/O = Oscilador externo mais que usa o pino 15 como I/O.
  • 32.
    • XT = cristal de 200kHz até 4MHz
    • HS = cristal acima de 4MHz
    • LS = cristal abaixo de 200kHz
    • INTOSC_I/O = oscilador interno com o pino 15 operando como I/O.
    • INTOSC_CLKOUT = o pino 15 teremos este sinal dividido por 4
  • 33.  
  • 34.  
  • 35.
    • O nome registrador W vem de “Registrador Work”, que traduzindo, quer dizer trabalho.
    • É através dele que carregamos os outros registradores com valores diversos e corretos para um perfeito funcionamento de nosso projeto.
    • Caso desejamos colocar um determinado valor em um registrador de uso geral (GPR), primeiro temos que “carregar” o registrador W e depois passar para o outro registrador.
  • 36.
    • O início de tudo...
  • 37.
    • Fique atento!
  • 38.  
  • 39.
    • LIST p=16f628a
    • #INCLUDE "P16F628.INC"
  • 40.
    • Abrir arquivo do word.
    • Exemplo:
    • __CONFIG _CP_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _PWRTE_ON & _LVP_OFF & _MCLRE_OFF
  • 41.
    • #DEFINE BANK0 BCF STATUS, RP0
    • #DEFINE BANK1 BSF STATUS, RP0
    • #DEFINE BOTAO PORTB, 4
    • #DEFINE LED PORTB, 0
  • 42.
    • ORG 0X00 ; inicio do programa
    • GOTO INICIO ; pula para o label INICIO
    • ORG 0X04 ; inicio da interrupção
    • RETFIE ; retorna da interrupção
  • 43.
    • INICIO
    • CLRF PORTA
    • CLRF PORTB
    • BANK1
    • MOVLW B‘00000000'
    • MOVWF TRISA
    • MOVLW B'00110000'
    • MOVWF TRISB
  • 44.
    • MOVLW B'10000011'
    • MOVWF OPTION_REG
    • MOVLW B'00000000'
    • MOVWF INTCON
    • BANK0
    • MOVLW B'00000111'
    • MOVWF CMCON
    • CLRF PORTA
    • CLRF PORTB
  • 45.
    • MAIN
    • BTFSS BOTAO
    • GOTO BOTAO_LIB
    • GOTO BOTAO_PRES
    • BOTAO_LIB
    • BCF LED
    • GOTO MAIN
    • BOTAO_PRES
    • BSF LED
    • GOTO MAIN
    • END
  • 46.
    • 1º passo: Abra o proteus Isis
    • 2º passo: Monte o circuito (fique atento!)
    • 3º passo: Adicione um source.
    • 4º passo: Edite o source.asm que você criou com o código apresentado
    • 5º passo: Compile o programa pelo comando BUILD
    • 6º passo: Carregue o programa para a memória do microcontrolador
    • 7º passo: Execute o programa.
  • 47.
    • Agora sim é pra valer... Cuidado ao errar, pois pode ser que você erre somente uma vez, pois o PIC é frágil...
  • 48.
    • 1º passo: Abra o IC-PROG
    • 2º passo: Mude o idioma para portugues.
    • 3º passo: Ative o driver para windows XP
    • 4º passo: Utilize a API do Windows
    • 5º passo: Selecione o PIC
    • 6º passo: Carregue o programa em HEX para a memória do IC-PROG
    • 7º passo: Configure os Fuses, caso necessário
    • 8º passo: Apague a memoria do PIC e faça a gravação do novo programa.
  • 49.
    • Agora chega de baixaria... Somos de alto nível...
    Serão apresentados 3 programas: Liga simples Pisca Pisca Sequencial de 4 LEDs Temos tempo ainda? SIM NÃO
  • 50.
    • #include "16f628a.h“
    • #fuses INTRC_IO, NOMCLR, NOWDT
  • 51.
    • Void main (){
    • SET_TRIS_A(255);
    • SET_TRIS_B(0);
    • while(true)
    • {
    • output_bit( PIN_B0, input(PIN_A0));
    • }
    • }
  • 52.
    • #include "16f628a.h"
    • #use delay(clock=4000000)
    • #fuses INTRC_IO, NOMCLR, NOWDT
  • 53.
    • void main() {
    • byte i=1;
    • SET_TRIS_A(255);
    • SET_TRIS_B(0);
    • while(true){
    • OUTPUT_LOW(PIN_B0);
    • delay_ms(1000);
    • OUTPUT_HIGH(PIN_B0);
    • delay_ms(1000); }
    • }
  • 54.
    • #include "16f628a.h"
    • #fuses INTRC_IO, NOMCLR, NOWDT
    • void main()
    • {
    • static boolean led=0;
    • SET_TRIS_A(255);
    • SET_TRIS_B(0);
    • OUTPUT_B(0);
    • while(true)
    • {
    • if(input(PIN_A0))
    • {
    • output_bit(PIN_B0, led); //Quando pressiona A0, manda o bit da variável led para o B0
    • led=!led; //inverte o bit da variável led
    • while(input(PIN_A0)) //Este laço deixa o microcontrolador sem fazer nada enquanto
    • {// o botão A0 ainda estiver pressionado, só voltando a rodar o programa quando soltar
    • }// o botão A0. Isto evita totalmente que o programa pense que o botão foi
    • }// pressionado sem querer...
    • }
    • }
  • 55.
    • Com o código compilado, você pode carregá-lo para a memória do microcontrolodor tanto do Proteus quanto o real.
  • 56.
    • Aumentando o nível ainda mais...
    Temos tempo ainda? SIM NÃO
  • 57.
    • Abra o programa Ldmicro
    • Escolha no menu configurações o modelo do microcontrolador
  • 58.
    • Insira um contato em série com uma saída.
    • Xbotao YLamp
    • |----] [---------------------------( )----|
    • Dê um nome ao contato e um nome à saída.
    • Determine um pino (bit de um port) para corresponder àquela instrução
    • Compile e carregue para a memória do uC (Proteus ou real).
  • 59.
    • Onde pesquisar...
    • Site da Microchip – www.microchip.com
    • Livros:
      • Desbravando o PIC – (Davi José)
      • Microcontroladores PIC: Técnicas avançadas ( Fábio Pereira)
      • PIC: Programação em C (Fábio Pereira)
    • Buscar no google...
  • 60.
    • Esta foi a ponta do Iceberg...
    • Agora cabe a cada um buscar/aprofundar mais no assunto...
    • Danilo Pagano
    • Departamento de Mecanica Computacional
    • Faculdade de Engenharia Mecanica
    • Universidade Estadual de Campinas - UNICAMP