ENCICLOPÉDIA DE RÁDIO ELETRÔNICA E ENGENHARIA ELÉTRICA Interface do controlador PIC com um computador. Enciclopédia de rádio eletrônica e engenharia elétrica Enciclopédia de eletrônica de rádio e engenharia elétrica / Microcontroladores Ao desenvolver um dispositivo em um microcontrolador (MC), muitas vezes surge o problema de sua conexão com um computador para troca de informações. Na maioria dos casos, o modo bidirecional é necessário a uma taxa de câmbio relativamente baixa. Na melhor das hipóteses, o MK pode ter uma interface serial, mas na maioria das vezes ela deve ser escolhida entre as mais baratas que não estão equipadas com essa interface. Por exemplo, o PIC16F84A MK da Microchip, que é muito popular ultimamente, não possui essa interface. O artigo considera uma variante da implementação de software da interface serial tanto do lado do MC quanto do lado do computador. Para se comunicar com o dispositivo no MK, você pode usar a porta paralela (LPT) ou serial (COM) do computador. O primeiro é mais fácil de trabalhar - pode usar um número relativamente maior de sinais de entrada e saída, cujos níveis são compatíveis com TTL. A desvantagem dessa porta é que, se no DOS ou no Linux, operações simples de E / S são suficientes para usá-la, para uma operação correta no Windows, é necessária a adesão estrita ao protocolo de transferência de dados, o que não é eficaz ao trabalhar com MK. Também é possível controlar diretamente linhas individuais da porta LPT, mas isso requer a instalação de um driver especial. A "desvantagem" da porta LPT pode ser considerada que na maioria dos computadores é apenas uma e, via de regra, é ocupada pela impressora. As principais vantagens da porta COM são que a interface de programação (API) padrão do Windows permite controlar diretamente algumas linhas de saída e controlar as de entrada, além de ter a função de aguardar algum evento associado à porta COM. Sua vantagem é que o padrão RS-232, segundo o qual são feitas as portas COM, permite conectar e desconectar cabos durante a operação do dispositivo (hot plug). Além disso, quase sempre um computador possui uma porta COM livre. A desvantagem da porta é que o nível do sinal é diferente do TTL, no qual o nível lógico baixo corresponde a uma tensão de -12 e o nível lógico alto corresponde a +12 V. A implementação da interface RS-232 padrão exigiria que o MC observasse rigorosamente os intervalos de tempo entre os sinais de saída. Em uma situação real, o ressonador de quartzo do microcontrolador pode não corresponder à frequência de transmissão de dados, e o próprio MC geralmente está ocupado com algo mais importante do que a formação de intervalos de tempo precisos. Como resultado, torna-se mais fácil implementar programaticamente uma opção de troca síncrona serial, quando cada bit de dados é confirmado por um pulso de sincronização. O diagrama esquemático da interface proposta é mostrado na fig. 1. Os divisores resistivos R232R1 e R4R2 são usados para converter níveis RS-5 em TTL. Os diodos VD1 e VD2 são necessários para não passar uma tensão negativa correspondente a um zero lógico. O sinal TTL de saída do MK não precisa ser convertido e pode ser alimentado diretamente nas linhas de entrada da porta COM. O resistor R3 limita a corrente de saída do MK em caso de um possível curto-circuito acidental. Como você pode ver no diagrama, são necessários quatro fios para se comunicar com o computador. O computador inicia a troca de dados emitindo pulsos de clock na linha DTR, configurando os dados transmitidos na linha RTS e recebendo os dados recebidos na linha CTS. O computador e o MK podem alterar os dados somente quando o nível lógico do sinal de sincronização estiver baixo. Esta implementação da interface permite implementar um modo duplex de transmissão de dados. Os números dos pinos XS1 no diagrama são para um soquete DB-25F usando um cabo de modem padrão. Consulte a Tabela 1 para obter os números dos pinos de outros conectores e ao usar um cabo de modem nulo. XNUMX. A frequência dos pulsos de sincronização deve ser escolhida de forma que o MC tenha a garantia de ter tempo para processar os dados do computador, respondendo a cada pulso de sincronização. Os bits de informação são transmitidos sequencialmente. Ao final da transmissão dos bits de um byte, segue-se a transmissão dos bits do próximo byte, sendo transmitido primeiro o bit de informação mais significativo. Para trazer a interface ao seu estado original (configurando o número do byte transmitido como 0), o computador deve efetuar o log. 1 na linha do relógio para alterar o estado da linha de dados. O MCU emite um novo bit de dados na linha CTS na queda dos pulsos de polaridade positiva na entrada do relógio DTR e lê os dados da linha RTS na borda de subida dos pulsos de polaridade positiva. A troca pode ser interrompida a qualquer momento interrompendo o fornecimento de pulsos de sincronização. O diagrama de temporização da troca de dados é mostrado na fig. 2. Ao implementar a interface, é recomendável passar valores de controle em alguns bytes para verificar a exatidão dos dados transmitidos. O código fonte do procedimento para MK PIC16F84A [1] em linguagem C, que implementa a interface proposta, é dado na Tabela. 2. A chamada do procedimento link() está localizada no loop principal do programa e é constantemente chamada durante a operação do MK para controlar o estado da interface. Todas as variáveis usadas pelo procedimento são declaradas como globais. A cada chamada, ele lê os estados das linhas de entrada da interface (RB6 e RB7) e os compara com seus estados na chamada anterior. Sob certas condições (queda de sincronização, borda de sincronização, reinicialização da interface), as ações são executadas de acordo com a lógica da interface. O código fonte do procedimento para um computador em Pascal (Delphi) é dado na Tabela. 3. Aqui, o procedimento de link é chamado uma vez para realizar o ato de troca de informações com o MK. Antes de chamá-lo, é necessário preencher o bufão passado. Ao final do procedimento, os dados recebidos estarão no array ibuf. O procedimento abre a porta COM especificada do computador e, usando as funções da API do Windows [2], controla o estado das linhas de saída e pesquisa as linhas de entrada. Após a conclusão da troca de informações, a porta é fechada. No procedimento de ligação, os atrasos de tempo são implementados usando a função sleep(). Seus valores são calculados ou selecionados experimentalmente pela ausência de perda de bits durante a troca de dados entre o MC e o computador. O exemplo mostra os atrasos para a troca com um controlador PIC com um ressonador de quartzo na frequência de 4 MHz, que, além disso, realiza outro trabalho útil. Se o procedimento de troca demorar muito, ele pode ser movido para uma thread separada da execução do sistema operacional para que seja executado em paralelo com o programa principal [2]. Se a troca de informações exigir leitura e escrita separadas, é possível espalhar as matrizes de dados transmitidos e recebidos para diferentes endereços, conforme mostrado na Fig. 2. No MK, é conveniente construir a formação dos dados transmitidos e o uso dos dados recebidos na forma dos procedimentos upload() e download(), chamados antes da transmissão e ao receber o próximo byte, respectivamente. O primeiro deles deve retornar o valor do byte transmitido pelo seu número no pacote de informação transmitido, o segundo recebe o valor do byte recebido e seu número no pacote e deve utilizar esses valores para alterar os registradores MK, escrever para EEPROM, etc. A implementação desses procedimentos para processar um pacote de informações de tamanho 4 bytes (Tabela 4) é mostrada na Tabela. 5. Um exemplo de programa para MK é dado para o compilador C2C [3]. O procedimento para um computador pode ser usado em um programa escrito em Borland Delphi 3 e superior. Literatura
Autor: S. Kuleshov, Kurgan Veja outros artigos seção Microcontroladores. Leia e escreva útil comentários sobre este artigo. Últimas notícias de ciência e tecnologia, nova eletrônica: Máquina para desbastar flores em jardins
02.05.2024 Microscópio infravermelho avançado
02.05.2024 Armadilha de ar para insetos
01.05.2024
Outras notícias interessantes: ▪ Ferros de passar na vertical ▪ Módulos de energia inteligentes de alta tensão com maior capacidade de transporte de corrente ▪ Cro-Magnon era mais esperto do que nós Feed de notícias de ciência e tecnologia, nova eletrônica
Materiais interessantes da Biblioteca Técnica Gratuita: ▪ seção do site Motores elétricos. Seleção de artigos ▪ artigo Presentes dos dinamarqueses. expressão popular ▪ artigo O que foi chamado de subbotnik antes do advento do poder soviético? Resposta detalhada ▪ artigo Saída do PC para fones de ouvido. Enciclopédia de rádio eletrônica e engenharia elétrica
Deixe seu comentário neste artigo: Todos os idiomas desta página Página principal | Biblioteca | Artigos | Mapa do Site | Revisões do site www.diagrama.com.ua |