Hola. Dudas y cuestiones. (Arduino Due related)

Buenos días.

Ante todo si existe un subforo más adecuado para este post indicármelo y muevo el hilo.
Me presento soy Javier, soy un ingeniero electrónico. Con un nivel medio o bajo de programación de microcontroladores.

He realizado programas, tiempo hace..., en los viejos Intel y recientemente fue haciendo cosillas con las placas UNO y MEGA de arduino. Últimamente realizamos varios proyectos con los MEGA2560. Normalmente uso C y en mi empresa llevamos un par de proyectos que nos hacemos nuestras placas y programamos los micros con el IDE de Arduino o el Atmel studio y tenemos nuestros diseños personalizados.

Todo esto lo comento porque quiero dejar claro que sin ser ni mucho menos un gurú que se conoce al dedillo cada registro de un micro tampoco es la primera vez que veo un micro encendiendo y apagando un led. Pero vamos, estoy seguro, y espero, que muchos de vosotros tenéis más experiencia que yo.

Y ahora yendo al meollo de la cuestión.
En mi último proyecto el micro se nos quedó un poco corto de RAM y para pulir y añadir más funciones miramos la nueva Arduino Due y pensamos, wow, pedazo características, esto mueve un avión.
Obviamente no le dimos muchas vueltas previas y compramos una tarjeta para hacer pruebas.
Y ahora la tengo encima de la mesa y me pregunto. Para que? Merece la pena a alguien de esta comunidad?

A ver, entiendo que es otra tecnología y puede que la idea es poder introducirse en la plataforma SAM, pero vamos, a primera vista me parece el modo más chapucero que he visto en mi vida.
Y, por cierto, si alguien relacionado con ello me puede aconsejar alguna documentación, libros, blogs sobre el entorno SAM se lo agradezco (en Inglés, español o portugués), he estado mirando una temporada pero el 50% mucho marketing y brillo, pero pocas demostraciones prácticas, tutoriales, getting starting, etc...
Al final me queda muy claro que es lo más mejor del mundo mundial... grandes características, muchas posibilidades, muy estándar todo... Pero que lo hace especial en la práctica? Que me aporta a la hora de programar? Aparte de tener que aprender desde cero como funciona todo.

Volviendo al punto anterior, se supone que todo el entorno Arduino está pensado para iniciar a la gente en este mundillo y probar cosas. pero esta placa me está rompiendo los esquemas. No soporta casi nada del trabajo anterior de Arduino y las importantes colaboraciones del mundo AVR.
A nivel eléctrico tiene la leve pero molesta barrera de sus 3.3V de interface. Pero luego a la hora de quitarle el jugo me veo que estoy perdido, completamente. llevo días buceando en el foro de Arduino, obviamente en el general sobre la placa en cuestión (estoy exhausto y por eso escribo aquí en español, mañana veré de preguntar en el foro inglés). Y lo que encuentro es a mucha gente perdida y tratando de adaptar las funcionalidades más básicas a la placa, algunos con brillantes resultados. pero me quedo con la sensación de que la placa no tiene ningún tipo de soporte oficial de ningún tipo. Como si te hubiesen empaquetado una tarjeta rara china y la gente intentara descubrir como funciona. Y no acaba de salir hace un mes o algo así...
No hay apenas ningún ejemplo real funcional con la placa. Muchos de los ejemplos del IDE no soportan esa placa. Y es prueba y error, no sabes lo que se hace por ahí detrás. Porque hasta el ejemplo del blink ocupar un buen puñado de Kilobytes sin que me quede claro que esta llamando el compilador.
Las dudas del foro se "resuelven" con pequeñas anotaciones que no me aportan mucho y referencias a la plataforma AVR y de ahí te vas buscando la vida.
Y lo que he encontrado googleando fuera del foro me guía hacia el soporte oficial de Atmel. Que te lleva a su entorno. Con varias docenas de funcionales ejemplos, regularmente intuitivos... Y sin compatibilidad directa con la Arduino Due.

Así que al final me pregunto. Realmente vosotros apreciáis un consenso de que esa placa es un buen movimiento de Arduino?
A los poseedores de un Due. Encontrasteis fácil e intuitivo el uso?
Es el camino ARM el único viable y además supersencillo y yo no lo entiendo porque me he quedado desfasado o algo así?

Apreciaré todas las opiniones. Y fuerte saludo a todos.

¡Hola Javier!

