Autor Tema: JJOS y placa de pruebas PIC32MX  (Leído 3321 veces)

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

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
JJOS y placa de pruebas PIC32MX
« en: 09 de Agosto de 2015, 16:29:49 »
bueno quiero compartir con vosotros un proyecto que hice hace tiempo, Era bastante novato y ahora veo que se podría hacer mucho mejor pero funciona perfectamente, y me gustaría compartirlo por si a alguien le puede ayudar o le sirve para algo.

es un "sistema operativo en tiempo real" lo pongo entre comillas por que no puede llamarse exactamente así, es mas bien un scheduler, o un manejador de tareas que puede reducir el tiempo de desarrollo de software muchisimo, se quedo en scheduler por que lo estaba desarrollando para PIC32 pero como quiero dejar de usarlos pues tampoco me convence el esfuerzo de acabarlo, el amigo KILLERJC esta mucho mas preparado que yo para terminarlo, ya que mi plan era mediante ASM poner etiquetas apuntando a una tarea vacía para implementar los delay y los semaforos, y cuando tocara retornar la etiqueta del código continuara por el while de la tarea. pero en fin.

El sistema es portable a cualquier PIC modificando el archivo System_Init.c que es donde se ponen los fuses y se configuran los periféricos. actualmente esta preparado para un PIC32MX250.
una vez tengaís configurado vuestro hardware en el archivo task.h indicais cuantas tareas va a ejecutar vuestro sistema y en el archivo task.c:

Código: [Seleccionar]
/*******************************************************************************
    Author: Juan José Perales Serrano
    Descripcion:
    Fichero donde se ubican las tareas del sistema operativo
    recordar escribir el numero de tareas que se realicen en tasks.h
*******************************************************************************/
#include "tasks.h"
#include "app.h"



//VARIABLES GLOBALES DE LAS TAREAS


void vTask1(void)                   //tarea de ejemplo
{
}
void vTask2(void)                   //tarea de ejemplo
{

}
void BlinkDisplay()                    //tarea de ejemplo
{

}

void LeerPulsadores(void)           //tarea de ejemplo
{
 
}

/*******************************************************************************
  Funcion:
    void CreateAllTasks(void)

  Descripcion:
    Se encarga de crear una pila de punteros a las tareas declaradas para que
    JJOS tenga constancia de ellas, de esta manera el Scheduler podra ejecutar
    las tareas
 
    "0" maxima prioridad

  Precondiciones:
    Programar las tareas previamente en este mismo fichero

  Returns:
    Nada.

  Ejemplo:
    void Task1(void)
    {
        <code>
    }
    void Task2(void)
    {
        <code>
    }
    void CreateAllTasks(void)
    {
        CreateTask(Task1,"prioridad","tiempo(ms)");
        CreateTask(Task2,"prioridad","tiempo(ms)");
    }
*******************************************************************************/
void CreateAllTasks(void)
{
    CreateTask(vTask1,0,10);
    CreateTask(vTask2,1,5);
    CreateTask(BlinkDisplay,2,4);
    CreateTask(LeerPulsadores,3,100);
    OrdenarPrioridades();                                                       //Ejecutar obligatoriamente al final del ciclo
}

creaís vuestras tareas, como si de funciones se tratasen, y al final ejecutais la funcion CreateALLTasks(void) poniendo la preferencia de cada tarea ademas del periodo en el que debe ejecutarse.
y ya esta, vuestro hardware funcionara con toda las bases de tiempo configuradas y las prioridades puestas.

lo he llamado JJOS y lo hice mezclando varias sistemas operativos simples y schedulers que fui encontrando por hay, y añadiendo lo que me gustaba y quitando las cosas que no.
Actualmente esta configurado para TICKs de 1ms.

obviamente podeís cambiar todo lo que queraís del código y poner un TICKs de 10uS por ejemplo pero esto dependerá de la velocidad del micro, para uno de 40-50Mhz no lo bajaría mas de 100uS


también os dejo uno de mis primeros circuitos que hice que me ha servido para probar muchos programitas, incluido este JJOS, es como el típico circuito con un 18F2550 pero con un PIC32MX que para los que se quieran iniciar les vendrá muy pero que muy bien, es muy sencillo y se puede hacer con una CNC o con fotolitos, solo tiene 2 pueentes que quedan escondidos debajo del micro




tiene un pequeño fallo de diseño que no influye, el condensador C9 o C3 sobra por que estan en paralelo ( ya he dicho que era novato  :D)

la placa es compatible con todos los PIC32MX2xx y PIC32MX1xx en PDIP aunque recomiendo poner de la serie 2 para tener USB.

adjunto el proyecto entero en KICAD, y los archivos de fabricacion para una CNC que es donde yo la fabrique, pero podeis sacar los fotolitos y hacerla con acido si queréis.

tambien adjunto el proyecto JJOS esta compilado en XC32 1.31

un saludo y espero que les ayude en algo.
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: JJOS y placa de pruebas PIC32MX
« Respuesta #1 en: 09 de Agosto de 2015, 16:49:32 »
Interesante, yo estoy jugando con FreeRTOS por ahora. Lo que si tengo una nocion basica de como funciona cualquier RTOS.

Y por lo que veo en el RTOS lo unico que haces en ASM es el port (por obvias razones), lo demas va todo en C.

Lo cual lo unico que implementa en C es:

Interrupt de PenSV: Guardar contexto anterior (registro/Top of Stack/registro del FPU) llamar cambio de tarea en C y luego poner los registros para que siga su ejecucion.
(Cuando se quiere hacer el switch de tareas)

Interrupt  SVC, carga los registros de contexto ( solo registros, nada de FPU) de la task actual.

Algunas basicas como desactivar/activar interrupciones.
Habilitar el FPU, si es que el c init no lo hace ( el c init es el que llena los stack al comienzo para que las variables inicializadas tengan su valor en la RAM y cargue algunos registros mas para que funcione justamente C )

En fin, no es mucho, todo lo demas en C.. :P, como para que se pueda portar y no sea TAN especifico a ese micro. Asi que creo que al final lo que menos se toca es ASM xD

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: JJOS y placa de pruebas PIC32MX
« Respuesta #2 en: 09 de Agosto de 2015, 16:55:05 »
Si del asm .Se usa muy poquito en los rtos, simplemente era una teoría que tenía yo para implementar de manera fácil los delay y los while en las tareas para que no se quedara fijo en una tarea en un while por ejmplo, de todas formas esto queda muy lejos de  freertos simplemente eso un scheduler sencillito y bastante liviano para que lo pueda mover cualquier PIC, y ahorrante trabajo a la hora de hacer software sencillo/medio complejo

Un saludo.
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: JJOS y placa de pruebas PIC32MX
« Respuesta #3 en: 10 de Agosto de 2015, 16:40:15 »
Parece que esto no ha tenido mucha aceptación, pensaba que una plaquita sencilla de iniciación a los pic32 gustaría a la gente, además del software, pero parece que los pic32 tienen su fama merecida. Ni regalándola la quieren Haha.
 
 0 descargas :D :D
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: JJOS y placa de pruebas PIC32MX
« Respuesta #4 en: 10 de Agosto de 2015, 17:11:32 »
Jaja, buen estudio de mercado, sí señor.

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: JJOS y placa de pruebas PIC32MX
« Respuesta #5 en: 13 de Agosto de 2015, 14:00:38 »
¿Tan complicado son los PIC32 para que la gente no los quiera?, o ¿tan malos son?, yo he estado pensando si algún día pillo el nivel necesario meterme con ellos  :shock:
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: JJOS y placa de pruebas PIC32MX
« Respuesta #6 en: 13 de Agosto de 2015, 14:25:00 »
no no son tan complicados ni mucho menos, es mas ami me resultan mas fáciles, el problema es que son caros en comparación a sus identicos de otras marcas y ademas, aunque los van reparando tienen bastantes bug, los PIC32MZ serian muy muy buenos micros, de no ser por que tienes mas bug que el window milenium
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: JJOS y placa de pruebas PIC32MX
« Respuesta #7 en: 13 de Agosto de 2015, 14:37:30 »
Pues vaya, eso de los bug no mola tanto, imagínate que estas con un desarrollo y al final no lo puedes terminar por un maldito bug, ¿Y eso de que tenga tanto bug se sabe la razón?
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: JJOS y placa de pruebas PIC32MX
« Respuesta #8 en: 13 de Agosto de 2015, 14:45:01 »
Pues vaya, eso de los bug no mola tanto, imagínate que estas con un desarrollo y al final no lo puedes terminar por un maldito bug, ¿Y eso de que tenga tanto bug se sabe la razón?

No solo los bugs, aca se trato el tema un poco:
http://www.todopic.com.ar/foros/index.php?topic=44934.0


Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: JJOS y placa de pruebas PIC32MX
« Respuesta #9 en: 13 de Agosto de 2015, 14:50:14 »
me cago en la leche xd otra vez me ha pasado que no me lo ha publicado  :5] :5] :5]

total, tambien te iva a colgar lo que ha puesto KILLER y decirte ademas que

el código aqui colgado el JJOS, no es necesariamente para PIC32 y que lo puedes portar facilmente a un pic18 o 24, y para estudiarlo y aprender ejemplos de estructuras y otras cositas de C creo que te va a venir mejor que mirar códigos de arduino.

un saludo.
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: JJOS y placa de pruebas PIC32MX
« Respuesta #10 en: 13 de Agosto de 2015, 14:58:36 »
Valeeeeeeeeeee, muchas gracias la verdad
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...


 

anything