Autor Tema: Correr programas en la memoria Ram de un Pic  (Leído 1538 veces)

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

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5087
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #15 en: 09 de Enero de 2019, 10:18:00 »

Estás intentando crear un lenguaje intérprete, algo totalmente ineficiente, aparte de que es bastante complejo de desarrollar.


Debes tener en cuenta que en muchos entornos el 80% del código de un programa contiene lógica que apenas consume un pequeño porcentaje del tiempo de ejecución pero que consume muchas horas de programación y pruebas.
Un lenguaje interpretado puede ser mucho más eficiente que uno compilado a la hora de desarrollar y probar un programa. No estás teniendo en cuenta el tiempo de desarrollo que en muchos casos supone el mayor coste del proyecto. Hoy en día te puedes comprar una CPU el doble de rápida por pocos euros más. Ya no estamos en los tiempos en los que había que exprimir hasta el útimo bit.

¿Realmente merece la pena dedicar 8 horas más de desarrollo para ahorrar dos euros en cada micro? Dependerá del número de micros que se vendan y como valores el tiempo de trabajo.


Un intérprete no es complejo de desarrollar. Hay multitud de lenguajes interpretados disponibles y hacer un lenguaje a medida de tipo enhebrado (cada número es una llamada a una subrutina) no lleva mucho tiempo, es tan simple como hacer una tabla y buscar valores.


Es posible que en ciertos entornos la mayor parte del código sea para hacer cálculos intensivos y en ese caso es normal que te decantes por el C o el código máquina. Pero siempre hay cierta lógica de programa que lleva poco tiempo de ejecución pero mucho de desarrollo y es muy tedioso tener que hacer un pequeño cambio, compilar, cargar el programa y volver a probar. En estos casos un lenguaje interpretado te da una velocidad de pruebas y una flexibilidad que no te puede dar el C de ninguna manera.


El FORTH es el lenguaje interpretado más ligero (puede caber en solo 2kb para empezar) y potente. Se ha usado en entornos profesionales realmente grandes. Aquí algunos ejemplos de la NASA: https://web.archive.org/web/20101024223709/http://forth.gsfc.nasa.gov/
El problema de este lenguaje es que hay que tener una buena disciplina de programación Bottom-Up para que el programa no se convierta en un verdadero lío. No es una opción para programadores con poca disciplina.

Lua pertenece ya a otro nivel. Ya hay varios micros que lo utilizan, por ejemplo el circuito ESP8266. Se puede combinar con facilidad con rutinas C para dejar a cada lenguaje la parte en la que es más eficiente.

Hay muchas más opciones, lo importante es echarles un vistazo y valorar sin prejuicios su posible utilidad.

Un saludo.

Desconectado misterweb

  • PIC16
  • ***
  • Mensajes: 111
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #16 en: 09 de Enero de 2019, 19:12:51 »
 Muy buenas.. lamento no tener una contestacion rapida pero entre el trabajo y demas cosa no puedo contestar antes.

Saludos paneta9999 estuve viendo todos los productos de NXP , todos los perifericosa anexos la verdad es que esta muy interesante, tuve experiencias con algun freescale, atmegas, STm,. Pic.,.... pero la verdad es que ya la cabeza ya no me da pa mas.....jejeje :(

Quiza mas adelante... tambien es verdad que todo lo que hago yo es a nivel de aficionado y como hobby.

Muy buenas Picuino, estuve mirando lo que mandastes, bueno la verdad es que la maquina en la que estaria yo ahora mismo es una maquina de registro y casi no llegaria ni maquina contadora.

Bueno esta muy bien lo del FORTH, yo he trabajado con ensamblador, C y lenguajes interpretados, pero todavia no he llegado a este punto,eso seria quiza un poquito mas adelante.

Me explico y esto si es muy **** IMPORTANTE***** para lo que queria desarrollar.

1) Los entornos de desarrollo como describe  paneta9999 con los NXP , Arduinos, Mplab para PIc, Workbench para STM, y a si un largo etc... son magnificos, aunque tuviera 50 vidas no creo que pudiera desarrollar ni el 1% de cualquiera de ellos, pero ademas es que eso tampoco es mi interes.

