Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

25/05/2015 #21

Avatar de cosmefulanito04

elgarbe dijo: Ver Mensaje
Cosme, muy, pero muy bueno este tutorial! una lástima que no lo hayas continuado. Evidentemente en su momento no había muchas respuestas... de casualidad tendrás algo de freeRTOS con ejemplos, como lo que estabas haciendo acá?

Saludos!
Gracias.

Lamentablemente nunca llegué hacer algo práctico con el freetos, además de jugar un rato y aprender a usarlo por si en un futuro me es útil.
20/09/2015 #22

Avatar de Hellmut1956

Debido a serios problemas de salud y por estar pensando con muchas vueltas mi intención de usar el So FreeRTOS se ha demorado. Actualmente estoy poniéndome al día usando la placa RaspBerry Pi B+ y un libro que me conseguí para aprender y practicar los usos de los pines GPIO del RaspBerry Pi B+ haciendo experimentos electrónicos. Cuando esté al día con eso voy a iniciar lo mismo con la LPCXpresso1769 usando la IDE de NXP. Entonces será mi punto de entrada al FreeRTOS en la LPCXpresso1769 siguiendo los 2 libros que el autor de FreeRTOS hace disponibles para comprar en su sitio de Internet para el LPC1769. Como la placa de evaluación para el controlador de motores de paso usa un miembro de la familia MK20, un ARM Cortex M4 entonces tendré que meterme con la IDe de Keil para transferir las partes que son de mi interés al LPC1769. Si Dios me lo permite eso me tendrá entretenido y fascinado con seguridad el 2016 completo y mas allá! en su momento daré reporte sobre avances relevantes aquí!
01/12/2015 #23


Hola Cosme.

Llevo ya dos semanas buscando ayuda por internet y por fin te encuentro!

Estoy utilizando el sistema FreeRTOS en un sistema empotrado y tengo un problema con las tareas.

El programa base que tengo funciona muy bien, pero más tarde modifiqué una tarea de las que tenía por otra un poco más pesada. Desde entonces esta tarea me está monopolizando el procesador y hace que el resto de tareas se ejecuten menos veces.

Hay ciertos detalles que aún no tengo claros sobre el sistema operativo, como por ejemplo, si a una tarea se le asigna un número determinado de ticks y se ejecuta en menos ticks, pasaría a ejecutarse otra tarea?

Me estoy volviendo loca y creo que el problema está por ahí, en la prioridad de las tareas.

Si me pudieses ayudar te lo agradecería muchísimo!!!

Gracias de antemano
05/12/2015 #24

Avatar de cosmefulanito04

Las tareas deberán tener el mismo nivel de prioridad para repartirse los ticks en forma equitativa. Si no me equivoco, por default un tick equivale a 1mS de ejecución.

Fijate en el mensaje #4, que tengo dos tareas con el mismo nivel de privilegio, no importa lo que ejecute c/tarea, el scheduler se encargará de asignarle el mismo tiempo de ejecución a c/tarea.

Si podés, subí algo del código y lo vemos.
06/04/2017 #25


Cosme muy buen tutorial... Estoy aprendiendo sobre FreeRTOS ya que necesito implementar un grabador digital de audio con salida a SD en una EDU-CIAA.
Mi intención es usar 3 tareas: adquisición, procesamiento y almacenado. De las cuales, la de adquisición tendra la mayor prioridad.
Cualquier sugerencia será bienvenida.
Muchas gracias por tomarte el tiempo en escribir este tuto.

Saludos desde BA.
06/04/2017 #26

Avatar de Hellmut1956

Ha salido una nueva versión de la IDE de NXP que ahora también abarca los controladores de la antigua Freescale. Mi salud sigue jodiendo y mis experimentos se me bloquearon cuando alguien del Internet me atacó y me rindió mi PC inoperable! Por eso, antes de seguir como lo describí mas arriba estoy estudiando e implementando el entorno de mi taller informático aplicando las cosas que he descubierto para mi para lograr un entorno lo mas seguro posible y de aislar por si un atacante tiene éxito a pesar de todos mis esfuerzos!

El primer paso es instalar usando la herramienta "VirtualBox" una máquina virtual e instalar en ella Ubuntu 16.04.1 en la versión de 64 bits. Resultó que VirtualBox solo ofrece la alternativa de os con 64 bits cuando en mi os del PC, Windows 10 Pro, desactivo los servicios del Windows 10 "Hyper-V". Al momento estoy recapitulando lo estudiado previamente sobre Linux y Ubuntu para configurar Ubuntu en la máquina virtual de forma apropiada! Voy a asignar 128 GBytes de disco dura a la máquina virtual y ahora estoy recapitulando de que tamaño las diversas particiones del disco duro mejor.

