Problema Actualizar la pantalla de 4 dígitos de 7 segmentos con UART en el MSP430G2553

1

Estoy trabajando en un programa que:

  • muestrea el ADC cada medio segundo con la interrupción del temporizador
  • envía una señal a través de UART al presionar el botón (interrupción del puerto 2)
  • muestra el valor de ADC a una pantalla de 7 segmentos multiplexada de 4 dígitos actualizada a 100 Hz usando la interrupción del temporizador

El problema que tengo es que el segmento 7 parece estar confundiendo la señal UART. Aquí está la parte del código que envía el número entero al segmento 7 que se mostrará. Parece estar causando los problemas.

void shiftOut(short val)
{
    //Set latch to low (should be already)
    P2OUT &= ~LATCH;

    int i;

    // Iterate over each bit, set data pin, and pulse the clock to send it
    // to the shift register
    for (i = 0; i < 8; i++)  {
        if ((val & (1 << i))){
            P2OUT |= DATA;
        } else {
            P2OUT &= ~DATA;
        }
        P2OUT |= CLOCK;
        P2OUT ^= CLOCK;
    }

    // Pulse the latch pin to write the values into the storage register
    P2OUT |= LATCH;
    P2OUT &= ~LATCH;
}

Si disminuyo la velocidad de actualización de 7 segmentos, la señal de UART está bien, pero los 7 segmentos parpadean. No estoy muy seguro de por qué la señal UART se está estropeando, por lo que si alguien puede señalar los errores que he cometido, sería genial.

Gracias

    
pregunta user2218339

0 respuestas

Lea otras preguntas en las etiquetas