Si uno ha usado PIC uC, ¿qué tan diferente es migrar a usar una uC diferente, como por ejemplo Arduino o ARM?

1

Parece que hay muchos proveedores que hacen uC y algunos son más populares de lo que otros dicen, por ejemplo, Arduino y PIC debido a su bajo costo y abundantes funciones y ARM debido a su alto rendimiento. Lo que deseo saber es qué tan diferente es pasar a ARM uC después de que uno haya usado un PIC y haya comprendido sus periféricos y el lenguaje / compilador (C ++ con CCS C Compiler, por ejemplo).

¿ARM, Arduino u otro uC de TI y otros nombres quizás menos conocidos tienen una gran diferencia en lo que pueden hacer en comparación con un PIC?

Déjame hacer la pregunta más simple. Supongamos que he realizado un proyecto con PIC que utiliza su temporizador, ADC, comparador, periféricos SPI e I2C. Ahora supongamos que deseo cambiarme a un nuevo microcontrolador, digamos ARM o Arduino. Entiendo que el conjunto de herramientas (IDE) utilizado con estos otros microcontroladores para compilar el código será diferente, pero ¿cuáles son las cosas que uno debe aprender antes de poder migrar un proyecto de este tipo a otros microcontroladores? No estoy seguro de si los microcontroladores ARM y Arduino tienen dichos periféricos o si tienen más periféricos que no se encuentran en el PIC. Leí en alguna parte que ARM también tiene algún motor gráfico, que seguramente parecía un diagrama de bloques extraño del procesador.

Sospecho que uno debe aprender una gran cantidad de funciones y métodos para escribir ISR e.t.c, pero no estoy seguro de la lista completa, que creo que no es muy larga.

    
pregunta quantum231

3 respuestas

3

Todos los microcontroladores pueden programarse en un lenguaje tipo C, todos ellos tienen los mismos tipos de periféricos básicos y núcleos comparables en cuanto a las características. Cuando te mantienes dentro del ámbito de las MCU en tiempo real, es muy fácil saltar entre ellas.

Probablemente las diferencias más grandes están simplemente en la idiosincrasia de las herramientas. Si está acostumbrado a la facilidad de tener cargadores de arranque preprogramados en sus AVR (hasta los cargadores de arranque USB preprogramados en las partes -U), puede tener algunos problemas para comprar un programador JTAG compatible para ciertos chips ARM. Si está acostumbrado a las funciones de depuración ricas de los chips habilitados para JTAG, puede ser un poco un choque cultural volver a la depuración interna en PIC de gama baja y AVR. Pero eso es algo a lo que te acostumbras después de usar una cadena de herramientas por un tiempo. Además, con algunos chips hay un costo bastante importante asociado con el uso de sus herramientas, por ejemplo. Freescale y Renesas.

No tengas miedo de elegir un chip diferente de vez en cuando y aprender a trabajar con él. Ampliará su vista y le permitirá utilizar MCU más óptimas en el futuro

Anexo: esto no se aplica realmente cuando se va a procesadores que no son en tiempo real, como ARM A-series, x86 y Cell. Estos son muy difíciles de programar en un nivel bajo, las herramientas son caras y los chips son difíciles de obtener e implementar.

    
respondido por el user36129
2

Primero en limpiar algunos términos.

Arduino es una línea de placas de desarrollo centradas principalmente en un microcontrolador AVR de Atmel (normalmente el ATMega328). No produce el microcontrolador. Considere que Arduino es como Dell, toman varias partes y producen un producto completo. Las placas de desarrollo PIC comparables son los sellos básicos Parallax e incluso PICAxe (chips PIC con un emulador básico patentado)

ARM es un tipo de arquitectura, no una línea específica de microcontroladores. Es como los procesadores x86. Y los microcontroladores basados en ARM suelen ser de 32 bits o más, y apenas pueden llamarse microcontroladores, como tampoco lo sería un ic basado en x86. Con ARM, te estás metiendo en microprocesadores, SBC y computación en toda regla.

Varias empresas producen chips ARM, incluidos Atmel, TI, NXP (Phillips), Freescale (Motorola), Broadcom, AMD, Samsung, etc.

Microchip no tiene chips basados en ARM, pero tienen PIC32s (basados en MIPS), que técnicamente compiten contra ARM, pero en realidad no. Es difícil encontrar un producto de consumo con uno dentro.

Cuando dices que estás acostumbrado a los PIC, la mayoría de la gente asumirá que te refieres a PIC16 / 18 y más pequeño. Los chips populares comparables (y conocidos por los consumidores / aficionados) a los PIC serían las diversas líneas MSP430 de TI, las líneas ATtiny / ATMega de Atmel y los mcus compatibles con Intel 8051.

Como analogía, todos estos son autos de juguete en comparación con los autos deportivos de tamaño completo de ARM.

    
respondido por el Passerby
2

La mayoría de las diferencias entre el PIC y el ARM representan las molestias que el ARM elimina, pero hay algunas excepciones.

En los PIC 18xx, uno puede leer y escribir con seguridad los bits LATxx y TRISxx en el código de la línea principal y también escribir otros bits del mismo puerto en una interrupción. En los procesadores ARM eso generalmente no es seguro. Una declaración como: LATC |= 2; se traduciría como una sola instrucción. Un equivalente directo típico de ARM PTC->PODR |= 2; se convertiría en una secuencia de instrucciones equivalente a uint32_t temp = PTC->PDOR; temp |= 2; PTC->PDOR = temp; . Si una interrupción que ocurre entre la primera y la tercera instrucción de esa secuencia modifica el registro de salida del PORTC, dicha modificación se deshará mediante la tercera instrucción de la secuencia anterior.

Para mitigar este problema, la mayoría de las variantes de ARM tienen direcciones especiales de "conjunto de bits de puerto" y "borrado de bits de puerto". Por ejemplo, uno podría usar PTC->PSOR=2; para forzar un bit de PORTC alto sin afectar a ninguna otra cosa, o PTC- > PCOR = 2; ' forzar un bit bajo. Este enfoque será seguro incluso si una rutina de interrupción intenta escribir algún otro bit en el puerto. Desafortunadamente, aunque la mayoría de las partes proporcionan dicha lógica para el registro principal de salida de datos, son inconsistentes en su soporte para establecer o borrar bits individuales de otros registros de E / S.

Otro detalle a tener en cuenta es dormir. El modo de reposo en el PIC es bastante sencillo; Si bien el núcleo ARM admite un modo de reposo de manera estándar entre todas las piezas ARM, la mayoría de los proveedores ofrecen modos adicionales que ofrecen ahorros adicionales sustanciales adicionales, pero no todos lo hacen de la misma manera. Además, si bien el PIC generalmente se puede activar utilizando cualquiera de sus entradas de interrupción asíncronas, muchos dispositivos ARM parecen usar un hardware separado para manejar las interrupciones que para la activación de los modos de suspensión de baja potencia. Espere que el modo de suspensión sea mucho más difícil con el ARM que con el PIC.

    
respondido por el supercat

Lea otras preguntas en las etiquetas