2) Muchisimas veces en uno de estos entornos de desarrollo pongamos un ejemplo el control de un dispositivo GPS, lo controla hasta donde lo controla y si quieres averiguar mas para hacer un control mas exaustivo, el meterte en ver como lo hacen, se hace complicado cuando por lo general esta oculto. Aun asi son magnificos yo no les quito su grandisima utilidad.

De todo esto es lo que surge la necesidad y siguiendo con el ejemplo del dispositivo GPS, pues dices bueno voy hacer un rutina de puerto Serial que controlo este dispositivo y le vaya metiendo datos al dispositivo haber como reacciona.

Bueno empiezas a darte cuenta que tienes que modificando el programa mil veces y volviendolo a quemar otras tantas y al final te surje la idea bueno si pudiera cargar datos en memoria del microcontrolador y que los fuera sacando para atacar al gps, sin tener que estar modificando y quemando, y al final lo consigues y fenomenal. Cargo un archivo en la memoria del Pic, el PIc lee estos datos y los saca al dispositivo GPS.

Bueno hasta ahi fenomenal, pero tienes que probar otro tipo de dispositvo o simplemente por ejemplo crear una serie de pulsos o lo que sea y entonces ya no necesitas de una subrutina  si no de varias. ( Decir que estas subrutinas ya estan funcionando perfectamente dentro del programa Flash del  PIc y probadas) .

Y entondes te pones a diseñar otro programita que interprete los datos que se han almacenado en la memoria RAM para que y haga actuar a las subrutinas adecuadas y le meta los datos adecuados.

Entonces es cuando te empiezas a dar cuenta de que si cada vez que quieres probar un circuito o hacer cualquier cosa es un coñazo hacer un programita por cada proyecto y cuando te empiezas a plantear una especie de interpretador de ordenes que haga todas estas funciones y cuando vea los datos en RAM sea el el que escoga que subrutinas tienen que funcionar y los datos que tiene que utilizar.

Pero claro como se a llegado a lo conclusion en este Post , es que la verdad es que esto es un trabajito de muchisimo cuidado.

Yo ya lo empence a hacer. empezando por ordenes muy basicas, pero todavia no lo he probado...... en fin bonito el proyecto .... pero muy trabajoso.

Saludos a todos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5087
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #17 en: 10 de Enero de 2019, 04:31:44 »
Un lenguaje sencillo (user friendly, mucho más que el FORTH) pequeño en memoria y muy usado es el TCL.

https://en.m.wikipedia.org/wiki/Tcl

No conozco ninguna implementación para Pic, pero debe haber alguna o se podrá adaptar una de otro micro.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5087
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #18 en: 10 de Enero de 2019, 04:33:51 »
Otro lenguaje de script y una razón más para pasarse al Arduino: http://www.juniper-lang.org/ Lo borro porque no parece que sea interpretado.

Esta es una implementación (PICOL) realmente muy pequeña de TCL:
https://chiselapp.com/user/dbohdan/repository/picol/index

Ocupa 4000 líneas de código y está más orientado al aprendizaje "Note that Picol is not intended for production use", pero creo que es un buen punto de partida para implementar TCL.
Se puede extender con nuevos comandos que llamen a rutinas en C propias.

Saludos.
« Última modificación: 10 de Enero de 2019, 05:07:52 por Picuino »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5087
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #19 en: 10 de Enero de 2019, 13:21:57 »
Flash Forth para pic y avr
http://flashforth.com/

Se me olvidaba comentar que el FORTH es, además de un intérprete, un compilador que compila a código máquina desde el propio microcontrolador.

Precisamente por esa capacidad es por lo que se ha utilizado a la hora de comenzar a programar nuevos sistemas hardware y sistemas BIOS.

Saludos.

Desconectado misterweb

  • PIC16
  • ***
  • Mensajes: 111
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #20 en: 10 de Enero de 2019, 19:02:47 »
Saludos Picuino n y toda la gente.
Estuve pensando como podria ser el conjunto de diagrama de flujo de todo el conjunto y para mi podria ser de la siguiente forma.

 

* FLUJO_PROGRAMAS.jpg
(88.19 kB, 640x480 - visto 103 veces)
 

Lo que hace la occiosidad ....si estuviera a pico y pala seguro que no estaria pensando en estas cosas......jejeje.

