viernes, 17 de abril de 2015

Publicación de código fuente (Firmware) de Mega-Herramienta


Desde hace mucho tiempo que me han solicitando compartir el código del instrumento nombrado Mega-Herramienta, pero no lo había querido soltar todavía, no por ser “codo”, si porque lo tengo muy desordenado y me falta darle su “manita de gato”, es decir volverlo más comprensible colocando más comentarios para describir la función del código relevante. Aunque me hubiera gustado compartirlo más entendible prefiero por el momento liberarlo para que tengan una idea de  la lógica de cada función y comprueben su funcionalidad.

También les cuento que este código lo he comenzado a optimizar para tener más memoria libre en el micro y poder programar la función de mini osciloscopio, que mostrara los datos en una aplicación en la PC. Por lo tanto, se están remplazando las operaciones con variables tipo flotante por enteros.

Bueno no tengo más que decir, así que les dejos el código libre.

8 comentarios:

  1. Amigo muy bueno tu trabajo, sin embargo tengo una pregunta, la frecuencia del PWM el maximo es de 12MHz es cierto esto o No. Por que si te das cuenta el PIC18f2550 al activar su PLL obtenemos 48MHz esto es dividido entre 4 por el tipo de arquitectura del PIC. Obtenido 12Mhz aun así en el prescaler este sin ninguna divicion no me da los 12MHz que tu mencionas.

    ResponderEliminar
    Respuestas
    1. Muchas gracias Yony, efectivamente la máxima frecuencia del PWM para el PIC18F2550 es de 12 MHz debido a lo que ya mencionaste del ciclo maquina, que son 4 ciclos de la frecuencia de oscilación. Lo segundo no entiendo bien tu inquietud , ¿es decir que colocaste un cristal de 12 Mhz en la entrada del PIC? si me detallas un poco mas el asunto te puedo te puedo ayudar un poco mas.

      Eliminar
    2. gracias por responder, según su hoja de datos esta ecuación : F_pwm = F_osc / [4 x PRE x (PR2+1)], nos da frecuencia del PWM. si hablamos de una máxima frecuencia este quedaría: F_pwm = F_osc / 4.
      F_osc puede tomar como fuente de reloj los 48MHz del PLL ??? o simplemente es ponerle un oscilador externo de 48MHz para de esta forma obtener una frecuencia de salida de 12MHz.

      Eliminar
    3. Si se puede, de hecho cuando se activa el PLL del PIC por defecto se tomara la frecuencia de 48 MHz, siempre y cuando este bien configurado el preescaler de acuerdo a la frecuencia del cristal a utilizar, por ejemplo si utilizas un cristal de 4 Mhz tienes que configurar el prescaler con una división de 1, pues es necesario tener una frecuencia de referencia de 4 MHz en la entrada del PLL.
      Por cierto la resolución del PWM a 12 Mhz es de 4 unidades de acuerdo a : Resolución=(PR2+1)*4

      Eliminar
    4. Asu es casi igual que en los atmega, a mayor frecuencia menor resolución, bueno gracias por sacarme de dudas.
      Tal vez puedas ver este Led muy interesante para mi, los buscas por el modelo se llama LED PIXEL modelo WS2812B. si vez sus características este led incorpara un integrado que se encarga de los PWMs para cada color, sin embargo solo acepta una señal NZR :TH = 400ns, TL=800ns y TH+TL=1.25μs este es uno logico y el cero logico es invertido. bueno consume bastante bien la velocidad de un 18F lo intentare.

      Eliminar
    5. No es nada Yony,
      También encuentro muy interesante el LED Pixel que comentas, ya vi su hoja de datos y estoy seguro que se puede controlar casi apenas con un PIC18F a 48 MHz, aunque no me queda muy claro la forma de conectarlos en cascada, lo que entiendo es que el color elegido del ultimo LED PIXEl tiene que pasar por los primero hasta llegar al ultimo.
      Bueno, si es que llegas ha experimentar con ese LED me gustaría ver tus avances y claro hasta te puedo ayudar según mis posibilidades.
      Saludos.

      Eliminar
    6. Que programa usarias para la representacion en pc del mini osciloscopio

      Eliminar
    7. Serian en Visual Basic o Visual C#, lo únicos en lo que me se defender un poco :-). Saludos

      Eliminar