Buenas tardes Carlos, estoy totalmente de acuerdo contigo, de que el ensamblador de los pic32 no tiene absolutamente nada que ver con los del pic16, es mas en el proyecto del SO, cuando me di cuenta de que necesitaba ensamblador para hacer lo que necesitaba, intente ponerme directamente con en ensamblador del pic32... mala idea jeje, así que de la misma manera que con C empece con micros bajos como el pic18f2550 y ahora saco todo el partido de los pic32, pensé que seria bueno hacer lo mismo con el ensamblador y empezar con micros pequeños e ir subiendo así que aprovecho los proyectos sencillos e intento ir metiendo ensamblador. Este para el que he planteado la duda es concretamente un simple teclado hexadecimal, 4 display de 7 seg y un altavoz.
como me pides voy a postear mi duda:
En el proyecto del sistema operativo, he conseguido que creando la tarea, dandole el tiempo y la prioridad, el SO y el scheduler maneje adecuadamente las tareas de manera impecable, sin embargo dentro de una tarea no puedes poner un bucle como while(1), ya que se quedaría infinitamente en esa tarea y no se puede devolver el control al scheduler, y si te fijas en un SO como free RTOS o COOCOX, este proyecto no se podrá llamar "SO" hasta que no consiga esto, y para ello necesito el ensamblador.
La idea que se me ha ocurrido para implementar los while y ya de paso los delay, es que dentro de cada tarea, al final, se ejecute una función que creé una etiqueta, cambie el puntero de la función a una tarea vacía, y devuelva el control al scheduler de esta manera, el scheduler, cada vez que ejecutara esa tarea la mandaría a una tarea vacía, hasta que termine el tiempo del delay,entonces el puntero volvera a ser el mismo y la tarea continuría por la etiqueta.
Esto es imposible de hacer en C (y si se puede, yo no se como) sin embargo en ensamblador esa permitido los saltos a donde quieras y tienes un mayor control sobre este tipo de cosas. Es por esto por lo voy a intentar dominar ensamblador.
de momento uso el SO en mis proyectos como una manera de tener una temporización y abstraerme de lo que este haciendo el micro, pero debo de tener el cuidado de no crear retrasos dentro de las tareas y esto es lo que quiero conseguir.
un saludo.