Entradas e Saídas Digitais do DSP TMS320F2812

Este post faz parte da série DSP TMS320F2812. Leia também os outros posts da série:

Nos artigos anteriores foram apresentados os principais módulos do DSP e seus registradores. Neste artigo serão apresentados os registradores GPIO do DSP e procedimento de configuração para atender a eventos de interrupção externa.

 

 

Entradas e Saídas Digitais

 

Todos os pinos do DSP são agrupados em portas, denominadas GPIO-A, B, D, E, F e G. Para acessar pinos de I/O no DSP o multiplexador de cada pino deve ser configurado. Isso é feito no registrador GPIOxMUX, que durante o reset é inicializado com o valor 0, determinando todos pinos com função de I/O. Nessa função, cada pino pode ser configurado como entrada ou saída digital a partir do registrador GPIOxDIR, em que o zero em determinado bit configura o respectivo pino como entrada digital e 1 como saída digital. O digrama de um pino é ilustrado na Figura 1.

 

Diagrama de um pino para configuração de Entradas e Saídas Digitais do DSP TMS320F2812
Figura 1: Diagrama de um pino do DSP TMS320F2812.

 

Saída digital

 

Uma vez configurado como saída digital o pino pode ser alterado pelos registradores GPIOxDAT, GPIOxCLEAR, GPIOxSET e GPIOxTOGGLE.

  • GPIOxDAT: O valor configurado nesse registrador define o nível lógico de cada pino.
  • GPIOxCLEAR: Os bits configurados em ‘1’ atribuem o nível lógico zero aos respectivos pinos.
  • GPIOxSET: Os bits configurados em ‘1’ atribuem o nível lógico um aos respectivos pinos.
  • GPIOxTOGGLE: Os bits configurados em ‘1’ invertem o nível lógico dos respectivos pinos.

 

Entrada digital

 

  • GPIOxDAT: O valor de leitura desse registrador indica o nível lógico de cada pino.
  • GPIOxEQUAL: Algumas portas (GPIO A, B, D e E) possuem um filtro denominado qualificador (Input Qualification). Tal registrador pode ser utilizado para determinar uma janela de tempo (quantas vezes uma entrada deve ser amostrada) para que uma entrada digital tenha seu valor definido.

 

Filtro qualificador.
Figura 2: Filtro qualificador.

 

O período de amostragem da entrada é igual ‘2n’ ciclos SYSCLKOUT, em que ‘n’ é o valor de GPIOxEQUAL. Assim, o valor do pino é determinado após 6 ciclos em que o sinal tem o mesmo valor. Isso pode ser utilizado para eliminar efeitos de spike ou pulsos que ocorrem antes do valor de entrada estabilizar. Um exemplo desse procedimento é ilustrado na Figura 3.

 

Exemplo de leitura de pino com o filtro ativado.
Figura 3: Exemplo de leitura de pino com o filtro ativado.

 

 

Registradores GPIO

 

O endereço dos registradores de multiplexação e direção são mostrados na Figura 4. Cabe ressaltar que esses registradores têm a operação de escrita protegida por hardware, sendo necessário executar a instrução EALLOW.

 

Registrador de controle GPIO.
Figura 4: Registrador de controle GPIO.

 

Já os registradores que manipulam diretamente os valores do GPIO não são protegidos. Tais registradores são mostrados na Figura 5.

 

Registrador de controle GPIO.
Figura 5: Registrador de controle GPIO.

 

No exemplo abaixo é mostrada a configuração dos pinos do GPIOA como saídas digitais. O programa permanece em loop escrevendo o valor da variável contador no registrador de dados do GPIOA.

 

Obs: Programa criado no CCSv7 (CCS Project - Empty ), usando o compilador TI v17.3.0.STS.

 

 

 

Interrupções externas

 

As interrupções externas são habilitadas pelos registradores XINT1CR e XINT2CR. Os campos desses registradores são mostrados na Figura 6.

 

Registrador XINTxCR.
Figura 6: Registrador XINTxCR.

 

Essas fontes de interrupção correspondem aos canais 4 e 5 do sinal de interrupção INT1, conforme mostrado na Figura 7.

 

Fontes de interrupção do PIE.
Figura 7: Fontes de interrupção do PIE.

 

Dessa maneira, o registrador PIEIER1 (Figura 8) deve ser utilizado para habilitar o canal de interrupção.

 

Registrador PIEIERx.
Figura 8: Registrador PIEIERx.

 

Cabe lembrar que as interrupções do DSP são controladas pelo registrador IE e pelo bit global de interrupções. Assim, para habilitar a fonte INT1 e as interrupções globais, o seguinte trecho de código deve ser utilizado.

 

 

No exemplo abaixo é demonstrada a configuração da fonte de interrupção externa XINT1. Para isso, o pino GPIOE0 (XINT1) foi configurado na função alternativa para gerar uma interrupção em eventos de borda de descida. Além disso, os vetores de interrupção foram posicionados no PIE, de modo que a interrupção XINT1 corresponda ao endereço 0xD46. Sempre que a interrupção ocorre o programa é desviado para a rotina INT1_ISR. Tal rotina escreve no registrador ACK, zerando o bit respectivo ao sinal de interrupção INT1. Assim, o próximo evento de interrupção pode ser atendido.

 

Obs: Programa criado no CCSv7 (CCS Project - Empty ), usando o compilador TI v17.3.0.STS.

 

 

 

Referências

 

TMS320F2812 - 32-bit Digital Signal Controller with Flash

Outros artigos da série

<< Inicialização e Configuração do DSP TMS320F2812Timers do DSP TMS320F2812 >>
Este post faz da série DSP TMS320F2812. Leia também os outros posts da série:
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Fernando Deluno Garcia
Fascinado por computação, especialmente na interface entre hardware e software, me engajei na área de sistemas embarcados. Atuo com desenvolvimento de sistemas embarcados e sou docente da Faculdade de Engenharia de Sorocaba. Para mais informações: https://about.me/fdelunogarcia

Deixe um comentário

avatar
 
  Notificações  
Notificar