TODOPIC
Microcontroladores PIC => dsPIC => Mensaje iniciado por: AKENAFAB en 03 de Diciembre de 2010, 16:57:26
-
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
;----- 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
//
//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!
-
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!
-
¿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
-
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!!
-
Estupendo, a veces nos comemos el coco con los simuladores y resulta que es un bug.
-
Confirmo que funciona en fisico y con el MPLAB SIM no funciona correctamente.
//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
/*
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 :-/ :-/ :-/ :-/