PIC32 Peripheral Pin Select para salida digital

1

Estoy usando un PIC32MX250F128B para un proyecto para impulsar varias salidas digitales; Necesito controlar la salida digital para aproximadamente 13-14 pines. (usando el código de abajo).

  • Estos pines funcionan: RA0, RA1, RB0, RB1, RB2, RB3, RB10, RB11, RB13, RB14, RB15

  • Estos pines no: RA2, RA3, RA4, RB4, RB5, RB7, RB8, RB9

Por "no funciona" quiero decir que no hay voltaje de salida, solo un estado desconectado (mientras que los pines "en funcionamiento" cambian de alto a bajo con éxito). Mi teoría de por qué los pines no funcionan es que los pines requieren algún tipo de selección de registro periférico adicional para configurarlos para que funcionen como pines de E / S generales. No estoy seguro de si eso es correcto, pero buscar en Google y probar no ha dado resultados, y la hoja de datos no ha sido muy útil.

void main() {
  mPORTBClearBits(BIT_4 | BIT_5 | BIT_7 | BIT_8 | BIT_9);
  mPORTBSetPinsDigitalOut(BIT_4 | BIT_5 | BIT_7 | BIT_8 | BIT_9);
  mPORTAClearBits(BIT_2 | BIT_3 | BIT_4);
  mPORTASetPinsDigitalOut(BIT_2 | BIT_3 | BIT_4);

  while(1) {
    mPORTBToggleBits(BIT_4 | BIT_5 | BIT_7 | BIT_8 | BIT_9);
    mPORTAToggleBits(BIT_2 | BIT_3 | BIT_4);
  }
}

Mis bits de configuración se establecen en los valores estándar (puedo publicar todo el archivo main.c si es necesario. EDITAR: ver más abajo). ¿Por qué este subconjunto de pines me está causando tantos problemas?

EDITAR: aquí están mis bits de configuración

#pragma config FNOSC = FRCDIV           // Oscillator Selection Bits (Fast RC Osc w/Div-by-N (FRCDIV))
#pragma config FSOSCEN = ON             // Secondary Oscillator Enable (Enabled)
#pragma config IESO = ON                // Internal/External Switch Over (Enabled)
#pragma config POSCMOD = HS             // Primary Oscillator Configuration (HS osc mode)
#pragma config OSCIOFNC = ON            // CLKO Output Signal Active on the OSCO Pin (Enabled)
#pragma config FPBDIV = DIV_1           // Peripheral Clock Divisor (Pb_Clk is Sys_Clk/1)
#pragma config FCKSM = CSDCMD           // Clock Switching and Monitor Selection (Clock Switch Disable, FSCM Disabled)
#pragma config WDTPS = PS1048576        // Watchdog Timer Postscaler (1:1048576)
#pragma config WINDIS = OFF             // Watchdog Timer Window Enable (Watchdog Timer is in Non-Window Mode)
#pragma config FWDTEN = ON              // Watchdog Timer Enable (WDT Enabled)
#pragma config FWDTWINSZ = WINSZ_25     // Watchdog Timer Window Size (Window Size is 25%)
// DEVCFG0
#pragma config JTAGEN = ON              // JTAG Enable (JTAG Port Enabled)
#pragma config ICESEL = ICS_PGx1        // ICE/ICD Comm Channel Select (Communicate on PGEC1/PGED1)
#pragma config PWP = OFF                // Program Flash Write Protect (Disable)
#pragma config BWP = OFF                // Boot Flash Write Protect bit (Protection Disabled)
#pragma config CP = OFF   
    
pregunta JBrown

2 respuestas

4

Sospecho que son tus bits de configuración, lo único que no publicaste.

  • RA2 / 3 son los pines del oscilador principal.
  • RB4 / RA4 son los pines del oscilador secundario.
  • RB5 / 7/8/9 son JTAG.

Todos esos pines se ven afectados por los bits de configuración.

Editar: Ahora tenemos sus bits de configuración disponibles, puedo confirmarlo:

  • #pragma config POSCMOD = HS // Configuración del oscilador primario (modo HS osc)
  • #pragma config OSCIOFNC = ON // CLKO Output Signal Active en el pin OSCO (habilitado)
  • #pragma config FSOSCEN = ON // Habilitar oscilador secundario (habilitado)
  • #pragma config JTAGEN = ON // Habilitar JTAG (Puerto JTAG habilitado)

Todos aquellos que estén activados, o que no estén configurados específicamente para ser deshabilitados, anularán cualquiera y todas las demás funciones en esos pines.

    
respondido por el Majenko
0

Consulte las tablas en la página 60 y 61 en el PDF que vinculó para todo el registro que puede afectar al puerto A o al puerto B, y asegúrese de que estén todos correctos (aproximadamente 20 registros en total). Por ejemplo, para PORTB:

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas