Autor Tema: Sistema operativo basado en comandos para PIC  (Leído 3111 veces)

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

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Sistema operativo basado en comandos para PIC
« en: 02 de Diciembre de 2007, 10:19:31 »
Hola, estaba pensando en implementar un "humilde" sistema operativo, por llamarlo de alguna forma, dentro del PIC que me permita configurar y realizar tareas mediante el envio de comandos a traves del puerto RS-232, sin necesidad de programar el PIC   cada vez que tengo que modificar alguna variable. En la pantalla del monitor del puerto serie esto se pareceria mucho a DOS(Salvando las diferencias) ya que se manejaria por comandos especificos y luego el PIC devuelve en forma de texto las respuestas, en caso de ser necesarias.
Basicamente, el envio de texto a traves de RS232 lo hago con el archifamoso PRINTF y la recepcion de los comandos que yo envio, detectadas a traves de la interrupcion RDA, con la funcion GETS().

La cuestión radica fundamentalmente en identificar cada comando (que seria para el pic una string o matriz de char) y que el pic compare la cadena recibida con cada uno de los comandos, realizando un tarea en particular cuando me reconoce un comando válido. Estuve pensando en utilizar la función STRCMP(char *s1, char *s2) de la libreria string.h que devuelve un cero cuando reconoce que las cadenas son iguales. La cadena S1 seria el resultado de la funcion GETS() y la otra cadena S2 seria cada uno de los comandos validos.

Bueno, toda esa tediosa explicacion me trae la siguiente pregunta, ¿Como hago para guardar en el PIC todos los comandos validos? Habia pensado en crear una matriz constante de cadenas (es decir una matriz de matrices de caracteres) donde cada cadena corresponderia a cada comando. Para reconocer si una cadena recibida por RS232 es valida lo unico que tendria que hacer es crear un bucle que compare cada uno de los elementos de la matriz con la cadena recibida y cuando identifica alguna que me devuelva el indice de ese elemento en la matriz. Quiero guardar la matriz de comandos dentro de la ROM pues estos son constantes y no necesitan ser modificados. La sintaxis que uso seria:

const char Comandos[3] [len] = {
      "Comando1",
      "Comando2",
      "Comando3"
};

donde len es la longitud del comando mas largo + 1 (el caracter null). Esto trae aparejado un codigo ineficiente, como muchos podran decirme, ya que se desperdicia memoria y ademas el CCS no soporta la utilizacion de punteros con constantes. He probado  muchas modificaciones para declarar la matriz y utilizarla pero nada funciona bien. En la web no he encontrado mucho tampoco.

¿Como puedo definir una matriz de strings constantes que ocupe la menor cantidad posible de memoria y como la utilizo luego en el código? Se manejar algo de punteros pero no tanto, y creo que el tema pasa por esa cuestión por que he visto como se definen matrices de puntero y esas cosas, asi que agradezo cualquier ayuda que puedan darme. Yo ire posteando los avances que vaya haciendo por mi cuenta.

Saludos, GONZA.

Ah, Utilizo CCS C en la versión 3.249 y un uC 16F877A.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Sistema operativo basado en comandos para PIC
« Respuesta #1 en: 02 de Diciembre de 2007, 10:43:19 »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Sistema operativo basado en comandos para PIC
« Respuesta #2 en: 02 de Diciembre de 2007, 11:53:42 »
Gonzalo, lo que tu quieres hacer, si lo piensas montar sobre un sistema operativo,  se llama "intérprete de comandos".

Así como linux tiene su kernel y luego por ejemplo tenes a "bash" como intérprete de comandos, también en el viejo DOS, tenías el "msdos.io" que era el sistema operativo en sí y el "command.com" que era el intérprete de comandos.

Puedes seguir los consejos del maestro diego o bien adotpar un Sistema Operativo y luego agregarle tu interprete de comandos.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Sistema operativo basado en comandos para PIC
« Respuesta #4 en: 02 de Diciembre de 2007, 17:51:50 »
Bueno, muchas gracias muchachos por la ayuda, voy a revisar esos códigos a ver que puedo sacar en limpio, pero por lo que estuve viendo han quedado bastante grandes a comparacion de la pavada que intento hacer. Cuando tenga algo funcionando les aviso.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."


 

anything