Pages: [1] 2 3   Go Down
Author Topic: Nuova libreria advancedFunctions per Arduino DUE  (Read 4526 times)
0 Members and 1 Guest are viewing this topic.
Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho iniziato a scrivere una libreria che permette di utilizzare le periferiche integrate nel microcontrollore Atmel SAM3X8E dell'Arduino DUE che non sono ancora supportate dal core dell'IDE di Arduino.

Al momento la libreria, chiamata advancedFunctions, supporta l'orologio in tempo reale (Real Time Clock, RTC), che fornisce un orologio ed un datario nonché un allarme, ed il generatore di veri numeri casuali (True Random Number Generator, TRNG) che ha superato anche i test del NIST. Il supporto ad altro hardware verrà aggiunto in seguito.

Utilizzo:
Per usare la libreria, scaricate il pacchetto che trovate in fondo all'articolo e scompattatelo. Una volta estratta la cartella advancedFunctions, dovete copiarla all'interno della cartella /libraries che le ultimissime versioni dell’IDE 1.5.x di Arduino creano all'interno della cartella degli sketch. Questa è cambiata rispetto a prima: adesso si chiama /Arduino su tutti i sistemi (su Linux prima era /sektchbook) e la sua posizione la potete conoscere cliccando sulla voce di menu dell'IDE “File/Preferenze”. Una volta fatto questo, siete pronti ad usare le funzionalità della libreria semplicemente includendola nel vostro sketch con la seguente istruzione:

Code:
#include "advancedFunctions.h"

Come detto, la libreria non supporta tutto l’hardware integrato nel microcontrollore che non è supportato dal core di Arduino. Essendo allo stato iniziale di sviluppo, al momento supporta solo le seguenti periferiche (altre funzionalità saranno aggiunte in seguito):

modulo RTC (Real Time Clock)
L’RTC interno al SAM3X8E è un orologio in tempo reale completo di orario e datario nonché di allarme per mese/giorno/ore/minuti/secondi (ancora da implementare). Le funzionalità sono accessibili mediante l’oggetto rtc. Le spiegazioni su come usarle sono contenute nel file RTC_MODULE.txt.

modulo TRNG (True Random Number Generator)
Il TRNG integrato è molto robusto ed ha passato i test NIST Special Publication 800-22 e Diehard. Esso è capace di generare 32 bit di entropia con elevata casualità (da qui il nome di “vero” generatore) ogni 84 cicli macchina. Le spiegazioni su come usare il generatore sono contenute nel file TRNG_MODULE.txt.

modulo WDT (WatchDog Timer)
Il WatchDog Timer è un contatore che può resettare il microcontrollore se il codice si infila in qualche vicolo cieco logico. L’utente può selezionare l’intervallo di reset fra 1 e 16000 ms. Le spiegazioni su come usare il WatchDog sono contenute nel file WDT_MODULE.TXT.
PS.: non ancora del tutto testato

Licenza e garanzia:
La libreria e gli esempi allegati sono rilasciati sotto licenza GNU General Public License 3.0. Il software è fornito così com’è, senza nessuna garanzia di funzionamento né di responsibilità per il suo utilizzo. Maggiori dettagli sono contenuti nel file README_FIRST.txt

Download:
l'ultima versione della libreria è sempre scaricabile da questa pagina
« Last Edit: May 11, 2013, 11:26:48 am by leo72 » Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Analizzando la libreria vi accorgerete che ci sono degli oggetti non dichiarati ma usati.
Questi oggetti ed i loro metodi fanno parte del framework CMSIS contenuto in /arduino-1.5x/hardware/arduino/sam/system/CMSIS ed incluso di default dal core.
Questo framework mette a disposizione una serie di oggetti per accedere in maniera rapida ai registri del core ARM nonché ai loro flag.

Ovviamente la documentazione è scadente  smiley-sweat e non è facile risalire al modo in cui usare le funzioni del CMSIS (acronimo per Cortex Microcontroller Software Interface Standard). Per ora ho recuperato un pò di info googlando sul forum, su internet e guardando gli header del framework stesso.

Devo dire che di periferiche integrate ce ne sono veramente tante, da perdersi veramente. Questi core ARM sono veramente fantastici.
Logged