Bueno en principio el interpretador de ordenes dentro del PIC es muy sencillo en el sentido de las pocas ordenes que tiene que utilizar, basicamente lo que tiene que hacer es llevar datos de un lado a otro y al final llamar a la subrutina o subrutinas.

Ordenes unicamente en ensamblador como  movlw, movff, movwf POSTINC0, call, return y poco mas, por eso yo pienso en ensamblador.

Los datos que recibe de RAM vienen de un archivo por ejemplo dato.dat que lo que contiene son numeros, tales como 12, 23, 45, 145, etc..

Que significa 12 pues por ejemplo carga los registros de retardo con los valores siguientes que son 23,45 y 45
luego por ejemplo encuentra el numero 123 -- que puede significar inicializa subrutina I2C y asi  indefinidamente.
Y al final ejecuta todo.

Si no quisieramos hacer nada mas lo unico que tendriamos que hacer es crear un archivo  dato.dat cada vez que quisieramos hacer un programa con numeros, pero tendriamos que tener memorizado que siginifica esos numeros, lo cual es un poco coñazo.

Sino creariamos un lenguaje de programacion basico, que mediante un compilador nos creara el archivo.dat, esto es si por ejemplo el compilador encuentra la palabra "inicializa_I2C" pues sabe que tiene que meter el numero por ejemplo "123" dentro del archivo.dat.

Bueno ahi es donde creo que entran los lenguajes de programacion FORTH, tcl-tk, lenguaje C, java o lo que se desee.
cl
Yo en este sentido para hacer los trabajos duros me encuentro muy acostrumbado al C, tengo experiencia con tcl-tk y otros lenguajes tambien interpretados.

Muchas veces el pensar en alto ayuda a clarificar ideas.

Muchas gracias por tus ideas Picuino.

« Última modificación: 10 de Enero de 2019, 19:28:33 por misterweb »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5087
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #21 en: 11 de Enero de 2019, 07:40:12 »
Aquí hay un artículo muy interesante de un programador que comenzó haciendo una versión TinyBasic para el 8080 y realizó interpretes para portar código del Apple original (con un 68000) al Apple con Power PC.

http://www.drdobbs.com/web-development/the-return-of-tiny-basic/184406381


Desarrolla varias ideas muy interesantes:


Tipos de lenguajes:

Lenguaje interpretado (el más largo e ineficiente, el más sencillo de leer)
Lenguaje Bytecode o lenguaje intermedio, que es la traslación del lenguaje texto a otro más cercano a la máquina. No es lenguaje máquina es de mayor nivel. Puede consistir en números que corresponden a la rutina a llamar y a los argumentos.
Lenguaje máquina del microprocesador donde se ejecuta.

Los compiladores pasan del 1º al 3º.

Los intérpretes pasan del 1º al 2º y luego ejecutan el bytecode. Hay diferentes tipos de bytecode, los del basic son lentos y añaden unas 10 instrucciones de código máquina por bytecode. Los del FORTH son más rápidos y apenas añaden 2 o 3 instrucciones de código máquina por bytecode.

Los intérpretes JIT (just in time) pasan del 1º al 2º y justo antes de ejecutar el programa pasan del 2º al 3º con lo que al final ejecutan código máquina y son casi tan rápidos como un compilador.



Velocidad de ejecución:
Es curioso que en muchas ocasiones, en los modernos microprocesadores, la velocidad de un lenguaje interpretado puede ser mayor que la de un lenguaje compilado !!!

Esto se debe a los fallos de página de la caché. Los lenguajes interpretados con máquina virtual (bytecode) son muy eficientes en espacio y esto hace que ocupen poca memoria. Si todo el programa cabe en la caché, no se dan fallos de página. Un programa equivalente compilado que tenga fallos de página puede ralentizarse mucho más.



Tiny Basic:
Es un lenguaje muy antiguo y relativamente lento, pero tiene muchas ventajas, porque estaba diseñado para microcontroladores que apenas llegaban a los 4k de memoria, equivalente a un pequeño microcontrolador de hoy.

He encontrado varias páginas con el dódigo fuente, pero no he tenido tiempo de evaluarlas.
   https://gist.github.com/pmachapman/661f0fff9814231fde48
   https://github.com/BleuLlama/TinyBasicPlus
   http://www.nicholson.com/rhn/basic/basic.info.html


