Problema con cambio de giro en motor DC con PIC16F887

#21
Hola, una pregunta, no es que quiera presumir, pero tengo mucha experiencia
en programacion, y en varios lenguajes, experto en Threads() y fork()
lo quiero saber es si los microcontroladores soportan multiproceso y/o multihilo
o memoria compartida
?
porque el problemita del colega se resolveria muy facil aplicando thread
o grabando un registro de 1 o 2 byte como un estado(RUNING/STOP)
Es mas hasta se puede reducir lineas de codigo._
 
#22
Mmm un pic no creo si tiene una manera de programar multitarea dentro del compilador pero eso lo haría poco estándar.
En micros más avanzados que soportan C++ supongo que si
 
#23
Buscando un poco sobre el tema, lei por alli que hay una linea de Microchips
que si se puede programar multitarea, eso deberia ser necesario, por ejemplo
si un micro realizar 4 acciones distintas, (encender una luz, iniciar un actuador, accionar un servo o enviar un dato) segun la lectura de 3 sensores(gas, temperatura y distancia)
desde el punto de vista de la programacion multitarea el sensado serian 3 hilos de ejecucion independientes sensando y escribiendo 3 registros en memoria compartida, al mismo tiempo el hilo de ejecucion main leera esos registros de la memoria compartida y ejecutando la accion que corresponda tod oal mismo tiempo._
 

Dr. Zoidberg

Well-known-Papá Pitufo
#24
desde el punto de vista de la programacion multitarea el sensado serian 3 hilos de ejecucion independientes sensando y escribiendo 3 registros en memoria compartida, al mismo tiempo el hilo de ejecucion main leera esos registros de la memoria compartida y ejecutando la accion que corresponda tod oal mismo tiempo._
Bueee....eso de "todos al mismo tiempo" es imposible si la CPU tiene un solo núcleo y esos chips no tienen múltiples núcleos.
Por otra parte, esa técnica de R/W sobre memoria compartida es propensa a dead-locks, cosa que hay que resolver a pedal por que los microcontroladores no tienen un S.O. que soporte los hilos, o bien hay que secuenciar el acceso a la memoria compartida con lo cual se puede perder algunas ventajas del multithreading.
En fin...en los micros generalmente no se aplica la misma filosofía que las computadoras mas grandes.
 
#25
Mira multitarea si se puede encender leds leer puerto y escribir por rs232.
Pero debes jugar con los timers de micro que no es difícil para un experto como tú.

Un inexperto como yo usaría timers y un núcleo basado en preguntas if else y condiciones tipo switch.

Para hacer un aparentemente multitarea con un solo cpu SIN hacer uso del multitasking del compilador.
La idea es hacer portable el código a otros compiladores y no enfrascarse en uno solo.

Bueno eso haría un inexperto como yo
 
#26
Buscando un poco sobre el tema, lei por alli que hay una linea de Microchips
que si se puede programar multitarea, eso deberia ser necesario, por ejemplo
si un micro realizar 4 acciones distintas, (encender una luz, iniciar un actuador, accionar un servo o enviar un dato) segun la lectura de 3 sensores(gas, temperatura y distancia)
desde el punto de vista de la programacion multitarea el sensado serian 3 hilos de ejecucion independientes sensando y escribiendo 3 registros en memoria compartida, al mismo tiempo el hilo de ejecucion main leera esos registros de la memoria compartida y ejecutando la accion que corresponda tod oal mismo tiempo._
Si lo hace esa tarea y son solo bits en uSeg lo ejecuta y si micro está ocupado se usa DMA, FIFO para aligerar la carga. Si siempre se hace eso para control automático. Otra cosa es si el micro maneja 3 PID con sensores, pwm más nRF24 mas LCD si perder tiempo en el PID hay si es necesario 2 micros.
 

Temas similares


Arriba