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 >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

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

Hardware » Sistemas Digitais » Entradas e Saídas Digitais do DSP TMS320F2812
Comentários:
Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments
Talvez você goste:

Séries



Outros da Série

Menu