Escolar Documentos
Profissional Documentos
Cultura Documentos
RIO DE JANEIRO
2021.2
CONFIGURAÇÃO E PROGRAMAÇÃO DE PERIFÉRICOS
EM LINGUAGEM C
Por:
Paulo Augusto Ferreira Marques – Mat: 202002403251
Pedro Gabriel de Oliveira – Mat: 201508958114
Rodrigo Cesar Martins de Lima – Mat: 20202222168
Rogerio Alves de Souza – Mat: 202002419458
Thomas Jorge Fonseca de Lara – Mat: 201902670311
RIO DE JANEIRO
2021.2
SUMÁRIO
1. INTRODUÇÃO .......................................................................................................................... 1
2. CONFIGURAÇÃO E PROGRAMAÇÃO DE PRIFÉRICOS EM LINGUAGEM C...................................... 1
2.1. HISTÓRIA DA LINGUAGEM C ....................................................................................................... 1
2.2. APLICAÇÕES ................................................................................................................................. 2
3. CONTROLE DE INTERRUPÇÕES .................................................................................................. 2
3.1. O QUE É A INTERRUPÇÃO............................................................................................................ 2
3.2. TIPOS DE INTERRUPÇÃO.............................................................................................................. 3
3.2.1.Polling .................................................................................................................................. 3
3.2.2.Interrupt Service Routine - ISR............................................................................................. 3
4. PORTAS DE E/S ........................................................................................................................ 4
4.1. EXEMPLO DE ENTRADA COM A FUNÇÃO PRINTF ....................................................................... 4
4.2. EXEMPLO DE SAÍDA COM A FUNÇÃO SCANF .............................................................................. 4
4.3. EXEMPLO COMPLETO .................................................................................................................. 4
5. RTC.......................................................................................................................................... 5
6. TIMER...................................................................................................................................... 6
6.1. TEMPORIZADORES DO 8051 E SEUS REGISTROS ASSOCIADOS ................................................... 7
6.1.1.Registro do Timer 0......................................................................................................... 7
6.1.2.Temporizador 1 Registro ................................................................................................ 7
6.1.3.Registro TMOD (Timer Mode) ........................................................................................ 8
6.2. PORTA.......................................................................................................................................... 8
6.3. C/T (RELÓGIO; TEMPORIZADOR) ................................................................................................. 9
6.3.1.Diferentes modos de temporizadores ............................................................................ 9
6.3.1.1.Modo 0 (13-Bit Timer Mode) ............................................................................... 9
6.3.1.2.Modo 1 (16-Bit Timer Mode) ............................................................................. 10
6.3.1.3.Modo 2 ............................................................................................................... 11
6.3.1.4.Modo 3 (Modo Timer Split Timer) ..................................................................... 11
5. UART ..................................................................................................................................... 12
5.1. REGISTROS UART: DESCRIÇÃO DOS REGISTROS.................................................................... 12
5.2. PASSOS PARA CONFIGURAÇÃO DA UART0: .......................................................................... 13
6. SPI ......................................................................................................................................... 13
7. CONVERSOR A/D ................................................................................................................... 16
7.1. PARALELO OU FLESH ................................................................................................................. 19
7.2. CONVERSOR EM RAMPA ........................................................................................................... 20
7.3. CONVERSOR DE APROXIMAÇÃO SUCESSIVA............................................................................. 21
8. CONTROLADOR DE MEMÓRIA FLESH (FPEC)............................................................................ 22
9. INFERFACE USB ...................................................................................................................... 27
9.1. SIMULAÇÃO ............................................................................................................................... 31
10.REFERÊNCIAS ......................................................................................................................... 37
1
1. INTRODUÇÃO
O avanço da tecnologia nos últimos anos proporcionou uma revolução na forma como
os seres humanos utilizam equipamento e dispositivos. A evolução trouxe
naturalmente formas de aumentar a multifuncionalidade de equipamentos e sistemas.
Com isso a tecnologia em sistemas embarcados deixou de ter uma mera função de
inicializar serviços dos dispositivos, mas agregou funções complexas que necessitam
cada vez mais de linguagens, algoritmos e outros recursos cada vez mais
desenvolvidos. A Linguagem C contribuiu inegavelmente com essa evolução.
2.2. APLICAÇÕES
3. CONTROLE DE INTERRUPÇÕES
3.2.1. Polling
4. PORTAS DE E/S
int i;
scanf("%d", &i);
int i = 5;
printf("O valor de i é: %d\n", i);
#include <stdio.h>
int main()
{
5
TABELA 1
5. RTC
6. TIMER
O 8051 tem dois temporizadores, o Timer 0 e o Timer 1. Eles podem ser usados
como temporizadores ou como contadores de eventos. Tanto o Timer 0 quanto o
Timer 1 têm uma largura de 16 bits. Como o 8051 segue uma arquitetura de 8 bits,
cada 16 bits são acessados como dois registros separados de byte baixo e byte alto.
Tanto o Timer 0 quanto o Timer 1 usam o mesmo registro para definir os vários
modos de operação do timer. É um registro de 8 bits no qual os 4 bits inferiores são
reservados para o Temporizador 0 e os 4 bits superiores para os Temporizadores. Em
cada caso, os 2 bits inferiores são usados para definir o modo de temporizador com
antecedência e os 2 bits superiores são usados para especificar a localização.
6.2. PORTA
Cada timer tem um meio de iniciar e parar. Alguns temporizadores fazem isso
por software, outros por hardware e alguns têm controles tanto de software quanto de
hardware. Os temporizadores 8051 têm controles tanto de software como de
hardware. A partida e a parada de um timer são controladas por controlada por
software usando as instruções SETB TR1 e CLR TR1 para o timer 1, e SETB TR0 e
CLR TR0 para o timer 0.
A instrução SETB é usada para iniciá-la e é interrompida pela instrução CLR. Estas
instruções iniciam e param os temporizadores desde que GATE = 0 no registro TMOD.
9
Os temporizadores podem ser iniciados e parados por uma fonte externa, fazendo a
GATE = 1 no registro TMOD.
O benefício do modo de recarga automática é que você pode ter o timer para sempre
conter um valor de 200 a 255. Se você usar o modo 0 ou 1, você teria que verificar no
código para ver o transbordo e, nesse caso, redefinir o temporizador para 200. Neste
caso, instruções preciosas verificam o valor e/ou são recarregadas.
11
6.3.1.3. Modo 2
Inicialização de um temporizador
Decida o modo de temporizador. Considere um timer de 16 bits que funcione
continuamente, e seja independente de quaisquer pinos externos.
MOV TMOD,#01h
Agora, o Timer 0 está no modo de timer de 16 bits, mas o timer não está funcionando.
Para iniciar o timer no modo de funcionamento, defina o bit TR0 executando a seguinte
instrução -
12
SETB TR0
Agora, o Timer 0 começará imediatamente a contar, sendo incrementado uma vez a
cada ciclo da máquina.
Leitura de um temporizador
Um timer de 16 bits pode ser lido de duas maneiras. Ou você lê o valor real do timer
como um número de 16 bits, ou você detecta quando o timer transbordou.
5. UART
Passo1: Configurar o pino GPIO para a função UART0 usando o registro PINSEL.
Passo2: Configurar o FCR para habilitar o FIXO e Reste tanto o Rx/Tx FIFO.
Passo3: Configurar a LCR para 8 bits de dados, 1 bit de parada, Desabilitar Paridade
e Habilitar DLAB.
Passo4: Obtenha o PCLK do registro PCLKSELx 7-6 bits.
Passo5: Calcular o DLM,DLL vaues para baudrate requerido a partir do PCLK.
Passo6: Atualize o DLM,DLL com os valores calculados.
Passo6: Finalmente, desabilitar o DLAB para desativar o acesso ao DLM,DLL.
Depois disso, a UART estará pronta para transmitir/receber dados na taxa de bauds
especificada.
6. SPI
7. CONVERSOR A/D
danificadas e aloca células sobressalentes para serem substituídas por futuras células
com falha. Alguma parte das células sobressalentes também é usada para conter o
firmware que opera o controlador e outros recursos especiais para um dispositivo de
armazenamento específico. Uma estrutura de diretório é criada para permitir que o
controlador converta solicitações de setores lógicos em locais físicos nos chips de
memória flash reais.
leitura, manuseio seguro de flash, etc.), a localização física de um LBA pode mudar
dinamicamente com frequência. As unidades de mapeamento de um FTL podem
diferir, de modo que os LBAs são mapeados com base em bloco, página ou mesmo
subpágina. Dependendo do padrão de uso, uma granularidade de mapeamento mais
fina pode reduzir significativamente o desgaste do flash e maximizar a durabilidade de
uma mídia de armazenamento baseada em flash.
Como os metadados FTL ocupam seu próprio espaço flash, eles também
precisam de proteção em caso de perda de energia. Além disso, é possível que a
tabela de mapeamento se desgaste antes que outras partes da memória flash se
desgastem, encerrando prematuramente a vida útil de um dispositivo de
armazenamento. Isso geralmente é evitado em dispositivos corporativos alocando um
espaço superdimensionado para peças sobressalentes, embora formas mais
duráveis, de armazenamento como MRAM também tenham sido propostas para FTL.
Deseja-se poder utilizar uma memória flash externa SPI, portanto de acesso
serial, para o processo de boot do processador embarcado. Entretanto, as soluções
oferecidas pelas ferramentas de programação utilizadas pressupõem acesso paralelo
às memórias de código.
25
A Unidade de Controle Epec 4602 tem uma vasta gama de E/S programáveis
para diferentes implementações. Epec 4602 pode controlar 10 blocos hidráulicos
simultaneamente usando 20 saídas PWM e 10 feedbacks. Pode ser usado como
controlador autônomo ou como parte de um sistema de controle descentralizado. O
invólucro de forma elegante da unidade funciona para proteger a eletrónica contra o
desgaste mecânico. A carcaça de alumínio/plástico à prova de vazamentos também
foi amplamente testada contra diferentes condições ambientais. A unidade está
equipada com um LED de sinalização para diagnóstico. Uma CAN também está
27
equipada com pinos duplos para facilitar o cabeamento, uma vez que não há
necessidade de ramificações no chicote de fios.
9. INFERFACE USB
Nesse tópico será abordado de forma prática alguns passos para realizar a
comunicação enviando e recebendo dados de um microprocessador PIC 18F4550
pela interface USB. O compilador utilizado foi o MIkroC Pro 5.3 e o simulador foi o
Proteus Isis 7.7.
Para configurar o PIC como um USB HID Device, é necessário gerar um arquivo
de descrição de funções de acordo com os padrões USB HID encontrados em
http://www.usb.org/developers/hidpage/. Nessa página há um programa chamado
“Hid Descriptor Tool” para gerar suas próprias configurações de dispositivos. É
possível gerar teclados, mouses, game controllers entre outros, esse artigo foca em
comunicação padrão via terminal e não aprofunda esses tópicos.
Após criar um projeto no MikroC Pro, deve-se abrir a ferramenta “HID Terminal”
que se encontra no menu Tools. Na aba Descriptor deve-se preencher os dados de
configuração do arquivo a ser gerado conforme mostra a figura 13, em seguida deve-
se clicar em “Save Descriptor” e salvar.
O programa tem como função receber strings pelo terminal e enviar o que foi
recebido a esse terminal. A figura 10 mostra o fluxograma do programa. As variáveis
readbuff e writebuff são utilizadas pelas funções HID_Write e HID_Read
respectivamente para envio e leitura de mensagens. Essas devem possuir o mesmo
comprimento declarado no arquivo descriptor, em nosso caso 64 posições, conforme
a figura 13. A execução dos serviços USB é realizada dentro de uma rotina interrupt
onde deve estar a função USB_Interrupt_Proc(); No caso aqui apresentado,
realizamos a configuração do microcontrolador para funcionar sem portas analógicas
30
9.1. SIMULAÇÃO
10. REFERÊNCIAS
FARINE, Jean Marie; FRAGA, Joni da Silva; OLIVEIRA, Rômulo Silva de. Sistemas
de Tempo Real. Centro de Informática - UFPE: 2000.
SILVA, Luiz Marcelo Chiesse da. Conversores D/A e A/D. Cornélio Procópio: Utfpr,
2005. 13 p.
POMILIO, José Antenor. Conversão AD: Notas de aula. Campinas: Unicamp, 2007.
25 p.
38