Sistemas Operacionais de Tempo Real – Alguns Periféricos

Perifericos_1

Introdução

 Este artigo é o último da série sobre rotinas padronizadas, desenvolvidas em C, para o sistema MCS-51 (8051) e para serem compilados no programa da Keil. Nesse contexto é necessário lembrar que o microcontrolador 8051 não possui em seu hardware muitas interfaces dedicadas e de certa forma autônomas para conexão com periféricos externos. Considerando isso, as rotinas dessa biblioteca realizam o acesso diretamente através dos pinos (bits) dos Ports do microcontrolador e a temporização desses procedimentos fica sendo definida implicitamente pelo clock da CPU ou pelos ciclos de máquina das instruções.

 As arquiteturas mais modernas de microcontroladores já possuem hardwares dedicados para a implementação de barramentos de comunicação I2C, saídas PWM, entre outras, o que melhora o rendimento da execução do seu software embarcado, por conta do paralelismo das operações.

 As rotinas apresentadas aqui, não são rotinas de tempo real propriamente ditas, mas funcionam bem como rotinas padronizadas, que podem ser utilizadas em ambientes de tempo real. São rotinas para o acesso a EEPROM serial, aos conversores A/D ADC0838 e AD7730 e ao sensor de temperatura DS1820.

 

Descrição das Rotinas

 As rotinas que serão detalhadas a seguir foram desenvolvidas seguindo as sugestões apresentadas no artigo Boas práticas para o desenvolvimento de software – Parte I no que diz respeito a encapsular algumas funções de acesso aos periféricos.

Rotinas para memórias seriais do tipo EEPROM

A EEPROM serial modelo NM24CXX da Fairchild, que já está obsoleta, mas pode ser substituída pelo componente CAT24CXX da ON Semiconductor. Na Figura 1, pode-se observar o diagrama funcional da EEPROM serial.

Cat24CXX_1Figura 1: Diagrama funcional da EEPROM serial CAT24CXX

Definições

O trecho de código a seguir pode ser inserido num arquivo de definições do tipo *.h.

 Perifericos 1

Observe que no trecho de código acima foram definidos um contador ucContadorTimerEEPROM,  que deverá ser inserido na rotina de interrupção do timer principal, uma constante de inicialização e um bit de sinalização para indicar ao processo no loop principal que a temporização terminou. Esse recurso permite uma temporização virtual de 10 ms e é explicado em detalhes no artigo Sistemas Operacionais de Tempo Real – Timers.

 

Rotina do Timer de 10 ms

Perifericos 2

Rotina de escrita da EEPROM

Perifericos 3

Perifericos 4

Rotina de leitura na EEPROM

Perifericos 5

Perifericos 6

Perifericos 7

.

Rotinas para acesso ao conversor A/D ADC0838

O conversor ADC0838 é um conversor A/D de 8 bits que possui um multiplexador de 8 canais na entrada do conversor. É um componente eletrônico muito robusto e versátil. Na Figura 2, pode-se observar uma aplicação típica para esse componente.

ADC0838Figura 2: Aplicação típica do ADC 0838

Definições

O trecho de código a seguir pode ser inserido num arquivo de definições do tipo *.h.

Perifericos 8

Rotina de leitura do ADC0838

Perifericos 9

Perifericos 10

 .

Rotinas para o conversor A/D AD7730

O conversor A/D AD7730 é um componente de grande precisão e ideal para a medição de sinais extraídos de pontes de strain gages, mais especificamente para a aplicação em balanças de precisão. Algumas características desse componente:

  • Conversor sigma-delta de 24 bits;
  • Resolução de até 1/230.000;
  • Medidas razométricas com relação à fonte;
  • Filtro digital programável;
  • Etc.

Na Figura 3 pode ser observada uma aplicação típica desse componente e alguns módulos internos.

 AD7730_1

Figura 3: Aplicação típica do conversor AD7730

Para se aprofundar nos conceitos de medidas em ponte, recomendo a leitura do artigo técnico Ponte de Wheatstone.

Definições

 O trecho de código a seguir pode ser inserido num arquivo de definições do tipo *.h.

Perifericos 11

Rotina para escrever uma palavra no AD7730

Perifericos 12

Rotina para ler dados do AD7730

Perifericos 13

Rotina para verificar se há dados disponíveis

Perifericos 14

Exemplo de rotina de interrupção gerada pelo conversor AD7730

Perifericos 15Perifericos 16

Rotinas para o termômetro digital DS1820

O termômetro DS1820 é um componente com boa precisão, incrementos de 0,5ºC na faixa de medição de temperaturas entre -55º a +125ºC. Como pode ser observado na Figura 4, trata-se de um termômetro digital, compacto com a interface de comunicação 1-wire (um único fio). Esse componente já está obsoleto e não há reposição direta.

DS1820

Figura 4: Detalhes do componente DS 1820

Definições

O trecho de código a seguir pode ser inserido num arquivo de definições do tipo *.h.

Perifericos 17

Rotina para aguardar n vezes 10 ms

Perifericos 18

Rotina para escrever no DS1820

Perifericos 19

Perifericos 20

Rotina para gerar Reset no Bus do DS1820

Perifericos 21

Rotina para ler do DS1820

Perifericos 22

Resumo

Neste artigo técnico foram apresentadas algumas rotinas padronizadas, codificadas em C, para serem compiladas no programa da Keil. Essas rotinas permitem configurar e acessar alguns periféricos utilizando-se os microcontroladores da família MCS-51. Essas rotinas foram utilizadas em projetos reais e funcionam!

Este artigo é o quinto da série de artigos que abordam algumas funções comuns em projetos de sistemas embarcados de tempo real. Confira os demais artigos.

Sistemas Operacionais de Tempo Real

Bibliotecas de funções e rotinas padronizadas em linguagem C para MCS-51

  • Timers – É apresentada uma biblioteca desenvolvida em linguagem C para a inicialização e o uso dos Timers do MCS-51;
  • Displays de 7 segmentos  – É apresentada uma biblioteca desenvolvida em linguagem C para a inicialização e o uso em displays de 7 segmentos;
  • Teclados Matriciais  – É apresentada uma biblioteca desenvolvida em linguagem C para varredura, leitura, debounce, identificação da tecla acionada e desvio para a rotina de tratamento. A forma como as rotinas foram escritas, permitem sua fácil reutilização em outros projetos;
  • Periféricos (este artigo) – É apresentada uma biblioteca desenvolvida em linguagem C para a inicialização e o uso de alguns periféricos, tais como conversores A/D, sensor de temperatura e memórias seriais.

Licença Creative Commons
Esta obra, “Sistemas Operacionais de Tempo Real – Alguns Periféricos“, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada.

6 comentários sobre “Sistemas Operacionais de Tempo Real – Alguns Periféricos

  1. Ola eu estou tentado comunicar com o adc AD7730 atraves do microcontrolador arduino, e nao estou conseguindo nenhum resultado pratico, nao existe nenhuma biblioteca especifica para este ADC??

    Obrigado pelo tempo dispensado

    José Rodrigues

    • Caro José,

      se buscar na internet, você encontra alguma coisa. Para arduino, encontrei esse aqui. Dá uma espiada.

      http://forum.arduino.cc/index.php/topic,178267.0.html

      Pode servir para você.Nas bibliotecas que você consultou, também tem o código em C, não necessariamente para o 8051. É fácil adaptar para o arduino. Mas é necessário você conhecer profundamente o ADC 7730 para poder configurá-lo e operá-lo corretamente.

      Abraço!

      • Caro “engenheiropuhlmann”

        Obrigado pela sua breve resposta, eu estive a ver as funções que estão no documento e apenas tive duvidas em relação as variaveis: DESLIGA e LIGA, eu presumo que sejam apenas 0 e 1 respectivamente se me pudesse esclarecer agradeço desde ja, mas na verdade tenho mesmo que conhecer o ADC7730 profundamente porque o codigo que esta presente nessa pagina referente ao ADC7730 + arduino da-me valores dispares sem qualquer sentido acho eu, mas mesmo assim obrigado pela resposta

        Um abraço

      • Caro José,

        de fato o DESLIGA é igual a 0 e o LIGA = 1 (Estão definidos bem no início da biblioteca). É que nessa biblioteca não há uma biblioteca para o SPI e eu tinha que fazer essa comunicação na unha. No caso do Arduino, provavelmente tem uma biblioteca para o SPI. Aí você pode adaptar a solução e fica mais fácil de usar.

        Abraço

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s