Después intentare a ver si puedo activar la máquina virtual ya configurada reactivando "Hyper-V" en el os Windows 10 Pro, pues eso es requisito para poder activar Docker que uso para explorar la materia de contenedores en el entorno del PC. También instalaré Docker en Ubuntu en mi máquina virtual!
06/04/2017 #27

Avatar de Nuyel

Lo que pasa es que Hyper-V es un gestor de maquinas virtual de Windows, si activas dicha función toma la aceleración de hardware lo que hace imposible al VirtualBox usar esos recursos, por ello piden que la elimines.

Por cierto, podrías intentar usar la maquina virtual de Windows directamente, usas el Administrador de Hyper-V
07/04/2017 #28

Avatar de Hellmut1956

Gracias por tu respuesta Nuyel. Como es mandatorio que pueda usar Docker voy a analizar ese camino.
26/04/2017 #29


Hola amigo ante todo saludos y gracias por su tiempo. Hoy tengo una pregunta que he tratado de resolver con el buscado y debo admitir que hay respuesta del tema pero aun no me quedan claras.
Mi problema: tengo un módem sim900 conectado a un pic16f877a por el modo rs232 (C7y C6). Dicho módem esta Programado para que los SMS o cualquiera actividad del módem lo bajen directo al puerto del pic tan pronto el módem lo procesa.
Mi programa lo apaño con una interrupción(int_rda), pero ademas mi programa maneja otra interrupción la cual llevo para manejar tiempos, puesto que la misma se dispara cada segundo cargando un contador y con esto genero retardo en las actividades.
Pero estoy notando que no hay efectividad en la recesión de datos proveniente del módem, ya que en ocasiones si lo detecta y en otras no. Esto me da sospechas que las interrupciónes se esta bloqueando una con otra y llega el momento en que queda colgada, por eso estuve investigando y existen un cierto manejo de prioridades a nivel de interrupción, el cual noto que esta mas enfocado para los pic18 y para los pic16f toda las interrupciónes son de prioridad alta.
Para esto CCS tiene #priority que da mayor prioridad a una interrupción,
pero #priority a mi no me compila (CCS 4.032) me manda un error de que esa palabra reservada no la entiende el compilado.

En mi busque pude leer un comentario donde una persona maneja las prioridades de interrupciónes con banderas pero no lo explico, y esa es mi pregunta como se puede manejar la prioridades de interrupciónesa nivel de software con banderas, o si tienen alguna otra forma de manejar esta prioridades les agradezco que me lo comenten para probar.
26/04/2017 #30

Avatar de Nuyel

Las interrupciones disparan el mismo vector, es responsabilidad del usuario revisar las banderas de cada una, otro problema que podrías tener sería que una bandera se dispare mientras sirves otra interrupción posterior y luego no sea verificada antes de dar por completa la rutina.

Recuerda que tienes banderas en INTCON y PIR1

En primera deshabilitas las interrupciones globales al entrar en la rutina de interrupción, las banderas son establecidas sin importar el bit de habilitación, esto te evitará entrar a la rutina nuevamente, después verifica todas las banderas que empleas y controla las subrutinas adecuadas a ellas, al final verificas nuevamente si aún hay banderas activas, en caso de no encontrar ninguna ya rehabilitas las interrupciones globales. La prioridad la estableces por el orden al verificar las banderas.
27/04/2017 #31


Gracias amigo por tu comentario voy a trabajar en el tema y te cuento.
27/04/2017 #32

Avatar de Saint_

Hola nelsont. ccs picC gestiona automáticamente los registros intcon, pir1 y los de mas, recuerda que en la gama 16 de Pic una interrupción no puede detener otra que se esté ejecutando solo espera a que termine la interrupción previa para recién ejecutarse.
Respecto de #priority, este solo define que interrupción se atenderá primero si ubiera más de una en espera.
El problema que comentas suena más a inadecuada forma de gestión de las interrupciones. Sería bueno que subas tu código para que se pueda ver por dónde va el problema.
16/08/2017 #33

Avatar de Psyke

Felicitaciones por el tutorial Cosme, aunque lo haya leído un tiempo después, me fue muy útil. Gracias!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.