Domanda

durante la lettura Ada.Real_Time.Clock subito dopo l'accensione mostra un valore che non è vicino a zero e talvolta anche negativo. Per quanto ne so Ada.Real_Time.Clock supponiamo di ripristinare all'accensione. Come posso ripristinare Ada.Real_Time.Clock?

Grazie.

È stato utile?

Soluzione

Il LRM Ada 2005 dichiara che "in tempo reale è definita come il tempo fisico come osservato nell'ambiente esterno [ enfasi ha aggiunto - MC].

"E non è specificato dal linguaggio se i valori di tempo sono sincronizzati con i riferimenti di tempo standard. Ad esempio, E può corrispondere al tempo di inizializzazione del sistema o può corrispondere all'epoca di qualche tempo standard." ( D.8 [18-19])

Come si afferma, Ada non richiede che "E", l'inizio della epoca che funge da "tempo zero" per i valori di tempo in tempo reale, corrispondono ad un particolare punto di partenza; è lasciato fino al realizzatore compilatore.

Quali che siano i valori specifici numerici si osservano per le istanze del Tempo si sta vedendo, sia vicino che lontano da zero, positivo o negativo, dipendono esclusivamente sulla scelta del realizzatore compilatore di E, come rappresenta i valori volte, e come implementa corrispondentemente la capacità in tempo reale.

Quindi si dovrebbe evitare di scrivere codice che dipende dalla specifica, valori conoscibili di tempo, né il codice che richiede tempo per essere i valori intimamente manipolabile.

Valori Real_Time.Time dovrebbero essere considerate quantità astratte.

Altri suggerimenti

In accordo con Marc. Mentre ho visto alcuni piattaforme che tempo dall'avvio uso (in particolare su piattaforme Intel, dove ritengo amano usare contatore iterazione del processore), che è interamente al produttore del compilatore.

Se avete bisogno di qualcosa come "tempo da quando avvio" e la vostra piattaforma non sta dando quello, allora la cosa da fare sarebbe quella di afferrare Real_Time.Clock quando si avvia, e sottrarre tale valore da tutte le letture più lontano dalla real_time .Clock.

E 'possibile sapere esattamente che cosa facilites sono definiti per il pacchetto real_time, tra cui tutte le sezioni LRM Marc si stava citando, a la sua pagina di LRM qui .

E 'stato molto tempo fa, ma se aiuta qualcuno ... I ha ripristinato l'orologio scrivendo 0 per i registri di base tempo della MCU.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top