Nuova libreria advancedFunctions per Arduino DUE

Alla fine gli Americani hanno mollato, speriamo succeda anche qui.

Vi riporto l'esperienza che ho avuto 20 anni fa. Dovevo vendere un software, che al tempo era rivoluzionario, e l'azienda interessata all'acquisto lo faceva esclusivamente se veniva brevettato; Mi ricordo le ore passate all'ufficio brevetti a Milano :D Mi sembra che l'unico software brevettabile sia quello topografico, ma può essere che le cose siano cambiate...

Tornando a noi: L'apporto che ha dato e sta dando Leo a questa comunità è indiscusso; Non penso serva aggiungere altro.

"Non ti curar di lor, ma guarda e passa"

astrobeed: Un esempio banale, ieri mi hanno fatto notare che è stato realizzato un blocco dell'autoreset per la DUE, per 16u2, questa modifica è praticamente identica a quella che io ho proposto, molti mesi fa, per la UNO, eppure non andrò mai a dire che la persona ha copiato la mia perché effettivamente non c'è altro per farlo ed è normale che i due lavori siano quasi identici.

azz, gira gira il cetriolo è tornato al suo posto :D :D :D

Voglio fare una precisazione: la mia era ovviamente una battuta, in quanto conosco il valore e l'onestà morale ed intellettuale di Leo, non a caso abbiamo collaborato già diverse volte, con reciproca soddisfazione, ho grande stima del suo operato e dell'apporto che dà al Forum, anche nella sua nuova veste di Moderatore che esercita alla perfezione, voglio augurarmi che ciò alla lunga non gli arrechi danno. Per quanto lo conosco posso garantire che Leo non ha alcuna intenzione di cambiare rotta, il suo è il sacrosanto sfogo di chi non riesce a comprendere il vero motivo (se esiste...) di un intervento che, a quanto pare, ha lasciato tutti perplessi, e qui mi fermo se no finisce che poi sono io ad assumere il ruolo dell'ortolano :sweat_smile:

pighixxx: ... L'apporto che ha dato e sta dando Leo a questa comunità è indiscusso; Non penso serva aggiungere altro.

+1 ... senza alcun dubbio !!!

Guglielmo

Nuova versione 0.3.0 della libreria con aggiunta del modulo WDT per gestire il watchdog del SAM3X.

Si hanno 3 metodi:

wdt.enable(intervallo);

Imposta il timer del WatchDog con l'intervallo in millisecondi specificato da intervallo. Questo può andare da 1 a 16000 ms (16 secondi).

wdt.restart();

Riavvia il contatore del WDT in modo che questo non resetti il micro. Deve essere l'ultima istruzione del blocco di codice che si vuole controllare non si blocchi. Generalmente è in fondo al loop().

wdt.disable();

Disabilita il WDT.

PS: siccome non sono a casa, ho scritto questo modulo senza provarlo materialmente. Se qualcosa va storto.... pulsante ERASE sulla schedina per piallare completamente la Flash ;)

Guarda che io non ho accusato proprio nessuno di aver copiato! Semmai lo avrà pensato chi è corso sulle difensive.

Ti devo dire che appena ho visto il titolo “Nuova libreria advancedFunctions per Arduino DUE” e che eri tu l’autore ho subito pensato a qualcosa di interessante e aperto la discussione.
Purtoppo però, per me, di nuovo (come reciti nel titolo) non c’era nulla: True Random Number Generator e RTC interno, sono argomenti che sono stati trattati dalla community appena è uscita la Due.
E mi sono chiesto come mai, anzichè partecipare allo sviluppo condiviso, vero motore dell’open source, tu avessi deciso di lavorare da solo.
Sarebbe un insulto alla mia e alla tua intelligenza pensare che tu non abbia pensato almeno una volta di fare una ricerca sul forum in merito a questi due temi. Quindi, l’unica mia critica era rivolta al fatto che un personaggio come te, che crede nell’open source, abbia deciso di cimentarsi e portare avanti da solo del lavoro sapendo che altra gente precedentemente aveva già iniziato a lavorare alle stesse cose.

Poi, dando peso a quello che dice Astro, so benissimo che trattandosi di periferiche hardware che, funzionano in un solo modo, è facile arrivare alla stessa soluzione di altri quindi, ancora una volta: perchè duplicare? Nota che non mi sarei mai permesso di criticare se non avessi conosciuto almeno un po’ quello che stavo criticando.

Se avessi voluto essere più pignolo e malpensante sulla true random generator mi sarei espresso dicendo che è singolare che anche tu abbia deciso di resettare l’interrupt del TRNG mettendo a 1 tutti i 32 bit del registro (TRNG->TRNG_IDR = 0xFFFFFFFF;) e non usando l’apposita macro che setta solo quello giusto (TRNG->TRNG_IDR = TRNG_IDR_DATRDY;) e di usare il “trucco” della variabile statica per fare la configuazione una sola volta.

Chiaro che ognuno è libero di fare ciò che vuole, quindi tu di accorpare tutto in una singola libreria mettendoci le modifiche che vuoi, ma io sarò libero di criticare e dire la mia. La mia voleva essere una critica costruttiva, tant’è che ti ho proposto di inserire la tua libreria nella discussione che ha lo scopo di raccogliere tutte le librerie compatibili con la Due.

Per il watchdog, anch’io oggi non ho la possibilità di provare, ma ho dei dubbi che possa funzionare perchè il Watchdog Mode Register (WDT_MR) si può configurare una volta ogni reset del processore e di default il watchdog viene disabilitato nella funzione init(), di fatto precludendoti la possibilità di riabilitarlo nello sketch.
Per farlo funzionare bisognerebbe almeno commentare la funzione che lo disabilita nel file variant.cpp della Due.
Questa discussione è un buon punto di partenza: http://arduino.cc/forum/index.php?PHPSESSID=f051a28da4cafb100c6a863750e44861&topic=132986.0

Il fatto che tutti quelli che sono intervenuti hanno interpretato il tuo messaggio come una critica ed un'accusa a Leo deve farti almeno mettere in conto che forse lo hai scritto male, invece non leggo nulla nella tua controrisposta su questo punto.

[quote author=Federico Vanzati link=topic=165456.msg1238025#msg1238025 date=1368351692] E mi sono chiesto come mai, anzichè partecipare allo sviluppo condiviso, vero motore dell'open source, tu avessi deciso di lavorare da solo. [/quote] Questo e' un tuo parere contestabile senza problemi, leo mette a disposizione di tutti il suo lavoro e non desina spiegazioni se gli vengono chieste, credo che lui faccia parte di quelli che credono e portano avanti l'open source. Anche io, che invece non ti farei mai vedere un mio progetto, credo fermamente nell'opensource. Ogn'uno ci crede a modo suo. L'arduino Team non ha mai fatto nulla per appoggiare o incoraggiare la contribuzione alle librerie ufficiali.

Federico, se non sono stato il solo ad aver male interpretato il tuo intervento, ci sono stati anche altri utenti che lo hanno fatto, forse la colpa non è tutta mia. ;)

A parte questo, io credo nell'open-source ma, come vedrai, frequento principalmente questa sezione. Ho provato alle volte a scrivere anche sul forum internazionale ma il mio inglese è.... scolastico. Se iniziano a scrivere con modi di dire o quant'altro come si fa noi con l'italiano, non capisco più nulla e non riesco a capire cosa voglia dire la gente. Per cui visto che comunque avevo un "lavoro" da fare qui, ho iniziato a seguire solo questa sezione. La critica che faccio tutto di testa mia è quindi fondata, contribuisco con un sacco di materiale ma tendo a lavorare per proprio conto. E mi capita spesso di replicare ciò che è stato fatto da altri perché spesso non guardo sul forum internazionale. Ad esempio il leOS è uno scheduler veramente minimale e di RTOS veri ne sono stati fatti diversi ma io l'ho voluto realizzare comunque perché mi piaceva.

Tornando alle librerie tutto quello che ho scritto è disponibile sia sul mio sito che su github: https://github.com/leomil72

Mi spiace di essermi preso con te e mi scuso in pubblico come in pubblico ti avevo criticato

Testato: L'arduino Team non ha mai fatto nulla per appoggiare o incoraggiare la contribuzione alle librerie ufficiali.

Scherzi? Se vuoi contribuire puoi: * aprire una issue su github (prima su google code) se vuoi segnalare un problema, altrimenti se vuoi sottomettere una patch puoi fare direttamente una pull request. * partecipare alla mailing list dei Developers * Usare le sezioni appropriate del forum * e perchè no, anche la mail support@arduino.cc

Testato: Il fatto che tutti quelli che sono intervenuti hanno interpretato il tuo messaggio come una critica ed un'accusa a Leo deve farti almeno mettere in conto che forse lo hai scritto male, invece non leggo nulla nella tua controrisposta su questo punto.

+

leo72: Federico, se non sono stato il solo ad aver male interpretato il tuo intervento, ci sono stati anche altri utenti che lo hanno fatto, forse la colpa non è tutta mia. smiley-wink

Posso anche metterla in conto, anche se, e non credo di essere presuntuoso nel dirlo, nel mio primo post ci vedo solo una critica e nessuna accusa o attacco. Se sono stato frainteso posso anche scusarmi per aver dato adito a fraintendimento. Mi sembra che ora i malintesi si siano chiariti però.

@leo: continuerò a leggere la discussione per vedere gli sviluppi sul watchdog.

Ho notato 2 piccole imprecisioni: - nel myWdt.h hai "ereditato" un commento dal trng:

//class to get random numbers from the internal TRNG
class myWdt {
...
  • nella libreria myTrng usi i metodi getLong() e getInt(), questi due nomi potrebbero generare confusione sulla dimensione dei tipi, visto che sugli ARM gli int sono a 32-bit, come i long.

Ieri giornata di lavoro piena per cui non ho potuto fare test né controllare alcunché. Ho però tratto spunto dalla discussione sul WDT, effettivamente ho letto che bisogna editare quel file altrimenti il WDT non lo si può cambiare più: il fatto che il registro WDT_MC fosse impostabile solo 1 volta dopo il reset lo avevo letto anch'io nel datasheet ma non sapevo che il core di Arduino lo disattivasse. Oggi vedo se riesco a fare dei test. Il prox modulo è l'RTT (Real Time Timer).

Ho aggiornato la lib alla 0.3.1. Ho sistemato il modulo WDT, che ora funziona. Ma, come aveva previsto Federico, ci vuole anche la modifica al file del core altrimenti non è possibile poi riprogrammare il WDT.