Wikipedia: https://es.wikipedia.org/wiki/Tiny_BASIC
« Última modificación: 11 de Enero de 2019, 07:55:07 por Picuino »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5087
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #22 en: 11 de Enero de 2019, 07:53:22 »
Saludos Picuino n y toda la gente.
Estuve pensando como podria ser el conjunto de diagrama de flujo de todo el conjunto y para mi podria ser de la siguiente forma.

1º Yo no lo haría con ensamblador. Es más eficiente en velocidad, pero hoy en día por pocos céntimos consigues un PIC más potente. En c será más portable y rápido de escribir (podrás aprovechar programas que ya existen).

2º Yo metería el intérprete dentro del microcontrolador. Que al micro le lleguen las líneas de código en formato texto y que las transforme en su propio lenguaje interpretado (IL). Algo parecido al Bytecode.
El intérprete no tiene por qué ocupar más de 4k de programa.

En el PC puedes hacer el programa que envíe el texto por la UART, con control XON XOFF u otro equivalente.



OTRA SOLUCIÓN COMPLETAMENTE DISTINTA:
También tienes que considerar otra solución que te puede interesar.
Puedes programar un bootloader muy grande, con sistema de entrada, salida, control de periféricos y todas las funciones que te interesen. Algo parecido a la BIOS de los PC.

Luego puedes compilar un pequeño programa que haga llamadas a las funciones de la BIOS y lo envías para que el bootloader lo grabe en memoria.
De esa manera el tiempo de grabación es pequeño y puedes hacer debug gracias al bootloader, interactuando con él por medio del puerto serie.
Todo el control y el envío de programa se hace por puerto serie, sin el programador.
MicroChip te da alguna solución parecida, aunque no la conozco bien.


El problema de esta solución es que no tienes posibilidad de programar el micro sin un compilador, mientras que con el código interpretado si que puedes.


Un saludo.

Desconectado misterweb

  • PIC16
  • ***
  • Mensajes: 111
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #23 en: 11 de Enero de 2019, 20:40:17 »
Muy buenas noches Picuino y demas gente.

Estamos pensando en proyectos distintos, la verdad es yo deseo hacer algo tan complicado como dije en post anteriores, en realidad es para probar dispositivos o probar trozos de codigo muy pequeños, de unas pocas lineas 20, 30 a lo maximo 200 lineas que es lo que ocuparia un bloque de memoria RAM.

En ningun momento se escribe codigo en la memoria flash, las subrutinas ya as escritas y probadas, el programa en RAM lo unico que hace es seleccionar las rutinas adecuadas y meterle los datos para que funcionen y correrlas-

Citar
1º Yo no lo haría con ensamblador. Es más eficiente en velocidad, pero hoy en día por pocos céntimos consigues un PIC más potente. En c será más portable y rápido de escribir (podrás aprovechar programas que ya existen).

Todo esto es cierto, a mi no me importa utilizar en este sentido una cosa o la otra.

Citar
2º Yo metería el intérprete dentro del microcontrolador. Que al micro le lleguen las líneas de código en formato texto y que las transforme en su propio lenguaje interpretado (IL). Algo parecido al Bytecode.
El intérprete no tiene por qué ocupar más de 4k de programa.

Buff a mi esto me parece muy complidado, creo que todos los entornos de desarrollo que hay por ahi al final lo que hacen es meter codigo en ensamblador dentro del microcontrolador.

La unica justificacion que existiria para meter un interprete de lineas de codigo en formato texto, seria que quisieras montar un miniordenador, algo parecido al Spectrump, o algo asi y que fuera necesario una compilacion en linea desde teclado o desde un archivo de texto en el propio sistema sino pienso que es mucho mas sencillo desde fuera.

Esa el la idea que tengo aunque puede que sea util  para alguna otra aplicacion, que en este momento se me escapa.
 
Este es otro proyecto muy interesante que  alguna vez tambien he estado tentado de empezarlo.

Citar
El problema de esta solución es que no tienes posibilidad de programar el micro sin un compilador, mientras que con el código interpretado si que puedes.

El proyecto que yo estoy trabajando cuando hablo de compilacion no es compilacion para crear memoria en flash, sino para crear programa en RAM,  en ningun momento se graba ningun momento se graba una sola linea de codigo en Flash.

Aun asi este post esta abierto  a todo y yo siempre estoy abierto a todo tipo de proyectos....

