Manual Básico de Operação do Microcontrolador - Intranet

Transcrição

Manual Básico de Operação do Microcontrolador - Intranet
Manual Básico de Operação do
Microcontrolador MC68HCJK3 e
MC68HCJK1
Disciplina: Microcontroladores “A”
Professor Adjunto: Alexandre Campos
([email protected])
Mestrando: Alexandre Luís Michel
2
I. INTRODUÇÃO
No passado as tecnologias existentes no mercado obrigavam a pequenos e médio industriais
investir quantia razoável de dinheiro em equipamentos adicionais ao microcontrolador, como
apagadores ultravioleta, programadores e em alguns casos softwares que permitisse editar,
compilar, simular, realizar conexões e programa-los. Os novos microcontroladores e ferramentas de
desenvolvimento disponíveis para os usuários de microcontroladores de 8 bits da Motorola possuem
todas estas facilidades mediante um programa interno de fábrica, que permite começar projetos de
forma muito simples, rápida e sem nenhum custo adicional.
II. BREVE DESCRIÇÃO DO MICROCONTROLADOR MC68HC908JK3/JK1
O microcontrolador MC68HC909JK3 e todos os membros da família HC08 da Motorola,
caracterizam-se por seu baixo custo e alto desempenho. Eles utilizam a unidade de processamento
denominada CPU08 e estão disponíveis em diversas variedades de apresentação (20,28 e 40 pinos)
e em diversos tamanhos de memória. (1.5K, 4K e 32K). Dentro das principais características destes
microcontroladores é de possuírem memória flash (apagamento e gravação eletricamente), canais de
conversores analógico/digital (ADC). Na Tab 1 podem ser observadas as características mais
importantes da CPU08 e na Tab 2 as características do microcontrolador MC68HC908JK3
(simplificado para JK3).
Tab 1. Características da cpu08
Características da CPU08
Conjunto de instruções amplo com vários modos de endereçamento
Instruções de transferência de Memória para Memória
Instrução de Multiplicação rápida 8x8
Instrução de Divisão rápida 16/8
Instruções de BCD (Binary Coded Decimal)
Fácil suporte de linguagens de alto nível como C
3
Tab 2. Características do MC68HC908JK3
Características da JK3
CPU08 de 8 bits
Freqüência de operação interna de 8 MHz
4K Bytes de memória de programa (FLASH)
128 bytes de memória RAM
12 canais de conversor analógico-digital (8 bits)
15 Entradas/Saídas
2 temporizadores (timers) de 16 bits (saída por comparação e/ou captura de entrada)
Versões HC (cristal) e HRC (resistor e capacitor)
Modos de baixo consumo (Stop e Wait)
Watchdog (COP)
8 fontes de interrupção (por vetores)
4 LED drives
III. DESCRIÇÃO DOS PINOS DO JK3
Na Fig 1 pode ser observado a distribuição dos pinos do microcontrolador JK3 e na Tab 3 as
funções dos mesmos.
Fig 1. pinagem do microcontrolador
4
Tab 3. pinagem do JK3
Nome do Pino
Descrição
Entrada/Saída Nível de Tensão
VDD
Alimentação Positiva
Entrada
5 V ou 3V
VSS
Terra
Saída
0V
RST
Reset (ativo baixo)
Entrada
VDD
IRQ1
•
Interrupção Externa
•
Define modo de inicialização Entrada
VDD ou VHI
(programação ou aplicação)
OSC1
Entrada do Oscilador
Entrada
Analógico
OSC2
Saída do Oscilador
Saída
Analógica
PTB (0:7)
•
8 Portas I/O de 8 bits
•
8 Entradas analógicas do ADC
Entrada/Saída
VDD
Entrada
Analógica
Entrada/Saída
VDD
Entrada
Analógica
Entrada/Saída
VDD
Saída
VDD
(0:7)
PTD (2:7)
•
6 Portas I/O de 8 bits
•
PTD (3:2) 2 Entradas analógicas
do ADC (8:9)
•
PTD (4:5) 2 Pinos do Timer
•
PTD (6:7) 2 saídas em coletor
aberto (25 mA)
IV. ARQUITETURA INTERNA DO JK3
Na Fig 2 pode-se visualizar um diagrama interno do microcontrolador e na Fig 3 são mostrados
os registradores internos da CPU08 mediantes os quais se processam as instruções, as operações e
armazenam-se os resultados. A função de cada um deles será descrita a continuação.
5
Fig 2. Diagrama interno do Microcontrolador
Acumulador (A): É um registrador de 8 bits de propósito geral usado nas operações lógicas e
aritméticas
Index Register (H:X): É um registrador de 16 bits utilizado como apontador no modo de
direcionamento indexado.
Program counter (PC): É um registrador de 16 bits que contem o endereço da próxima instrução.
Apontador de Pilha (SP): É um registrado de 16 bits que contem o endereço de posição disponível
na pilha.
Conditon coder ou registrador de flags (CCR): É um registrador de 8 bits que contém o bit de
mascaramento das interrupções e outras 5 flags de estado, as quais indicam certas condições
originadas por instruções previamente executadas (por exemplo uma operação executada resulta um
valor negativo, então será setado um bit deste registrador para indicar o resultado negativo).
6
Fig 3. Registradores internos da CPU08
V. MAPA DE MEMÓRIA
Na Fig 4 é mostrado o mapa de memória completo do JK3, o qual é composto por:
ª 64 bytes de Registradores I/O endereçado de $0000 a $003F (ver item VI).
ª 128 bytes de memória RAM endereçado de $0080 a $00FF.
ª 4096 byte de memória FLASH para o JK3 endereçado de $EC00 a $FBFF ou 1536 bytes para o
JK1 (ver item VII).
ª Registradores I/O adicionais (ver item VIII).
ª 960 bytes do Monitor ROM endereçado de $FC00 a $FDFF e $FE10 a FFCF (ver item IX).
ª 48 bytes para uso dos vetores de interrupção (ver item X).
7
Fig 4. Mapa da memória
8
No mapa de memória se encontram os endereços dos registradores internos, a posição que
ocupam na RAM e a parte designada ao programa do usuário. De igual maneira, se observa uma
zona na qual se concentram armazenado o programa de fabrica (Monitor ROM) pelo qual é
permitido fazer simulações, debug e programações no microcontrolador. Na região mais alta da
memória se encontram os vetores de interrupção.
VI. REGISTRADORES I/O DE CONTROLE, STATUS E DADOS.
Estes registradores controlam as diversas funções a serem executadas pelo microcontrolador.
Estes registradores são usados para configurações de funções, para controlar o estado de alguma
operação executada ou mesmo para o armazenamento temporário de um valor gerado por alguma
instrução.
Estes registradores como pode ser visto nas Fig 5, Fig 6, Fig 7, Fig 8 e Fig 9, se encontram no
endereço de memória de $0000 a $003F, com exceção de alguns Registradores I/O adicionais. que
serão tratados posteriormente.
9
Fig 5. Registradores I/O (folha 1 de 5)
10
Fig 6. Registradores I/O (folha 2 de 5)
11
Fig 7. Registradores I/O (folha 3 de 5)
12
Fig 8. Registradores I/O (folha 4 de 5)
13
Fig 9. Registradores I/O (folha 5 de 5)
14
VII. MEMÓRIA FLASH
A memória flash é à parte da memória do microcontrolador onde é feita a gravação do programa
pelo usuário, ela pode ser lida, programada e apagada.
A memória flash consiste de um conjunto de 4096 bytes (JK3) ou 1536 bytes (JK1), juntamente
com 48 bytes adicionais de uso dos vetores de interrupção (ver item X). Operações de programação
ou apagamento da flash são controladas pelo Registrador de Controle da Flash (FLCR).
Fig 10. Registrador FLCR
Devido à característica de apagamento e programação da memória flash no próprio circuito de
aplicação, existe uma proteção contra apagamentos ou programações não intencionais. Esta
proteção é dada pelo registrador FLASH Block Protect (FLBPR).
Fig 11. Registrador FLBPR
Este registrador determina a faixa da memória que será protegida, conforme exemplos dados na
Tab 4.
Tab 4. Faixas de proteção da FLASH
15
VIII. REGISTRADORES I/O ADICIONAIS.
A maioria dos registradores I/O localizam-se no endereço de memória de $0000 até $003F
(vistos na seção VI). Registradores adicionais tem o seguinte endereçamento.
IX. MONITOR ROM
O Monitor ROM vem gravado de fabrica e é através do qual se estabelece comunicação entre o
microcontrolador e um microcomputador permitindo então debug, programação, apagamento e
testes da CPU.
O monitor ROM recebe e executa comandos originados de um microcomputador. A Fig 12
mostra um exemplo de circuito utilizado para fazer o interfaceamento entre a CPU e um
microcomputador utilizando-se da porta serial (RS-232).
16
Fig 12. Circuito de interfaceamento entre CPU08 E Microcomputador
Para poder-se estabelecer comunicação entre o microcontrolador e o computador além do
circuito de interfaceamento, é necessário que a CPU esteja no modo monitor. No modo monitor o
JK3 esta rodando o código que foi permanentemente gravado na sua memória durante a fabricação,
que consiste de rotinas para comunicação com o microcomputador, a qual uma vez estabelecida
transfere o controle da CPU para o computador. O JK3 entra no modo monitor apos um reset e
_______
______
depende de níveis lógicos dos seguintes pinos: IRQ1 , RST , PTB0, PTB1 e PTB3.
17
Existem duas possibilidades de entrada no modo monitor: High Volt e Blank Vector.
_______
Higt Volt: Se fornecido para o pino IRQ1 uma alta tensão (1,5 x VDD) durante um reset, força o
microcontrolador a entrar no modo monitor, similarmente a maioria das CPUs da Motorola. Com
este método a entrada de clock (OSC1) devera ser 4,9152 MHz ou 9.8304 MHz, conforme Tab 5.
Outra condição importante para estabelecer comunicação através deste método é serem respeitadas
as condições lógicas necessárias aos pinos PTB0, PTB1 e PTB3 (ver Tab 5).
Blank Vector: Este método de comunicação só poderá ser estabelecido se o Reset Vector esteja
limpo ou seja quando a memória Flash da CPU estiver totalmente limpa. O Reset Vector somente
poderá ser limpo através de uma operação de apagamento total da memória. Este método não
_______
necessita de alta tensão em IRQ1 e nem de níveis de tensão pré determinados em PTB0, PTB1 e
PTB3. A freqüência de clock neste modo devera ser de 9,8304 MHz, conforme Tab 5.
Como em destaque na Fig 12 o quadro indica chaves ou jumpers colocados na placa de
implementação as quais possibilitarão fornecer os níveis certos de tensão nos pinos, necessários a
entrada no modo monitor, para programação do microcontrolador.
Obs: Uma alternativa para entrar no Modo Monitor, através do Blank Vector, com a memória
flash programada, seria a gravação juntamente com o programa do usuário de uma rotina que a cada
reset teste certos níveis de tensão em determinados pinos e caso todas condições fosse satisfeitas o
programa executaria um apagamento total da memória (Mass_Erase), possibilitando assim ter-se
então o Reset Vector branco. A única desvantagem deste método seria o apagamento total da
memória.
Tab 5. Condições de entrada no modo monitor
18
A definição do ”Baud Rate” que o microcomputador ira usar para estabelecer a comunicação
com a CPU é dependente diretamente do nível de tensão em PTB3, no modo High Volt, conforme
Tab 5.
X. VETORES DE INTERRUPÇÃO
Os vetores de interrupção ocupam 48 bytes na memória e é através destes que a CPU define
qual a ação a ser tomada após a ocorrência de uma interrupção causada pelas diversas fontes
descritas na Tab 6, levando-se em conta a sua prioridade.
Tab 6. Vetores de interrupção
Estas fontes de interrupção possuem os seus próprios registradores, os quais identificam a sua
presença, são eles:
Fig 13. Registrador INT1
Fig 14. Registrador INT2
19
Fig 15. Registrador INT3
XI. OSCILADOR (OSC)
Existem duas possibilidades de prover a referencia de clock ao microcontrolador dependendo do
tipo de CPU:
ª MC68HC908JK3: Uso de cristal oscilador (Fig 16)
ª MC68HRC908JK3: Uso de oscilador RC (Fig 17)
Fig 16. Cristal oscilador
Neste caso os pinos OSC1 e OSC2 do microcontrolador são usados. Os valores dos capacitores
e resistores podem ser obtidos em [1]. Valores típicos para um cristal de 9.8304 MHz são: C1 e C2
de 20pF, RB de 10 MΩ e RS podendo ser suprimido.
Fig 17. Oscilador RC
Neste caso somente o pino OSC1 é utilizado, podendo então OSC2 ser usado como pino de uso
geral (PTA6).
20
XII. PORTAS I/O
Quinze entradas ou saídas bidirecionais formam as três portas paralelas componentes do
microcontrolador. Todas os pinos I/O são programados como entradas ou saídas. Apenas deve-se
levar em conta que a porta A, não esta disponível nos microcontroladores JK3 e JK1 (20 pinos) e
apenas se encontra no JL3 (40 pinos), microcontrolador da mesma família.
XIII. PORTA A
A porta A é uma porta de 7-bits de função especial, pois é ela que permite todos os seus sete
pinos serem divididos com o módulo de interrupção por teclado (KBI). Cada pino da porta A é
configurado por software e poderá estar em coletor aberto caso esteja definido como entrada. PTB0
a PTB5 possuem capacidade de comandar diretamente um LED (diodo emissor de luz).
O registrador de dados da porta a (PTA) contém um latch para cada um dos sete pinos da porta
o qual armazenara os níveis lógicos em seus respectivos pinos caso seja definido como entrada ou
conterá os dados escritos na porta caso de saída.
Fig 18. Registrador PTA
A porta A também poderá ser habilitada para funcionar como pino de entrada de interrupção
externa para teclado, através do registrador especifico para esta função (KBAIER).
Outra função especial da porta é ter os pinos configurados como entrada em coletor aberto,
através do registrador PTAPUE. Cada um dos pinos é configurado individualmente e requer que
sejam definidos como entrada para trabalhar neste modo.
21
Fig 19. Registrador PTAPUE
PTA6EN – Configura a função do pino OSC2, pino o qual pode ser definido como I/O se for
utilizado oscilador RC.
1 = Pino OSC2 configurado como I/O (PTA6)
0 = Pino OSC2 configurado como saída de clock do oscilador
PTAPUE[6:0] – Pinos de habilitação da entrada em coletor aberto
1 = Pinos da porta A configurados para possuírem entrada em coletor aberto
0 = Entrada em coletor aberto desabilitada
A porta A também possui um registrador (DDRA) que configura a direção dos dados (entrada
ou saída).
Fig 20. Registrador DDRA
DDRA[6:0] – Registrador de direção de dados
1 = Pinos [6:0] da porta A configurados como saída.
0 = Pinos [6:0] da porta A configurados como entrada.
Na Fig 21 pode ser visto o circuito da porta A. Pode-se notar que se DDRA esta com nível um a
latch da saída é habilitada e os dados escritos em PTA aparecerão nos pinos do microcontrolador ao
mesmo tempo que a latch de leitura de dados é desabilitada, não sendo então permitida a leitura de
dados externos apenas dos próprios que foram escritos. Quando DDRA possui nível lógico zero a
22
latch de saída é desabilitada, ao mesmo tempo que a latch de entrada é habilitada permitindo então a
leitura de dados externos aplicados nos pinos do microcontrolador.
Fig 21. Diagrama de blocos da Porta A
XIV. PORTA B
A porta B é uma porta de 8-bits de função especial, pois é ela que permite todos os seus oito
pinos sejam divididos com o Conversor Analógico/Digital. Cada pino da porta b é configurado por
software e poderá ser uma entrada analógica de dados do conversor A/D.
O registrador de dados da porta B (PTB) contém um latch para cada um dos oito pinos da porta
o qual armazenara os níveis lógicos em seus respectivos pinos caso seja definido como entrada ou
conterá os dados escritos na porta caso de saída.
Fig 22. Registrador PTB
A porta B também poderá ser habilitada para funcionar como entrada analógica do Conversor
Analógico/Digital (ADC), através de registrador especifico.
A porta B também possui um registrador (DDRB) que configura a direção dos dados (entrada
23
ou saída).
Fig 23. Registrador DDRB
DDRB[7:0] – Registrador de direção de dados
1 = Pinos [7:0] da porta B configurados como saída.
0 = Pinos [7:0] da porta A configurados como entrada (ADC).
Na Fig 24 pode ser visto o circuito da porta B. Pode-se notar que se DDRB esta com nível
lógico um, a latch da saída é habilitada e os dados escritos em PTB aparecerão nos pinos do
microcontrolador ao mesmo tempo que a latch de leitura de dados é desabilitada, não sendo então
permitida a leitura de dados externos apenas dos próprios que foram escritos. Quando DDRB possui
nível lógico zero a latch de saída é desabilitada, ao mesmo tempo que a latch de entrada é habilitada
permitindo então a leitura de dados externos aplicados nos pinos do microcontrolador.
Fig 24. Diagrama de blocos da Porta B
XV. PORTA D
A porta D é uma porta de 8-bits de função especial, pois é ela que permite que dois pinos sejam
divididos com o Modulo de Timer, quatro pinos com o Conversor Analógico/Digital (ADC). Os
pinos PTD6 e PTD7 possuem alta capacidade de corrente (25 mA) e poderão ser programados
24
como entrada em coletor aberto. PTD2, PTD3, PTD6 e PTD7 possuem capacidade de comandar
diretamente um LED (diodo emissor de luz).
O registrador de dados da porta D (PTD) contém um latch para cada um dos oito pinos da porta
o qual armazenara os níveis lógicos em seus respectivos pinos caso seja definido como entrada ou
conterá os dados escritos na porta caso de saída.
Fig 25. Registrador PTD
A pinos da porta D, PTD0, PTD1, PTD2, PTD3, poderão ser habilitados para funcionar como
entrada analógica do módulo de conversão ADC, através de registrador especifico. Os pinos PTD4
e PTD5 podem ser usados pelo módulo de Timer para geração de sinal PWM, Modulo de Saída
comparada ou Modulo de captura de entrada, dependendo de registradores específicos.
Outra função especial da porta D é ter os pinos PTD6 e PTD7 configurados como entrada em
coletor aberto ou saída com alta capacidade de corrente, através do registrador PDCR.
Fig 26. Registrador PDCR
25
SLOWD – Habilita os pinos PTD6 e PTD7 a operar com alta capacidade de corrente (25 mA)
1 = Pinos PTD6 e PTD7 configurado como saídas de alta corrente (dreno aberto).
0 = Pinos PTD6 e PTD7 com saída de alta corrente desabilitada
PTDPU – Pinos de habilitação da entrada em coletor aberto
1 = Pinos PTD6 e PTD7 da porta D configurados para possuírem entrada em coletor aberto
0 = Entrada em coletor aberto desabilitada
A porta D também possui um registrador (DDRD) que configura a direção dos dados (entrada
ou saída).
Fig 27. Registrador DDRD
DDRD[7:0] – Registrador de direção de dados
1 = Pinos [7:0] da porta A configurados como saída.
0 = Pinos [7:0] da porta A configurados como entrada.
Na Fig 28 pode ser visto o circuito da porta D. Pode-se notar que se DDRD esta com nível um a
latch da saída é habilitada e os dados escritos em PTD aparecerão nos pinos do microcontrolador ao
mesmo tempo que a latch de leitura de dados é desabilitada, não sendo então permitida a leitura de
dados externos apenas dos próprios que foram escritos. Quando DDRD possui nível lógico zero a
latch de saída é desabilitada, ao mesmo tempo que a latch de entrada é habilitada permitindo então a
leitura de dados externos aplicados nos pinos do microcontrolador.
26
Fig 28. Diagrama de blocos da Porta D
XVI. EXEMPLO DE PROGRAMAÇÃO E CONFIGURAÇÃO DAS PORTAS I/O
Na programação e uso das portas I/O deve-se primeiramente configurar o registrador que define
se a mesma terá a função de entrada ou saída (Fig 20, Fig 23 e Fig 27).
Basicamente pode-se usar o comando “mov” para escrever nos registradores que configuram as
portas. No exemplo abaixo são mostrados três comandos:
mov
#$ff,ddrd
Ä Todos pinos da porta d configurados como saída
mov
#$00,ddra
Ä Todos pinos da porta a configurados como entrada
mov
#$10,ddrb
Ä PTB4 configurado como saída, os demais pinos entradas
Deve-se notar nos exemplos que o número escrito nos registradores se encontram na notação
hexadecimal. Para uma melhor visualização do efeito do ato de escrita nestes registradores, deve-se
converter este numero em binário, onde então será visualizado o estado de cada um dos pinos em
separado. Como visto no exemplo, a ação de escrita em um dos registradores DDR“x”, definira a
direção de dados da porta pino a pino separadamente. Na Fig 29 é ilustrado o exemplo onde o
número $10 foi escrito em ddrb.
27
Fig 29. Direção dos pinos da Portas B
Quando é pretendido o uso das portas, pode-se proceder de maneira semelhante a anterior,
escrevendo nos registradores PT“x” os dados os quais representarão o nível lógico da porta, caso
esta esteja configurada como saída.
mov
#$ff,ptd
Ä Todos pinos da porta d possuem nível alto
mov
#$00,pta
Ä Todos pinos da porta a possuem nível baixo
mov
#$10,ptb
Ä
PTB4 possui nível alto, os demais níveis
baixos
Se os pinos da porta estão configurados como entrado o registrador PT“x” conterá o valor dos
níveis lógicos existentes no momento da leitura. A mostra um exemplo em que alguns níveis
lógicos estão aplicados na porta B.
Fig 30. Níveis lógicos aplicados na Portas B
Níveis na porta B
Ä 10101010
Ä PTB contem o valor 10101010 bin ou AA hex
XVII. CONVERSOR ANALÓGICO/DIGITAL
O microcontrolador JK3 possui 12 canais de conversão analógica/digital, com resolução de 8
bits, conversão simples ou contínua, possui também um flag de conversão completa ou geração de
interrupção e clock de conversão (tempo de conversão) selecionável (prescaler).
28
Os conversores A/D internos no JK3 podem ter suas entradas analógicas configuráveis através
de registrador específico (ADSCR), podem as mesmas fazer o uso de pinos da porta B (PTB0 a
PTB7) ou porta D (PTD0 a PTD3). A Fig 31 mostra o diagrama de blocos do conversor A/D.
Fig 31. Diagrama de blocos do conversor A/D
A configuração dos pinos das portas como entrada analógicas dos conversores, forçam com que
os mesmos sejam usados como entradas ficando independentes dos registradores DDRx das portas
(ver item XII). O restante dos canais do ADC/pinos das portas podem ser usados normalmente
como pinos I/O de uso geral.
XVIII. FAIXAS DE CONVERSÃO
As referencias tomadas pelo conversor A/D para executar a conversão são VDD (valor máximo)
e VSS (valor mínimo). Quando a tensão de entrada do conversor A/D (entrada analógica) for igual a
VDD (ver Tab 3), o valor convertido será $FF (full scale) ao passo que se o valor de entrada igual a
VSS (ver Tab 3), o valor convertido será $00. Somente valores entre VDD e VSS resultarão em
29
conversões corretas, tensões maiores que VDD, resultarão em $FF e menores que VSS em $00.
XIX. CONVERSÃO CONTINUA
No modo de conversão continua, o ADC converte continuamente o valor no canal selecionado,
escrevendo um novo dado no registrador de dados do conversor a cada conversão. O resultado da
conversão anterior será sobrescrito se lido ou não o seu valor. Este modo de conversão continuara
até que seja limpo o bit ADCO do registrador ADSCR.
XX. REGISTRADORES I/O
Estes registradores monitoram e controlam a operação do ADC.
ª ADSCR –Registrador de estado e controle do ADC
ª ADR – Registrador de dados do ADC
ª ADICLK - Registrado do Clock
XXI. REGISTRADOR DE ESTADO E CONTROLE DO ADC
A seguir serão descritas as funções do registrador de estado e controle do ADC (ADSCR), que é
mostrado na Fig 32.
Fig 32. Registrador ADSCR
COCO – Bit de conversão completada (somente se interrupção do A/D desabilitada (AIEN = 0))
1 = Conversão A/D completada.
0 = conversão A/D não completada.
AIEN – Bit de habilitação de interrupção (gera uma interrupção se quando uma conversão A/D é
completada)
1 = Interrupção do ADC habilitada.
0 = Interrupção do ADC desabilitada.
ADCO – Bit de habilitação de conversão continua
30
1 = Conversão continua.
0 = Apenas uma conversão.
ADCH [4:0] – Bits de seleção de canal do ADC, conforme Tab 7.
Tab 7. Seleção do Canal do ADC
Obs: A conversão A/D é iniciada automaticamente após a primeira subida do clock depois de
uma escrita no ADSCR.
XXII. REGISTRADOR DE DADOS DO ADC
No registrador de dados do ADC (ADR), é armazenado o resultado de uma conversão A/D. Este
registrador é atualizado a cada nova conversão completada.
Fig 33. Registrador ADR
31
XXIII. REGISTRADO DO CLOCK DO ADC
Conforme Tab 8, é selecionada a freqüência de clock da conversão A/D, tomando como base o
valor de clock interno do microcontrolador.
Tab 8. Seleção do Canal do ADC
Na Fig 34 é mostrado o registrador de clock do ADC (ADICLK).
Fig 34. Registrador ADICLK
XXIV. EXEMPLO DE PROGRAMAÇÃO E CONFIGURAÇÃO DO CONVERSOR A/D
Na programação e uso das portas dos conversores A/D internos no microcontrolador deve-se
primeiramente configurar os seus registradores registrador (Fig 32, Fig 33 e Fig 34).
Basicamente pode-se usar o comando “mov” para escrever nestes registradores. No exemplo
abaixo é mostrada a configuração do Registrador de estado e controle do ADC (ADSCR):
mov
#$06,adscr
06 hex = 000 00110 bin
Ä Pino 0 porta B usado para canal do ADC (Tab 7)
Ä Somente uma conversão
Ä Interrupção no final da conversão desabilitada
32
Obs: para maiores detalhes sobre a configuração deste registrador deve-se consultar o item
Registrador de estado e controle do ADC. Note que o bit 7 deste registrador é somente leitura, ele
indica se a conversão já esta completa.
Quando uma conversão esta completa, os dados convertidos são guardados no Registrador de
dados do ADC (ADR) na Fig 33. Vale a pena lembrar que a conversão A/D é iniciada
automaticamente após a primeira subida do clock depois de uma escrita em ADSCR.
XXV. MODULO DE TIMER
O módulo de interface de timer (TIM) é composto por dois canais que fornecem referencia de
tempo, com funções de Modulo de captura de entrada, Modulo de Saída comparada e Modulo de
geração de PWM (pulse-width-modulation). A Fig 35 mostra o diagrama de blocos do TIM.
Fig 35. Diagrama de blocos do TIM
33
O principal componente de temporização do microcontrolador é o registrador TCNT, de 16 bits.
O conteúdo de TCNT é incrementado continuamente a cada ciclo de clock a partir de $0000, no
RESET, até $FFFF. Após $FFFF o registrador reinicia em $0000. Os pinos usados pelo módulo de
timer são visto na Tab 9.
Tab 9. Pinos do TIM
XXVI. MODULO DE CAPTURA DE ENTRADA
Com a função de captura de entrada, o TIM pode capturar o tempo com que um evento externo
ocorre. Quando uma mudança ocorre em um dos pinos do módulo do canal, o TIM armazena o
conteúdo do contador, dentro do registrador TIM channel (TCxH e TCHxL). O modulo de captura
de entrada pode gerar interrupção, caso habilitada.
A função de captura de entrada é um elemento fundamental da arquitetura de temporização do
JK3. Para o microcontrolador, o tempo é representado pela contagem presente no registrador
TCNT. As funções de captura de entrada, usadas para registrar o instante em que determinado
evento externo ocorre, são executadas salvando o conteúdo de TCNT num registrador de 16 bits,
quando uma borda de transição predefinida (subida, descida ou ambas) é detectada num dos pinos
de captura. Registrando os instantes em que ocorrem sucessivas transições de um sinal em análise,
um programa pode medir período ou largura de pulso do sinal. Para medir o período, os instantes
em que ocorrem duas transições sucessivas da mesma polaridade são registrados. Para a medição de
largura de pulso, registram-se os instantes de ocorrência de duas transições de polaridades
alternadas. Subtraindo-se os valores registrados obtém-se o intervalo de tempo entre as transições.
XXVII. MODULO DE SAÍDA COMPARADA
Com a função de saída comparada, o TIM pode gerar um pulso periódico com polaridade,
duração e freqüência programáveis. Quando o contador atinge o valor armazenado em um
registrador especifico (TMODH e TMODL), o TIM pode setar, limpar ou mudar o sinal no pino do
canal. O módulo de saída comparada pode gera interrupção, caso habilitada.
Para este elemento funcional faz-se necessário também o uso do TCNT. As funções de
comparação de saída permitem gerar um evento em instantes de tempo predefinidos
correspondentes a valores armazenados em registradores específicos. A cada um dos pinos de
comparação de saída corresponde um registrador de comparação e um comparador dedicado, de 16
34
bits. Quando o valor armazenado no registrador de comparação é alcançado pelo TCNT, uma saída
é gerada ativando o flag de status correspondente ao registrador e iniciando as ações automáticas
definidas para aquele pino. Um dos usos mais simples da comparação de saída é a produção de
pulsos com duração específica. A comparação de saída é configurada para automaticamente impor
um nível alto ou baixo no pino associado, dependendo da polaridade do pulso que está sendo
gerado. Após esta operação a comparação de saída é reprogramada para restaurar o nível inativo do
pino na próxima comparação.
XXVIII. MODULO DE GERAÇÃO DE PWM
Com a função PWM, o TIM pode gerar uma onda quadrado modulada por largura de pulso,
conforme visto na Fig 36.
Fig 36. Sinal PWM
No modulo de PWM, é possível gerar um sinal com forma de onda quadrada onde são
configuráveis o período (freqüência) e largura de pulso (tempo dentro do valor de um período em
que a saída ficara setada e o restante de tempo resetada ou vice-versa). O período ou freqüência do
sinal PWM é dado através do overflow do timer ou seja o contador chegar ao final da contagem,
valor este configurável nos registradores TMODL e TMODH. O tempo entre o overflow do timer e
uma saída comparada (visto em XXVII) é o tamanho da largura do pulso, valor este configurável
nos registradores TCHxH e TCHxL.
Obs: Para um correto funcionamento do modulo de geração de PWM, nunca se deve configurar
os registradores que informam o tamanho do pulso (TCHxH e TCHxL), com valor maior do que o
registrador do período do PWM (TMODL e TMODH).
35
XXIX. REGISTRADORES I/O
Os seguintes registradores I/O controlam e monitoram a operação doTIM.
ª TSC - Registrador de estado e controle do TIM
ª TCNTH e TCNTL – Registrador do contador do TIM (16 bits)
ª TMODH e TMODL – Registrador do modulo do contador do TIM (16 bits)
ª TSC0 e TSC1 – Registrador de estado e controle dos canais do TIM
ª TCH0H, TCH0L, TCH1H e TCH1L – RegistradoR dos canais do TIM (16 bits)
XXX. REGISTRADOR DE ESTADO E CONTROLE DO TIM
O registrador de estado e controle do TIM é visto na Fig 37.
Fig 37. Registrador TSC
TOF – Bit de overflow do TIM, este bit é setado quando o contador reseta, após alcançar o valor
programado no registrador do modulo do contador do TIM (TMODL e TMODH).
1 = Contador alcançou o valor do modulo.
0 = Contador não alcançou o valor do modulo.
TOIE – Bit de habilitação da interrupção de overflow do TIM
1 = Interrupção habilitada no overflow do contador.
0 = Interrupção não habilitada.
TSTOP – Bit de stop do TIM
1 = Contador parado.
0 = Contador ativo.
TRST – Bit de reset do TIM
1 = Prescaler e contador limpos.
0 = Sem efeito.
36
PS[2:0] – Bits de seleção do Prescaler do TIM
Tab 10. Seleção do prescaler do TIM
XXXI. REGISTRADOR DO CONTADOR DO TIM
Este registrador de 16 bits contém o valor alto (8 bits) e o valor baixo (8 bits) do contador do
TIM (TCNTH e TCNTL), este registrador é incrementado a cada ciclo de clock.
Fig 38. Registrador TCNTH
Fig 39. Registrador TCNTL
37
XXXII. REGISTRADOR DO MODULO DO CONTADOR DO TIM
Este registrador de 16 bits contém o valor alto (8 bits) e o valor baixo (8 bits) do registrador do
modulo do contador do TIM (TMODH e TMODL), este registrador armazena o valor do modulo
(numero de contagens ou ciclos de clock) que o contador ira executar antes do overflow.
Fig 40. Registrador TMODH
Fig 41. Registrador TMODL
Obs: Como regra deve-se primeiro escrever TMODH, para um correto funcionamento do
módulo.
XXXIII. REGISTRADOR DE ESTADO E CONTROLE DOS CANAIS DO TIM
O registrador de estado e controle dos canais do TIM é visto nas Fig 42 e Fig 43.
Fig 42. Registrador TSC0
38
Fig 43. Registrador TSC1
CH0F e CH1F – Quando o canal 0 ou 1 do TIM é usado como Modulo de captura de entrada, este
bit é setado a cada mudança de estado no pino. Quando usado como Modulo de Saída comparada,
este bit é setado no overflow do contador.
1 = Captura de entrada ou saída comparada no pino do canal 0 ou 1 do timer.
0 = Não ocorreu captura de entrada ou saída comparada no pino do canal 0 ou 1 do timer.
CH0IE e CH1IE – Bit de habilitação de interrupção do canal 0 ou 1 do TIM, interrupção gerada se
ocorrer uma Modulo de captura de entrada ou Modulo de Saída comparada.
1 = Interrupção habilitada.
0 = Interrupção não habilitada.
Obs: A habilitação das interrupções faz com que os bits CH0F e CH1F sejam limpos.
MS0B, MS0A, MS1A, ELS0B, ELS1B, ELS0A e ELS1AH0IE – Bits de seleção de modo, tipo de
borda e nível inicial do canal 0 e 1 do TIM, conforme Tab 11.
Tab 11. Bits de seleção de modo, tipo de borda e nível inicial dos canais do TIM
39
TVO0 e TOV1E – Bit de controle do comportamento do canal 0 ou 1 do TIM, quando ocorre
overflow do counter, se o canal é configurado como saída comparada.
1 = Pino do canal 0 ou 1 do TIM, muda no overflow do timer.
0 = Pino do canal 0 ou 1 do TIM, não muda no overflow do timer.
Obs: Se canal configurado como captura de entrada este bit não terá efeito.
CH0MAX e CH1MAX – Bit de seleção de máxima razão cíclica do modulo de geração de sinal
PWM. A saída de um sinal PWM, fica com razão cíclica máxima até um ciclo após o bit ser limpo.
1 = Razão cíclica 100% ou 1.
0 = Razão cíclica controlada pelo módulo PWM (ver item XXVIII).
XXXIV. REGISTRADOR DOS CANAIS DO TIM
Este registrador de 16 bits contém o valor alto (8 bits) e o valor baixo (8 bits) do registrador dos
canais do TIM. Quando usado como Modulo de captura de entrada de entrada este registrador
armazenara o valor de cada captura. Se usado como Modulo de Saída comparada ele armazenara o
valor, o qual será a referencia para ser executada uma comparação.
Fig 44. Registrador TCH0H
Fig 45. Registrador TCH0L
40
Fig 46. Registrador TCH1H
Fig 47. Registrador TCH1L
XXXV. EXEMPLO DE PROGRAMAÇÃO E CONFIGURAÇÃO DO TIM
Para exemplificar a programação do TIM, será dado um exemplo onde então serão
demonstradas as configurações de alguns registradores. O exemplo se baseia no Modulo de geração
de PWM.
Primeiramente deve-se configurar o Registrador de estado e controle do TIM (TSC).
mov #$f0,TSC
f0 hex = 11110 000 bin
Ä Prescaler 0 (Tab 10)
Ä Reset do Tim (sem efeito)
Ä Contador do TIM parado
Ä Interrupção no overflow do Contador habilitado
Deve-se notar que o bit 7 deste registrador é somente leitura, ele indica que o contador alcançou
o valor do módulo ou seja ocorreu um overflow do timer. Primeiramente para a configuração do
registrador o timer deve estar parado como demonstra o exemplo acima.
Com o Registrador de estado e controle do TIM (TSC) configurado deve-se partir para a
configuração do Registrador do modulo do contador do TIM (TMODH e TMODL), que nada mais
é do que um registrador de 16 bits que armazena o valor do modulo (numero de contagens ou ciclos
de clock) que o contador ira executar antes do overflow.
41
mov #$05,TMODH
Ä Bit alto do registrador com valor 05
mov #$ff,TMODL
Ä Bit baixo do registrador com valor ff
No exemplo seriam necessários que o contador contasse 5 vezes até ff para ocorrer um overflow
no timer. Em outras palavras o valor armazenado no bit alto seria quantas vezes o bit baixo teria que
contar o valor nele armazenado, para então o timer ter um overflow.
Configurado o Registrador do modulo do contador do TIM o qual define o período do PWM,
deve-se então configurar a razão cíclica que é o tempo em que a saída ficara com nível 1 e o
restante do tempo 0. O registrador que define a razão é o RegistradoR dos canais do TIM (TCH0H e
TCH0L). Este registrador define com qual valor de cada contagem será executada uma comparação
e então mudado o estado lógico do PWM gerado.
mov #$00,TCH0H
Ä Bit alto do registrador com valor 00
mov #$05,TCH0L
Ä Bit baixo do registrador com valor 05
Obs: este registrador deve ter um valor menor que o anterior que define o período do PWM.
Neste exemplo a razão cíclica definida para o PWM será de apenas 5 ciclos de clock.
Outro registrador a ser configurado é o Registrador de estado e controle dos canais do TIM
(TSC0).
mov #$1a,TSC0
1a hex = 00 0110 10 bin
Ä Razão cíclica 100% ou 1 (desabilitada)
Ä PWM muda no overflow do timer (troca de estado)
Ä A saída do canal do TIM é PWM e na comparação
a saída é colocada em nível baixo (Tab 11)
Ä Desabilitada a interrupção do TIM (não usada com
o módulo PWM)
Obs: O bit 7 do registrador é somente leitura não usado com o módulo de PWM.
Depois de configurados todos os registradores do módulo PWM, apenas deve ser lembrado de
liga-lo, através da resetagem do bit 5 do registrador TSC.
bclr 5,tsc
Ä Bit 5 do TSC é resetado, ligando o módulo PWM
42
XXXVI. CONJUNTO DE INSTRUÇÕES DO MICROCONTROLADOR
As Fig 48, Fig 49, Fig 50, Fig 51, Fig 52, Fig 53, Fig 54, Fig 55, mostram o conjunto de
instruções, as quais são usadas na programação do microcontrolador.
Fig 48. Conjunto de Instruções (folha 1 de 8)
43
Fig 49. Conjunto de Instruções (folha 2 de 8)
44
Fig 50. Conjunto de Instruções (folha 3 de 8)
45
Fig 51. Conjunto de Instruções (folha 4 de 8)
46
Fig 52. Conjunto de Instruções (folha 5 de 8)
47
Fig 53. Conjunto de Instruções (folha 6 de 8)
48
Fig 54. Conjunto de Instruções (folha 7 de 8)
49
Fig 55. Conjunto de Instruções (folha 8 de 8)
XXXVII. EXEMPLO GERAL SOBRE PROGRAMAÇÃO DO MICROCONTROLADOR
A partir de agora será visto um exemplo sobre programação do microcontrolador em assembly,
onde é lido um valor de tensão através de um conversor A/D e de posse deste dado, é escolhida um
valor de freqüência e razão cíclica para a operação do módulo de PWM. É executada também uma
temporização através da qual será mantida a mesma freqüência e razão cíclica do PWM. Com o
tempo esgotado é então executado um novo ciclo do programa.
;Start Program
RAMStart
EQU $0080
RomStart
EQU $F600
VectorStart EQU $FFDE
$Include 'jl3regs.inc'
org
;Definição do endereço de Memória para JL3, JK3 e JK1
;Arquivo que interpreta os minemônicos
ramstart
;definição das variáveis na ram e o seu tamanho caso necessário
tam
ds
1
50
tam1
ds
cont_1
ds
cont_2
ds
cont_3
ds
1
1
1
1
;PROGRAMA
org
romstart
;começo do programa memória rom ou flash
intini
; definição de uma subrotina, que termina quando começa a próxima
;Inicialização das portas, interrupções, variáveis e etc...
rsp
clra
clrx
clr
clr
clr
cont_1
cont_2
cont_3
mov
mov
mov
mov
#$00,tam
#$10,ddrb
#$ff,ddrd
#$ff,ddra
adcini
; Rotinas de Inicialização do Conversor ADC
mov
#$06,adscr
esperaconv
;pino 0 portb como canal adc
;somente uma conversão
;interrupção no final da conv. desabilitada
;Rotina para Espera da Conversão AD ser Completada
lda
and
cmp
bne
adscr
#$80
#$80
esperaconv
;compare com 80
;se bit 7 (adscr) 0, volta para esperaconv
;a rotina faz um AND lógico entre o registrador ADSCR e o número $80 hex o que
;mostra que somente o valor do bit 7 deste registrador não terá seu valor
zerado. Como já foi o bit 7 deste registrador é o qual avisa se a conversão AD
;já esta completa. Ao passo de que se comparada com $80 o resultado desta
;operação indicara se a conversão foi ou não completada caso não completada a
;rotina volta para o inicio e executa um novo teste
comparação
;Comparação o valor convertido e desvia a rotina pra uma função especifica
;dependendo do valor da conversão, na verdade são 15 faixas de valores que
;indicam 15 valores de razão cíclica e freqüência do módulo de PWM
lda
cmp
bls
cmp
bls
cmp
bls
adr
#$0f
luz15
#$1e
luz14
#$2d
luz13
51
luz15
luz14
luz13
luz12
luz11
luz10
luz9
luz8
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
#$3c
luz12
#$4b
luz11
#$5a
luz10
#$69
luz9
#$78
luz8
#$87
luz7
#$96
luz6
#$a5
luz5
#$b4
luz4
#$c3
luz3
#$d2
luz2
#$ff
luz1
mov
mov
jmp
#$34,tam
#$1A,tam1
pwm1
mov
mov
jmp
#$30,tam
#$18,tam1
pwm1
mov
mov
jmp
#$2C,tam
#$16,tam1
pwm1
mov
mov
jmp
#$2C,tam
#$16,tam1
pwm1
mov
mov
jmp
#$28,tam
#$14,tam1
pwm1
mov
mov
jmp
#$24,tam
#$12,tam1
pwm1
mov
mov
jmp
#$22,tam
#$11,tam1
pwm1
mov
mov
jmp
#$1E,tam
#$0F,tam1
pwm1
52
luz7
luz6
luz5
luz4
luz3
luz2
luz1
mov
mov
jmp
#$1C,tam
#$0E,tam1
pwm1
mov
mov
jmp
#$18,tam
#$0C,tam1
pwm1
mov
mov
jmp
#$16,tam
#$0B,tam1
pwm1
mov
mov
jmp
#$12,tam
#$09,tam1
pwm1
mov
mov
jmp
#$10,tam
#$08,tam1
pwm1
mov
mov
jmp
#$0E,tam
#$07,tam1
pwm1
mov
mov
jmp
#$0A,tam
#$05,tam1
pwm1
pwm1
;PWM Inicialização e configuração (configuração já detalhada no item XXXV)
sta
copctl
;clear whatchdog
mov
#$f0,TSC
;interrupção do overflow habilitada
;contador parado
;prescaler 000
mov
#$00,TCH0H
mov
tam1,TCH0L
mov
#$00,TMODH
mov
tam,TMODL
mov
#$1a,tsc0
bclr
cli
5,tsc
;valor da razão cíclica do PWM (alto)
;valor da razão cíclica do PWM (baixo)
;conforme valor convertido
;valor do bit alto do counter
;valor do bit baixo do counter
;conforme valor convertido
;interrupção desabilitada
;unbuffered PWM
;PWM na mudança
;liga o counter
53
tempo
;Rotina de tempo infinita, apenas sai por interrupção
bra
bra
tempo
tempo
cont1
;a cada overflow que ocorrer no timer é acionada esta subrotina
;caso esta subrotina chegue no final da contagem o programa retorna para o
;inicio
;Vetor de Interrupção por Overflow de Timer canal 0
;Cada interrupção incrementa 1 no cont_x
;como mostrado anteriormente existe uma rotina de loop infinto, a qual somente é
;interrompida caso ocorra um overflow no timer que esta configurado para a
;geração de uma interrupção neste caso, onde então o processamento é desviado
;para esta subrotina, a qual conta um determinado tempo
tempocont_1
tempocont_2
volta
sta
lda
adc
sta
bcs
bclr
rti
mov
lda
adc
sta
bcs
bclr
cli
bclr
rti
copctl
cont_1
#$1
cont_1
tempocont_2
7,tsc
;clear whatchdog
#$00,cont_1
cont_2
#$1
cont_2
volta
7,tsc
4,portb
;Se encerrado o timer, o programa volta fazendo nova leitura do ADC
bset
jmp
4,portb
adcini
nothing
rti
org
VectorStart
;neste ponto do programa são definidos os vetores de interrupção ou seja é
definida qual a subrotina que cada fonte de interrupção ira executar
dw
dw
dw
dw
dw
nothing
nothing
nothing
nothing
nothing
;
;
;
;
;
Conversão completa do ADC
Keyboard Vector
(No Vector Assigned $FFE2-$FFE3)
(No Vector Assigned $FFE4-$FFE5)
(No Vector Assigned $FFE6-$FFE7)
54
dw
dw
dw
dw
dw
dw
dw
dw
dw
dw
dw
dw
nothing
nothing
nothing
nothing
nothing
cont1
nothing
nothing
nothing
nothing
nothing
romstart
;
;
;
;
;
;
;
;
;
;
;
;
(No Vector Assigned $FFE8-$FFE9)
(No Vector Assigned $FFEA-$FFEB)
(No Vector Assigned $FFEC-$FFED)
(No Vector Assigned $FFEE-$FFEF)
(No Vector Assigned $FFF0-$FFF1)
Overflow do TIM
Overflow do canal 0 do TIM
Overflow do canal 1 do TIM
(No Vector Assigned $FFF8-$FFF9)
~IRQ1 (por pino externo)
SWI Vector
Reset
;obs: esta ordem não pode ser trocada nem suprimida uma fonte de interrupção, mesmo algumas
;delas não sendo usadas é importante que as mesmas estejam presentes nesta tabela.
XXXVIII. ATIVIDADES PRATICAS
Faça a programação, monte o protótipo e teste:
ATIVIDADE 1 (programação, configuração e uso das portas):
. Programa que leia se uma chave (NA ou NF) foi pressionada e caso afirmativo piscar um
LED.
. Fazer um seqüencial de Leds (mínimo de 4 leds)
. Adicionando ao circuito da atividade anterior 3 chaves (NA ou NF) e apartir da Tab 12, fazer
um programa que identifique a seqüência em que foram pressionadas as chaves e execute o que se
pede.
Tab 12. pinagem do JK3
CH1
CH2
CH3
TAREFA
1º
2º
3º
Seqüencial para direita
1º
3º
2º
Seqüencial para esquerda
2º
1º
3º
Piscar todos
2º
3º
1º
Seqüencial “Vai e Volta”
3º
1º
2º
Piscar apenas 1º,3º...
3º
2º
1º
Piscar apenas 2º,4º...
Obs: O programa não deve aceitar que a mesma tecla seja pressionada mais de uma vez a cada
ciclo de programa. Para a conexão dos LEDS ao microcontrolador, pode-se usar os 4 pinos da porta
55
D que tem capacidade de corrente para tal ou senão usar circuito integrado do tipo buffer,
optoacoplador ou latch.
ATIVIDADE 2 (programação, uso do conversor A/D, configuração e uso das portas):
. Programa que converta um valor de tensão variável (0 a 5V) e apartir deste indicar o valor
convertido em binário, em um display de 8 leds, atualizando o mesmo de tempo em tempo,
conforme exemplo na Tab 13.
Tab 13. pinagem do JK3
Display
Número Convertido (hexadecimal)
00
55
FF
Obs: Como no microcontrolador JK3 e seus derivados de 20 pinos não possua mais de 4 pinos
com capacidade de corrente suficiente para conexão de LEDS, deve-se fazer uso de circuito
integrado do tipo buffer, optoacoplador ou latch para realização desta atividade, respeitando os
limites de dreno de corrente dos respectivos pinos usados.
. Partindo da atividade anterior, mostrar os dados convertidos em dois displays de 7 segmentos
em hexadecimal, atualizando o mesmo de tempo em tempo. A Fig 56.a mostra o display de sete
segmentos e suas conexões e a Fig 56.b ilustra as conexões do display com o microcontrolador.
Notar que o barramento de dados dos dois displays é o mesmo apenas lembrar de atualizar os dados
e habilitar um de cada vez.
56
(a)
(b)
Fig 56. (a) Display de 7 segmentos (b) Conexão do display com o microcontrolador
Tab 14. tabela de conversão de dados em código de 7 seg.
Caractere
A
b
c
d
e
F
g
0
0
0
0
0
0
0
1
1
1
0
0
1
1
1
1
2
0
0
1
0
0
1
0
3
0
0
0
0
1
1
0
4
1
0
0
1
1
0
0
5
0
1
0
0
1
0
0
6
0
1
0
0
0
0
0
7
0
0
0
1
1
1
1
8
0
0
0
0
0
0
0
9
0
0
0
0
1
0
0
57
ATIVIDADE 3 (programação, captura de entrada, configuração e uso das portas):
. Programa que leia uma chave (NA ou NF), e apartir da captura dos tempos de toque na chave
(mínimo 5 toques), ligar um led nos mesmos intervalos de tempo capturados.
ATIVIDADE 4 (programação, geração de PWM, configuração e uso das portas):
. Programa que gere um sinal de PWM com freqüência e razão cíclica variáveis. O valor
destas duas grandezas depende de valores digitados em duas teclas do tipo + ou -, as freqüências são
entre 1 e 60 KHz (o passo poderá ser variável, mas de preferência de 1 em 1 KHz) e razão cíclica
para estes valores entre 0 e 1 (0 e 100%). Poderão ser usadas mais que 2 chaves. Lembrando que o
valor da razão cíclica é dependente do valor da freqüência então ao mudar o valor da freqüência
devera ser calculado um novo valor de razão cíclica.
58
ANEXO
ÚNICO
!!!
59
CARACTERÍSTICAS ELÉTRICAS DO
MICROCONTROLADOR
A Tab 15 mostra algumas características elétricas (máximas) do microcontrolador.
Tab 15. Caracteristicas elétricas
60
A Tab 16 mostra as especificações elétricas do microcontrolador para uma tensão de
alimentação de 5V.
Tab 16. Caracteristicas elétricas
61
A Tab 17 mostra as especificações elétricas do microcontrolador para uma tensão de
alimentação de 3V.
Tab 17. Caracteristicas elétricas

Documentos relacionados