Me alegra conocer de tu interés por utilizar la placa Arduino Due en tus proyectos. Por mi parte ya llevo año y medio usándola y si me lo preguntas, es lo mejor que ha fabricado Arduino hasta la fecha (me perdonan los que prefieren Leonardo, Mega u otro) aunque te comento que te consigo razón en gran parte de tu post. La placa Due es un salto cuántico en la plataforma Arduino. Arquitectura muy poderosa pero diferente a lo previo. Hago un paréntesis para indicarte que también poseo la placa TRE pero mantengo mi opinión de que Arduino Due es mi favorito. Ya hasta lo venero ¿Por qué? Me ha enseñado mucho y hace mucho por mí. Al igual que tú, al inicio solo conocía la plataforma AVR que me ha servido de mucho pero la llegada de Due me ha mantenido leyendo, probando y descubriendo el mundo de los micros SAM. También he hecho nuevos amigos tanto en Arduino como Atmel. ¿Documentación? No existe una guía de iniciación (oficial o no) de Arduino Due (¡buena oportunidad para escribir una y venderla!). Solo la referencia de Atmel (doc11057.pdf) en ingles y con sus 1467 páginas. El resto yace en los archivos de la IDE 1.5.X de Arduino (librerías y ejemplos) que están bastante decente. También existen los archivos ASF de Atmel Studio 6 con sus librerías y ejemplos pero de la placa de desarrollo SAM3X-EK basada en el SAM3X8H, pariente cercano al SAM3X8E, el corazón del monstruo (Arduino Due). El tópico del producto en el foro en ingles, aunque ha ido creciendo, esta más lleno de preguntas que de respuestas. Si lo que quieres es una placa para migrar tus proyectos previos en un corto plazo, no te recomiendo que uses Due, pues te va a tomar tiempo asimilarla así como el encontrar los periféricos que se adapten a la placa (mayormente por lo de los 3.3V y la velocidad).

Si revisas el foro en ingles verás que me fue posible migrar el protocolo CAN de la placa SAM3X-EK a Arduino DUE al igual que el protocolo Ethernet. Lo último que me aventuré a hacer fue el migrar las librerías ASF de TFT/LCD y están corriendo muy bien. En cuanto a memoria, lo más que he llegado a consumir en Due es 12% (66kB) en un código de casi 1500 líneas con cuatro esclavos seriales, dos esclavos I2C y un esclavo SPI y adicionalmente una LCD y un keypad. Todo a la vez. Es por ello que te hablo con cierta propiedad. Es difícil percibir el rendimiento de Arduino DUE (velocidad) a menos que lo explotes como creo que lo estoy haciendo.

Conclusión, más que una carrera o maratón, la utilización de Arduino Due la describo como avanzar un poco y detenerse a digerir, avanzar otro poco y volver a detenerse. A veces volver lo andado. Con seguridad a muchos no les parecerá muy atractiva mi apreciacion de la placa Due, pero te aseguro que siempre, siempre encontrarás en ella algo nuevo y maravilloso a la vuelta de la esquina (Y Due si que las tiene). Cuenta con mi apoyo si te animas a introducirte al mundo del monstruo Due (asi lo llamo). Saludos cordiales.

p

LOL, q manera de escribir

Naruto128:
LOL, q manera de escribir

Lo se Naruto. XDDD
Lo siento. me suelo enrollar como una persiana.

De todas maneras, aun que no te leyeras nuestros post, cual es tu opinión?
Tienes una Due?

Un saludo.

Hola Palliser.

Muchas gracias por tu aporte y tus ideas!
Veo que eres un entusiasta de la Due, no se si llegaré a quitarle tanto jugo como tu pero al menos intentaré ir aprendiendo como funciona. XDDD

Yo lo que he asimilado hasta ahora es que los microcontroladores ARM, o al menos estos SAM están pensados para ser un punto intermedio entre un procesador de alto rendimiento de un microordenador industrial o un smartphone por ejemplo, y el bajo consumo, precio y control de bajo nivel de la gama AVR 8 bits (aunque en precio la diferencia es a veces a favor de los SAM).
Así que este nicho quizás sea más orientado a los que quieran realizar proyectos más complejos añadiendo pantallas TFT, analizadores de señal y manejarse en redes de campo sin desatender más tareas.
Y me parece interesante, aunque como tu bien me has dicho, no es una placa para migrar un proyecto rápidamente, en todo caso para ir aprendiendo lentamente como empezar en otra categoría.

Y ahí es donde yo no entiendo el punto de la Arduino Due. A diferencia de todas las anteriores en que alguien con unos conocimientos casi nulos puede ver todos los ejemplos e ir aprendiendo a realizar cosillas, maravilloso para ir introduciendo a gente en este mundillo o apasionarse con este mundillo, ojala tuvieran una Arduino en todos los colegios. En cambio llegas a la Arduino Due y te quedas un poco frío. Una placa que ha obligado a una migración un poco apresurada de la IDE. Y donde la mayor parte de los ejemplos no funcionan. El "Hello World" no funciona! Es un golpe psicológico a todos los iniciados a la programación. XDDD
Y todo está un poco mezclado, sin que me quede claro todavía como invocar librerías que están en carpetas que asumo que llama el compilador, pero que tengo que indagar como funciona.
Apreciadas librerías como la serialport.h de fat16lib, que la usaba casi como estándar por comodidad y la posibilidad de asignar diferentes buffers a cada puerto independientemente, incluso entre Rx y Tx. O la que empleaba para gestionar los archivos en la tarjeta de memoria. Aunque esa parte ya está más o menos arreglada.

