Atmel vs Microchip

Estado
Cerrado para nuevas respuestas.
si comparto con ustedes eso de aprender un poco de todo...

y por otra parte estaria muy bien que pusieras ejemplos en C y asm, y sobre todo de los AVR ya que se encuentra muy poca información en español, libros no he encontrado...

gracias por adelantado....
 
No había visto tú recomendación, gracias.

¿Donde puedo conseguir esos? Alguna tienda por internet o alguna tienda en especial aquí en México, ya que viajo 2 veces al año a México puedo aprovechar para comprarlos.

eidtech dijo:
fitocondria, te recomiendo mucho el MSP430 de TI, digo ya que te gusta conocer nuevos micros.
 
Como bien sabe Meta, tengo otra guerra movida de PIC vs AVR (aunque un poco más genérica) en http://www.webdearde.com/modules.php?name=Forums&file=viewtopic&t=2066

Ahí se puede aprender un poco de C y de ASM de los AVR.

Y por desgracia, y como muy bien apunta Meta, no hay nada en español sobre AVR, excepto unos pocos comentarios (como la pesada introducción al DSP que se puede encontrar en la wiki del foro que he linkado anteriormente).

Y, ciertamente, esta es una gran desventaja de los AVR, y una gran ventaja de los PIC y los Frescales.
 
Cada vez veo nombrar mucho los AVR, significa que el tiempo habrá libros en español, sea escrito por los propios españoles o traducción al español de libros ingleses o americanos. También pueden traducirlo cualquier habla hispana.

Con el tiempo de la gran desventaja que tiene AVR, será una ventaja a su favor.
 
Siempre digo que no se inglés, en realidad tengo la base mínima para entender pero me agobio porque no leo con soltura y tengo que encontrar palabras que no conozco. El que no sepa nada, para eso están los traductores, a parte que voy a ir a una escuela de idiomas para aprender bien , pero no por entender libros en Inglés sino que en trabajo o empleo me lo exigen.
 
Por muchas clases de inglés que hiciese, y muchas guiris con las que ligase, al final aprendí ingles leido a base de leer datasheet, y hablado al encontrarme solo en paises extranjeros.

No saber inglés, hoy por hoy, es desengarcharse del mundo de la tecnología, o al menos, ir muy por detrás. En muchos aspectos.
 
Beamspot dijo:
No saber inglés, hoy por hoy, es desengarcharse del mundo de la tecnología, o al menos, ir muy por detrás. En muchos aspectos.
No está tan mal como dices porque siempre traducen gente a su idioma los manuales, siempre lo hacen y sabiendo mucho Inglés. Lo hago porque me lo piden en el trabajo y me quieren llevar a Alamania a un curso de mantenimiento de equipos médicos y en Inglés, también debo ir a Madrid.

Poco a poco aunque no lo parezca, leyendo cosas en inglés, viendo pelis con subtítulos en Inglés, chat, cosas así aprendes, el chat cuesta más porque hablan mal y abreviado como los españoles.

Aún así, mejor meterse en una escuela de idiomas. Me lo piden en todos lados y es muy recomendable tener esos certificados de idiomas de cualquier nivel.
 
Que casualidad, yo también empecé con equipos médicos, sólo que fui a Suiza la primera vez, luego a San Francisco/Silicon Valley, y luego a Alemania.

Fue en Alemania donde realmente aprendí ingles, ya que en los USA había más mejicanos que americanos, y en Suiza, la profesora resultó ser española, y buena traductora de lo que no entendía de los otros profesores, que hablaban un inglés con demasiado acento alemán.

O sea, que al final con tanto curso en el extranjero no necesito las escuelas de idiomas. Eso sí, nunca están de más en el currículum.
 
Pregunta trampa?

Las diferencias son varias: la parte del procesador (el llamado 'core') es muy diferente entre los dos. La manera de acceder a la memoria (RAM, de programa, periféricos) es diferente. Los periféricos, su funcionalidad y los mapas de los registros son muy diferentes.

En el 'core', tenemos que los PIC (pequeños, que los de 16 bits ya no cuentan), son el clásico con un sólo registro acumulador (Working) y varios registros auxiliares. Mientras, en los AVR, el sistema usa 32 registros tipo acumulador que a la vez son registros auxiliares.

Los PIC tienen un juego de instrucciones más pequeño, de manera que aprender el ensamblador es más fácil que con los AVR que tienen muchos más (unos 120 a 131, según modelo).

El acceso a memoria de los PIC es más complejo debido a que tiene la RAM y los registros (por favor, los maestros del PIC que me corrijan si me equivoco) dividida en páginas. Eso hace que para acceder a un dato de la RAM quizás se deba seleccionar primero la página en la que este se halla.

En los AVR, esto no pasa, pero en cambio, las direcciones de la RAM y/o los registros son de 16 bits en lugar de 8.

Los PIC ejecutan la mayoría de instrucciones en 4 ciclos de reloj. Los AVR lo hacen en 1 ciclo de reloj (eso no es exactamente cierto, ya que en realidad los AVR tienen un Pipeline de dos estados: fetch y ejecución), de manera que con un reloj (cristal de cuarzo) igual en un PIC que en un AVR, el último va (en teoría, que esto no es la realidad) cuatro veces más rápido.

El hecho de tener varios acumuladores en los AVR significa que para hacer lo mismo, se necesita acceder menos veces a la memoria RAM, y por tanto, el programa en ensamblador es más corto, y encima se ejecuta más rápido, al no tener que ejecutar las instrucciones de acceso a memoria. Y aún más si no tiene que ir cambiando de página de memoria. Lo cual relativiza mucho el término 'velocidad'.

En cuanto a precio, probablemente haya algunas diferencias, sobre todo en la parte de los micros más 'pequeños', que sea favorable a los PIC.

Otra diferencia, es que el programa en ensamblador de un PIC 12f seguramente no sea para nada usable en un 16f. En un ATtiny las instrucciones son las mismas (quizás tenga algunas menos) que en uno grande (ATmega y ATXmega), así que el mismo programa seguramente se podrá ejecutar, si no hay particularidades de los periféricos (cosa muy habitual en todos los fabricantes, por cierto). La mayor diferencia de ensamblador y 'core' entre toda la gama AVR es la capacidad de direccionar más memoria (128KB implica pasar de registros de 16 bits a registros de 24), el multiplicador, y muy poco más, de ahí que las 110 instrucciones básicas sean las mismas en todos los micros, y el resto sea una ampliación.

Esto último desaparece si uno usa inglés, perdón, C ;)

Respecto de los periféricos, bueno, cada fabricante tiene sus cosas, y encima las cambian de un modelo a otro, así que esto es demasiado específico como para generalizar. Quizás la excepción aquí sean los PSoC de Cypress, que es un animal muy diferente sobre todo en este aspecto.
 
Beamspot dijo:
Pregunta trampa?
....Otra diferencia, es que el programa en ensamblador de un PIC 12f seguramente no sea para nada usable en un 16f. .....
No es correcto: la linea de PICs 12F y 16F usan el mismo set de instrucciones. Puedes hacer cualquier programa para toda la linea media y baja de PICs (que son mas de 100 modelos distintos) y con seguridad va a funcionar.
Eso es una gran ventaja!
 
Javier Rambaldo dijo:
Beamspot dijo:
Pregunta trampa?
....Otra diferencia, es que el programa en ensamblador de un PIC 12f seguramente no sea para nada usable en un 16f. .....
No es correcto: la linea de PICs 12F y 16F usan el mismo set de instrucciones. Puedes hacer cualquier programa para toda la linea media y baja de PICs (que son mas de 100 modelos distintos) y con seguridad va a funcionar.
Eso es una gran ventaja!
Otra pequeña ventaja es que las 35 instrucciones aparecen en los 18F y si quieres hacer lo mismo que un 16F84 la verdad puedes utilizar esas instrucciones sin usar las nuevas que te viene. Si usas las nuevas del 18F te ahorras más líneas de código ya que puedes hace cosas más directas que el 16F.

Para hacer adaptación de un 16F876A a 18F2550 ya que son el mismo patillaje, pues no cuesta nada adaptarla pero si lo haces al revés ya es más complejo porque las instrucciones que usa el 18F no se incluyen en los 16F, pero como dije antes, si en el 18F2550 usa las instrucciones del 16F, pues puedes adaptarla al 16F876A.

Cosas así es lo que importa y ahorra mucho tiempo.

PD: Me he dado cuenta que algunos le da pánico el ASM.
 
Gracias por las correcciones. Queda demostrado mi desconocimiento de los PIC.

Por cierto, a mí no me gusta mucho el ASM, pero también es por razones objetivas (escribo y depuro mucho más código en C que en ASM). Y además, creo que es fundamental tener buenos conocimientos de cómo funciona al menos el ASM del micro que uno programa.

A veces, para acabar de apurar tiempos, hay que bajar al ASM, y ahí es donde uno realmente aprende a programar.

Por desgracia, debido a los tiempos de desarrollo cada vez más cortos, hoy muchos prefieren poner micros que vayan sobrados de potencia de cálculo, y ahorrarse tiempo de depuración programando 'a saco'. Así que parece que vamos a acabar usando ARM's con mucha RAM para hacer algo que se haría con un 16F, pero que con el ARM desarrollamos en un día, y con el 16F igual tendríamos que depurar y afinar durante a lo mejor semanas o meses.
 
Me refiero que a algo como un pequeño filtro o FFT, en un ARM es 'copiar y pegar'. Sin problemas de restricciones. Hacer lo mismo con un PIC sería bastante más arduo, por no decir imposible.

Pero el ejemplo lo he visto con una FFT sobre los 50Hz de la red, que con un AVR se conseguía haciéndolo a mano con ASM, y se tardó bastante en optimizarlo. Con un ARM, en una mañana estaba hecho.

Por supuesto, no estaba ni la mitad de optimizado, ocupaba más memoria, gastaba más RAM, etc. Pero el coste de I+D superaba con creces la diferencia de precio. Es más, con los ARM ahora por un euro y medio, incluso los dsPIC quedan en entredicho (por supuesto, también los AVR grandes).
 
Estado
Cerrado para nuevas respuestas.

Temas similares

Arriba