
Como em muitos outros campos da atividade humana, também no caso
dos microcontroladores existem termos frequentemente usados e
consensualmente admitidos em
alguma opinião (a partir dos quais outras definições e noções são criadas).
Assim, o correto entendimento de ideias base, permitem aprender, mais
facilmente, outras ideias.
Microcontrolador
É um microprocessador com vários periféricos
num único componente eletrônico.
Pino de Entrada/Saída (I/O)
Pino de ligação externa do microcontrolador, que pode ser
configurado como entrada ou saída.
Na maioria dos casos, o pino de entrada e saída permite ao
microcontrolador comunicar, controlar ou ler informação.
Software
E a
Informação de que o microcontrolador necessita, para poder
funcionar.
O software não pode apresentar quaisquer erros se quisermos que o
programa e o dispositivo funcionem como deve ser.
O software pode ser escrito em diversas linguagens tais como:
Basic, C, Pascal ou assembler.
Fisicamente é um arquivo guardado no disco do
computador e que transferimos para o PIC.
Hardware
São todos os componentes e informações ligados ao microcontrolador.
Um outro modo de ver isto (especialmente se não funcionar) é
que hardware é aquilo que se pode desligar!
Simulador
Pacote de software necessário em um PC
para simular o funcionamento
interno do microcontrolador.
É o instrumento ideal para verificar as
rotinas de software e todas as variações
do código que não implicam ligação com o mundo
exterior.
Existem opções para observar o código quando nos
rodamos o programa para trás e para a frente ou
passo-a-passo e para detecção de
erros.
ICE
ICE (In Circuit Emulator) ou emulador
interno, é um utensílio bastante útil que se liga entre o PC (não é o microcontrolador) e o
dispositivo que estamos desenvolvendo. Isto permite,
ao software, correr no computador PC, como se fosse um
microcontrolador real que estivesse inserido no dispositivo. O ICE,
possibilita que nos desloquemos através do programa, em tempo real, para
observar o que se está a passar dentro do microcontrolador e como este
comunica-se com o mundo exterior.
Emulador de
EPROM
Um Emulador de EPROM, é um dispositivo que não emula o
microcontrolador por completo (como no caso do ICE),
mas apenas em sua memória.
É mais frequentemente usado nos microcontroladores que possuem
memória externa.
Usando um emulador de Eprom, nós evitamos ter
sempre que escrever e apagar a memória
EPROM.
Assembly e Assembler
Assembly é uma linguagem de programação que serve para fazer programas.
Os programas são escritos em forma de texto: usando um editor
de texto criamos o chamado código fonte.
Este código fonte é transformado pelo compilador e pelo linker
em um programa executável.
Muitas vezes ouvimos
"linguagem assembler".
Apesar de
doer o ouvido este é um erro muito difundido.
A verdade é
que, Assembly é o nome da linguagem e Assembler é o programa ou
pacote de software que
traduz o código fonte em código que o
microcontrolador pode compreender.
Uma parte deste software, destina-se também, à detecção dos erros
cometidos, ao escrever o programa.
Arquivo
HEX
Arquivo criado pelo tradutor assembler, quando traduz
um arquivo fonte que está num formato que é
entendido pelos microcontroladores.
Este ficheiro aparece normalmente sob a forma
Nome_arquivo.HEX, daqui deriva a designação de
“arquivo hex".
Arquivo
LIST
Trata-se de um arquivo produzido pelo
tradutor assembler, que contém todas as instruções do arquivo fonte, o código destino e os respectivos endereços e, ainda, os
comentários que o programador escreveu.
É um arquivo muito útil para detectar os
erros no programa.
Este ficheiro tem a extensão LST, daqui provém a sua
designação.
Arquivo Fonte (Source
File)
Arquivo escrito em linguagem perceptível pelos
humanos e pelo tradutor assembler.
Também
chamado de código fonte .
A tradução do arquivo fonte produz os
arquivos HEX e LIST.
Detecção de erros
(Debugging)
Ao escrever um programa, nós cometemos
erros que não nos apercebemos.
Estes erros podem ser muito simples como é o caso de erros
tipográficos, ou erros complexos como os que advêm do
uso incorreto da linguagem de programação.
O assembler é capaz de descobrir a maioria destes erros e
mencioná-los no ficheiro ‘.LST’.
Outros erros, só podem ser descobertos, experimentando e
observando o funcionamento do dispositivo.
|
Memória: ROM,
EPROM, EEPROM, FLASH, RAM
São dispositivos capazes de armazenar
informações digitais.
A menor unidade de informação que pode ser
armazenada é o bit.
Outros tipos de agrupamentos também são muito
usuais quando se trata de memória, são eles:
Bit à “0” ou “1”. Nibble à
agrupamento de 4 bits. Byte à agrupamento de 8 bits ou 2
nibble. Word à agrupamento de 16 bits ou 2 bytes ou 4
nibble.
TIPOS
DE MEMÓRIAS
Memórias Não-Voláteis
Caracterizam- se por não perder os dados gravados ao cessar-se a alimentação elétrica. São usadas portanto para registro de dados por um tempo mais longo e que não necessitem de atualização
constante.
TIPOS
DE MEMÓRIA ROM
1. ROM é
uma memória somente de leitura, ou seja, os dados são armazenados no
processo de fabricação, não permitindo nova gravação,
não pode ser
limpa, aquilo que se escreve nela, permanece para sempre e nunca
mais pode ser apagado.
2. PROM é uma ROM que é fornecida virgem para o comprador. Este então deve utilizar um equipamento especial para gravar na PROM os dados desejados. A gravação é feita de uma só vez, para toda a capacidade da PROM, e uma vez realizada, não pode mais ser desfeita. A PROM tampouco perde seu conteúdo na ausência de uma fonte de eletricidade. A gravação é feita através da circulação de uma corrente elétrica que rompe o fusível onde deseja-se armazenar o nível lógico “0”.
3. EPROM é
uma
PROM
que
pode
ter
seus
dados
apagados
e
reutilizados.
O
processo
de apagamento consiste na exposição das células de memória a raios ultravioleta. Por isso, que estas memórias são dotadas de uma “janela” de quartzo.
4. EEPROM ou E2PROM
é uma ROM programável pelo usuário e que pode ser apagada e reprogramada repetidamente através da aplicação de uma tensão mais elevada que a tensão normal de operação. Diferentemente das EPROM’s, as EEPROM’s não precisam ser removidas do equipamento ou computador para ser modificadas. Entretanto,
o apagamento e reprogramação tem de ser feito para todo o conteúdo da EEPROM, e não seletivamente. O processo de apagamento e reprogramação tem um número limitado, tipicamente da ordem de dezenas ou centenas de milhares de vezes, ao fim do qual a EEPROM chega ao fim de sua vida útil e deve ser substituída.
pode ser apagada
eletricamente usando a tensão a que o microcontrolador funciona.
5. FLASH ROM
A
memória Flash é um tipo de memória não-volátil (por ser constantemente alimentada por uma bateria), que pode ser apagada e regravada em unidades de memória chamadas blocos. É uma variação da EEPROM que, diferentemente da memória Flash, é apagada e reescrita byte por byte, um processo mais lento que o feito em blocos. A memória Flash usa tensões usuais do equipamento para apagamento e reprogramação
Memórias
Voláteis
Usualmente chamadas de RAM’s
(Random
Access Memory),
são caracterizadas por reter os dados gravados enquanto a eletricidade é fornecida a elas. Assim que o fornecimento cessa, os dados são perdidos. A escrita ou leitura a qualquer posição de memória leva o mesmo tempo. As memórias SRAM dividem-se basicamente em RAM’s estáticas e RAM’s dinâmicas.
TIPOS
DE MEMÓRIA RAM
1. SRAM
a
memória
SRAM
armazena
bits
em
células de tipo flip-flop, que retém a informação até que esta seja alterada, diferentemente das RAM’s dinâmicas, que utilizam células compostas de um capacitor e um transistor. Como o capacitor perde sua carga em um determinado tempo, as RAM’s dinâmicas têm de ter seu conteúdo periodicamente restabelecido, numa operação chamada refresh.
As
SRAM
são
muito
mais
rápidas
que
as RAM’s dinâmicas, e por isto mesmo mais caras. São usadas na memória
cache de um computador, uma memória especializada que serve de intermediária entre os bancos principais de RAM dinâmica e o microprocessador. A cache, tipicamente de tamanho na faixa de 64Kbytes
a 2Mbytes, replica dados dos bancos principais de RAM dinâmica, permitindo que o microprocessador ou CPU colete diretamente na cache os dados, sem precisar buscá-los na RAM dinâmica, mais lenta. O seu alto custo é o motivo principal pelo qual os bancos principais de RAM de um computador não são confeccionados todos em
SRAM.
2. DRAM (Dinamic Random Access Memory):
As
memórias
DRAM
são
o
tipo
mais
comum
de
RAM
para
uso
em
computadores
pessoais
ou
de
maior
porte.
A
DRAM
é
dinâmica
porque,
ao
contrário
da
SRAM,
precisa
restabelecer
o
conteúdo
de
suas
células
de
armazenamento
periodicamente
(na
faixa
de milissegundos – ex.: 32 ms), no processo chamado refresh. A SRAM é isenta de refresh pois as células de memórias consistem em flip-flop’s, ao invés de uma célula de armazenamento que mantém uma carga, como o capacitor. Esta célula é composta de um capacitor da ordem de fento faraday (10-15).
O refresh consiste em percorrer todas as linhas da memória. Por exemplo, uma memória de 4Mbit possui 2048 linhas e 2048 colunas. Vamos supor que o tempo de acesso desta memória seja de 100ns, então para acessar todas as linhas são necessário 0,2ms (2048 linhas x 100ns = 0,2ms), como o tempo máximo entre um refresh e outro é de 32ms, restam 31,8ms para uso da memória.
3. FPM-RAM
Este
tipo
de
memória
guarda
o
valor
da
última
linha
acessada,
portanto,
para
os
próximos
dados
acessados
na
mesma
linha,
o
controlador
de
memória
não
precisará
enviar
à
memória
o
valor
da
linha,
somente
o
da
coluna.
Com
isso, o acesso seqüencial é mais rápido. O primeiro dado acessado demorará o tempo normal, mas o acesso aos demais dados da mesma linha será mais rápido.
4. EDO-RAM
A
EDO
RAM
também
trabalha
com
acesso
seqüenciais,
com
a
diferença
que
acontecem
de
forma
mais
rápida.
Isto
só
foi
possível
com
a
adição
de
um latch na saída de dados.
5. BEDO-RAM (Burst Extended Data Out) RAM
A
memória
BEDO
é
muito
parecida
com
a
memória
EDO,
porém
na
BEDO
ao
invés
de
informar
a
LINHA
–
COLUNA
–
COLUNA
–
COLUNA,
é
necessário
apenas
informar
a
LINHA
–
COLUNA
e
as
colunas
seguintes
são
geradas
automaticamente.
6. SDRAM (Synchronous Dynamic RAM)
A
SDRAM,
além
de
ser
sincronizada
pelo clock do barramento, também tem um contador interno que faz com que o controlador de memória não precise requisitar novos dados, caso eles sejam consecutivos, e principalmente, possui duas matrizes de capacitores, fazendo com que seja possível dois acessos a endereços diferentes serem iniciados em paralelo. O acesso à memória SDRAM é feito através de comandos, tornando-se uma memória mais "inteligente" do que as demais.
7. DDR-RAM (Doubled Data Rate RAM)
A
memória
DDR
é
uma
SDRAM
com
a
taxa
de
dados
dobrada.
Ela
trabalha
com
duas memórias SDRAM em paralelo, permitindo assim dobrar a taxa de transferência de dados. Ela é capaz de entregar dois dados por cada ciclo de clock, um sincronizado pela borda de subida e outro pela borda de descida.
As
memórias
são
compostas
por
três
conjuntos
de
fios,
ou
seja,
três barramentos, são eles:
Barramento
de Endereço é
o
conjunto
de fios por onde são acessados os endereços dos dados armazenados.
O barramento de endereço é unidirecional, ou seja, a informação trafega apenas em
um sentido (entrada).
Barramento
de Dados à
conjunto
de fios por onde os dados trafegam. O barramento de dados pode ser bidirecional (a informação pode trafegar num sentido ou no outro – entrada/saída)
ou unidirecional.
Sinais
de
Controle
à
conjunto
de
fios
que
indicam
se
a
memória
está
selecionada
(CS
–
Chip
Select),
se
é
um
processo
de
escrita
(WR
–
Write),
de
leitura
(RD – Read) ou OE (Output Enable – habilita
a saída do dado o mesmo que RD).
|
Endereçamento
Determina e designa o local da memória onde ficara gravado
a informação.
ASCII
Abreviatura para “American Standard Code for
Information Interchange” – código standard americano para
troca de dados.
É largamente utilizado e, em particular, atribui a cada caracter
alfanumérico (letra ou número) um código de oito bits.
Carry
Bit de transferência, associado às operações aritméticas.
Código
Arquivo ou parte do arquivo que
contém as instruções do programa.
Byte, Kilobyte,
Megabyte
Termos relacionados com quantidades de informação.
A unidade básica é o byte que corresponde a 8 bits.
Um kilobyte são 1024 bytes e um megabyte tem 1024
kilobytes.
Flag (veja mais)
A tradução literal de "flag" é bandeira.
Não é à toa que as "flags" do processador receberam este
nome pois funcionam como sinalizadores.
Manteremos o nome
flag e não usaremos nenhum tipo de tradução porque
esta denominação já foi incorporada ao "cotidiano" e não vale a pena discutir.
As flags são apenas
um bit de memória e se localizam dentro do processador.
Como cada flag é apenas um bit, num dado momento elas só
podem ser 1 ou 0 ("setada" ou "zerada").
Existem seis flags usadas para indicar o resultado de certas
instruções.
Algumas instruções como CMP, TEST e BT não fazem outra coisa
a não ser alterar algumas destas flags. Outras instruções realizam outras
operações além de alterar algumas das flags.
Algumas instruções simplesmente não alteram as flags.
Na descrição dos mneumônicos das instruções geralmente são
citadas as flags que são alteradas.
Um uso comum das flags é o de
desviar a execução para um ponto em particular do código usando instruções
de salto condicional.
Estas instruções farão o salto ou não dependendo do estado de
uma ou mais flags.
Apenas cinco das flags podem ser usadas deste modo - zero,
sinal, carry, overflow e paridade.
A sexta flag (carry auxiliar) e a sétima flag (flag de
direção) são lidas por outro tipo de instrução.
A seguir estão informações adicionais a respeito das cinco
flags que podem ser usadas por saltos
condicionais:
Vetor de
interrupção ou interrupções
Local na memória do microcontrolador.
Desta localização o microcontrolador retira informação sobre uma
seção do programa que vai ser executada em resposta a um acontecimento de
interesse para o programador e dispositivo.
Programador
Dispositivo que torna possível escrever software na memória do
microcontrolador, possibilitando, assim, que o microcontrolador funcione
autonomamente. Compreende uma seção de hardware, normalmente ligada a um
dos portos do microcontrolador e uma parte de software sob a forma de um
programa que corre num computador PC.
USART:
Universal
Synchronous/Asynchronous Receiver/Transmitter - Chip ou circuito utilizado
para interfacial equipamentos digitais, utilizando tanto comunicação
serial síncrona quanto assíncrona.