Ponga un valor en PORTA, y aparece otro valor (PIC24 de Microchip)

2

Estoy haciendo un pequeño código para PIC24FJ1024GB610 de Microchip, donde quiero probar PORTA

El código de abajo

#include <xc.h>


#pragma config FWDTEN = OFF
#pragma config FNOSC = FRC
#pragma config ICS = PGD2

unsigned int Pattern;

void Ports (void)
{
    TRISA = 0x0000;//all outputs
    ANSAbits.ANSA6 = 0;
    ANSAbits.ANSA7 = 0;
    ANSAbits.ANSA9 = 0;
    ANSAbits.ANSA10 = 0;//all digital ports

    LATA = Pattern;


}


int main (void)
{
    Pattern = 0xBBAA;

    Ports ();


    while(1);

    return 0;
}

Lo que esperaba que sucediera era:

  • Pattern se declara como unsigned int
  • en main () Pattern = 0xBBAA
  • El programa llama a Ports ()
  • PORTA configurado como salida TRISA = 0x0000
  • PORTA está configurado como Digital ANSA = 0x0000
  • LATA = Pattern , si depuro el programa, esperaría LATA = 0xBBAA en la ventana SFR.

Cuando depuro el programa y abro la ventana SFR, obtengo LATA = 0x82AA , como se puede ver en la captura de pantalla a continuación.

Informaciónútil:

Cualquier ayuda es apreciada.

    
pregunta Forat

1 respuesta

4

No proporcionaste un enlace a la hoja de datos, así que no lo busqué. Mi conjetura es que no se implementan los 16 bits del puerto A.

Los pines del puerto A también se usan a veces para los pines del oscilador, la entrada MCLR, etc. No están disponibles como pines digitales del puerto A cuando se usan esos otros roles.

Realmente necesitas leer la hoja de datos .

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas