Cambio de PIC a AVR [cerrado]

13

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

El software de uC
Estoy familiarizado con Assembly y C para PIC16 y PIC18. ¿Cómo varían el ensamblaje y las variantes C para 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 RAM
  • Paquete DIP

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

Variantes SPI e I2C
Me dijeron que Microchip tiene sus propias variantes en los protocolos SPI e I2C. A menudo uso dispositivos esclavos SPI e I2C de microchip en combinación con un PIC. ¿Podría 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?


fuente
@LeonHeller, lo siento, no estaba claro, no tengo un proyecto específico en mente, pero me gustaría jugar un poco para conocer las diferentes arquitecturas.
55
Esta pregunta es demasiado amplia y no es adecuada para nuestro formato de preguntas y respuestas, pero en general usted lee las hojas de datos de los procesadores que está considerando usar. No sé cómo es en el Lado Oscuro, pero Atmel probablemente tiene una guía de selección como Microchip. Estas compañías tienen demasiados micros para que cualquiera tenga en cuenta. He realizado más de 100 proyectos PIC durante 15 años profesionalmente, pero aún así consulte la guía del selector al elegir uno nuevo.
Olin Lathrop
1
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
Kaz
Eche un vistazo a electronics.stackexchange.com/a/66163/8627 y cambie Linux para Windows. La cadena de herramientas es en gran medida la misma. No es idéntico, pero está lleno de cosas para Google.
jippie
@jippie bonito! Guardado en mi marcador para cuando

Respuestas:

8

software de uC

Los conjuntos de instrucciones PIC y AVR son similares, pero no comenzaría a programar un AVR en conjunto. Programa en C, con Atmel Studio. Viene empaquetado con la versión AVR de gcc, y tiene un muy buen desensamblador 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

Utiliza Atmel Studio . No te molestes con Eclipse, el Bloc de notas del programador o cualquier otro IDE aleatorio que la gente use. 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 obtén un Atmel ICSP . Vale la pena el gasto extra si tiene la intención de hacer más de un proyecto AVR. Utiliza USB y es controlable desde el interior de Atmel Studio.

hardware de uC

Existe una herramienta de selección , pero en general, el hardware típico de gama baja de AtMega 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 tiene disponible depende del chip en particular. La mayoría de las partes de piezas de AtMega están disponibles en PDIP, siendo QFP la cantidad de clavijas realmente alta.

Variantes SPI e I2C

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

Matt Young
fuente
3
ATtiny es el hermano menor de ATmega. Son muy similares a la hora de programarlos. He 'portado' el software de mega a pequeño simplemente cambiando el tipo de pieza en el Makefile.
jippie
@CamilStaps jippie hace un buen punto. No sé si esto es una similitud con PIC, pero los procesadores AVR en su mayor parte comparten nombres de registro y órdenes de bits. Hay algunas excepciones, como 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.
Matt Young
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 estos 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 paquete de programas popular para Windows conocido como WinAVR: winavr.sourceforge.net No necesita ningún tipo de desarrollo placa, solo una fuente de alimentación, tapas de derivación y quizás un cristal.
Kurt E. Clothier
11
  • C será igual con algunas pequeñas diferencias de compilación. El ensamblaje será bastante diferente ya que es una arquitectura diferente. Aconsejo ir con C, y tal vez recoger suficiente ensamblaje para poder incorporar algunas rutinas importantes.

  • Para el IDE y el programador, Atmel tiene ofertas similares a 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 paquete DIP.

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

Descargo de responsabilidad: no he usado un AVR durante mucho, mucho tiempo. Hoy en día uso principalmente PIC y ARM, pero nunca he tenido problemas para conectar nada con SPI / I2C en el pasado, ya que 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 las licencias / nombres (por ejemplo, 2 hilos, I2C, SMBus) fuera 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 de Wiki para obtener más detalles.

Oli Glaser
fuente
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ó evitar la tarifa de la licencia.
jippie
11

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 razonablemente bien documentada (a diferencia de Plib de Microchip, pero plib tiene fuente completa, lo que realmente aprecio). Los AVR usan gcc y gdb viejos y regulares, lo que significa que no se me interponen IDEs idiotas. Las mismas herramientas funcionan en Windows, OSX y Linux, y no necesito un IDE de 600 MB + con Java y Netbeans o Eclipse para tropezar o contaminar mi árbol de origen con su propia basura.

La programación de AVR generalmente se realiza a través de ISP o JTAG (había 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 disgustarme mucho con las hojas de datos y la numeración de piezas de Microchip. Me corté los dientes en el diseño incrustado con Microchip y los amé durante mucho, mucho tiempo, pero cuando busco un micro en estos días tiendo a comenzar con Atmel, aunque no están exentos de defectos. (SAM-BA es basura para sus partes SAM, y también he tenido algunos problemas con su soporte de fábrica).

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

akohlsmith
fuente