Un saludo Picuino.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5087
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #24 en: 12 de Enero de 2019, 08:21:15 »
Yo creo que los proyectos no son tan distintos. Solo tienen diferentes opciones.

Yo también estoy ahora pensando en cómo desarrollar el secuenciador de luces y la opción era un lenguaje a medida almacenado en RAM o en FLASH.

Por concretar.

1º Hay que elegir un lenguaje de alto nivel.
Es el que escribe la persona en formato de archivo de texto.
Se puede escoger un lenguaje estandar como TinyBasic o FORTH, con la ventaja de que son estándar y ya hay mucho trabajo hecho y muchas personas que lo pueden entender.

También se puede escoger un lenguaje más sencillo. En otra implementación que hice, inventé un lenguaje sencillo basado en orden y argumentos para la comunicación entre 2 procesadores. En este caso también estaba pensando en hacer un pequeño lenguaje a medida con solo 5 instrucciones, sin condiciones y sin bucles. Para secuenciar luces no hace falta mucho más.
El problema del lenguaje a medida es que es más complejo de desarrollar o si se hace simple, queda demasiado limitado.


2º Escoger el Lenguaje Intermedio
En este caso hay que definir un lenguaje objeto o lenguaje máquina, independiente del dispositivo. Este es el lenguaje al que se va a traducir el primero por parte del intérprete. Los compiladores también hacen este paso antes de convertir el lenguaje intermedio a código máquina.

En este caso hay que decidir qué tipo de lenguaje utilizar. Los lenguajes basados en pila y llamadas, de tipo Forth, son muy eficientes. Pueden ser muy eficientes en velocidad o muy eficientes en tamaño, dependiendo de la implementación.
Otra aproximación es utilizar registros fijos en memoria. El problema de esta aproximación es que no es reentrante y se da de tortas con los programas cooperativos. La ventaja es que evitas muchos pasos de argumentos entre funciones y es más rápido.
También se puede hacer un lenguaje basado en paso de argumentos. Primero la instrucción y luego los argumentos.

También hay que escoger si las instrucciones tienen tamaño fijo o tamaño variable. Cada una tiene sus ventajas e inconvenientes.


3º Escoger dónde colocar cada uno
En tu caso el intérprete de alto nivel quieres que esté en el ordenador, pero en ocasiones puede ser más interesante que esté en el micro. Por ejemplo en mi caso me estaba planteando que el secuenciador se pueda programar con un mando a distancia. Esto significa que las órdenes deben ser pocas y el intérprete completo debe estar dentro del micro.

El lugar donde colocarlo es lo de menos, pero yo te aconsejo que lo programes todo en C y así puedes moverlo donde quieras sin mucho esfuerzo. El C vale para cualquier sitio.


Por ahora ya hay tarea suficiente.
« Última modificación: 12 de Enero de 2019, 08:39:26 por Picuino »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5087
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #25 en: 12 de Enero de 2019, 08:36:15 »
En mi caso tengo un micro con 4kwords, de las que 1kword está ocupado por rutinas básicas de manejo de PWM y similares.
La velocidad del micro no es problema, trabajando a 32MHz tengo potencia de sobra para encender y apagar luces con un intérprete.

Tengo que hacer por lo tanto un intérprete en unos 2kword del PIC. En principio no necesito ni variables, ni condicionales. Puede que necesite bucles, pero muy sencillos.

Lo que si necesito obligatoriamente es hacer tareas cooperativas. Las secuencias deben ejecutarse a la vez en tiempo real y de forma independiente. Aunque tengo que añadir algún mecanismo para sincronizarlas en alguna ocasión.

Lo que había pensado es hacer task independientes y que las órdenes de espera (wait) permitan pasar al intérprete de un task a otro.

Por último necesito almacenar varios programas en la memoria. Cada uno con varias task.
Esto me obliga a hacer cierta recolección de basura. Si borro un programa, el hueco debe rellenarse moviendo los demás datos.

Mi memoria RAM libre es de unos 300bytes. Es poco, pero lo veo suficiente para hacer un programa de forma interactiva. Una vez que el programa funcione bien, lo puedo almacenar en memoria FLASH.


En principio había pensado en 3 instrucciones:

