Autor Tema: Resistencias de Pull Up en Atmega16  (Leído 3180 veces)

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

Desconectado BlueDemon

  • PIC10
  • *
  • Mensajes: 10
Resistencias de Pull Up en Atmega16
« en: 10 de Julio de 2011, 20:05:09 »
Hola amigos. Estoy estancado en un problema al parecer bastante simple: Quiero configurar 3 pines del puerto C como salidas y el resto como entradas. Implementé el código como debería ser (aparentemente) y funciona con el problema que las resistencias de Pull Up no están activadas (me doy cuenta porque toman ruido al tocar los pines con los dedos y el código funciona perfectamente si le agrego externamente las resistencias).

Este es la parte del código:

//CONFIGURACION DEL PUERTO
DDRC  = 0b00000111;
PORTC = 0b11111000;
.
.
.
.
//FUNCION QUE LLAMO PARA DETECTAR QUE SE PRESIONO UNA TECLA (NOTESE QUE PORTB TAMBIEN ES ENTRADA)
static uchar keyPressed(void)
{ uchar i, Mascara, Puerto;

  Puerto  = PINB;
  Mascara = 1;

  for(i=1;i<=8;++i)
    {
     if((Puerto & Mascara)==0) return(i);
     Mascara<<=1;
    }

  Puerto  = PINC;
  Mascara = 8;

  for(i=9;i<=13;++i)
    {
     if((Puerto & Mascara)==0) return(i);
     Mascara<<=1;
    }

  return(0);
}

REPITO: Esto funciona si agrego externamente las resistencias de Pull Up... alguna idea?

Saludos!

Desconectado BlueDemon

  • PIC10
  • *
  • Mensajes: 10
Re: Resistencias de Pull Up en Atmega16
« Respuesta #1 en: 10 de Julio de 2011, 20:34:38 »
Hola nuevamente... acabo de encontrar el error... el código anterior está bien, solo que cuando llamo la función que maneja los 3 pines de salida REESCRIBO accidentalmente los pines utilizando PORTC y deshabilitaba los Pull Up's. Pensando que el error estaba en otra parte nunca miré la función de salida.

Si alguien quiere tomar este ejemplo como tutorial, lo anterior está bien. No hay que olvidarse de tener cuidado al utilizar PORTx después tratando por separado los pines.

Saludos!


 

anything