Autor Tema: problemas en barrido de colores de led rgb de manolo  (Leído 2282 veces)

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

Desconectado fastyx2

  • PIC16
  • ***
  • Mensajes: 109
problemas en barrido de colores de led rgb de manolo
« en: 26 de Diciembre de 2007, 18:03:14 »
Amigos: he hecho el circuito de manolo para controlar un led rgb , y ha ido espectacular

el tema es que cuando barre colores , en el ciclo for en el que la variable sube ( ejemplo : rojo++ ) no hay problema , ahora cuando hago el regresivo ( rojo -- ) en el descenso hace unos destellos como si en lugar de pasar de 255 a 1 de a uno por vez , en algun momento por ejemplo entre el 67 y el 66 se intercala un 255 que es el que pega el " relampagazo" de color.

Si alguien me puede ayudar ,desde ya gracias!!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: problemas en barrido de colores de led rgb de manolo
« Respuesta #1 en: 27 de Diciembre de 2007, 03:42:43 »
Hola Fastyx, no entiendo qué es lo que te ocurre, no tiene lógica que pase por el valor 255.
Más bien me imagino que pudiera tener algo que ver con la atención de alguna interrupción que detenga la generación del PWM o algo parecido.
¿Has utilizado el mismo programa, tal y cual estaba?, ¿y los fuses?

Desconectado fastyx2

  • PIC16
  • ***
  • Mensajes: 109
Re: problemas en barrido de colores de led rgb de manolo
« Respuesta #2 en: 27 de Diciembre de 2007, 22:33:52 »
desde ya gracias por contestar!

lo de 255 lo puse como una suposicion de lo que podria estar pasando ya que cuando la variable del color disminuye por el ciclo for en la que esta involucrada,
de repente hacia un destello de maximo brillo y seguia normal.

con respecto al pic usado , lo hice con un 16f648a , logicamente adaptando las direcciones de memoria de los puertos , los pines en los que puse los leds , y tambien varió los pines del rs232.

funcionó todo , la comunicación serial, el cambio de colores , inclusive le agregue un printf en el barrido para jugar un poco.

de paso te comento que lo solucioné haciendo esto :

en la interrupcion del timer0 en lugar Ticks == rojo , TIcks == verde y Ticks == azul , les coloque el signo de mayor , es decir cuando los ticks sean inmediatamente mayores a la variable , que se apaguen el led en cuestión.

esto lo hice en forma medio empirica , ya que hubo veces en donde tenia un conteo en el main  , y en el momento de la comparacion entraba justo una interrupción , y por ahi la igualdad se perdia , pero no asi la comparacion de: mayor que .

#int_Timer0
void ActivaLed ( )
{   
      Ticks ++ ;     
      if ( ticks == 0 )
      {
         LedAzul  = 1 ;
         LedRojo  = 1 ;
         LedVerde = 1 ;
      }     
      if ( Ticks > Rojo  )  LedRojo = 0 ;      // aca cambie la == por la >
           
      if ( Ticks > Verde ) LedVerde = 0 ;    // aca cambie la == por la >
           
      if ( Ticks > Azul  )  LedAzul = 0 ;      // aca cambie la == por la >
     
      set_timer0 ( 140 ) ;

}


otra cosa : es seguro dejar que los ticks pasen " solos" a cero por overflow de variable? ya que no encontre que lo hayas puesto ,salvo al principio en el main


Un abrazo

Fastyx

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: problemas en barrido de colores de led rgb de manolo
« Respuesta #3 en: 28 de Diciembre de 2007, 02:59:23 »
No veo lógica a que se haya resuelto con ese cambio, pero si lo has logrado, bienvenido sea :D

Sí, es seguro que se reinicien por overflow, ya que la variables pasan de 255 a 0 con las mismas garantías que pasan de 14 a 15 o de 33 a 34, por ejemplo.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: problemas en barrido de colores de led rgb de manolo
« Respuesta #4 en: 29 de Diciembre de 2007, 08:08:44 »
Pues, me pasaba lo mismo (excepto que lo hacía aleatoriamente) y al igual que Fastyx lo he solucionado con su aporte... la verdad tiene sentido lo que comenta, es decir, si la interrupción no entra 'a tiempo' el color no se apaga y da un destello. Pero claro es extraño, ya que supuestamente el PWM es a 100Hz y no debería dar tiempo a que viéramos el 'destello'. En cualquier caso parece que la cosa va bien de esa forma...!!

saludos!
« Última modificación: 29 de Diciembre de 2007, 08:10:45 por J1M »


 

anything