Buscar

4 Micro Parte 4 (PIC) Introducao

Prévia do material em texto

Microcontroladores PIC
TEORIA
MSc. Gustavo Souto de Sá e Souza
Microcontroladores PIC
Por que PIC?
Programmable Inferface Controller – Controlador de Interface Programável
X 
Peripheral Inferface Controller – Controlador de Interface Periféricas
Fabricados pela Microchip Technology
A Microchip não usa PIC como um acrônimo, na realidade a marca é PICmicro. Geralmente é conhecido que PIC significa Peripherical Interface Controller, embora o acrônimo original para o PIC1650 era Programmable Intelligent Computer.
RISC: Arquitetura de Harvard.
Separa a memória de execução da memória de dados. 
Usa pipeline, agilizando o processo.
Número reduzido de instruções
A ideia foi inspirada pela descoberta de que muitas das características incluídas na arquitetura tradicional de processadores para ganho de desempenho foram ignoradas pelos programas que foram executados neles. Mas o desempenho do processador em relação à memória que ele acessava era crescente. 
CISC: Arquitetura de Von Neumann:
Usa a mesma memória de execução e de dados.
Tem várias instruções diferentes, permitindo uso generalizado.
2
Microcontroladores PIC
Por que PIC?
Programmable Inferface Controller – Controlador de Interface Programável
X 
Peripheral Inferface Controller – Controlador de Interface Periféricas
Fabricados pela Microchip Technology
PICmicro
A Microchip não usa PIC como um acrônimo, na realidade a marca é PICmicro. Geralmente é conhecido que PIC significa Peripherical Interface Controller, embora o acrônimo original para o PIC1650 era Programmable Intelligent Computer.
3
Microcontroladores PIC
Instruções de um PIC podem variar de cerca de 35 instruções (PICs mais simples) para mais de 80 instruções para os PICs high-end.
Ciclo de instruções de 4 ciclos de clock.
Diferentemente do 8051, possui uma arquitetura RISC, apresentando maiores velocidades
Processam dados de 8 bits, 16 bits ou até mesmo 32 bits.
Trabalham com frequência de até 200 MHz.
RISC: Arquitetura de Harvard.
Separa a memória de execução da memória de dados. 
Usa pipeline, agilizando o processo.
Número reduzido de instruções
A ideia foi inspirada pela descoberta de que muitas das características incluídas na arquitetura tradicional de processadores para ganho de desempenho foram ignoradas pelos programas que foram executados neles. Mas o desempenho do processador em relação à memória que ele acessava era crescente. 
CISC: Arquitetura de Von Neumann:
Usa a mesma memória de execução e de dados.
Tem várias instruções diferentes, permitindo uso generalizado.
Algumas operações, como bit setting e testes, pode ser realizada em qualquer registrador numerado, mas operações aritméticas bi-operando sempre envolvem o W (acumulador), escrevendo o resultado de volta para W ou outro registrador operando. Para carregar uma constante, é necessário carregá-lo em W antes de ser transferida para outro registrador. Nos cores mais antigos, todos os movimentos de registrador precisavam passar por W, mas isso mudou nos núcleos "high-end".
4
NOP
Nenhumaoperação(MOVW 0,W)
OPTION
Copia W para o registrador OPTION
SLEEP
Entra em modo de economia de energia
CLRWDT
Reinicia o watchdog timer
TRIS f
Copia W para o registrador de triplo estado (f = 1, 2 or 3)
MOVWF f
dest ← W
CLR f,d
dest ← 0, normalmente escrito CLRW ou CLRF f
SUBWF f,d
dest ← f−W (dest ← f+~W+1)
DECF f,d
dest ← f−1
IORWF f,d
dest ← f | W, OU inclusivo lógico
ANDWF f,d
dest ← f & W, AND (E) lógico
XORWF f,d
dest ← f ^ W, XOR lógico
ADDWF f,d
dest ← f+W
MOVF f,d
dest ← f
COMF f,d
dest ← ~f, complemento bit a bit
INCF f,d
dest ← f+1
DECFSZ f,d
dest ← f−1, então pula se 0
RRF f,d
dest ← CARRY<<7 &#124; f>>1, rotacionar para a direita através do carry
RLF f,d
dest ← F<<1 | CARRY, rotacionar para a esquerda através do carry
SWAPF f,d
dest ← f<<4 | f>>4, swap nibbles
INCFSZ f,d
dest ← f+1, então pula se 0
BCF f,b
Limpar bit b de f
BSF f,b
Definir bit b de f
BTFSC f,b
Pular se bit b de f está limpo
BTFSS f,b
Pular se bit b de f está definido
RETLW k
Define W ← k, então retorna de uma subrotina
CALL k
Chama uma subrotina, endereço de 8 bits k
GOTO k
Pula para o endereço de 9 bits k[8]
MOVLW k
W ← k
IORLW k
W ← k | W, OU lógico (OR) bit a bit
ANDLW k
W ← k & W, E lógico (AND) bit a bit
XORLW k
W ← k ^ W, OUexclusivo(XOR) bit a bit
5
NOP
Nenhumaoperação(MOVW 0,W)
OPTION
Copia W para o registrador OPTION
SLEEP
Entra em modo de economia de energia
CLRWDT
Reinicia o watchdog timer
TRIS f
Copia W para o registrador de triplo estado (f = 1, 2 or 3)
MOVWF f
dest ← W
CLR f,d
dest ← 0, normalmente escrito CLRW ou CLRF f
SUBWF f,d
dest ← f−W (dest ← f+~W+1)
DECF f,d
dest ← f−1
IORWF f,d
dest ← f | W, OU inclusivo lógico
ANDWF f,d
dest ← f & W, AND (E) lógico
XORWF f,d
dest ← f ^ W, XOR lógico
ADDWF f,d
dest ← f+W
MOVF f,d
dest ← f
COMF f,d
dest ← ~f, complemento bit a bit
INCF f,d
dest ← f+1
DECFSZ f,d
dest ← f−1, então pula se 0
RRF f,d
dest ← CARRY<<7 &#124; f>>1, rotacionar para a direita através do carry
RLF f,d
dest ← F<<1 | CARRY, rotacionar para a esquerda através do carry
SWAPF f,d
dest ← f<<4 | f>>4, swap nibbles
INCFSZ f,d
dest ← f+1, então pula se 0
BCF f,b
Limpar bit b de f
BSF f,b
Definir bit b de f
BTFSC f,b
Pular se bit b de f está limpo
BTFSS f,b
Pular se bit b de f está definido
RETLW k
Define W ← k, então retorna de uma subrotina
CALL k
Chama uma subrotina, endereço de 8 bits k
GOTO k
Pula para o endereço de 9 bits k[8]
MOVLW k
W ← k
IORLW k
W ← k | W, OU lógico (OR) bit a bit
ANDLW k
W ← k & W, E lógico (AND) bit a bit
XORLW k
W ← k ^ W, OUexclusivo(XOR) bit a bit
PIC12/PIC16:
32 instruções!
6
NOP
AJMP
LJMP
RR
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
JBC
ACALL
LCALL
RRC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
JB
AJMP
RET
RL
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
JNB
ACALL
RETI
RLC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
JC
AJMP
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
JNC
ACALL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
JZ
AJMP
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
JNZ
ACALL
ORL
JMP
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SJMP
AJMP
ANL
MOVC
DIV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
ACALL
MOV
MOVC
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
ORL
AJMP
MOV
INC
MUL
?
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
ANL
ACALL
CPL
CPL
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
PUSH
AJMP
CLR
CLR
SWAP
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
POP
ACALL
SETB
SETB
DA
DJNZ
XCHD
XCHD
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
MOVX
AJMP
MOVX
MOVX
CLR
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOVX
ACALL
MOVX
MOVX
CPL
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
7
NOP
AJMP
LJMP
RR
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
JBC
ACALL
LCALL
RRC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
JB
AJMP
RET
RL
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
JNB
ACALL
RETI
RLC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
JC
AJMP
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
JNC
ACALL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
JZ
AJMP
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
JNZ
ACALL
ORL
JMP
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SJMP
AJMP
ANL
MOVC
DIV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
ACALL
MOV
MOVC
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
ORL
AJMP
MOV
INC
MUL
?
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOVANL
ACALL
CPL
CPL
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
PUSH
AJMP
CLR
CLR
SWAP
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
POP
ACALL
SETB
SETB
DA
DJNZ
XCHD
XCHD
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
MOVX
AJMP
MOVX
MOVX
CLR
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOVX
ACALL
MOVX
MOVX
CPL
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
8051:
aproximadamente
255 opcodes!
8
ARDUINO x PIC
vs
ARDUINO x PIC
vs
ATMEL AVR vs PIC
10
Atmel AVR vs pic
Se destacou por ser pioneiro no uso de memória flash em seus chips, em uma época onde se usava PROM, EPROM e EEPROM.
A grande diferença: Atmel AVR usa Arquitetura de Harvard Modificada - capaz de reescrever a memória do programa durante a própria execução.
Velocidades e recursos são comparáveis. Ambos possuem famílias diferentes capazes de atender diversas necessidades.
A Arquitetura de Harvard Modificada é uma variação da Arquitetura de Harvard que permite que o conteúdo da memória de programa seja acedido como se fosse memória de dados
11
Arduino vs PICKIT
vs
Arduino
PicKit
Plataforma completade desenvolvimento
Programador de chip
ArduinoIDE possui uma única linguagem que engloba inúmeros modelos diferentes
MPLAB X IDE possui instruções e comandos diferentes para cada família, e até mesmo varia de chip pra chip.
Possibilidade de usar Shields com diversasfunções
A expansãodas funções depende do desenvolvimento de uma placa
Custo varia entre R$40para os mais simples até R$ 150 para o modeloDue.
Custa em torno de R$150
Mais simples
Mais complexo
Menorliberdade para trabalhos específicos
Liberdade absoluta para se trabalhar com todos os registradoresdomicrocontrolador
Chip nem sempre é removível.
Porse tratar somente do programador, o chip é obtido separadamente.
Famílias Pic
8 bits:
PIC10 – 8 microcontroladores (6 pinos)
PIC12 – 20 microcontroladores (8 pinos)
PIC16 – 155 microcontroladores (8 a 64 pinos)
PIC18 – 223 microcontroladores (18 a 100 pinos)
Variadas aplicações que exigem economia de energia, processamento simples, compatibilidade e robustez.
14
Famílias Pic
16 bits:
PIC24, dsPIC30, dsPIC33
Total de 432 microcontroladores (12 a 122 pinos)
Periféricos mais amplos: 
Conversores AD de maior resolução
Conversores DA
Funções de processamento digital de sinais (FFT, filtros)
Bibliotecas e funções mais acessíveis para uso de vários recursos como PWM, USB e TCP/IP.
Famílias Pic
32 bits:
PIC32: 184 microcontroladores (28 a 144 pinos)
Hardware dedicado para operações em pontos flutuantes.
Frequência de operação de até 200 MHz (contra 48 MHz das outras famílias)
Integração simplificada com interfaces gráficas, áudio, comunicações e controles multitarefa.
MPLAB Harmony Framework
Cada família difere em vários aspectos:
Bits de configuração
Tensão de funcionamento
Frequência de funcionamento
Periféricos
Instruções
Ou seja: um programa feito para um chip de uma família não funcionará em outra família sem inúmeras adaptações. De fato, um programa feito para chips diferentes da mesma família também podem precisar de algumas adaptações.
Famílias Pic
A quantidade de bits do microcontrolador define o tamanho do barramento de leitura e escrita de dados. Ou seja: é a quantidades de bits que serão lidos e escritos por vez. Isso implica que um microcontrolador de 16 bits pode fazer operações com números de 0 a 65535 de uma só vez, enquanto um de 8 bits precisa de sub-rotinas complexas usando vários registradores de 0 a 255 para se chegar ao mesmo resultado. 
Apesar de que durante a programação em alto nível, isso pode passar despercebido, ganha-se em eficiência de execução e em espaço de memória.
Famílias Pic
Apesar de o chip ser gravado apenas em baixo nível, como todo microcontrolador, geralmente a programação dele é feita pelos usuários em linguagem de alto nível, por meio de compiladores.
Esse é um dos grandes motivos da popularização do PIC (e também do Arduino).
Existem vários compiladores e ambientes de programação diferentes para PICs. Cada um possui conjuntos de instruções diferentes. 
COMPILADORES E ambientes de programação
O Compilador é o software responsável por traduzir as instruções de linguagem de alto nível para linguagem de baixo nível.
O Ambiente de Programação é a interface que o usuário usa para programar o chip.
Os compiladores mais usados são os da própria Microchip: C18 compiler, os mais recentes XC8, XC16 e XC32. Apesar disso, também são bem usados outros como o mikroC e o CCS. Todos possuem variações gratuitas e pagas, cada uma com suas características.
COMPILADORES E ambientes de programação
20
Geralmente cada compilador tem um ambiente de programação próprio, como os da mikroC.
Porém há ambientes como o PIC C Wizard, que utiliza o compilador CCS para gerar os arquivos hex a serem gravados nos chips.
O ambiente de programação da Microchip é o MPLAB IDE ou o mais recente MPLAB X IDE. 
Ambientes de programação
Utilizaremos o MPLAB X IDE, que é o ambiente de programação mais recente da própria fabricante do PIC. 
Ele suporta os compiladores mais recentes XC8, XC16 e XC32. Estes compiladores possuem versões gratuitas, onde o código não é otimizado, versões Padrão, de “baixo” custo e otimiza o programa em até 25% comparado com a versão gratuita, e a versão Pro, de alto custo e pode otimizar o programa mais de 50%.
Um código menor é mais eficiente e ocupa menos memória.
MPLAB X IDE e compiladores XC8/XC16/XC32
Utilizaremos o MPLAB X IDE, que é o ambiente de programação mais recente da própria fabricante do PIC. 
Ele suporta os compiladores mais recentes XC8, XC16 e XC32. 
Estes compiladores possuem versões:
Gratuitas: onde o código não é otimizado,
Standard: de “baixo” custo (US$ 595 para o XC32) e otimiza o programa em até 25% comparado com a versão gratuita
Pro: de alto custo (US$1295 para o XC32) e pode otimizar o programa mais de 50%.
MPLAB X IDE e compiladores XC8/XC16/XC32
Os compiladores XC8, XC16 e XC32 possuem várias bibliotecas e instruções específicas para os microcontroladores PIC de 8, 16 e 32 bits respectivamente.
Utilizam uma linguagem C.
Possuem várias bibliotecas prontas para acesso a periféricos e funções específicas, como funções de atraso, acesso a LCDs ou comunicação serial.
Aceitam partes do código em assembly.
MPLAB X IDE e compiladores XC8/XC16/XC32
Alimentação
Normalmente PICs são alimentados com 5 V ou 3.3 V.
Confirmar no datasheet do chip!
Famílias de 8 ou 16 bits geralmente trabalham com 5 V ou 3.3 V.
Família PIC32 focam em chips de 3.3 V.
LEIAM O DATASHEET!
Na eletrônica, inúmeros circuitos necessitam de um “clock”, geralmente obtido por meio de circuitos osciladores. 
Oscilador
Oscilador RC
Oscilador com cristal em um microcontrolador
31
Como todo microcontrolador, o PIC necessita de um clock.
Ele vem com um oscilador RC interno, mas também pode ser ligado a um oscilador externo.
A frequência do oscilador, juntamente com multiplicadores e divisores internos, definem a frequência de ciclo de máquina do PIC. 
Oscilador
O oscilador interno é impreciso, e sofre variações com mudanças de tensão e/ou temperatura.
O oscilador externo ocupa espaço, mas é preciso.
32
Os PICs possuem várias formas de se configurar sua frequência de operação, por meio de definição de Bits de Configuração.
Definições:
Frequência do oscilador.
Frequência do sistema.
Frequência de ciclo de máquina.
Frequência de CICLO DE MÁQUINA
Frequência do oscilador: frequência do oscilador interno ou externo.
Frequência do sistema: frequência do oscilador multiplicado ou dividido pelas PLLs (phase locked loop - Malha de Captura de Fase).
Frequência de ciclo de máquina: frequência do sistema dividido por 4.
Frequência de CICLO DE MÁQUINA
PLL – Phase Locked Loop
Frequência de CICLO DE MÁQUINA
PLL
Frequência de CICLO DE MÁQUINA
2xPLL
Frequência de CICLO DE MÁQUINA
4xPLLFrequência de CICLO DE MÁQUINA
8xPLL
Frequência de CICLO DE MÁQUINA
16xPLL
Frequência de CICLO DE MÁQUINA
Registradores internos que configuram várias características de operação do PIC: oscilador, modo de operação de temporizadores e conversores A/D, recursos de debug e segurança.
Variam muito de chip pra chip. 
Dependendo do chip, é possível alternar entre osciladores durante a execução de um programa.
Bits de Configuração
dsPIC30F3014
ECIO – External Clock I/O
FRC – Fast RC Oscillator
XT – Crystal
HS – High Speed Crystal
44
dsPIC30F3014
45
PIC18F4550
PIC18F4550
PIC18F4550
48
PIC18F4550
PIC18F4550
LEIAM O DATASHEET!
Os microcontroladores PICs utilizam entradas e saídas digitais:
Portas A, B, C, D e até E, com até 8 pinos em cada uma, dependendo do modelo do chip.
Inputs e Outputs
52
LEIAM O DATASHEET!
Como ler essas entradas ou escrever nessas saídas?
O pino ou porta pode ser definido como entrada ou saída usando o registrador TRIS.
Definindo um valor igual a “1” no registrador TRIS específico, define aquele pino como entrada e um valor “0” o define como saída.
1 entrada
0  saída
Inputs e Outputs
Para definir todos os pinos da porta D como saída:
TRISD = 0b00000000;
Para definir todos os pinos da porta D como entrada:
TRISD = 0b11111111;
Inputs e Outputs
56
Para definir os pinos de 0 a 4 da porta B como saída e os de 5 a 7 restante como entrada:
TRISB = 0b11100000;
Podemos também usar um valor decimal ou hexadecimal:
TRISB = 224;
TRISB = 0xE0;
Inputs e Outputs
57
TRISD = 0;
Significa que todos os pinos da porta D estão sendo usados como saída.
TRISB = 1;
Significa que o pino RB0 está sendo usado como entrada e os pinos RB1, RB2, RB3, RB4, RB5, RB6 e RB7 são de saída.
Inputs e Outputs
58
Quando for necessário definir apenas um pino de uma porta inteira, pode-se usar a seguinte sintaxe:
TRISBbits.TRISB3 = 1;
Dessa forma se define apenas o pino RB3 como entrada e o restante continua como estava anteriormente.
Inputs e Outputs
Para se definir o estado de um pino digital de saída, usa-se o registrador LAT.
 
Exemplo: para definir os pinos 0, 2, 4 e 6 da porta B em nível baixo e os outros pinos em nível alto:
LATB = 0b10101010;
Inputs e Outputs
60
Também pode se mudar o valor bit a bit com a seguinte sintaxe:
Exemplo: o pino 0 da porta B em nível baixo:
LATBbits.LATB0 = 0;
Ou em nível alto:
LATBbits.LATB0 = 1;
Inputs e Outputs
Para se ler o estado de uma porta, usa-se o registrador PORT.
 
Exemplo: para salvar na porta C o estado atual da porta D:
LATC = PORTD;
Também é possível ler apenas o valor de um pino:
LATCbits.LATC0 = PORTDbits.RD0;
Inputs e Outputs
É possível usar operadores lógicos da linguagem C, como o sinal de exclamação (não).
Para inverter o sinal do pino RD0:
LATDbits.LATD0 = !PORTDbits.RD0;
Inputs e Outputs
63
Por que LAT e PORT?
Inputs e Outputs
Por que LAT e PORT?
Escrita em LAT escreve no registrador LAT.
Leitura em LAT lê registrador LAT.
Escrita em PORT escreve no registrador LAT.
Leitura em PORT lê nível de tensão no pino.
Inputs e Outputs
O estado atual do pino (PORT) pode ser diferente do valor escrito no registrador em algumas circunstâncias. Por exemplo,
Quando o pino de saída está conectado a cargas indutivas ou capacitivas muito grandes.
Quando o pino de saída está ligado a LEDs sem resistores limitadores de corrente.
Quando o pino de saída regula um transistor sem um resistor de base.
Quando o pino de saída está aterrado.
Inputs e Outputs
Por isso é uma boa prática ler de LAT e escrever em PORT. Mas na maioria dos casos, se você ler e escrever em PORT, irá funcionar conforme esperado.
Inputs e Outputs
67
Conclusão
Conclusão
LEIAM O DATASHEET!
O programa mais básico de um microcontrolador é fazer um LED piscar num intervalo fixo de tempo.
Faremos a comparação entre o código entre o 8051, PIC e Arduino.
Hello, worLd!
			ORG 00H	
			LJMP INICIO	
		
			ORG 30H	
INICIO:	CPL P1.0	
			LCALL ATRASO	
			SJMP INICIO	
		
ATRASO:	MOV R0,#10	
V2:			MOV R1,#100	
V1:			MOV R2,#200	
			DJNZ R2,$	
			DJNZ R1,V1	
			DJNZ R0,V2	
			RET		
			END		
Hello, worLd! - 8051
Hello, worLd! – PIC18F4550 @ XC8
#include <pic18f4550>
#define _XTAL_FREQ 2000000
void main(void)
{
	TRISD=0;
	PORTD = 1;
	while(1)
	{
		PORTDbits.RD0 = !LATDbits.LATD0;
		__delay_ms(100);
	} 
} 
Hello, worLd! - Arduino
int ledPin = 0;
void setup() {
	pinMode(ledPin, OUTPUT);
}
void loop() {
	digitalWrite(ledPin, !digitalRead(ledPin));
	delay(100);
}
Tutorial “Hello World!”
Instalar MPLAB X IDE
Instalar compiladores XC8/XC16 ou XC32
Definir chip
Configurar oscilador
Corpo do programa
Testar
Conversão Analógico - digital
Resolução:
Dada em bits
Define a menor variação de tensão detectável
Geralmente os ADCs têm resolução de 8, 10 ou 12 bits nos PICs
75
Conversão Analógico - digital
Resolução:
Dada em bits
Define a menor variação de tensão detectável
Geralmente os ADCs têm resolução de 8, 10 ou 12 bits nos PICs
76
Conversão Analógico – digital
Para 0-5V, as menores variações detectáveis são de:
8 bits: 20 mV
10 bits: 5 mV
12 bits: 1 mV
16 bits: 76 uV
24 bits: 298 nV
Ruído!
77
Conversão Analógico – digital
Para reduzir ruídos, recomenda-se tomar as seguintes precauções:
Criar uma placa com um (ou vários) planos de terra;
Separar o circuito analógico do circuito digital: evita ruído de chaveamento de altas frequências;
Casamento de impedâncias em trilhas;
Desconectar dispositivo da rede elétrica (alimentação por baterias);
Uso de capacitores de desacoplamento;
78
Conversão Analógico – digital
Plano de Terra:
79
Conversão Analógico – digital
Circuitos separados:
80
Conversão Analógico – digital
Capacitores de desacoplamento:
Evita oscilações na tensão de alimentação durante oscilações na energia requerida pelo circuito.
81
Conversão Analógico – digital
Taxa de amostragem:
82
Conversão Analógico – digital
Taxa de amostragem:
83
Conversão Analógico – digital
Aliasing:
Teorema de Nyquist: taxa de amostragem deve ser 2 vezes maior que a maior frequência do sinal amostrado.
84
PULSE WIDTH MODULATION - PWM
Modulação por largura de pulso:
Tensão média:
10 % 
50 %
90 %
85
PULSE WIDTH MODULATION - PWM
Modulação por largura de pulso:
Na prática:
T – PR2 (timer2)
t (%) - CCPR2L
(0 a 255)
86
PULSE WIDTH MODULATION - PWM
Modulação por largura de pulso:
Na prática:
CCPR2L = 25
CCPR2L = 128
CCPR2L = 230
87

Continue navegando