TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: nexus148 en 26 de Noviembre de 2009, 14:10:39

Título: Problema con CSS C
Publicado por: nexus148 en 26 de Noviembre de 2009, 14:10:39
Hola

Tengo un problema con un a entrada, que no consigo resolver.
El programa es este:
Código: [Seleccionar]
#include <16f818.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,NOLVP
#use delay(clock=8000000)

#define LED_Verde PIN_B2
#define Detector PIN_B4

void configuracion(void)
{
set_tris_b(0b00010001);
}


void main(void)  
{  
   configuracion();

do {
if(input(Detector))
output_low(LED_Verde);
else
output_high(LED_Verde);
}while(TRUE);
}
El programa simplemente enciende un led, cuando tiene la entrada sobre el rb4.

Si yo dejo el programa como está, activo la entrada y cuando la desactivo el led se queda parpadeando.
Si cambio la configuracion del puerto B por esta: set_tris_b(0b00010000), quitando como entrada el RB0, ya funciona bien.

Resumen:
set_tris_b(0b00010001);    Led parpadea
set_tris_b(0b00010000);    Funciona OK

Un saludo
Título: Re: Problema con CSS C
Publicado por: migsantiago en 26 de Noviembre de 2009, 14:15:51
Hola, ¿pusiste una resistencia pulldown en RB4? Eso aseguraría que cuando quitas los 5V de B4 se tengan 0V en B4.

Otra cosa...

Código: [Seleccionar]
      if(input(Detector))
         output_low(LED_Verde);
      else
         output_high(LED_Verde);

Si Detector tiene 5V entonces se apaga LedVerde. Si Detector tiene 0V entonces se prende LedVerde. ¿Conectaste el led invertido y a 5V en vez de tierra?
Título: Re: Problema con CSS C
Publicado por: nexus148 en 27 de Noviembre de 2009, 03:40:21
Hola he probado de 3 formas:

Código: [Seleccionar]
port_b_pullups(FALSE);
port_b_pullups(0b00010001);
port_b_pullups(0b00010000);

y sigue igual.

Por el tema del led, desde la salida tengo el anodo del led, desde el catodo tengo una R de 330 y luego a tierra (vss).

Un saludo
Título: Re: Problema con CSS C
Publicado por: nexus148 en 27 de Noviembre de 2009, 04:33:00
Acabo de encontrar la solucion, sin sabar el motivo.
He probado varias cosas y al final simplemente añadiendo la configuracion del puerto A, ya funciona.

Código: [Seleccionar]
void configuracion(void)
{
set_tris_a(0b00000001);
set_tris_b(0b00010001);
port_b_pullups(0b00010001);
}

Lo que está claro que desde ahora, hay que configurar todos los puertos, se usen o no.


Un saludo
Título: Re: Problema con CSS C
Publicado por: migsantiago en 27 de Noviembre de 2009, 12:59:30
Ermm... me refería a una pulldown externa jeje

Bueno, no está muy claro tu problema pero bueno, quedó resuelto.  :huh: