Go Down

Topic: [OT ITA] Lo spamm bar (Read 2921200 times) previous topic - next topic

nid69ita

Perseverance, i giornali danno solo brevi notizie con una foto o un video
Qui: https://attivissimo.blogspot.com/2021/02/video-stupefacenti-da-marte.html
Paolo Attivissimo sul suo blog fa un pò un riassunto delle ultime news e alcune chicche.
my name is IGOR, not AIGOR

maubarzi

#28126
Feb 23, 2021, 10:35 am Last Edit: Feb 23, 2021, 10:36 am by maubarzi


:P

E ora vediamo se riuscite a contestare pure questa :smiley-twist:

Maurizio
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

Etemenanki

Ok, tutti sul pullman, che andiamo a contestare sotto casa di Maurizio ... :P :D
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.

Etemenanki

"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.

speedyant

Secondo voi "the value returned is always a multiple of four" riferito alla risoluzione della funzione micros(), significa che se anche lo usasi al posto di millis(), meno di quattro microsecondi non posso gestirlo?
Tradotto, il minimo "lampeggio" sarebbe quattro microsecondi?

maubarzi

#28130
Feb 23, 2021, 11:06 am Last Edit: Feb 23, 2021, 11:07 am by maubarzi


 :P  ;D

Maurizio
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

Etemenanki

#28131
Feb 23, 2021, 11:45 am Last Edit: Feb 23, 2021, 11:45 am by Etemenanki
... manca il grafico ... un solo punto non vale :P :D


> speedyant: credo di si ... minimo 4uS ...
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.

gpb01

#28132
Feb 23, 2021, 12:09 pm Last Edit: Feb 23, 2021, 12:10 pm by gpb01
Tradotto, il minimo "lampeggio" sarebbe quattro microsecondi?
Si, 4 µsec è la "risoluzione", quindi che ne chiedi 1 o ne chiedi 4, sempre 4 ti da ...

Guglielmo

P.S.: sovrapposto con Etem :D
Search is Your friend ... or I am Your enemy !

gpb01

#28133
Feb 23, 2021, 12:53 pm Last Edit: Feb 23, 2021, 12:56 pm by gpb01
La cosa è facilmente comprensibile guardando il codice del "core" (... ho messo insieme alcune parti per semplificare la lettura) ...

Code: [Select]
// the prescaler is set so that timer0 ticks every 64 clock cycles, and the
// the overflow handler is called every 256 ticks.
#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256))

// the whole number of milliseconds per timer0 overflow
#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000)

// the fractional number of milliseconds per timer0 overflow. we shift right
// by three to fit these numbers into a byte. (for the clock speeds we care
// about - 8 and 16 MHz - this doesn't lose precision.)
#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3)
#define FRACT_MAX (1000 >> 3)

#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L )
#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() )
#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() )



unsigned long micros() {
unsigned long m;
uint8_t oldSREG = SREG, t;

cli();
m = timer0_overflow_count;
#if defined(TCNT0)
t = TCNT0;
#elif defined(TCNT0L)
t = TCNT0L;
#else
#error TIMER 0 not defined
#endif

#ifdef TIFR0
if ((TIFR0 & _BV(TOV0)) && (t < 255))
m++;
#else
if ((TIFR & _BV(TOV0)) && (t < 255))
m++;
#endif

SREG = oldSREG;

return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond());
}

... ora, se si esamina l'ultima riga:

Code: [Select]
return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond());
... è evidente che, indipendentemente dal valore ( ( m << 8 ) + t ) il tutto viene moltiplicato per (64 / clockCyclesPerMicrosecond()), ovvero ... 64 / ( F_CPU / 1000000L ), ovvero 64 / 16, ovvero 4  ;D

Da notare che, al calare della F_CPU, la risoluzione peggiora in proporzione ... con il ATmega328P a 8MHz quel rapporto da 64 / 8, ovvero 8 e con il ATmega328P a 1MHz addirittura diventa 64 ... ::)

Guglielmo
Search is Your friend ... or I am Your enemy !

speedyant

Quindi la massima frequenza ottenibile "senza accesso diretto ai pin" dovrebbe essere 400Khz...
Interessante.
Chissá invece millis() come si comporta. Volevo aprire un thread in hardware, ma non credo sia il caso. Era uno sfizio dovuto al fatto di avere una Micro, quindi con quarzo, alcune Uno con risuonatore e parecchie schede con micro a 32bit...

gpb01

#28135
Feb 23, 2021, 01:16 pm Last Edit: Feb 23, 2021, 01:32 pm by gpb01
Il 2 marzo, alle ore 15, c'è un interessante Webinar gratuito di ST ... Content Level Management applications using ST FlightSense Time-of-Flight sensors ...

    • The benefits ToF sensors in content level management
    • How to choose the right sensor for any application
    • The evaluation and development tools available
    • The design resources and software code examples at your disposal

... chi fosse interessato può registrarsi QUI  ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

gpb01

... Chissá invece millis() come si comporta. ...
millis() usa tutt'altra logica e sfrutta un interrupt di Timer0, tanto è vero che, dentro una ISR, dove gli interrupt vengono disabilitati, millis() si ferma e non cammina, mentre micros() funziona. 

Se sei cuirioso vatti a vedere il sorgente nel "core" Arduino  ;D

Guglielmo
Search is Your friend ... or I am Your enemy !

gpb01

#28137
Feb 23, 2021, 01:23 pm Last Edit: Feb 23, 2021, 01:23 pm by gpb01
Quindi la massima frequenza ottenibile "senza accesso diretto ai pin" dovrebbe essere 400Khz...
... da cosa lo deduci? ... se NON accedi direttamnete alle porte, sono le funzioni del "core" (es ... digitalWrite()) che ti rallentano parecchio ::)

Guglielmo
Search is Your friend ... or I am Your enemy !

maubarzi

... manca il grafico ... un solo punto non vale :P :D
Si che vale, è un grafico pure quello e rispetta il requisito  8)

Maurizio
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

gpb01

Mi mancava il POLEMICO di turno ... ::)

Guglielmo
Search is Your friend ... or I am Your enemy !

Go Up