Autor Tema: _RB8 siempre a nivel bajo  (Leído 2446 veces)

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

Desconectado culebrasx

  • PIC10
  • *
  • Mensajes: 39
_RB8 siempre a nivel bajo
« en: 17 de Abril de 2010, 03:47:02 »
Hola tengo un problemilla que no se por donde coger, defino RB8 como entrada poniendo su TRISB a 1, la configuro como digital poniendo a cero AD1CPFG, pero cuando la pongo físicamente parece como si leyera siempre un cero, he implementado una función asociada a ese pin que por ejemplo cuando este !_RB8, aumente el duty de mi pwm, alimento el pic, compruebo que le llegan 3.3V a ese pin, y sin embargo veo como el led se va aumentado su brillo, es decir, hace lo que haría si estuviera a cero, pero ese pin lo tengo con una R puesto a VDD,he estado mirando y en el Datasheet no he visto nada que no se pueda configurar como entrada ni nada parecido,
Podría cambiar el pin, ya lo se, pero me gustaría saber el motivo, y también es porque tengo ya diseñada una placa con muchas pistas y me resultado complicado ahora cambiar el trazado de pistas, he revisado el código una y otra vez, pero no lo encuentro,..
Muchas gracias a toda la comunidad y un saludo....

Código: [Seleccionar]
#include <p24fj16ga002.h>
 _CONFIG2(FNOSC_FRC & OSCIOFNC_ON)
 _CONFIG1(FWDTEN_OFF &  WINDIS_OFF & POSCMOD_NONE)
#define FCY 8000000UL
#include <libpic30.h>


void _ISRFAST _T2Interrupt( void)
{
_T2IF = 0; // clear interrupt flag
} //T3Interrupt




void main(void)
{
TRISB=0xFFF8; //B0-B2 salidas, resto entradas.
ODCA=0X0000;
ODCB=0X0000;

OC1CONbits.OCM=0;
OC2CONbits.OCM=0;
OC3CONbits.OCM=0;
OC1R=0X0000;
OC2R=0X0000;
OC3R=0X0000;
OC1RS=0X000;  //ROJO
OC2RS=0X0000;  //VERDE;
OC3RS=0X0000;  //AZUL
OC1CONbits.OCTSEL=0;
OC2CONbits.OCTSEL=0;
OC2CONbits.OCTSEL=0;
OC1R=0X0000;
OC2R=0X0000;
OC3R=0X0000;



CLKDIVbits.RCDIV=0;
CLKDIVbits.DOZE=0;

OC1CONbits.OCM=6; //OC1 como pwm, pin por defecto desactivado;
//hay que configurar RPORx para definir OC1
OC2CONbits.OCM=6; //Idem arriba pero de distinta forma
OC3CONbits.OCM=6; //IDEM

T2CONbits.TON=0;

T2CONbits.T32=0; //QUE TIMER2 SEA DE 16 BITS UNICAMENTE
T2CONbits.TCKPS=0;
T2CONbits.TCS=0;
T2CONbits.TGATE=0;

TMR2=0X00;
PR2=0x9c40; //para conseguir periodo 100Hz, 9C40
IPC1bits.T2IP = 0x01; // Set Timer 2 Interrupt Priority Level
 IFS0bits.T2IF = 0; // Clear Timer 2 Interrupt Flag
 IEC0bits.T2IE = 1; // Enable Timer 2 interrupt
 T2CONbits.TON = 1; // Start Timer

RPOR0bits.RP0R=18;
RPOR0bits.RP1R=19;
RPOR1bits.RP2R=20;

AD1PCFG=0XFFFF; //CONFIGURAR I/0 COMO DIGITALES
AD1CON1bits.ADON=0; //ADC OFF
__delay_ms(5000);
while (1)
{

if(!_RB7 & (OC1RS<0X9C77)) //MAS ROJO
OC1RS=0x0000;
if(!_RB8 & (OC1RS>0))            //------------AUNQUE ESTE A VDD FISICAMENTE REALIZA LO DE DENTRO DEL IF----------
OC1RS++;
if(!_RB6 & (OC2RS<0Xffff)) //MAS VERDE
OC2RS++;
if(!_RB5 & (OC2RS>0)) //MENOS VERDE
OC2RS--;
if(!_RB4 & (OC3RS < 0X9C77)) //MAS AZUL
OC3RS++;
if(!_RB3 & (OC3RS>0))  //MENOS AZUL
OC3RS--;

 __delay_us(500);


} //WHILE




}//MAIN


Solo ocurre con RB8, el resto hacen lo que tienen que hacer...

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: _RB8 siempre a nivel bajo
« Respuesta #1 en: 17 de Abril de 2010, 11:29:06 »
Hola, se me ocurre que haya problema con el casting de _RB8 al hacer la operación binaria &

Prueba con &&

Código: [Seleccionar]
if(!_RB8 && (OC1RS>0))

Desconectado culebrasx

  • PIC10
  • *
  • Mensajes: 39
Re: _RB8 siempre a nivel bajo
« Respuesta #2 en: 17 de Abril de 2010, 14:16:06 »
 Gracias por la respuesta. lo he declarado como me has dicho y tampoco funciona, solo ocurre con _RB8, ¿no tiene nada de especial este pin frente a RB7, por ejemplo,no?
.....

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: _RB8 siempre a nivel bajo
« Respuesta #3 en: 17 de Abril de 2010, 14:46:52 »
¿Tendrás activo el JTAG?, recuerdo que una vez tuve un problema parecido y se resolvió al desactivar ese periférico.

Desconectado culebrasx

  • PIC10
  • *
  • Mensajes: 39
Re: _RB8 siempre a nivel bajo
« Respuesta #4 en: 17 de Abril de 2010, 18:51:03 »
 :-/ :-/ :-/ :-/ :-/ :-/ :-/

Gracias Nocturno, héroe por derecho propio, y un saludo desde España... ;-)

Eso era...

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: _RB8 siempre a nivel bajo
« Respuesta #5 en: 18 de Abril de 2010, 02:09:13 »
Me alegro paisano


 

anything