Aquí hay algunas comparaciones basadas en problemas reales que he tratado en proyectos reales. Estos se basan principalmente en el uso del ensamblador en el AT90S y las piezas actuales de ATTiny y ATMega, y las piezas PIC12 / PIC16. Esperemos que esta información lo ayude a decidir qué puede ser mejor para usted. En qué PIC son mejores que el conjunto / arquitectura de instrucciones AVR (para usuarios de ensambladores)
PIC bueno: un pequeño conjunto de instrucciones significa que literalmente puedes aprenderlo en un día. Las instrucciones de omisión a menudo pueden simplificar el control de flujo.
AVR incorrecto: conjunto de instrucciones altamente no ortogonales: muchas operaciones solo se pueden realizar en ciertos registros. El rango de ramificación relativo puede forzar que el código se organice en un orden no lógico. No hay instrucciones inmediatas de XOR. Mezcla ilógica de instrucciones de control de flujo de salto y derivación (Ahora, si solo hubieran convertido a ESTADO en uno de los registros, podría omitir …!) Relojes, etc.
Las fotos recientes (12Fxxx, etc.) tienen osciladores RC calibrados más precisos.
La activación de Watchdog desde el sueño continúa después de la instrucción SLEEP: en AVR provoca un reinicio, lo que puede complicar las cosas.
El consumo de energía
Los PIC tienen un consumo de energía mucho menor a 5V
Interrupciones
La latencia de interrupción es constante: si configura una interrupción regular del temporizador en un PIC, se producirá exactamente en el mismo intervalo cada vez. En el AVR obtendrá al menos un ciclo de fluctuación.
ADC
Una velocidad de conversión mucho más rápida que la E / S AVR y las E / S de bit-twiddly twiddly son lo mismo que otros registros de archivos, por lo que las operaciones que no sean operaciones de ajuste / borrado de bits requieren menos trabajo: los bits se pueden alternar usando XORWF, se pueden configurar varios bits o borrado simultáneamente usando ANDWF o IORWF, y puede hacer trucos geniales como usar un puerto de salida como registro de desplazamiento para una generación de patrones realmente rápida. Esto último no suele ser útil, pero permite cosas interesantes como la generación de video.
Los puertos de E / S tienen una capacidad de accionamiento mucho mejor: el alto nivel de salida es fácilmente capaz de proporcionar unos pocos miliamperios sin una caída de tensión significativa, útil para encender directamente dispositivos periféricos (por ejemplo, opamps) bajo demanda para ahorrar energía.
PIC puede despertarse del sueño con pulsos cortos y bordes. Los contadores son asíncronos y pueden contar mientras la parte está en suspensión, y cuentan más rápido que el reloj de la CPU. El AVR no puede activarse en los bordes (excepto las pocas partes que se activaron al cambiar el pin), y las interrupciones activadas por nivel deben activarse hasta que el chip se active y el reloj comience; de lo contrario, la parte volverá a dormir. I / O deshabilita la programación en circuito. En los PIC, el pin de reinicio puede configurarse como una entrada sin desactivar la programación en serie, siempre que lo que esté conectado permita el voltaje de programación de 12.5v.
Disponibilidad
Microchip siempre ha tenido una política de plazos de entrega cortos, y nunca ha habido una escasez significativa de piezas liberadas. Atmel ha tenido algunos momentos muy malos en el pasado: su amplia gama de productos significa que los AVR son una pequeña parte de su negocio general, por lo que otros mercados pueden tener prioridad sobre los AVR para la capacidad de producción. Microchip ahora tiene una celda de prueba de respuesta rápida para producir dispositivos a corto plazo (con una prima de precio).
Las piezas de microchip tienden a estar más fácilmente disponibles, especialmente en pequeñas cantidades.
Microchip mantiene las piezas viejas disponibles por mucho tiempo después de haber sido reemplazadas. Todavía puede comprar PIC16C54XT, a pesar de estar ahora en su cuarta revisión. Atmel tiene muchas menos piezas, pero ha obsoleto más de ellas, por ejemplo, el 90S4414 ha quedado obsoleto dos veces.