fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Ayuda problema raro
 
Avisos
Vaciar todo

Ayuda problema raro

6 Respuestas
4 Usuarios
0 Reactions
2,530 Visitas
ionthas
Respuestas: 153
Topic starter
(@ionthas)
Estimable Member
Registrado: hace 17 años

Wenas a todos.

Tengo un pequeño problema,

#include "ionTraker.h"

//Registres
#byte PORTA = 0x05
#byte TRISA = 0x85
#byte PORTB = 0x06
#byte TRISB = 0x86

//LED
#bit LED = PORTB.1

//Motors
#bit MotorEsq = PORTB.4
#bit MotorDret = PORTB.2
#bit ControlEsq = PORTB.3
#bit ControlDret = PORTB.1
#define EsqEnda 1
#define DretEnda 0
#define EsqEnde 0
#define DretEnde 1

//Sensors infrarojos
#bit SensorIntEsq = PORTB.5
#bit SensorIntDret = PORTB.0
#define Negre 1
#define Blanc 0

//Bumpers
#bit BumperEsq = PORTA.1
#bit BumperDret = PORTA.2
#define Pulsat 1
#define NoPulsat 0

//Altres
#define ON 1
#define OFF 0

void SeguirLinea();

void main()
{

//Configuració
//---------------------------------------------------------------------------

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

//---------------------------------------------------------------------------

TRISA = 0b00000110;
TRISB = 0b11100001;
PORTA = 0;
PORTB = 0;

SeguirLinea();

}

void SeguirLinea(){

while(TRUE){

if(BumperEsq == Pulsat){
LED = ON;
delay_ms(1000);
LED = OFF;
delay_ms(1000);
}

}

}

El programa simplemente hace parpadear el LED cuando hay el bumper izquierdo pulsado. El problema es que hace parpadear siempre el LED, es como si el bumper siempre estuviera pulsado. Aparte de eso, cuando pulso el botón de reset el relé hace ruido.

Ese problema me esta haciendo volver loco, ya que los sensores de infrarojos tambien hacen lo que quieren, etc...

Saludos.

P.D: Voy a provar de cambiar las pilas, 3.7V.....

Responder
5 respuestas
mif
Respuestas: 1095
 Mif
(@mif)
Noble Member
Registrado: hace 19 años

Que entorno de programacion usas?

Responder
_jm_
Respuestas: 961
 JM
(@_jm_)
Prominent Member
Registrado: hace 19 años

trisa=0x85 es decir 1000 0101 si no me confundo. Ahí el porta1 tiene un 0, es decir es una output. Si pones el bumper ahí, no debería ser un 1? una input?

edito: veo que lo cambias abajo con un trisa=, puede ser la configuración del adc, que por defecto vaya configurado la entrada en analógico y leas 1, mira si es esto, y si es así debes configurarlo como digital.

mete esto para asegurarte ADCON1 = 0b00001111;

Aunque supongo que los setups esos hacen lo mismo.

Comprueba tb con un polímetro en el pin de entrada que el bumper está funcionando.

Qué ventaja o en que se diferencia usar #bit en lugar de #define? porque ahí puedes ponerlo con un #define

Responder
ionthas
Respuestas: 153
Topic starter
(@ionthas)
Estimable Member
Registrado: hace 17 años

Utilizo CCS.

Si en los #bit usas #define da error de compilación.

A mí me gusta mas utilizar #bit, ya que con poner el bit a 1 o 0 es suficiente, de la otra forma tienes que andar con output_high() i output_low().

Eso son dos fromas de declarar los pines, las dos hacen lo mismo:

#bit lol = PORTB.1
#define lol PIN_B1

Saludos.

Responder
ucfort
Respuestas: 760
(@ucfort)
Ardero
Registrado: hace 19 años

suponiendo que el programa no te da ningun error o warning de compilacion...
Como queda PORTA.1 al desconectar el bumper? queda el pin al aire o conectado a masa? si queda al aire, conectalo a masa con una resistencia de unos 10k. De lo contrario, un pin al aire suele dar problemas.

Responder
Página 1 / 2
Compartir: