Cambiar de PIC a AVR [cerrado]

He trabajado con PIC16 y PIC18 durante más de tres años y también me gustaría conocer AVR. No tengo un proyecto específico en mente, pero me gustaría probar con las diferentes arquitecturas. Me gustaría obtener un informe de compatibilidad de PIC y AVR.

El software de uC
estoy familiarizado con Assembly y C para PIC16 y PIC18. ¿En qué se diferencian las variantes Assembly y C de los microcontroladores AVR de las variantes PIC? ¿Hay muchas diferencias?

Software de PC
¿Qué software necesitaría para compilar y ensamblar mis programas para chips AVR? ¿Es gratis y dónde puedo descargarlo?

Hardware de programación
He usado Wisp648 de VOTI para programar PIC, pero esa placa no puede programar AVR. ¿Tengo que comprar un programador o hay algún circuito disponible en la web que pueda construir yo mismo?

Hardware de uC
Para PIC, he usado mucho el PIC18F4620 . Estoy buscando un AVR con características similares. Las características que me gustan son:

  • oscilador interno
  • Temporizadores
  • Versión de 5V y 3.3V
  • ADC
  • MSSP con soporte I2C y SPI
  • (E) USART
  • PWM
  • Muchos pines de E/S
  • >= 32kB de memoria de programa, >= 2kB de RAM
  • paquete DIP

¿Qué chip AVR tendría las mismas características? El paquete es un factor decisivo, realmente quiero DIP, PDIP o SPDIP. ¿Cómo sería un AVR con características comparables?

Variantes SPI e I2C
Me dijeron que Microchip tiene sus propias variantes en el protocolo SPI e I2C. A menudo uso dispositivos esclavos SPI e I2C de microchip en combinación con un PIC. ¿Sería capaz de usar estos chips (23K256, RTC, ENC28J60, ...), en combinación con un AVR? Además de eso, ¿sería posible vincular un AVR y un chip PIC usando I2C o SPI?

@LeonHeller, lamento no haber sido claro, no tengo un proyecto específico en mente, pero me gustaría jugar un poco para conocer las diferentes arquitecturas.
Esta pregunta es demasiado amplia y no se ajusta bien a nuestro formato de preguntas y respuestas, pero en general lee las hojas de datos de los procesadores que está considerando usar. No sé cómo es el lado oscuro, pero Atmel probablemente tenga una guía de selección como la que tiene Microchip. Estas empresas tienen demasiados micros para que cualquiera los tenga en cuenta. He realizado más de 100 proyectos PIC durante 15 años profesionalmente, pero aún así consulto la guía de selección al elegir uno nuevo.
Qué tipo de instrucción establece el uso de AVR y las herramientas de desarrollo, etc., se investigan fácilmente. Estas cosas están bien soportadas, como PIC. Recomiendo este entretenido video: youtube.com/watch?v=DBftApUQ8QI
Eche un vistazo a electronics.stackexchange.com/a/66163/8627 y cambie Linux por Windows. La cadena de herramientas es básicamente la misma. No es idéntico, pero está lleno de cosas para buscar en Google.
@jippie genial! Guardado en mi marcador para cuando hayan llegado mis muestras :)
Utilizo un 'viejo' Arduino como programador, solución barata y versátil.
Incluso antes de que se cerrara esta publicación, eliminé todas las partes subjetivas. Por favor, reconsidere sus votos cercanos.
Creo que la primera y la última pregunta podrían estar bien aquí, tal vez por separado. El resto son demasiado amplios, demasiado localizados o se pueden responder con un poco de búsqueda en Google (por ejemplo, hardware de programación). Creo que todavía necesita mejoras antes de reabrir.
@clabacchio gracias por tus consejos, edité mi pregunta. No eliminé la parte del hardware de programación, pero lo aclaré un poco, ahora es menos probable que se encuentre con Google. ¿Espero que esté bien?
No, básicamente está solicitando una amplia franja de información, en lugar de publicar el tipo de pregunta específicamente respondible para la que está destinado el sitio.

Respuestas (3)

software de uC

Los conjuntos de instrucciones PIC y AVR son similares, pero no comenzaría programando un AVR en ensamblaje. Programa en C, con Atmel Studio. Viene empaquetado con la versión AVR de gcc, y tiene un desensamblador realmente bueno que le muestra la línea de C que escribió, y debajo, las instrucciones de ensamblaje resultantes, muy útiles. También descargaría WinAVR .

software de pc

Utilice Atmel Studio . No se moleste con Eclipse, Programmer's Notepad o cualquier otro IDE aleatorio que use la gente. Atmel Studio se basa en Visual Studio, tiene todo tipo de complementos disponibles de Atmel y tiene un buen simulador incorporado.

Hardware de programación

Hay muchos programadores AVR baratos, como Bus Pirate, pero consigue un Atmel ICSP . Vale la pena el gasto adicional si tiene la intención de hacer más de un proyecto AVR. Utiliza USB y es controlable desde Atmel Studio.

hardware de uC

Hay una herramienta de selección , pero en general, el hardware típico de AtMega de gama baja es:

Internal Oscillator (8 MHz)
3 Timers
2.7-5.5V Supply range
8-channel multiplexed ADC
I2C and SPI support
USART
2 PWMs that work in conjunction with the 8 bit timers

Ir a chips de mayor rendimiento le comprará más temporizadores y PWM. La cantidad de memoria flash y SRAM que tenga disponible depende del chip en particular. La mayoría de las piezas de AtMega están disponibles en PDIP, y el número realmente alto de pines es QFP.

Variantes SPI e I2C

Es posible utilizar dispositivos MCP I2C (TWI para AVR) y SPI con AVR uC. Realmente necesita leer cuidadosamente las secciones SPI y TWI de la hoja de datos de AVR, no se salte una línea. Existen múltiples registros de control para el orden de los datos, la polaridad del reloj, etc. para cada interfaz. Todo está presentado en las hojas de datos y es muy legible. No sería difícil vincular un AVR y un PIC. Solo necesitaría jugar con los modos SPI o TWI hasta que establezca la comunicación.

ATtiny es el hermano menor de ATmega. Son muy similares a la hora de programarlos. He 'portado' software de mega a diminuto simplemente cambiando el tipo de parte en el Makefile.
@CamilStaps jippie tiene un buen punto. No sé si esto es una similitud con PIC, pero los procesadores AVR en su mayor parte comparten nombres de registros y órdenes de bits. Hay algunas excepciones, como que un procesador más capaz puede dividir un registro de control en dos partes. Todas las hojas de datos tienen una sección de descripción de registro en cada capítulo que facilita la comparación.
Los PIC también lo hacen, al menos en una familia (PIC16, PIC18, ..). ¡Gracias por el consejo (@jippie)!
Esta es una gran explicación. Mis chips AVR favoritos son ATmega328p y ATtiny24. Otras líneas comunes son tinyx5 y tiny2313. Todos están disponibles en DIP y todos tienen exactamente la misma interfaz de programación basada en SPI: ISP. Para un inicio rápido y económico, pruebe este programador USB de Sparkfun: sparkfun.com/products/9825 También vale la pena mencionar un popular paquete de programas para Windows conocido como WinAVR: winavr.sourceforge.net No necesita ningún tipo de desarrollo tablero, solo una fuente de alimentación, tapas de derivación y tal vez un cristal.

Trabajo igualmente bien en PIC y AVR (y otros también).

Me gustan los AVR en gran parte debido a AVR-libc . Es una biblioteca incrustada decente que es de código abierto y está razonablemente bien documentada ( A diferencia de plib de Microchip, pero plib tiene fuente completa, lo cual realmente aprecio). Los AVR usan gcc y gdb normales, lo que significa que no hay IDE idiotas que se interpongan en mi camino. Las mismas herramientas funcionan en Windows, OSX y Linux, y no necesito un IDE de más de 600 MB con Java y Netbeans o Eclipse para tropezar o contaminar mi árbol de fuentes con su propia basura.

La programación de AVR generalmente se realiza a través de ISP o JTAG (hubo una pregunta reciente al respecto), y desde el punto de vista de la programación, en realidad no es muy diferente de cualquier otro micro.

Desde una perspectiva personal, he llegado a detestar mucho las hojas de datos y la numeración de piezas de Microchip. Me inicié en el diseño integrado con Microchip y me encantaron durante mucho, mucho tiempo, pero cuando busco un micro en estos días, tiendo a comenzar con Atmel, aunque también tienen sus fallas. (SAM-BA es basura para sus partes SAM, y también tuve algunos problemas con el soporte de fábrica).

En cuanto a cuál usar... prueba ambos, es como la diferencia entre Coca-Cola y Pepsi. Son muy, muy similares y la elección generalmente se reduce al precio y las herramientas que prefiere usar.

  • C será el mismo con algunas pequeñas diferencias de compilador. El montaje será bastante diferente ya que es una arquitectura diferente. Aconsejo ir con C, y tal vez recoger suficiente ensamblaje para poder alinear algunas rutinas importantes.

  • Para el IDE y el programador, Atmel tiene ofertas similares a las de Microchip, solo eche un vistazo a su sitio web, descargue el IDE gratuito y elija un programador.

  • Un chip similar a un 18F podría ser algo así como el ATMega328 (el que se usa en Arduinos) Creo que tienen versiones de paquetes DIP.

  • Sí, I2C y SPI deberían funcionar igual. Vincular un AVR y un PIC no debería ser un problema.

Descargo de responsabilidad: no he usado un AVR durante mucho tiempo. Principalmente uso PIC y ARM hoy en día, pero nunca he tenido problemas para conectar nada con SPI/I2C en el pasado, he usado SPI con frecuencia para conectar, por ejemplo, PIC/Atmel EEPROM/Cortex-M3/FPGA. SPI es un protocolo muy básico que casi cualquier micro moderno debería ser capaz de hacer en hardware.
I2C es un poco más complejo. No puedo recordar la historia de la licencia/denominación (por ejemplo, 2 hilos, I2C, SMBus) de mi cabeza, pero la mayoría de los periféricos son compatibles en el nivel básico que yo sepa. Lea las páginas Wiki para obtener más detalles.

La TWI (interfaz de dos cables) de Atmel es compatible con I2C. I2C puede obtener una licencia de NXP (antigua tecnología de Philips), pero Atmel logró sortear la tarifa de la licencia.