salvar programa dentro de microcontrolador

saludos expertos,

tengo un proyecto en el cual ocupo guardar un programa auto ejecutable en el PIC que al conectar al puerto USB se ejecute (mismo sistema que las datacard hawai).

alguien tiene una idea de como se hace esto? como se puede crear un programa que se auto ejecute al conectar el PIC?

gracias
 
Sea cual fuere el tipo de programa que quieras guardar en el microcontrolador, todos son auto ejecutables desde el mismo momento de alimentar al microcontrolador, salvo sentencias de ejecución.

Puedes crear rutinas que se ejecuten en X momento y bajo ciertas circunstancias,
pero todos los microcontroladores tienen por defecto rutinas iniciales que definen lo que harán posteriormente.

En un programa de computadora o dispositivos con microprocesador, puedes almacenar varios programas y ejecutarlos cuando lo requieras y al mismo tiempo procesar otras tareas (Multitask).
En un microcontrolador, deberás crear subrutinas que se ejecuten cuando sean requeridas,
y estas serán ejecutadas dentro del mismo programa interno o externo (EEPROM, etc.)
Y el microcontrolador no podrá tener control hasta que dicha tarea se complete o exista una interrupción al programa.

Es necesario que expliques bien que es lo que deseas hacer para que se te pueda dar una mejor orientación.

Mencionas: datacard hawai y quizás quisiste decir Huawei Datacard
 
Última edición:
No se aún bien de puerto USB de los PIC's, pero estoy casi seguro que existen banderas dentro de s periférico (incluso interrupciones) que avisan a la CPU cuando se ha detectado la conexión USB. Puedes auxiliarte de éstas banderas para entrar a la rutina de salvado de datos
 
Explica bien de que se trata.

Pero me parece que lo que quieres es ejecutar un app en Windows al conectar el USB y que ésta app (aplicación) esté dentro del microcontrolador? si no es así no hagas caso a lo siguiente.

Para auto-ejecutar una app, lo más sencillo es que el PIC trabaje como un PenDrive... ésta forma es USB Mass Storage pero el PIC solo trabaja como interfáz porque se necesita cierto formato que el PIC no tiene, pero si por ejemplo una memoria SD... además está el echo que el PIC no tiene suficiente memoria.

Lo siguiente es crear un archivo autorun.inf que indique la aplicación a ejecutar que estará en la memoria SD junto al programa... pero esto tiene un detalle... no va a funcionar en todas las PC porque algunos desactivan la opción de autoejecutar.

Si aparte de auto-ejecutar el app también vas a controlar el hardware del PIC por medio del mismo app, hay un detalle... me parece que luego de ejecutar el app el PIC debe de desconectarse y volver a conectarse pero como otro tipo de dispositivo ya sea HID o CDC... en éste punto puede que sea necesario implementar dos protocolos en el PIC (Mass Storage y luego HID o CDC)... el app ya se queda en la memoria de la PC o mejor ahún se instala en ella... en fin...

Saludos.
 
saludos expertos,

gracias por sus respuestas. Es un invento que tengo en mente pero no se como se puede hacer para que el microntrolador al conectar al puerto USB, auto ejecute una APP interna para que el usuario no tenga que usar otros programas.

ByAxel, gracias por tu respuesta le diste al clavo, lo que busco es que el micro guarde una APP para que el usuario pueda usar el sistema sin necesidad de otros programas pero no tengo experiencia en mass storage devices. lo unico que debe guardar el PIC es una txt de unos 8K pero no se como se podria abrir en la PC como un notepad o block de notas.

alguna idea?

gracias.
 
a mi todavia no me queda muy claro, a lo mejor soy muy tonto :D

lo que pretendes es ¿que insertes un pic como el 18f22550 y este instale un software en cualquier pc y lo ejecute?
la respuesta es... no manches! eso no se puede.

si lo que pretendes es que insertes el mismo pic(18f2550 ejem.) y el pc lo detecte como un flash drive (mass storage) y te pida que si loquieres abrir con explorador, con el reproductor etc.
la respuesta es que busques acerca de los descriptores, creas uno y lo adjuntas(reemplasas) a tu programa que hagas en el compilador de tu preferencia y listo. (si mal no recuerdo habia una utileria que se llamaba usb descriptor tool para ese fin) te anticipo que no es nada facil.
 
Última edición:
hola,

no se si has tenido experiencia utilizando datacards que son modem telefonicos para conexion remota o si has abierto una llave maya. si los abres veras que son basicamente un microcontrolador usualmente el 2550 conectado a una memoria X. este microcontrolador lo que hace es enviar un programa al PC y este lo ejecuta como un .inf

basicamente lo que busco es hacer lo mismo, guardar un programa en la eeprom interna y luego ejecutarlo en un PC. por lo que he visto luego de que byAxel respondiera es cierto el micro tiempo que ser un sistema como un mass storage o algun dispositivo similar para cuando este se active envia el programa al PC y este lo ejecute como cualquier otro programa.
 
no se si has tenido experiencia utilizando datacards que son modem telefonicos para conexion remota o si has abierto una llave maya. si los abres veras que son basicamente un microcontrolador usualmente el 2550 conectado a una memoria X. este microcontrolador lo que hace es enviar un programa al PC y este lo ejecuta como un .inf

:no: esos archivos .inf pertenecen al sistema operativo, buscalos dentro de la carpeta de windows, si no lo encuentra ahi, que son los que va agregando microsoft,al conectar tu dispositivo tienes que poner un disco de instalacion que tenga ese .inf

basicamente lo que busco es hacer lo mismo, guardar un programa en la eeprom interna y luego ejecutarlo en un PC. por lo que he visto luego de que byAxel respondiera es cierto el micro tiempo que ser un sistema como un mass storage o algun dispositivo similar para cuando este se active envia el programa al PC y este lo ejecute como cualquier otro programa.

tambien dudo que puedas hacer eso, un 18f2550 tiene una eeprom de 256bytes, estuve buscando los archivos .inf que vienen predeterminados en windows y el mas pequeño es de 2KB. necesitarias una sdcard o algo asi junto con el pic.

ahora bien, si dices que es ese "invento" quizas a alguien se le ocurra alguna alternativa si ves que modificando los descriptores no es posible.
 
Última edición:
Hasta donde se, por HID no se le puede dar órdenes al sistema... es necesario establecer comunicación con otro programa para recien lograrlo... pero igual checa en USB.org.

La opción está en usar Mass Storage pero como antes mencioné, el PIC18F2550 o similares con USB solo trabajan como interfáz... no es posible almacenar un archivo FAT o NTFS en su memoria... creo, pero puedes intentarlo, lo más usual es usar una SD Card como ya te mencionaron.

Si usas proteus, éste tiene un ejemplo de Mass Storage... se tendría que hacer un .inf para que se pueda abrir automáticamente el archivo .txt en un notepad por ejemplo... :unsure: ... ésto mejor lo pruebas en un circuito real.

Supongo que el funcionamiento seria similar a como arranca atomáticamente una instalación desde un CD/DVD, también está el detalle de que windows puede o no permitir el arranque automático, ésto es configurable solo que si está desactivado el arranque automático, no se puede hacer nada....
 
Atrás
Arriba