Programación Específica > Microcontroladores

 Re: Para empezar bien

(1/3) > >>

ADC:
Hola,
  llevo como 4 años metido a fondo con los microcontroladores y suelo frecuentar el foro de www.odisea2010.com, pero esta muerto, la gente no hace proyectos, por eso voy a compartir lo fundamental con vosotros a ver si os animais....

 Sobre los PICs:

  Todos los se comercializan actualmente son de 8 bit, aunque se espera una familia nueva de 16 bit con una alu tipo DSP para este otoño.
 Para empezar os recomiendo directamente el 18F452 es de 8 bit, 10MIPS@40Mhz, con multiplicador hardware(las series 12, 14 y 16 no tienen).
 Es importantisimo conocer muy bien la arquitectura y el dispositivo en cuestion xq trae un monton de perifericos integrados, asi que hay que manejar MUCHOS registros, aunque programeis en C.

 Sobre los programadores:

 Me refiero con programador al dispositivo que se utiliza para cargar en la FLASH el programa, os recomienfo el TE-20, lo tienen en cualquier tienda de electronica decente por unos 10€.
 Con este programador podeis programar cualquier PIC(incluido los DSPic) xq son todos compatibles, si no te coincide con el zocalo sacais cables y los llevais a las patillas correspondientes del PIC( bajaos los datasheet de: www.microchip.com).
 Necesitareis ademas un programilla : el ICprog(es gratuito).
 
 Sobre los lenguajes de programacion:
 Hay de todo: ASM, Basic , C,Pascal.
 Lo mejor es aprender ASM pero no dedicarle demasiado tiempo, mas que nada para conocer bien el micro, yo uso C,concretamente con el compilador Hi-Tech PICC18 junto con el IDE HI-TIDE.
 Este compilador es de los mejores, y el IDE simula entradas y salidas virtuales, con lo que puedes simular proyectos +o- simples sin montar nada.
 Cuando domineis esto, que sera rapido xq ya sabeis C, el paso siguiente es usar un Sistema Operativo en el PIC:o, ke para ke? pues para lo mismo que haceis con windows o linux. Yo uso SalvoRTOS hay una version freeware que limita a un maximo de tres procesos 5 semaros y 4 colas de mensajes, os aseguro que es lo mejor, usando un SO puedes harcer en 2 dias proyectos que en ASM tardarias 2 o 3 meses.

 Otras cosas importantes pa empezar:
 Necesitas una insoladora(dos tubos fluorescentes en una caja).
 Un soldador.
 Un programa para dibujar PCBs(placas).
 Un cursillo rapido de electronica basica.

 Y algunas referencias:
  www.microchip.com
  www.microchipc.com (imprescindible para C)
  www.pumpkininc.com
  www.odisea2010.com (para aprender)
  www.conket.com (para aprender)

espero que ya sepais por donde empezar y ya pasare por aki, a ver si esto progresa...
 Saludos :hippi:

© Jonathan ©:
Hola ADC, gracias por estos consejos de profecional, nos ayudaras a varios a poder progresar... lo unico que no entendi fue lo del sistema operativo para micros... Acaso es un sistema operativo independiente de windows y linux exclusivo para microcontroladores???... Las gracias nuevamente y hasta pronto. :guitar:

