No se puede controlar RB10 (y RB12) del PIC32MZ2048ECG064 como un GPIO "normal" [cerrado]

0

Este es un extracto de la hoja de datos de de la familia de PIC32MZ EC con respecto a la salida de selección de pin periférico mapeo:

Estoy usando el PIC32MZ2048ECG064. Mi pregunta se refiere a RPB10. Me gustaría usar RB10 como puerto IO de propósito general y controlarlo con TRISB10, LATB10 y PORTB10. Sin embargo, en ninguna parte de la lista correcta veo la posibilidad de hacer esto. Todas las opciones son 'reservadas', 'sin conexión' o, en realidad, un periférico. Al principio pensé que 0x0 , el valor predeterminado, me permitiría usar el pin normalmente, pero la sección 12.3.5 dice:

  

Una salida nula está asociada con el valor de restablecimiento del registro de salida de ' 0 '. Esto se hace para garantizar que las salidas extraíbles permanezcan desconectadas de todos los pines de salida de forma predeterminada.

Entonces, si entiendo correctamente, el valor predeterminado es que el pin no se puede utilizar. Sin embargo, el bit LATB10 existe, por lo que debe haber una forma de usarlo.

¿Cómo uso un pin extraíble como un GPIO 'normal'?

Aquí están mis bits de configuración:

#pragma config DEBUG =      OFF
#pragma config JTAGEN =     OFF
#pragma config ICESEL =     ICS_PGx1
#pragma config TRCEN =      ON
#pragma config BOOTISA =    MIPS32
#pragma config FECCCON =    OFF_UNLOCKED
#pragma config FSLEEP =     OFF
#pragma config DBGPER =     PG_ALL
#pragma config EJTAGBEN =   NORMAL
#pragma config CP =         OFF

/*** DEVCFG1 ***/

#pragma config FNOSC =      SPLL
#pragma config DMTINTV =    WIN_127_128
#pragma config FSOSCEN =    ON
#pragma config IESO =       ON
#pragma config POSCMOD =    OFF
#pragma config OSCIOFNC =   OFF
#pragma config FCKSM =      CSECME
#pragma config WDTPS =      PS1048576
#pragma config WDTSPGM =    STOP
#pragma config FWDTEN =     ON
#pragma config WINDIS =     NORMAL
#pragma config FWDTWINSZ =  WINSZ_25
#pragma config DMTCNT =     DMT31
#pragma config FDMTEN =     ON

/*** DEVCFG2 ***/

#pragma config FPLLIDIV =   DIV_8
#pragma config FPLLRNG =    RANGE_5_10_MHZ
#pragma config FPLLICLK =   PLL_FRC
#pragma config FPLLMULT =   MUL_44
#pragma config FPLLODIV =   DIV_32
#pragma config UPLLFSEL =   FREQ_24MHZ
#pragma config UPLLEN =     ON

/*** DEVCFG3 ***/

#pragma config USERID =     0xffff
#pragma config FMIIEN =     ON
#pragma config FETHIO =     ON
#pragma config PGL1WAY =    ON
#pragma config PMDL1WAY =   ON
#pragma config IOL1WAY =    ON
#pragma config FUSBIDIO =   ON

/*** BF1SEQ0 ***/

#pragma config TSEQ =       0xffff
#pragma config CSEQ =       0xffff
    
pregunta Keelan

1 respuesta

1

Creo que debes desactivar todos los demás periféricos en el pin antes de que se conecte al pestillo GPIO. A partir de la hoja de datos, RB10 comparte el pin con varios otros periféricos fijos (es decir, no reemplazables). Los periféricos tienden a tener prioridad de control en el orden en que aparecen en el pinout de la hoja de datos:

  

pin 23: TMS / CVREFOUT / AN5 / RPB10 / PMA13 / RB10

La hoja de datos también proporciona información para configurar los pines para GPIO (página 238):

  

El registro ANSELx tiene un valor predeterminado de 0xFFFF;   por lo tanto, todos los pines que comparten funciones analógicas son   analógico (no digital) por defecto.

El periférico JTAG (TMS) debe estar deshabilitado. La entrada analógica (AN5) debe configurarse para utilizar el pin como un IO digital utilizando el registro ANSEL (la hoja de datos tiene instrucciones sobre cómo hacerlo: sección 28, página 412). El pin extraíble (RPB10) deberá borrarse (creo que este es el estado predeterminado). Finalmente, el puerto maestro paralelo deberá estar deshabilitado (PMA13 es una línea de dirección).

    
respondido por el youtooth

Lea otras preguntas en las etiquetas