Arduino ad alte prestazioni: Serie ATXmega

Qualcuno ha provato a fare il porting sugli atxmega?

Avendo necessità di più potenza elaborativa (gli ATXmega vanno a 32MHz, sempre con 1 istr. per ciclo, quindi 32 MIPS) e senza doversi prendere per forza una DUE (più che altro il SAM a 144pin è decisamente difficile da saldare a mano...) gli ATX sembrano una scelta naturale.

Qualche modello e data-sheet di riferimento? Devo fare un ordine di materiale, se a prima occhiata vedo sufficienti similitudini qualche prova la faccio :slight_smile:

Il porting c'è già.

Uso con soddisfazione gli XMega da tempo al posto degli ATMega (senza porting ma direttamente con le librerie di Atmel)

I micro XMega con USB sono un pò un casotto, nel senso che ho riscontrato instabilità (blocchi del sistema) e la loro programmazione non è banale, per il resto hanno ADC, DAC etc.. tutto migliorato rispetto agli ATMega.

La versione con USB l'ho spinta senza grossi problemi fino a 48 MHz.

Non sono 5v compatibili ma ormai questo non è più un grosso problema.

Questa è interessante
--> https://www.tindie.com/products/omega/atxmega128a4u-breakout/

Datasheet --> http://www.atmel.com/images/Atmel-8387-8-and16-bit-AVR-Microcontroller-XMEGA-A4U_Datasheet.pdf

Altro materiale
--> Why (and how) you should start using XMEGAs – Inductive-Kickback.com

Eh, si, molto molto interessante.

Non lo vedo molto nelle applicazioni industriali, dove dovrei fare una board con tutte le conversioni a 24V, però è proprio un bel chip !

Ho dato un'occhiata in giro e c'è il porting XMEGADUINO.

Il punto chiave (per flz47655) è l'impiego del linguaggio Arduinesco per la prototipazione veloce.

Se devo usare le librerie AVR tanto vale rimango sui PIC32 (visto che ho investito molto tempo per conoscerne l'architettura) o ARM di STM con le CMSIS.

Ho bisogno di un sistema per fare prove veloci, e adesso Arduino mi rimane un pò "morto-di-sonno", mentre il SAM presente sulla DUE, mi è antipatico.

Per Michele: Brevemente... Gli XMEGA sono diversi dai soliti AT, anche se la conoscenza degli AT non è sprecata ma può essere positivamente sfruttata per velocizzare la parabola di apprendimento.

I vantaggi sono le periferiche, tutte quelle più appetibili e che di solito sono uso esclusivo di processori Hi-End a 32 bit (moduli Full Speed USB, Crypto Engine in AES, DMA, un sofisticato Event System, ed altro).
E' cmq un 8 bit, da cui la semi-semplicità di utilizzo (meno ricorso a lunghi puntatori a cosi a 32 bit).

La velocità non è da urlo; 32MHz con 1 ciclo per clock, quindi 32 MIPS (ci vuole un PIC a 16 bit della serie H per raggiungere queste prestazioni) però siamo al doppio di una UNO a 16MHz.

Con 32MHz si comincia a stare un pò più sereni con l'uso intensivo della seriale(115000), senza Buffer Overflow Hardware dei 3 byte del registro interno del chippetto, o Software dei 128 byte, se una ISR dura mezzo millesimo in più!

Ora mi studio un pò questo XMEGADUINO... GitHub - Xmegaduino/Xmegaduino: Xmegaduino fork of Arduino

La libreria di Atmel si chiama ASF e ti consiglio di dargli un'occhiata, per molte cose ha il solito livello di astrazione della programmazione Arduino

CMSIS non è di ST ma è uno standard proprio per rendere uniforme la libreria di base degli ARM di produttori diversi

I 32 MIPS ovviamente sono con condizioni di pipeline ideali, è comunque meglio dei 20 MHz degli ATMega, sopratutto per il PLL integrato che permette di gestire più dinamicamente la frequenza (quando serve si aumenta, quando non serve si può diminuire)

Se vi servono delle dritte sugli XMega sono qui

Tutto quello che hai detto mi è già noto. Le ASF sono le astrazioni ATMEL per evitare di aggeggiare direttamente con i registri, così come lo sono le CMSIS (Ho nominato gli STM che mi sono i più familiari, ma le CMSIS sono "abbastanza" universali per l'architettura Cortex, a prescindere dal costruttore).

Quanto al PLL, con frequenze fino a 200 MHz, è d'obbligo, a meno che di non voler costruire un involontario trasmettitore in VHF... ma non è prerogativa dei PIC. Anche l'ATXmega ha il PLL (32MHz raggiungibili anche con quarzo da 8 MHz).

Per le dritte sugli XMEGA, verrai sfruttato vergognosamente...!

Poi il lavoro di fatica lo faremo fare a Michele, così sfrutteremo vergognosamente anche lui! :grinning:

A proposito, mi domando come mai non sia stata sondata da Banzi e soci l'architettura XMEGA. Ci poteva uscire l'Arduino UNOeMEZZO!
A parte gli scherzi... probabilmente avrebbe avuto anche più successo della DUE (e della ZERO... che non c'è...)!

Dimenticavo... Costano un sacco i chip ATXmega. :frowning:

Costa più un ATXmega256AU (32MHz, 256KB Flash) che un mostruoso PIC32MZ a 200 MHz con, 2048KB, doppio modulo CAN, 6 UART, 6 SPI, 5 I2C, USB FULL, Crypto Engine, Ethernet, 8CH DMA, 12bit ADC, DAC, PMP, I2S, SQI, LIN etc. etc.... :roll_eyes:

Ah! e c'ha pure la MMU! :relaxed:

I prezzi degli XMega sono molto "floating", quando gli ho presi costavano come gli ATMega (parlo degli ATXMega32A4U), poi hanno impennato, poi sono riscesi.. a decidere il prezzo è molto anche la domanda.

C'erano periodi in cui era difficili ordinarli in quanto erano finite le scorte..

Non sono stati scelti perché le prime versioni avevano bug hw e una reperibilità fisica molto limitata (non ne avevano mai a magazzino).

Se fai i conti però di quanto costa un atmega328p + chip fdti il costo della versione USB degli XMega alla fine non è così impossibile.. se poi ci metti un DAC esterno, il minor spazio su pcb, etc.. si risparmia parecchio

Va da se che i PIC32 hanno altri livelli di prestazioni.. e di consumi!