Cagliari, Italy
Online Online
Tesla Member
***
Karma: 110
Posts: 6981
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Complimenti.


x iscrizione
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Tuscany
Offline Offline
Edison Member
*
Karma: 68
Posts: 1979
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

wow

@Leo sei sempre di un passo avanti
Logged

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5494
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sei il migliore smiley-wink
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Offline Offline
Sr. Member
****
Karma: 4
Posts: 342
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Complimeti, ti piace proprio sviscerare tutte le potenzialità dell'hardware smiley (ottimo anche il tuo leOS).
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Siccome il mio campo d'elezione è il software, per non sentirmi troppo inferiore ai guru dell'hardware ogni tanto devo pubblicare qualcosa altrimenti la mia fama col tempo si offusca  smiley-yell

A parte gli scherzi, l'altro giorno ho guardato la DUE buttata lì dietro al monitor del PC, su una delle tante cataste di roba del mio "angolino" e mi sono detto: quella scheda lì non la conosco per nulla. Ho preso il datasheet e gli ho dato un'occhiata. Ci sono una marea di cose non supportate dal core. Siccome uno dei miei ultimi lavori è la pRNG, ho pensato che sarebbe stato ganzo studiarmi il generatore integrato. Mi serviva poi un sistema per stampare ogni secondo i dati... e da lì mi son detto: perché non usare l'RTC integrato?
Ecco le prime funzionalità della lib. Poi a breve vorrei implementare il WDT. E non è detto che non provi a replicare il leOS sulla DUE usando il SysTick timer, però per far questo dovrei "sgomberare" lo scheduler integrato  smiley-wink
Logged


Offline Offline
Sr. Member
****
Karma: 4
Posts: 342
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A questo punto facciamo un port di linux e siamo tutti apposto smiley-mr-green
Logged

0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5790
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Complimenti Leo  smiley
Non ho la due quindi no richieste modifiche  smiley
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9172
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

A questo punto facciamo un port di linux e siamo tutti apposto smiley-mr-green

Non è proprio la DUE, però ci stanno lavorando sopra smiley

http://www.kickstarter.com/projects/435742530/udoo-android-linux-arduino-in-a-tiny-single-board
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La UDOO è una scheda biprocessore, una 2-in-1.
All'ARM MX6 monta a fianco un SAM3X per le funzionalità dell'Arduino.
Logged


0
Online Online
Edison Member
*
Karma: 24
Posts: 2294
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

[OT]
Quote
A questo punto facciamo un port di linux e siamo tutti apposto

..intanto perchè non farci girare FreeRTOS?
http://arduino.cc/forum/index.php/topic,152188.msg1229608.html#msg1229608
[/OT]
Logged

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 77
Posts: 4655
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grandissimo @leo !!!  

La gestione della ethernet non dispende solo dal software vero?
Non basta 'attivarla' da software, se in qualche modo si può collegare i pin verso l'esterno?
Logged

my name is IGOR, not AIGOR

Global Moderator
Milano, Italy
Offline Offline
Edison Member
*****
Karma: 19
Posts: 1175
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Beh complimenti per il lavoro e per lo sforzo.

Per la true random number generator ho avuto una sensazione di familiarità col codice presente nel tuo myTrng.cpp, così ho cercato la vecchia discussione (26 ottobre 2012): http://arduino.cc/forum/index.php/topic,129083.msg971696.html#msg971696

Stessa identica soluzione proposta nella correzione di cmaglie....sarebbe bastato usare la funzione cerca del forum  smiley-evil

Stessa cosa vale per la RTC, ne esisteva già una, ma la tua molto probabilmente è molto più leggera.

C'è anche una discussione che ha l'obiettivo di raccogliere tutte le librerie per la Due, magari postala anche lì: http://arduino.cc/forum/index.php?PHPSESSID=25e51167f01e9e67b985b45e94741e78&topic=144446.0

Ad ogni modo è un buon lavoro.
« Last Edit: May 10, 2013, 10:11:28 am by Federico Vanzati » Logged

F

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 521
Posts: 12322
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Leo, ti sei messo a scopiazzare smiley-eek-blue?
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Pages: [1] 2 3   Go Up
Jump to: