2016.1 - DCA

Propaganda
Universidade Federal do Rio Grande do Norte
Departamento de Engenharia de Computação e
Automação
Sistemas Embarcados:
Interfaces de Entradas e Saídas
DCA0119 – Sistemas Digitais
Heitor Medeiros Florencio
Tópicos da Aula
• Programação de Microcontroladores:
– Bits de configuração.
• Sinais digitais de entrada e saída: Portas I/O.
– Portas de MCU PIC.
– Portas de MCU AVR.
2
Programação de μC
 Alimentar o μC;
 Escolher a fonte de clock;
Gravador
 Escolher a forma de gravação;
Arquivo
.hex
Compilador
C
Programa
em C
 Escolher o compilador;
????
3
Programação de μC
Programa
em C
Compilador
C
Arquivo
.hex
Gravador
• Existem registradores especiais nos microcontroladores que,
através dos bits ou flags desses registradores, podemos
configurar o características funcionais dos μC.
• A biblioteca do μC deve incluir esses bits/flags para que o
usuário tenha permissão de altera-los.
4
Fuses:
bits de configuração
• A configuração dos bits de configuração (fuses) do
microcontrolador deve ser a primeira coisa a ser feita na
programação.
• Cada microcontroladores tem seus fuses.
• A configuração incorreta de fuses pode levar o microcontrolador a
funcionalidades incorretas, ou até mesmo danificá-lo. Exemplos:
– Desabilitar a programação da memória flash.
– Impedir a execução do programa principal.
• Esses bits determinam o funcionamento do μC:
–
–
–
–
Modo do oscilador.
Contador para resetar.
Modo de programação.
Proteção do código.
5
Fuses: PIC16F628A
• Os principais bits de configuração (fuses) que influenciam no
funcionamento dos componentes do μC PIC16F628 são:








𝑪𝑷: Proteção da memória flash (proteção de código).
𝑪𝑷𝑫: Proteção da memória EEPROM (proteção de dados).
LVP: Habilita a tensão para programação ICSP.
BOREN: Proteção contra baixa tensão de execução.
MCLRE: Fuse de reset.
FOSC0, FOSC1, FOSC2: Seleciona a fonte de clock.
𝑷𝑾𝑹𝑻𝑬: Habilita um período de reset quando alimentado.
WDTE: Watchdog – Reiniciar o μC após um período de tempo sem
funcionamento.
6
Fuses: PIC16F628A
• Obs.: Os principais bits de configuração citados anteriormente
estão no registrador CONFIG.
7
𝑪𝑷 e 𝑪𝑷𝑫: PIC16F628
• 𝑪𝑷: protege a memória de programa (Flash) contra leitura e
cópia.
• 𝑪𝑷𝑫: protege a memória interna de dados (EEPROM) contra
leitura e gravações externas.
8
LVP: PIC16F628A
• Na gravação utilizando ICSP, o pino MCLR eleva a tensão para
garantir a correta transferência dos dados.
• LVP: pino utilizado para permitir a gravação com a própria
tensão de alimentação. O pino PGM é referente ao bit LVP na
gravação.
9
BOREN e MCLRE:
PIC16F628A
• BOREN: Brown-out Reset Enable.
A CPU é reinicializada quando a tensão cai abaixo de um limite definido
Vbor por um período superior a Tbor.
• MCLRE:
Reinicializa o microcontrolador quando o pino recebe tensão 0V.
10
FOSC0, FOSC1, FOSC2:
PIC16F628A
• FOSC0, FOSC1, FOSC2: Seleciona a fonte de clock.
Obs.: Além de definir a fonte de clock, o programador deve
definir o valor do clock através da flag XTAL.
11
FOSC0, FOSC1, FOSC2:
PIC16F628A
• Exemplo: Oscilador Interno com clock de 4MHz.
 Utilizando o MPLAB X e o compilador XC8.
12
WDTE: Watchdog
• Watchdog
é
um
contador,
independente
dos
outros
componentes do μC, que reinicia o
microcontrolador após um certo
período de tempo.
• O temporizador Watchdog
depende do clock do μC.
não
• Funciona como um cão de guarda.
• O tempo do watchdog é definido pela
flags TMR0 (temporizador 0),
normalmente 18ms.
13
WDTE: Watchdog
14
WDTE: Watchdog
Vantagens:
• Contra bugs: caso o programa venha gerar um bug que trave o
a execução do microcontrolador em um determinado
comando, o estouro do watchdog reinicializará o programa.
• Falhas inesperáveis: caso a falha esteja no próprio oscilador
da microcontrolador, a reinicialização do uC pode resolver.
15
Configurando Fuses PIC
no MPLAB X
(1)
16
Configurando Fuses PIC
no MPLAB X
(2)
(3)
17
Fuses: ATMega328
• Fuses:
–
–
–
–
PORF: Power-on Reset.
EXTRF: External Reset.
BORF: Brown-out Reset.
WDRF: Watchdog System Reset.
• Todos os fuses mostrados acima estão no registrador MCUSR:
18
Watchdog: ATMega328
• É possível escolher vários tempos do temporizador watchdog.
19
Watchdog: ATMega328
•
•
•
•
•
Bit 7 - WDIF: Watchdog Interrupt Flag
Bit 6 - WDIE: Watchdog Interrupt Enable
Bit 4 - WDCE: Watchdog Change Enable
Bit 3 - WDE: Watchdog System Reset Enable
Bit 5, 2..0 - WDP3..0: Watchdog Timer Prescaler 3, 2, 1 and 0
20
Watchdog: ATMega328
• Bit 5, 2..0 - WDP3..0: Watchdog Timer Prescaler 3, 2, 1 and 0
21
Configurando Fuses AVR
no Atmel Studio
• Tools -> Device Programming.
22
Configurando Fuses AVR
• Configurando via AtmelStudio.
• Também é possível configurar via comandos no argumento do
AVRDUDE.
23
Sinais Digitais de Entrada e Saída
(Portas I/O)
24
Sinais Digitais I/O
• A programação de microcontroladores inclui a lógica de
programação a ser embarcada e a configuração de
registradores dos componentes o μC.
• Atualmente, a maioria dos microcontroladores são baseados
na tecnologia de sinais digitais TTL (Lógica Transistor
Transistor).
25
Portas I/O
• Os microcontroladores dividem seus pinos digitais de entrada
e saída (pinos I/O) em grupos, chamados de Portas I/O.
Exemplo: PIC16F628A
• 2 portas I/0 (16 pinos I/O).
Exemplo: ATMega328
• 3 portas I/0 (24 pinos I/0).
26
Portas I/0: Registradores
• Todos esses pinos digitais I/O são configurados através da
combinação de valores de alguns registradores.
• Os registradores definem o estado do pino:
–
–
–
–
Nível alto.
Nível baixo.
Alta impedância.
Coletor aberto / dreno aberto.
27
Coletor Aberto /
Dreno Aberto
• Coletor aberto (para tecnologia TTL) e dreno aberto (para
tecnologia CMOS) representa o mesmo funcionamento.
• Circuitos com tecnologia TTL apresentam tensão de 5V de
saída para nível lógico ‘1’.
 Se você quiser atuar com esse sinal de saída em um
dispositivo que necessita de uma tensão maior para o nível
lógico ‘1’? Por exemplo, um dispositivo que precise de 12 V?
28
Coletor Aberto usando
Resistor de pull-up
Solução: Colocar o pino digital de saída para configuração
coletor/dreno aberto e utilizar um resistor de pull-up.
• A saída digital (0 ou 1) do C.I., no caso do μC, será a base de
um transistor Q1.
• O transistor Q1 será conectado a um Vcc e GND externo, que
será definido pelo usuário para obter a tensão desejada.
29
Coletor Aberto usando
Resistor de pull-up
Solução: Colocar o pino digital de saída para configuração
coletor/dreno aberto e utilizar um resistor de pull-up.
Atenção: Verifique os
limites de corrente de
pull-up definido no CI.
• A saída digital (0 ou 1) do C.I., no caso do μC, será a base de
um transistor Q1.
• O transistor Q1 será conectado a um Vcc e GND externo, que
será definido pelo usuário para obter a tensão desejada.
30
Resistor de Pull-up ou
Pull-down na Entrada
μC
PB0
• Qual o valor da tensão aplicada ao pino de entrada PB0:
 quando o botão estiver pressionado?
 quando o botão não estiver pressionado??
31
Resistor de Pull-up ou
Pull-down na Entrada
μC
PB0
• Qual o valor da tensão aplicada ao pino de entrada PB0:
 quando o botão estiver pressionado?
Resp.: 5V.
 quando o botão não estiver pressionado??
Resp.: ????? 5V?? 0V?? (circuito aberto).
32
Resistor de Pull-up ou
Pull-down na Entrada
• O resistor de pull-up ou pull-down são utilizados na entrada
de pinos digitais para assegurar que a tensão aplicada (nível
lógico aplicado) é ~0V ou ~5V.
• Mesmo quando o botão não estiver pressionado (circuito
aberto no botão), o circuito com resistor de pull-up ou down
força uma tensão de 0V ou ~5V.
33
Resistor de Pull-up ou
Pull-down na Entrada
• Atualmente, a maioria dos microcontroladores integram, de
forma opcional, a ligação de resistores de pull-up ou pulldown nas suas entradas digitais.
34
Portas I/0: Registradores
• As portas I/O dos μCs são configuráveis através de
registradores.
• Microcontroladores da família AVR utilizam os registradores:
– Registrador PORT (dados – leitura/escrita);
– Registrador DDR (controle de direção do pino de I/O- escrita/leitura);
– Registrador PIN (leitura do pino de I/O – apenas leitura).
• Microcontroladores da família PIC utilizam os registradores:
– Registrador PORT (dados – leitura/escrita);
– Registrador TRIS (controle de direção do pino I/O – leitura/escrita);
– Registrador LAT (armazena o valor do último comando de escrita).
35
Portas I/O: PIC16F628A
• Analisando o datasheet verifica-se que cada pino pode ter
uma
configuração
diferente
devido
as
diversas
funcionalidades que ele pode executar.
• Exemplos:
36
Portas I/O: PIC16F628A
• Um diagrama genérico de um pino I/0:
37
TRIS - PORT: PIC16F628A
• O registrador TRIS define se o pino/porta é de entrada ou
saída de dados:
TRISA = 00000000;
//os oito bits da porta A são bits de saída (0);
TRISA = 11111111;
//os oito bits da porta A são bits de entrada (1);
TRISA = 11110001;
//os bits 7, 6, 5, 4 e 0 são de entrada;
//os bits 1, 2 e 3 são de saída;
• Existem alguns compiladores que permitem acessar um bit
específico da porta.
38
TRIS - PORT: PIC16F628A
• O registrador PORT define:
 qual o nível lógico que será escrito na saída..
aux = PORTA;
//a variável “aux” vai armazenar o nível lógico lido;
 Dado que o registrador TRISA esteja com o valor ‘1’ - entrada.
 qual o nível lógico lido na entrada..
PORTA = 11111111;
//todos os bits da porta A terão o nível lógico ‘1’;
 Dado que o registrador TRISA esteja com o valor ‘0’ - saída.
39
Portas I/O: ATMega328
• Esquema geral de todos os pinos lógicos:
– Diodos de proteção;
– Resistor de pull-up;
• Todas as porta em microcontroladores AVR:
– Permite utilizar o pino com resistores de pull-up;
– Permite utilizar o pino na configuração “tri-state outputs” (‘0’, ‘1’ ou
‘Z’ – alta impedância).
– Permite a configurar a direção, o valor e se vai utilizar pull-up ou não.
40
Portas I/O: ATMega328
DDR
Resistor
pull-up
Pino
PORT
PIN
41
DDR - PORT: ATMega328
• O registrador DDR define se o pino funcionará como saída ou
entrada de dados:
DDRA = 00000000;
//os oito bits da porta A são bits de entrada (0);
DDRA = 11111111;
//os oito bits da porta A são bits de saída (1);
DDRA = 11110001;
//os bits 7, 6, 5, 4 e 0 são de saída;
//os bits 1, 2 e 3 são de entrada;
42
DDR - PORT: ATMega328
• O registrador PORT define:
 qual o nível lógico que será escrito na saída..
aux = PORTA;
//a variável “aux” vai armazenar o nível lógico lido;
 Dado que o registrador TRISA esteja com o valor ‘1’ - entrada.
 qual o nível lógico lido na entrada..
PORTA = 11111111;
//todos os bits da porta A terão o nível lógico ‘1’;
 Dado que o registrador TRISA esteja com o valor ‘0’ - saída.
43
Práticas
44
Programando em PIC
• Exercícios:
– Acender o LED1.
– Acender o LED1 e o LED2.
– Piscar o LED1 (utilizar função delay).
Demoboard PICKIT3
PIC18F54K20
45
Programando em AVR
• Exercícios:
– Acender o LED1.
– Acender o LED1 e o LED2.
– Piscar o LED1 (utilizar função delay).
Atmel Studio
avrdude
ATMega328
46
Referências
• http://www.embarcados.com.br/configuration-bits-dopic16f877a/
• http://www.embarcados.com.br/niveis-e-limites-de-tensoesdigitais/
47
Dúvidas?
Dúvidas por email:
[email protected]
48
Download