dsPIC: usando FRC y OSC2 como pin de E / S

2

Mi pregunta es sobre el uso de FRC como fuente de oscilador y el pin OSC2 como pin de E / S.

En varios manuales diferentes en chips dsPIC30F (por ejemplo: DS70139G, página 126) está escrito:

   LP     Secondary       0 0 0   XXXXX  (Note 1, 2)
   FRC    Internal FRC    0 0 1   XXXXX  (Note 1, 2)
   LPRC   Internal LPRC   0 1 0   XXXXX  (Note 1, 2)

   Note 1: The OSC2 pin is either usable as a general purpose I/O pin or is completely
   unusable, depending on the Primary Oscillator mode selection (FPR<4:0>).

Busqué cuidadosamente manuales, erratas, foros, etc. Pero no puedo encontrar una aclaración sobre cómo configurar los bits FPR en el registro FOSC para poder utilizar OSC2 como una E / S que sugiere Note 1 . ¿Es esto posible en absoluto?

La errata en dsPIC30F3012 sugiere usar FRC con PLL y el escalador posterior para hacer que este pin sea utilizable (DS80448D - páginas 3, 15). Pero esta errata indica que este problema es aplicable solo a la revisión B0, que es relativamente antiguo. Tenemos los chips de la revisión B1. ¿Fue este problema realmente solucionado en B1? En caso afirmativo, no debería ser necesario solucionar el problema, pero en este caso, ¿cómo debería utilizarse esta función?

¿Hay alguna diferencia en los dispositivos dsPIC30F3010 y dsPIC30F4011 con respecto a este problema?

Yo uso ensamblador de XC16 v1.11. El código de ejemplo es (la parte que establece FOSC):

.section    __FOSC.sec, code
            .pword    0xC701;         // FRC with 4x PLL.

Actualizar:

Hice experimentos sobre la programación de FPRs indocumentados en el dispositivo. Como entorno estaba usando MPLABX y ICD3. Resulta que la compilación siempre va bien y el archivo .hex siempre contiene los valores que puse en el código. Pero parte de la cadena de herramientas bloquea la programación de los valores FPR no documentados en el dispositivo. Después de programar las pestañas "Bits de configuración", se muestra el valor C100 (FRC sin PLL) y el dispositivo funciona como este valor realmente está programado allí.

El comportamiento descrito anteriormente (bloqueo de la programación) pasa a la mayoría de los valores. Los valores 0x02, 0x04, 0x06, 0x08, 0x09, 0x0b, 0x0c logran pasar, pero el dispositivo no parece funcionar correctamente.

Estos experimentos no han destruido el dispositivo.

    
pregunta Kirill Kobelev

1 respuesta

1

No he usado la pieza en mucho tiempo, pero debería ser solo un caso de configurar los bits de configuración correctamente. No dices qué compilador estás usando, así que no puedo dar un ejemplo de código, pero el manual del compilador debería avisarte (los comandos probablemente estarán al final del archivo de inclusión)

Además, es mejor que lea el manual de referencia de la familia 30F ( La Sección 7 es el Oscilador) ya que es mucho más detallada que la hoja de datos.

Si nos informa qué compilador y quizás publique el código que ya ha probado, ayudaría a dar una respuesta más específica (por ejemplo, un ejemplo de código)

En la tabla a continuación, observo que los bits FPR se eliminan de manera discontinua para FRC sin PLLoption, aunque la nota 1 dice que la función pin depende de estos bits (si es así, ¿cómo deberían configurarse?) Esto parece sospechoso, I Creo que plantearía un ticket de soporte con Microchip para ver qué tienen que decir al respecto.

    
respondido por el Oli Glaser

Lea otras preguntas en las etiquetas