SETPWM  numero_de_led, valor_pwm
WAIT       milisegundos
RAMPA     numero_de_led, valor_pwm_final, milisegundos

Además quería añadir las palabras TASK, PROGRAM y END, para definir una tarea  o un programa compuesto de varias tareas, con la palabra END para finalizar la definición.

Lo que no me gusta del TinyBasic es la utilización de números de línea. Pero no hay otra manera sencilla de editar un programa de varias líneas de forma interactiva.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5087
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #26 en: 12 de Enero de 2019, 08:49:31 »
Un artículo interesante sobre el lenguaje Partcl:
https://zserge.com/blog/tcl-interpreter.html

Desconectado misterweb

  • PIC16
  • ***
  • Mensajes: 111
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #27 en: 12 de Enero de 2019, 10:22:53 »
Muy buenos dias Picuino:
 
Haber vamos por partes y lo primero es saber que exactamente lo que deseas que quiere hacer tu proyecto.

Segun citas anteriores:

Citar
Yo estoy haciendo algo semejante, pero para secuenciar luces y servomotores.

Otra cita

Citar
Por concretar.

1º Hay que elegir un lenguaje de alto nivel.
Es el que escribe la persona en formato de archivo de texto.

Bueno por lo que adivino, lo que estas buscando es hacer un programa en que tienes que enceder unos Leds o Luces lo que sea y en un determinado secuencia de tiempo.

Quieres que este programa haga una presentacion para la persona que maneja el equipo y que esta persona pueda elegir que luces se van activar y cuales no, y el tiempo o retardo entre intervalos de salidas.

Me supongo que logicamente dispondra por tanto de un teclado y de un display LCD o pantalla TFT, o no si por ejemplo los datos los carga atraves de un ordenador por puerto serie o por USB.

Si estas afirmaciones son correctas para que complicarse la vida por que no crear un menu:

El usuario va eligiendo como como quiere que se activen las luces y el intervalo de tiempo entre unas y otras.

Cuando acaba presiona en el teclado si hay teclado la orden quit, y esto automaticamente graba en una EEprom externa o en la misma EEProm del microcontrolador por ejemplo de la siguiente forma:

dato_salida1, tiempo1
dato_salida2, tiempo2
etc...

Cuando se da la orden ejecutar el programa no tiene mas que ir leyendo secuencialmente la memoria EEProm y ir sacando lo datos.

Seguramente me estoy equivocando de cabo a rabo, pero  tendria que saber mas exactamente que quiere hacer tu proyecto.

Primero es definir perfectamente cuales son la funciones de nuestro proyecto.

Por que podemos complicarlo todo lo que queramos, pero en principio para que tomarse tanto trabajico.

Un saludo Picuino

« Última modificación: 12 de Enero de 2019, 10:27:38 por misterweb »

Desconectado misterweb

  • PIC16
  • ***
  • Mensajes: 111
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #28 en: 12 de Enero de 2019, 10:25:55 »
Se me olvidaba ... que microcontrolador tienes pensado usar?

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5087
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #29 en: 12 de Enero de 2019, 15:32:00 »
Estoy usando para las pruebas un PIC16F15325, pero tengo la intención de que quepa en un PIC16F15324.

La idea es usar una comunicación con un PC por puerto serie (con un conversor USB a UART externo).

Las secuencias pueden ser sencillas, pero hay que describirlas de alguna manera. Eso que dices es un lenguaje de programación.

Imagina un ejemplo de dos luces que se encienden y se apagan alternativamente cada segundo:

TASK   1
WAIT  500
LED    1, 250
WAIT  500
LED    1, 0
END

TASK   2
LED    2, 250
WAIT  500
LED    2, 0
WAIT  500
END

PROGRAM 1
TASK 1
TASK 2
END

Los tiempos pueden ser muy distintos e independientes.
Imagina ahora que quieres programar un led RGB tililando como el fuego, cambiando rápidamente entre tonos amarillos y naranjas.
Mientras otro led va aumentando y disminuyendo la luz progresivamente de manera lenta, imitando el amanecer.
Por otro lado tres led (rojo, verde y ambar) imitan la secuencia de un semáforo con los parpadeos de la luz ambar.

Además quiero cambiar los tiempos de cada uno de forma independiente.
Eso hay que hacerlo con algún lenguaje de programación.

Un saludo.