Autor Tema: Configurar pin RA3 como salida pic24FJ64GB002 no me funciona (RESUELTO)!  (Leído 4578 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Hola amigos!

Estoy empezando con pic24 y apenas seteo los bits de configuración y oscilador. ayy la llevo +- xD

Intento realizar el clásico blink led pero no me es posible con el pin RA3.

El puerto A es de 5 bits.
A0,A1,A2,A3 y A4

Puedo escribir en todos excepto A3 ,  viendo desde el MPLAB SIM  TRIS A3 nunca se establece como salida.

RA2 y RA3 tiene la funcion de oscilador primario , la cual he deshabilitado en la palabra de configuración 2
POSCMOD_NONE// no oscilador primario
OSCIOFNC_ON // Establezco que RA3 sea usado como I/O digital
FNOSC_FRCPLL // oscilador interno con postcaller y pll

Código: [Seleccionar]
;----- CONFIG2 (0xabfc) --------------------------------------------------
;
;  The following settings are available for CONFIG2:
;
;   Primary Oscillator Select:
;     POSCMOD_EC           EC Oscillator mode selected
;     POSCMOD_XT           XT Oscillator mode selected
;     POSCMOD_HS           HS Oscillator mode selected
;     POSCMOD_NONE         Primary Oscillator disabled
;
;   I2C1 Pin Select bit:
;     I2C1SEL_SEC          Use alternate SCL1/SDA1 pins for I2C1
;     I2C1SEL_PRI          Use default SCL1/SDA1 pins for I2C1
;
;   IOLOCK One-Way Set Enable:
;     IOL1WAY_OFF          The IOLOCK bit can be set and cleared using the unlock sequence
;     IOL1WAY_ON           Once set, the IOLOCK bit cannot be cleared
;
;   OSCO Pin Configuration:
;     OSCIOFNC_ON          OSCO pin functions as port I/O (RA3)
;     OSCIOFNC_OFF         OSCO pin functions as clock output (CLKO)
;
;   Clock Switching and Fail-Safe Clock Monitor:

;     FCKSM_CSDCMD         Sw Disabled, Mon Disabled
;
;   Initial Oscillator Select:

;     FNOSC_FRCPLL         Fast RC Oscillator with Postscaler and PLL module (FRCPLL)

;
;   96MHz PLL Startup Select:
;     PLL96MHZ_OFF         96 MHz PLL Startup is enabled by user in software( controlled with the PLLEN bit)
;     PLL96MHZ_ON          96 MHz PLL Startup is enabled automatically on start-up
;
;   USB 96 MHz PLL Prescaler Select:
;     PLLDIV_NODIV         Oscillator input used directly (4 MHz input)
;
;   Internal External Switchover:
;     IESO_OFF             IESO mode (Two-Speed Start-up) disabled
;     IESO_ON              IESO mode (Two-Speed Start-up) enabled

Código: [Seleccionar]
//


//include basic header definition
#include <p24FJ64GB002.h>

_CONFIG1(WDTPS_PS1 & FWPSA_PR128 & FWDTEN_OFF & ICS_PGx3 & GWRP_ON & GCP_OFF & JTAGEN_OFF)
_CONFIG2(POSCMOD_NONE & IOL1WAY_OFF & I2C1SEL_PRI & OSCIOFNC_ON  & FCKSM_CSDCMD & FNOSC_FRCPLL & PLL96MHZ_ON & PLLDIV_NODIV & IESO_OFF)
_CONFIG3(SOSCSEL_IO & WUTSEL_LEG & WPDIS_WPDIS & WPCFG_WPCFGDIS & WPEND_WPENDMEM )
_CONFIG4(DSWDTPS_DSWDTPS3 & DSWDTOSC_LPRC & RTCOSC_LPRC & DSBOREN_OFF & DSBOREN_OFF )

//main loop
int main(void)
{


AD1PCFG=0xFFFF; // No análogos , DIGITAL PIN

LATA=0;   //latch de salida                        
LATB=0;

TRISB=0;
TRISA=0;

LATA=0X001F;    // <---- ME escribe 0b0001 0111  A3 no se pone a 1


}//end main.

Saludos y gracias!
« Última modificación: 08 de Diciembre de 2010, 15:11:57 por AKENAFAB »

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Configurar pin RA3 como salida pic24FJ64GB002 no me funciona
« Respuesta #1 en: 03 de Diciembre de 2010, 22:12:27 »
Sigo sin porder hacer andar ese pin como salida >_< !

Lo probaré en fisico por si es algún problema del simulador.

También busque en el foro microchip y comentan el mismo error , he realizado lo sugerido , pero no veo cambio alguno.

Saludos!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Configurar pin RA3 como salida pic24FJ64GB002 no me funciona
« Respuesta #2 en: 04 de Diciembre de 2010, 02:58:15 »
¿Puedes mostrar en MPLAB el valor del registro CW2, por si hay algún problema con las definiciones que utilizas en _CONFIG2?
Debería tener estos tres bits así: xxxxxxxx xx1xxx00

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Configurar pin RA3 como salida pic24FJ64GB002 no me funciona
« Respuesta #3 en: 04 de Diciembre de 2010, 06:03:17 »
Subo la imagen de la configuracion.

Ya lo probe en fisico y funciona como debe.
No se porque el Mplab SIM no lo hace correctamente aunque no me extraña.

Mañana que regrese pego más detalles.


Saludos y gracias!!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Configurar pin RA3 como salida pic24FJ64GB002 no me funciona
« Respuesta #4 en: 04 de Diciembre de 2010, 06:04:21 »
Estupendo, a veces nos comemos el coco con los simuladores y resulta que es un bug.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Configurar pin RA3 como salida pic24FJ64GB002 no me funciona (RESUELTO)!
« Respuesta #5 en: 08 de Diciembre de 2010, 15:10:58 »
Confirmo que funciona en fisico y con el MPLAB SIM no funciona correctamente.

Código: [Seleccionar]
//include basic header definition
#include <p24FJ64GB002.h>

_CONFIG1(WDTPS_PS1 & FWPSA_PR128 & FWDTEN_OFF & ICS_PGx3 & GWRP_ON & GCP_OFF & JTAGEN_OFF)
_CONFIG2(POSCMOD_NONE & IOL1WAY_OFF & I2C1SEL_PRI & OSCIOFNC_ON  & FCKSM_CSDCMD & FNOSC_FRCPLL & PLL96MHZ_ON & PLLDIV_NODIV & IESO_OFF)
_CONFIG3(SOSCSEL_IO & WUTSEL_LEG & WPDIS_WPDIS & WPCFG_WPCFGDIS & WPEND_WPENDMEM )
_CONFIG4(DSWDTPS_DSWDTPS3 & DSWDTOSC_LPRC & RTCOSC_LPRC & DSBOREN_OFF & DSBOREN_OFF )

#include "retardo.h"

//main loop
int main(void)
{


AD1PCFG=0xFFFF; // DIGITAL PINS

LATA=0;
LATB=0;

TRISB=0;
TRISA=0;

LATA=0X001F;

while(1){
LATA=0X001F;
delay_ms(100);
LATA=0X0000;
delay_ms(100);
}

}//end main.

retardo.h contiene
Código: [Seleccionar]
/*
 delay_us(x) and delay_ms(x) for C30
 */
 #ifndef __DELAY_H
 #define FOSC  32000000LL  // clock-frequecy in Hz with suffix LL (64-bit-long), eg. 32000000LL for 32MHz
 #define FCY       (FOSC/2)  // MCU is running at FCY MIPS
 #define delay_us(x) __delay32(((x*FCY)/1000000L)) // delays x us
 #define delay_ms(x) __delay32(((x*FCY)/1000L))  // delays x ms
 #define __DELAY_H 1
 #include <libpic30.h>
 #endif

Funciona correctamente  :-/ :-/ :-/ :-/