13 votos

Cambio de PIC a AVR

Llevo más de tres años trabajando con PIC16 y PIC18 y me gustaría conocer también el AVR. No tengo ningún 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.

Software de uC
Estoy familiarizado con Assembly y C para PIC16 y PIC18. ¿Cómo varían las variantes de ensamblador y C para los microcontroladores AVR de las variantes PIC? ¿Hay muchas diferencias?

Software para PCs
¿Qué software necesitaría para compilar y montar mis programas para los chips AVR? ¿Es gratuito y dónde puedo descargarlo?

Programación de hardware
He utilizado los VOTI's Wisp648 para programar PICs, pero esa placa no puede programar AVRs. ¿Tengo que comprar un programador o hay algún circuito disponible en la web que pueda construir yo mismo?

El hardware de uC
Para los PIC, he utilizado el PIC18F4620 mucho. 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. ¿Cuál sería un AVR con características comparables?

Variantes SPI e I2C
Me han dicho que Microchip tiene sus propias variantes del protocolo SPI e I2C. A menudo utilizo dispositivos esclavos SPI e I2C de microchip en combinación con un PIC. ¿Podría utilizar estos chips (23K256, RTC, ENC28J60, ...), en combinación con un AVR? Además, ¿sería posible enlazar un AVR y un chip PIC utilizando I2C o SPI?

11voto

Mark Puntos 1998

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

Me gustan los AVR en gran medida por AVR-libc . Es una biblioteca integrada decente que es de código abierto y está razonablemente bien documentada ( UNLIKE plib de Microchip, pero plib tiene el código fuente completo, lo que realmente aprecio). Los AVRs usan gcc y gdb, lo que significa que no hay IDEs idiotas en mi camino. Las mismas herramientas funcionan en Windows, OSX y Linux, y no necesito un IDE de más de 600MB con Java y Netbeans o Eclipse para tropezar o contaminar mi árbol de código fuente con su propia basura.

La programación de los AVRs se realiza normalmente a través de ISP o JTAG (había un pregunta reciente sobre eso), y desde el punto de vista de la programación, realmente no es muy diferente de cualquier otro micro.

Desde un punto de vista personal, he llegado a detestar las hojas de datos y la numeración de piezas de Microchip. Me inicié en el diseño embebido con Microchip y me encantaron durante mucho, mucho tiempo, pero cuando busco un micro hoy en día tiendo a empezar con Atmel, aunque no están exentos de defectos también. (SAM-BA es una basura para sus partes SAM, y he tenido algunos problemas con su soporte de fábrica también).

En cuanto a cuál usar... prueba las dos, es como la diferencia entre Coca-Cola y Pepsi. Son muy, muy similares y la elección suele reducirse al precio y a las herramientas que prefieras utilizar.

3voto

SandeepJ Puntos 1339
  • C será el mismo con algunas pequeñas diferencias en el compilador. El ensamblaje será bastante diferente, ya que se trata de una arquitectura diferente. Yo aconsejo ir con C, y tal vez aprender suficiente ensamblaje para ser capaz de alinear algunas rutinas importantes.

  • Para el IDE y el programador, Atmel tiene ofertas similares a las de Microchip, sólo tienes que echar un vistazo a su página web, descargar el IDE gratuito y elegir un programador.

  • Un chip similar a un 18F podría ser algo como el ATMega328 (el que se usa en los Arduinos) creo que tienen versiones en paquete DIP.

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

Descargo de responsabilidad - Hace mucho tiempo que no utilizo un AVR. Hoy en día utilizo principalmente PICs y ARMs, pero nunca he tenido problemas para conectar nada con SPI/I2C en el pasado, habiendo utilizado frecuentemente SPI para conectar entre, por ejemplo, PIC/Atmel EEPROM/Cortex-M3/FPGA. SPI es un protocolo muy básico que prácticamente cualquier micro moderno debería ser capaz de utilizar en hardware.
I2C es un poco más complejo. No recuerdo la historia de las licencias/nombramientos (por ejemplo, 2 hilos, I2C, SMBus) de la cabeza, pero la mayoría de los periféricos son compatibles a nivel básico hasta donde yo sé. Lea el documento Páginas Wiki para más detalles.

1voto

AndroidUser Puntos 26

Software de uC

Los conjuntos de instrucciones del PIC y del AVR son similares, pero yo no empezaría a programar un AVR en ensamblador. Programa en C, con Atmel Studio. Viene empaquetado con la versión AVR de gcc, y tiene un desensamblador realmente bueno que te muestra la línea de C que escribiste, y debajo de ella, las instrucciones de ensamblaje resultantes, muy práctico. Yo también descargaría WinAVR .

Software para PCs

Utilice Estudio Atmel . No te molestes con Eclipse, Programmer's Notepad, o cualquier otro IDE aleatorio que la gente utilice. Atmel Studio está basado en Visual Studio, tiene todo tipo de plug-ins disponibles de Atmel, y tiene un buen simulador incorporado.

Programación de hardware

Hay muchos programadores de AVR baratos, como el Bus Pirate, pero consiga un Atmel ICSP . Merece la pena el gasto extra si tienes intención de hacer más de un proyecto de AVR. Utiliza USB y se puede controlar desde Atmel Studio.

El hardware de uC

Hay una herramienta de selección , pero en general, el hardware típico de AtMega de gama baja lo 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

Si te pasas a los chips de mayor rendimiento, podrás comprar más temporizadores y PWM. La cantidad de memoria flash y SRAM disponible depende del chip en cuestión. La mayoría de las piezas de AtMega están disponibles en PDIP, mientras que las piezas con mayor número de pines son QFP.

Variantes SPI e I2C

Es posible utilizar dispositivos MCP I2C (TWI para AVR) y SPI con los uCs AVR. Realmente necesitas leer las secciones SPI y TWI de la hoja de datos del AVR cuidadosamente, no te saltes ninguna línea. Hay múltiples registros de control para el orden de los datos, la polaridad del reloj, etc para cada interfaz. Todo está expuesto en las hojas de datos, y es muy legible. No sería difícil enlazar un AVR y un PIC. Sólo tendrías que jugar con los modos SPI o TWI hasta establecer la comunicación.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X