En fin, que al final me da la impresión de que es una tarjeta orientada a más alto nivel y que le queda mucho trayecto y soporte para la gente que quiere empezar. Ahora que tu me has dicho que tras tiempo trabajando con ella la única referencia de consideración es el manual Atmel del micro, me he llevado un mazazo. :S

Es que lo que trataba de decir es que Arduino es un modo para iniciar a la gente y que permite luego exprimirlo un poco para realizar trabajos más serios, quieras luego migrar luego a otras herramientas o no.
Pero en cambio la Due necesita de una base decente de conocimientos técnicos, mucho tiempo de aprendizaje y existe alternativas más enfocadas a la comunidad profesional. Supongo que conoces las Xplained Pro de Atmel.
Que son para practicar con esos micros y el entorno Atmel studio. Cuentan con la documentación oficial, varias docenas de ejemplos específicos y que puedes explorar las funcionalidades con mejor guía que con la Arduino Due.
Si bien es cierto que los ejemplos pueden ser más densos de leer y digerir. Bien es cierto que por el momento me las estoy viendo para hacer cosillas con la Due, así que me preguntaba si no habría sido mejor haberme pillado la Xplained.

Se que en cualquier caso puedo tratar de aprender y coger el código del Atmel studio y pasarlo por el Arduino, pero me parecen apaños para tratar de hacer una placa que debería ser más amigable funcione.
Por eso estaba preguntando, porque bien podía ser que he tenido unos días tontos de esos, que no te sale nada y que todo se atraganta y la gente estar contentísima y quizás compartir sus experiencias, o como entendieron todo tan fácilmente y yo darme cuenta y maravillarme en que era todo tan sencillo y yo no lo había cogido.
Pero me quedo con la idea de que va a ser muy poco y seguir consultando y probando y poco a poco ir aprendiendo como funciona y quizás en algún futuro le pueda sacar algún partido.
Y ahí es donde creo que la Due como tarjeta Arduino ha fallado.

De todas maneras lo que si, para este caso que buscaba simplemente mejorar las prestaciones tengo claro que debería haber planteado simplemente pasar a un Xmega con 32Kb de RAM y para tareas de bajo nivel quizás los SAM tienen un buen hueco, por ejemplo me intereso mucho la familia de los SAM4L con su bajo consumo y buenas características, pero me queda un buen recorrido para poder emplearlos con la facilidad de un mega.

Por cierto, sobre el código no me preocupaba el tamaño de los archivos, al final sobra memoria de programa, pero me refiero a que da a la sensación a que el IDE se busca la vida para compilar las librerías que necesita. De hecho para poder correr el Hello World tuve que quitar el include y dejar que el compilador se buscara la vida y ya está. Pero claro, se supone que quiero aprender y no me está enseñando lo que hace.

Un abrazo y gracias por tu opinión. :wink:

JavierGonzalez:
...Y donde la mayor parte de los ejemplos no funcionan. El "Hello World" no funciona! Es un golpe psicológico a todos los iniciados a la programación. XDDD...
... De hecho para poder correr el Hello World tuve que quitar el include y dejar que el compilador se buscara la vida y ya está....

Javier, no entiendo cuando dices que 'el Hello World no funciona' y que tuviste que quitar el include.
Aunque para mi el Hello World! consiste en hacer parpadear el led 13 cada segundo, si te refieres a mostrar la frase, te dejo un ejemplo sencillo que siempre corre y que no usa includes.

void setup() {
  Serial.begin(9600);
  Serial.println("Hello World!");
}

void loop() {
}

Tal vez no entendi el fallo que mencionas. Saludos,

p

Perdona Palliser, tan larga la respuesta y tanto que me he liado. :roll_eyes:

Se que el código esta bien porque es lo que probé en las primeras pruebas y no da problemas.
Como te dije usaba la librería de fat16lib e incluye un ejemplo “Hello World”. Y me refería al golpe psicológico de que es el típico programa que haces cada vez que empiezas en un lenguaje de programación o sistema nuevo y este no funcionaba. XDD
Porque es para sistemas AVR, claro.
Y en ese ejemplo usa el include de la correspondiente libreria. Si se lo quitas, es lo que hice al referirme con lo de quitar el include, corre la versión por defecto del sistema y no da ningún problema por supuesto.

Perdona el embrollo, escribí mucho pero a cachos entre reuniones y pudo quedar todo un poco lioso.