Regresar   Foro de marcianitos.org > Marcianeando > Cajón de sastre

 
 
Old 18-oct-2008, 23:30   #11
doragasu
Marciano
 
Avatar de doragasu
Creo que vas a tener que leerte unos buenos tutoriales...

Lo de leer audio de un micrófono y sacar audio por unos altavoces, supongo que te refieres a hacerlo en un PC. Pues bien, para eso tienes que usar funciones de librería, y se pueden usar tanto en C como en C++. Pero esas funciones de librería se usan para programar sobre PC, y no tienen nada que ver con lo que luego puedes meter en un microcontrolador. Si quieres leer audio y sacarlo por un altavoz en una tarjeta personalizada con tu propio microcontrolador, tendrás que meter unas cuantas cositas más, principalmente un ADC y un DAC, además de el preamplificador de micrófono y el amplificador de potencia para el altavoz.

Por lo que me cuentas te veo un poco perdido. No es posible crear un programa que corra sobre un PC, y luego con un toque de varita mágica, meterlo en un microcontrolador. Son arquitecturas totalmente distintas, con metodologías de programación totalmente distintas. Si quieres hacer algo que corra sobre un microcontrolador, tendrás que desarrollarlo pensando en el micro desde el principio.
   
Old 18-oct-2008, 23:39   #12
joseccgc
VmWareando ESX 3.5
 
Avatar de joseccgc
Gracias Doragasu.

O sea que si yo quisiera hacer un programa tipo WinAmp, haciendolo desde un pc y posteriormente pasarlo a un aparato con cucarachas no se podría hacer, entendido.

Y si hiciese un programa en C++ tipo WinAmp y posteriormente quisiera meterlo en un aparato con cucarachas tendría que ser una "empresa" la que hiciera toda la conversión o algo por el estilo?
   
Old 19-oct-2008, 05:15   #13
kursh_Allegory
Editor Marciano
Quote:
Originalmente publicado por doragasu Ver post
si lo que quieres es pasarlo a una cucaracha... Olvídate de c++, .net y todas esas cosas, y aprende a programar c. Muy pocos microcontroladores soportan c++ (sólo los más gordotes, caros y difíciles de meter en una pcb casera, como los arm9 por ejemplo), pero la gran mayoría soportan c.

Para hacer el programa y meterlo en un microcontrolador, necesitarás:
- una pcb (printed circuit board, placa de circuito impreso) que lleve el micro y demás cosas de soporte (fuente de alimentación, oscilador, conectores, etc).
- un programador, o preferiblemente un emulador (ojo, no confundir este tipo de emuladores con los emuladores a los que estamos acostumbrados los marcianos, no tienen nada que ver). El programador te permite meter el programa una vez compilado. El emulador te permite eso, y además depurar el programa insertando puntos de ruptura, viendo el valor de variables, etc sobre el hardware real, como se puede hacer con los programas de pc.
- un entorno de desarrollo, con compilador de c. El entorno elegido depende en parte del microcontrolador que elijas.

Si no tienes experiencia en el diseño de pcbs, te recomendaría que te compres algún kit de desarrollo, que suelen incluír las tres cosas que te he puesto aquí arriba, con alguna que otra limitación, pero más que de sobra para alguien que está empezando en el tema.
amen
   
Old 19-oct-2008, 12:06   #14
SuperJoc
Marciano
 
Avatar de SuperJoc
Quote:
Originalmente publicado por joseccgc Ver post
Y si hiciese un programa en C++ tipo WinAmp y posteriormente quisiera meterlo en un aparato con cucarachas tendría que ser una "empresa" la que hiciera toda la conversión o algo por el estilo?
Hombre, como ya te han dicho hay una serie de complicaciones insalvables, en un PC tienes una serie de APIs que te facilitan el acceso al hardware, por ejemplo en windows puedes usar WaveIn/Waveout o DirectSound para acceder facilmente al microfono o altavoces y grabar y reproducir sonido, en cambio en un placa diseñada por ti no tienes estos APIs y por lo general debes acceder directamente al hardware para usarlo (o crear sus drivers y hacerte una librería/API para acceder, etc), por lo que no se parece en nada. Otra cosa es el codigo general del reproductor, no sé, por ejemplo te programas un decodificador de MP3 que le pasas un buffer y te lo devuelve decodificado y el codigo (si está bien hecho) puede compilar perfectamente para PC o lo que sea.

Supongo que te he liado más :-)

Saludos.
   
Old 19-oct-2008, 21:43   #15
doragasu
Marciano
 
Avatar de doragasu
En efecto, es lo que dice SuperJoc, hay cosas que son iguales y en las que el código (si está bien hecho y abstraído del hardware) no cambia. Pero claro, hay que tener en cuenta las características, la topología y las limitaciones del hardware. Por ejemplo, imagina que programas en C para PC el Winamp del que estás hablando, y ahora lo quieres meter al microcontrolador. Pues bien, tendrías que implementar desde cero (o buscar a alguien que ya lo haya hecho por tí) las funciones de librería que utilices, el sistema de archivos, las capas de acceso al hardware, el interfaz de usuario, etc. Podrías dejar tal cuál (si está bien implementado) la parte de decodificación de MP3, pero probablemente no mucho más. Luego una vez hecho esto, es posible que te encontrases con estos problemas:
- El micro no tiene suficiente memoria para ejecutar el programa. La mayoría de microcontroladores sólo tienen unos pocos KB de RAM.
- El micro no tiene suficiente potencia para ejecutar los algoritmos de decodificación. Los microcontroladores suelen tener una potencia extremadamente inferior a la de los PCs actuales. Hay algunos micros más gordotes que sí que pueden (como los ARM 9, ARM Cortex, etc) o los DSPs (Digital Signal Processors), pero son más caros y complicados para su diseño hardware y software.
- No tienes interfaz de usuario: tendrías que dotar a tu placa al menos de un display y unas pocas teclas.
- Y dependiendo del hardware, muchas cosas más.

No es por desanimarte, pero creo que hacer un Winamp para PC no es un trabajo adecuado para alguien que se inicia en la programación, y mucho menos aún el desarrollarlo para un sistema empotrado. Si realmente te interesa el tema, te recomendaría que busques tutoriales en webs de aficcionados, los sigas, y una vez que hayas hecho alguno que otro, tú mismo te darás cuenta de hasta dónde puedes llegar en función de lo ambicioso que seas y la dedicación que le vayas a dar al tema. Por ejemplo, el sistema de riego de macetas del que hablabas al principio sí que podría ser un proyecto bastante viable para alguien que empieza en este mundillo.
   
Old 19-oct-2008, 23:20   #16
joseccgc
VmWareando ESX 3.5
 
Avatar de joseccgc
Tomo nota de todo, veré que se puede hacer con el C++
   
Old 20-oct-2008, 14:05   #17
doragasu
Marciano
 
Avatar de doragasu
OK, suerte
   
Old 20-oct-2008, 14:21   #18
Maxtor
Marciano
 
Avatar de Maxtor
Si te sirve de consuelo, por la red vi un tutorial para hacer de un ordena viejo una minicadena, usando el discoduro para meter MP3, un display de cristal liquido para poner nombre de la canción y tal, y de software lo minimo necesario para que funcionase el programita que se instalaba....

Por desgracia no recuerdo donde :P
   
Old 20-oct-2008, 23:55   #19
zektor
Marciano
 
Avatar de zektor
El hilo debería titularse más bien "Empezando en C++ siendo Chuck Norris". Lo de imprimir "Hola mundo" comprendo que no es muy estimulante, pero es que esto... Desarrollar una aplicación de procesado de audio ya es de por sí complejo; hacerlo con un sistema empotrado lo es mucho más. Lo bueno es que si te pones con ello, además de C++, vas a aprender electrónica, sistemas digitales, programación de sistemas y hasta, por el tipo de aplicación que comentas, procesado de señal.

Ya te han dado muy buenas respuestas, de todas formas, una sugerencia bastante elemental es que busques por Internet la aplicación que tienes en mente, porque a lo mejor ya te la encuentras hecha (o si no la misma, sí una similar). Si tu aplicación no tiene requerimientos de portabilidad y los requerimientos de tamaño no son muy estrictos, una alternativa cómoda es usar por ejemplo una placa Nano-ITX. Resultará excesivo, pero te ahorras el diseño electrónico, no vas a tener problemas de prestaciones y no te van a faltar librerías (es un PC). Eso sí (y creo que esto no te va a gustar ), lo que se lleva aquí es Linux.

Saludos.
   
Old 21-oct-2008, 00:17   #20
joseccgc
VmWareando ESX 3.5
 
Avatar de joseccgc
Gracias a todos, estoy estudiando posibilidades.