Pages: 1 [2]   Go Down
Author Topic: Liberia SdFat  (Read 1520 times)
0 Members and 1 Guest are viewing this topic.
Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 335
Posts: 23128
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

... L'attesa dell'inserimento di una SD è una di quelle cose da NON mettere in un task: blocchi tutto il micro finché non viene inserita la scheda.

Girando i rete cercavo uno scheduler SW basato su millis giusto per fare quella cosa e guarda cosa mi è venuto fuori: looper... Mi potevi dire che avevi fatto anche quello? Sei troppo modesto...  smiley-wink

EDIT:
Ho visto che non sono includibili insieme...  smiley-cry Mi dice che ONETIME è già stato definito...
Purtroppo no, il looper è stato scritto per sostituire il leOS.
Però col looper puoi fare cose simili a quelle permesse dal leOS, l'unica differenza principale è che col looper non hai più la certezza assoluta dell'esecuzione del task ad intervalli esatti. Ma se si parla di intervalli di centinaia o migliaia di millisecondi (come nel tuo caso) la cosa è irrilevante.
Logged


Genova
Offline Offline
Faraday Member
**
Karma: 43
Posts: 3478
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non è che esiste una funzione (che magari mi è sfuggita) per testare se la SD è ancora presente?

Avevo fatto questo un po' di tempo fa, se tu controllassi gli stati di tutti i pin in tempo reale ti accorgeresti che quando estrai la SD alcuni pin che riguardano l'impegno dello shield e della SD cambiano di stato

Ho creato un controllo e un ripristino automatico nel caso venisse rimossa e reinserita la schedina, il tutto funzionava bene, ma ho ritenuto  inuitile tale funzione dato che ......."Perchè mai dovresti rimuovere la sd mentre il sistema è in funzione?" smiley-lol

Soprattutto se rimuovi la scheda mentre è in lettura non succede nulla la spi si inchioda e va reinizializzata (poco male), ma se la rimuovi mentre è in scrittura la situazione diventa grave, comprometti i settori di inizializzazione e il file system, tutti i dati saranno perduti e va riformattata
« Last Edit: February 26, 2013, 04:58:40 pm by pablos » Logged

no comment

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 335
Posts: 23128
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

L'idea di lesto del led da accendere quando la SD è in uso non è da scartare. Anzi, avverte visivamente l'utente di non rimuovere la scheda pena danni ai propri dati.
Logged


Genova
Offline Offline
Faraday Member
**
Karma: 43
Posts: 3478
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Arduino si accorge che hai tolto la scheda immediatamente, ma non si accorge quando la rimetti .... reinserendola non funziona più a meno che ogni n secondi non gli fai fare il controllo e reinizializzare la stessa, vale la pena fargli perdere questo tempo?
Logged

no comment

0
Offline Offline
Shannon Member
****
Karma: 136
Posts: 10525
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Arduino si accorge che hai tolto la scheda immediatamente, ma non si accorge quando la rimetti .... reinserendola non funziona più a meno che ogni n secondi non gli fai fare il controllo e reinizializzare la stessa, vale la pena fargli perdere questo tempo?

perchè, arduino ha altro da fare nel frattempo?  smiley-mr-green
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Genova
Offline Offline
Faraday Member
**
Karma: 43
Posts: 3478
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bhe si, presumo che il micro debba leggere i pin agire di conseguenza in base al programma, insomma fare le sue cose oltre che vedere se qualcuno lo smembra staccandogli una gamba mentre lavora   smiley-grin smiley-grin smiley-grin
Logged

no comment

Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non male l'idea del led...

Ho creato un controllo e un ripristino automatico nel caso venisse rimossa e reinserita la schedina, il tutto funzionava bene...

Avresti niente da postare?  smiley-wink

Se non riesco a far riconoscere ad Arduino quando la scheda viene inserita prevederò un comando con un tasto o un comando seriale/ethernet per dirgli di montare la SD perché ho visto che la SD2Card::init ci mette un mese ad andare in timeout. A proposito, c'è un modo per abbassare questo tempo?

Piccolo OT:
...Purtroppo no, il looper è stato scritto per sostituire il leOS...
Come potrei fare per usarle insieme? Mi può far comodo nel progetto due schedulatori, uno a interrupt per i task importanti e uno software per le cose un po meno importati e magari più lunghe...
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 335
Posts: 23128
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Piccolo OT:
...Purtroppo no, il looper è stato scritto per sostituire il leOS...
Come potrei fare per usarle insieme? Mi può far comodo nel progetto due schedulatori, uno a interrupt per i task importanti e uno software per le cose un po meno importati e magari più lunghe...
Vedo di fare qualcosa io..
Logged


Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I love you...  smiley-lol
Logged

0
Offline Offline
Shannon Member
****
Karma: 136
Posts: 10525
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

IWE love you...  smiley-lol
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 335
Posts: 23128
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Prova l'allegato.
la lib si chiama looper2, la includi con
Code:
#include "looper2.h"
e poi la istanzi con qualcosa tipo
Code:
looper2 myScheduler
I metodi hanno nomi differenti: al posto di addTask, removeTask.... adesso c'è addJob, removeJob... ecc..
ONETIME è stato sostituito da ONE_TIME.

A parte queste modifiche visibile dall'esterno, internamente ci sono tutta una serie di nomi diversi per le variabili, per evitare doppioni con quelle del leOS.

Allegato c'è uno sketch che dimostra come il leOS ed il looper funzionino insieme

* looper2-0.3.0.zip (5.86 KB - downloaded 10 times.)
Logged


0
Offline Offline
Shannon Member
****
Karma: 136
Posts: 10525
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

più veloce della luce smiley
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Di già?  smiley-lol smiley-lol smiley-lol
Grazie mille...
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 335
Posts: 23128
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Avevo 20 minuti da buttar via ;-)
Logged


Pages: 1 [2]   Go Up
Jump to: