dsPIC 33EP128MC506 no leerá RB8, parece ser un problema de software

2

Estoy usando un dsPIC 33EP128MC506 . Tengo dos PCB con este chip, ambos muestran los mismos síntomas, lo que implica que no es un daño aislado. RB8 definitivamente está siendo conducido a 3.3 voltios, confirmado con un multímetro y un alcance. He actualizado MPLAB X y el compilador XC16 a las últimas versiones, sin efecto. Si trato de leer RB8 inmediatamente después de configurar el registro TRISB, antes de que se habiliten los periféricos, todavía obtengo cero. Nada en la errata parece ser relevante, pero podría haberme perdido algo.

Confirmé a través de la salida en serie que TRISB < 8 > Está establecido. TRISB se establece en 0xFFFF, por lo que un problema relacionado donde el bit incorrecto controla la dirección parece ser inaplicable. RB9 también funciona bien como entrada, por lo que no parece que la mitad superior de PORTB sea consumida por JTAG como otros han informado . No hay escrituras a PORTB en el código, y no hay escrituras a LATB < 8 & gt ;. RB7 funciona bien como entrada, al igual que RC13 (el pin físicamente adyacente). Los periféricos que comparten el pin RB8 son:

  • T4CK, temporizador 4 entrada de reloj externo; no utilizado y desconectado explícitamente (T4CONbits.TCS = 0, confirmado por salida en serie)
  • TCK es el pin de entrada del reloj de prueba JTAG; La palabra de configuración _FICD establece JTAGEN_OFF
  • ASCL1 es una entrada / salida de reloj serie síncrona alternativa para I2C1; La palabra de configuración _FICD establece ALTI2C1_OFF, y no se usa I2C
  • RP40 es un periférico extraíble 40; RPOR3 es 0x0000, confirmado por la salida en serie, y el código de bit para RP40 nunca se hace referencia en el programa en decimal, hexadecimal o binario
  • CVREF10 es una salida de referencia de voltaje de comparador / amplificador operacional; desconectado explícitamente (CVRCONbits.CVR1OE = 0, confirmado por salida en serie)

Me he quedado sin ideas.

    
pregunta Stephen Collings

1 respuesta

1

Todos los bits ANSEL se configuran de forma predeterminada, lo que evita que los pines asociados se utilicen como entradas digitales. En este chip, ANSELB < 8 > existe, aunque RB8 no es un pin A / D. Eliminación de ANSELB < 8 > permite que se utilice como entrada.

    
respondido por el Stephen Collings

Lea otras preguntas en las etiquetas