ADC:
Hola Jonathan.
 El sistema operativo del que te hablo es totalmente independiente de windows y de linux, es un nucleo desarrollado por otra empresa, y sirve para varios microcontroladores, incluyendo los de Microchip, Motorola, Atmel, TexasInstruments e incluso para micros x86.
 Si no tienes conocimentos claros sobre que es un sistema operativo realmente, te recomiendo que no lo uses con el pic por ahora, espera a adquirir buenos conocimentos sobre SO en general, de todas formas te comento para que y como lo uso:
 La pricipal ventaja de usar un sistema operativo reside en poder correr varios procesos "a la vez" en un micro, para esto ofrece servicios para poder crear o destruir procesos, para que se puedan comunicar o sincronizar entre si, para poder parar procesos deurante un tiempo...
 imagina la siguiente situacion: tu aplicacion recibe comandos por el puerto serie por ejemplo, para activar unos reles, a la vez tienes que hacer parpadear un led con una frecuencia de 1Hz, leer un teclado matricial y escribir mensajes ,segun el comando recibido, en una pantalla LCD. Si lo enfocaras desde una perspectiva clasica secuencial(como se programa para MSDOS p.e.) tendrias que comprobar si se ha recibido un comando por el puerto, en caso afirmativo escrivir el mensaje correspondiente en la LCD y activar algun rele,comprobar si se pulso una tecla, esperar un segundo(malgastando tiempo de CPU) y despues cambiar el estado del LED, todo esto secuencialmente.Esto presenta problemas, el mas evidente es que no puedes asegurar que el LED parpadee a 1Hz, ademas durantes el segundo que estas esperando puedes perder comandos recibidos por el puerto serie, o pulsaciones del teclado. Con un sitema operativo crearias procesos independientes para cada tares, por ejemplo en este caso, podrias tener un proceso para gestionar los comandos recibidos (OnCommad), otro para leer el teclado (OnKeys), otro para escribir en la LCD(LCDUpdate) y otro para hacer parpadear el LED(LEDBlink). El proceso OnCommad solo se ejecutaria cuando recibieses un comando por el puerto, dejando el micro libre el resto del tiempo,OnKeys cunado se pulse una tecla,LCDupdate solo cuando OnCommad le envie un mensaje con lo que tiene que escribir, y LCDBlink cada segundo(dejando el micro libre cada vez), de este modo puedes sacar mucho mas rendimiento al micro.Como ves la multitarea y la programacion basada en eventos no es ni mucho menos exclusiva de los PCs:D
 Saludos y animo:comp:

© Jonathan ©:
Hola ADC, gacias por tu explicacion, es realmente interesantisimo saber que eso existe, unque no creas, no sabias de eso hasta ahora que lo explicas... Dime, existe algun sistema operativo como el que usas pero en español?... la verdad que me interesa el tema...otra cosa... Que es lo que deb esperar para poder utilizar un sistema operativo, tiempo para conocer el micro o para aprender el uso del SO???... realmente muy bueno todo esto, y la ultima consulta, .... de todas maneras seguiria utilizando asm para la programacion de los micros o el SO utiliza un nuevo lenguaje???... Bueno, espero no estorbarte con tantas preguntas, las gracias nuevamente y hasta pronto.:beer:

ADC:
Hola Jonathan.
 Hay multitud de sistemas operativos, especificamente compatible para PIC solo conozco este, aunque probablemente podrias adaptar otro, por ejemplo LINUX, pero esto te llevaria mucho tiempo y trabajo aunque fueses un experto, hay otras formas de hacer multitarea (en la web de microchip hay una nota de aplicacion sobre el tema "Simple multitasking with PIC micro MCUs"). El idioma del sistema operativo no debe ser relevante, lo unico que tienes que aprender son los servicios que te ofrece y como usarlos, generalmente son funciones o procedimientos, un ejemplo:
void task_ADC()
{
for(;;)
{
  OS_WaitSem(SEM_MUESTREAR,NO_TIMEOUT);
 ...
 //codigo que haga lo que quieras en C o ASM
 ...
 OS_SignalSem(SEM_ADOK);
}
}

este ejemplo seria la definicion de un proceso, cuando lo creases se quedaria esperando  que el semaforo SEM_MUESTREAR sea señalado por otro proceso o desde la rutina de interrupcion,cuando esto ocurriese el proceso pasaria a estado "ready" y entraria en ejecucion cuando el micro este libre y no halla otro proceso con prioridad superior a la suya esperando, ejecutaria el codigo y al final señala al semaforo SEM_ADOK, por ejemplo para indicar a otro proceso que se ha procesado una muestra.
 
 Esto esta muy bien Jonathan, pero lo mejor es que no empieces con esto directamente, primero debes conocer bien el micro, haz programas en ASM y en C, cuando no tengas ya problemas y domines esto, lo mejor es que busques documentacion sobre sistemas operativos en general, pues todos tienen mucho en comun, almenos conceptualmente.
 Realmente si lo que quieres en introducirte lo que tienes que hacer es experimentar con el micro, hacer pequeños proyectos, primero en ASM, mas tarde en C. Un buen camino seria aprender a manejar los puertos de E/S, un proyectito para manejar una pantalla LCD y un teclado, despues aprende a manejar el puerto serie y ya podras enviar comandos al micro desde el PC con cualquier terminal (p.e. Hyperterminal, que viene con windows),una vez sepas esto no tendras problemas para manejar todos lo demas perifericos del micro, pero lo mas importante... leete el dasheet del micro que vallas a usar:excl:.
 Saludos...:lightsabre:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa