Autor Tema: Problema con RB4 como entrada  (Leído 1228 veces)

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

Desconectado rachelies

  • PIC12
  • **
  • Mensajes: 65
Problema con RB4 como entrada
« en: 17 de Junio de 2010, 13:45:07 »
Hola:
Tengo un programa similar al que pongo aquí debajo, con el cual voy a hacer unas cuantas cosas con usb e i2c. El problema es que quiero utilizar las interrupciones de cambio de estado del puerto B, por lo que configuro los pines del RB7 al RB4 como entradas y con pullups, por lo que sin conectar estos pines a nada, tendría que leer un "1". En el 5, 6 y 7 si que tengo un "1", pero el PIN B4 se queda a "0", y ya he revisado todo y no termino de comprender porque.
El problema tiene que estar al principio de la configuracion, porque al simular con el MPLAB desde el principio aparece este pin a "0". Y con el proteus ocurre lo mismo.
A ver si alguien me puede echar una mano. Gracias
Código: [Seleccionar]
#include <18F2455.h>
#device ADC=8
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000)

#DEFINE USB_HID_DEVICE TRUE

#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT
#define USB_EP1_TX_SIZE 8

#include <pic18_usb.h>
#include <.\include\midi_hid5.h>
#include <usb.c>
#include <ctype.h>

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#use i2c(MASTER,SCL=PIN_B1,SDA=PIN_B0,SLOW,FORCE_HW)
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)

#byte PORTB=0xF81
#byte LATB=0xF8A
#byte BTRISB=0xF93
#byte INTCON=0xFF2
#byte ADCON1=0XFC1

int pichA,pichB,TA1,TA2,pichA2,pichB2,entra,temp,ciclos;
int out_data[3];
long ciclo;


void main(void) {

setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
set_tris_A(0b00000001);
set_tris_B(0b11110011);
set_tris_C(0);
port_B_pullups(TRUE);
output_B(0);
LATB=PORTB;
output_low(PIN_B3);
output_low(PIN_B2);
output_C(0);
TA1=TA2=0;

        usb_init_cs();
INTCON=0;
enable_interrupts(INT_RB);
enable_interrupts(global);

setup_timer_2(T2_DIV_BY_1,129,1);
setup_ccp1(CCP_PWM);

   while (TRUE) {
      usb_task();
      if (usb_enumerated())

      {
set_adc_channel(0);
delay_us(20);
pichA2=pichA;
pichB2=pichB;
pichA=read_adc();

delay_ms(10);


i2c_start();
i2c_write(0x0A+1);
pichB=i2c_read(0);
i2c_stop();



ciclo=pichB*2.0392;
set_pwm1_duty(ciclo);
output_high(PIN_A1);
if(bit_test(PORTB,7)&&bit_test(PORTB,6)&&bit_test(PORTB,5)&&bit_test(PORTB,4)) TA1=TA2=0;

if(pichA!=pichA2||pichB!=pichB2)
{
                out_data[0]=pichA;
out_data[1]=pichB;
 
usb_put_packet(1,out_data,2,USB_DTS_TOGGLE);
}         
      } 

   }
}

Desconectado rachelies

  • PIC12
  • **
  • Mensajes: 65
Re: Problema con RB4 como entrada
« Respuesta #1 en: 17 de Junio de 2010, 14:26:41 »
Vale, ahora en el proteus si que me lee un uno, sin hacer nada. Esto no lo entiendo....seguiré para adelante aunque en el mplab lo lea como cero.


 

anything