<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Speed Test Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/speed-test/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/speed-test/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Sun, 14 Feb 2021 15:04:01 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://logicaprogrammabile.it/wp-content/uploads/2017/11/cropped-logicaprogrammabile-logo-02-32x32.png</url>
	<title>Speed Test Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/speed-test/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Come usare pin IO digitali della Pico</title>
		<link>https://logicaprogrammabile.it/come-usare-pin-gpio-digitali-raspberry-pico/</link>
					<comments>https://logicaprogrammabile.it/come-usare-pin-gpio-digitali-raspberry-pico/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 15 Feb 2021 07:00:43 +0000</pubDate>
				<category><![CDATA[Tutorial Raspberry PI]]></category>
		<category><![CDATA[GPIO]]></category>
		<category><![CDATA[Pi Pico]]></category>
		<category><![CDATA[Speed Test]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=6562</guid>

					<description><![CDATA[<p>Gestire linee IO della Pico La Pi Pico possiede 26 linee GPIO. Per poterle utilizzarle dobbiamo definirle come linee di ingresso o come linee di uscita, come avviene con Arduino con l&#8217;istruzione pinMode(). Realizziamo un semplice circuito come il seguente: In questo caso le istruzioni...</p>
<p>The post <a href="https://logicaprogrammabile.it/come-usare-pin-gpio-digitali-raspberry-pico/">Come usare pin IO digitali della Pico</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p></p>
<h1>Gestire linee IO della Pico</h1>
<p>La Pi Pico possiede 26 linee GPIO. Per poterle utilizzarle dobbiamo definirle come linee di ingresso o come linee di uscita, come avviene con Arduino con l&#8217;istruzione pinMode().</p>
<figure id="attachment_6577" aria-describedby="caption-attachment-6577" style="width: 592px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" class="wp-image-6577 size-full" src="https://logicaprogrammabile.it/wp-content/uploads/2021/02/pipo_pinout.jpg" alt="pico pinout" width="592" height="599" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/02/pipo_pinout.jpg 592w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/pipo_pinout-296x300.jpg 296w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/pipo_pinout-148x150.jpg 148w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/pipo_pinout-80x80.jpg 80w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/pipo_pinout-585x592.jpg 585w" sizes="(max-width: 592px) 100vw, 592px" /><figcaption id="caption-attachment-6577" class="wp-caption-text">pinout della raspberry pi pico</figcaption></figure>
<p>Realizziamo un semplice circuito come il seguente:</p>
<figure id="attachment_6579" aria-describedby="caption-attachment-6579" style="width: 395px" class="wp-caption aligncenter"><img decoding="async" class="wp-image-6579 size-full" src="https://logicaprogrammabile.it/wp-content/uploads/2021/02/blink_test_led.jpg" alt="led test gpio" width="395" height="415" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/02/blink_test_led.jpg 395w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/blink_test_led-286x300.jpg 286w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/blink_test_led-143x150.jpg 143w" sizes="(max-width: 395px) 100vw, 395px" /><figcaption id="caption-attachment-6579" class="wp-caption-text">led collegato al GPIO 15 (pin 20 della scheda)</figcaption></figure>
<p><span id="more-6562"></span></p>
<p>In questo caso le istruzioni da utilizzare fanno parte del modulo machine, quindi la prima istruzione da usare e l&#8217;importazione del modulo:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import machine</pre>
<p>per definire un pin come uscita digitale utilizzeremo questa istruzione:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">led = machine.Pin(15, machine.Pin.OUT)</pre>
<p>L&#8217;oggetto led possiede il metodo value che permette di portare a livello alto o basso lo stato del pin:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">led.value(1) # mette alto il pin 15
led.value(0) # mette basso il pin 15</pre>
<p>Il classico blink del led si esegue con il seguente codice:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import machine
import utime

#definisco il pin gpio 15 come uscita
led = machine.Pin(15, machine.Pin.OUT)

while(1):
    led.value(1) # uscita a livello logico alto
    utime.sleep(1) # pausa di 1 secondo
    led.value(0) # uscita a livello logico basso
    utime.sleep(1) # pausa di 1 secondo
    
</pre>
<h2>GPIO Speed Test</h2>
<p>Dal codice precedente, eliminando l&#8217;istruzione sleep() possiamo misurare la velocita massima di commutazione del pin</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">import machine
import utime

#definisco il pin gpio 15 come uscita
led = machine.Pin(15, machine.Pin.OUT)

while(1):
    led.toggle() # mette l'uscita alta e poi bassa </pre>
<p>ottenendo una frequenza di commutazione di circa 60,5 KHz ma che presenta una continua variazione del livello alto dell&#8217;onda di circa  +- 1.3uS</p>
<p><img decoding="async" class="aligncenter size-full wp-image-6581" src="https://logicaprogrammabile.it/wp-content/uploads/2021/02/flutuazione.jpg" alt="flutuazione" width="416" height="451" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/02/flutuazione.jpg 416w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/flutuazione-277x300.jpg 277w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/flutuazione-138x150.jpg 138w" sizes="(max-width: 416px) 100vw, 416px" /></p>
<p>Questo fenomeno e tipico in tutti i microcontrollori che eseguono codice interpretato, queste latenze sono intrinseche e tipicamente tollerate in questi sistemi. Per avere tempistiche certe nell&#8217;esecuzione dei programmi dobbiamo usare codici compilati e ottimizzati per l&#8217;architettura del microcontrollore.</p>
<h2>Configurare un ingresso digitale</h2>
<figure id="attachment_6582" aria-describedby="caption-attachment-6582" style="width: 440px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-6582 size-full" src="https://logicaprogrammabile.it/wp-content/uploads/2021/02/test_button.jpg" alt="button pin in" width="440" height="498" srcset="https://logicaprogrammabile.it/wp-content/uploads/2021/02/test_button.jpg 440w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/test_button-265x300.jpg 265w, https://logicaprogrammabile.it/wp-content/uploads/2021/02/test_button-133x150.jpg 133w" sizes="auto, (max-width: 440px) 100vw, 440px" /><figcaption id="caption-attachment-6582" class="wp-caption-text">pulsante sul pin 16 con resistenza di pull-up</figcaption></figure>
<p>allo stesso modo delle istruzioni viste in precedenza possiamo definire un pin in ingresso con il seguente codice:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import machine
import utime

#definisco il pin gpio 15 come uscita
led = machine.Pin(15, machine.Pin.OUT)
#definisco il pin gpio 16 come ingresso
pulsante = machine.Pin(16, machine.Pin.IN)

while(1):
    if pulsante.value() == 0:
        print("pulsante premuto!")

        utime.sleep(0.2)
    <br />    # continuo a commutare il pin 15<br />    #la frequenza ora è di circa 26KHz
    led.toggle()

</pre>
<h2>Utilizzare un thread</h2>
<p>Lo svantaggio di avere delle latenze dovute alla presenza dell&#8217;interprete MicroPython può essere in parte compensato da un linguaggio ad alto livello che permette di scrivere il codice con un approccio moderno come quello dell&#8217;uso dei Thread.</p>
<p>Un thread è un processo che può essere eseguito in contemporanea (o quasi) con l&#8217;esecuzione di altro codice. Nell&#8217;esempio seguente il codice del thread controllerà quando premiamo il pulsante. Mentre il resto del programma continuerà a eseguirà le altre istruzioni.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import machine
import utime
import _thread

#creo una variabile globale che verrà usata in tutte le funzioni
global stato_pulsante
stato_pulsante = False

#definisco il pin gpio 15 come uscita
led = machine.Pin(15, machine.Pin.OUT)
#definisco il pin gpio 16 come ingresso
pulsante = machine.Pin(16, machine.Pin.IN)
<br />#creo una funzione che verrà gestita dal thread
def leggi_stato_pulsante():
    global stato_pulsante
    while True:<br />        # se premo il pulsante cambio il valore della <br />        # variabile globale
        if pulsante.value() == 0:
            stato_pulsante = True
            utime.sleep(0.2)
<br />#creo un thread e lo associo alla funzione precedentemente creata
_thread.start_new_thread(leggi_stato_pulsante, ())
<br />#questo è il codice del thread principale
while True:<br />    #controllo il valore della variabile globale
    if (stato_pulsante == True):
        print("pulsante premuto!")
        #reimposto la variabile globale a False
        global stato_pulsante
        stato_pulsante = False
    <br />    #continuo a eseguire la commutazione del pin 15
    led.toggle()</pre>
<p>L&#8217;effetto di questo codice è uguale al precedente ma la scrittura del codice rimane qualitativamente migliore.</p>
<p>&nbsp;</p><p>The post <a href="https://logicaprogrammabile.it/come-usare-pin-gpio-digitali-raspberry-pico/">Come usare pin IO digitali della Pico</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/come-usare-pin-gpio-digitali-raspberry-pico/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MKR1000 gpio speed test</title>
		<link>https://logicaprogrammabile.it/mkr1000-gpio-speed-test/</link>
					<comments>https://logicaprogrammabile.it/mkr1000-gpio-speed-test/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Fri, 17 Feb 2017 17:50:39 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[GPIO Speed Test]]></category>
		<category><![CDATA[Speed Test]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=5452</guid>

					<description><![CDATA[<p>Misurare frequenza di commutazione di una linea gpio della MKR1000 La MKR1000 è una scheda molto compatta, dal prezzo contenuto, che permette di realizzare interessanti progetti IoT. Questa scheda è basata sul SoC ATMEL ATSAMW25 (famiglia di dispositivi ATMEL Wireless) ed è l&#8217;insieme di questi...</p>
<p>The post <a href="https://logicaprogrammabile.it/mkr1000-gpio-speed-test/">MKR1000 gpio speed test</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Misurare frequenza di commutazione di una linea gpio della MKR1000</h1>
<p>La <strong>MKR1000</strong> è una scheda molto compatta, dal prezzo contenuto, che permette di realizzare interessanti progetti <strong>IoT</strong>. Questa scheda è basata sul <strong>SoC</strong> ATMEL <strong>ATSAMW25</strong> (famiglia di dispositivi ATMEL Wireless) ed è l&#8217;insieme di questi moduli:</p>
<ul>
<li>MCU <strong>SAMD21 Cortex-M0+</strong> 32bit operante alla frequenza di 48MHz</li>
<li>Modulo Wi-Fi <strong>WINC1500</strong> a basso consumo (2.4GHz IEEE® 802.11 b/g/n)</li>
<li>Crittografia per comunicazioni sicure basate sul chip <strong>ECC508</strong></li>
<li>Antenna implementata sul PCB</li>
</ul>
<p>La scheda possiede anche un caricabatterie per <strong>batterie Li-Po</strong> rendendola quindi adoperabile in ambienti dove non è presente una fonte di energia costante.<br />
In questo articolo andremmo a misurare la velocità di commutazione di un pin digitale eseguendo lo stesso codice che ho usato per gli altri gpio speed test.</p>
<p>Questo test è puramente indicativo, è un metodo molto semplice che eseguo per fare un piccolo paragone tra le schede in mio possesso.</p>
<p>La figura seguente mostra lo schema elettrico che ho utilizzato:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5476" src="https://logicaprogrammabile.it/wp-content/uploads/2017/02/MKR1000_SpeedTest.png" alt="MKR1000 Gpio SPeed Test" width="338" height="241" srcset="https://logicaprogrammabile.it/wp-content/uploads/2017/02/MKR1000_SpeedTest.png 338w, https://logicaprogrammabile.it/wp-content/uploads/2017/02/MKR1000_SpeedTest-300x214.png 300w" sizes="auto, (max-width: 338px) 100vw, 338px" /></p>
<p><span id="more-5452"></span></p>
<p>Mentre il codice seguente è quello caricato sulla scheda <strong>MKR1000</strong>:</p>
<pre class="lang:arduino decode:true">void setup()
{
  //pin5 in uscita
  pinMode(5, OUTPUT);
}
 
void loop()
{
  //ciclo infinito
  while(true)
  {
    //metto il pin5 alto
    digitalWrite(5, HIGH);
    //metto il pin5 basso
    digitalWrite(5, LOW);
  }
}</pre>
<p>Il risultato ottenuto è di circa <strong>310KHz</strong>:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5477" src="https://logicaprogrammabile.it/wp-content/uploads/2017/02/mkr1000Oscillo.png" alt="io speed test mkr1000" width="800" height="480" srcset="https://logicaprogrammabile.it/wp-content/uploads/2017/02/mkr1000Oscillo.png 800w, https://logicaprogrammabile.it/wp-content/uploads/2017/02/mkr1000Oscillo-300x180.png 300w, https://logicaprogrammabile.it/wp-content/uploads/2017/02/mkr1000Oscillo-768x461.png 768w, https://logicaprogrammabile.it/wp-content/uploads/2017/02/mkr1000Oscillo-600x360.png 600w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Di seguito la tabella comparativa dei test di commutazione ottenuta eseguendo il medesimo codice:</p>
<table>
<tbody>
<tr>
<td><strong>Tipo Scheda</strong></td>
<td><strong>Frequenza di commutazione</strong></td>
</tr>
<tr>
<td>Genuino 101</td>
<td>320 KHz</td>
</tr>
<tr>
<td>Genuino MKR1000</td>
<td>310 KHz</td>
</tr>
<tr>
<td>Flyport Ethernet</td>
<td>134.5 KHz</td>
</tr>
<tr>
<td>Arduino UNO</td>
<td>125 KHz</td>
</tr>
<tr>
<td>Arduino LEONARDO / MICRO</td>
<td>106 KHz</td>
</tr>
<tr>
<td>Netduino Plus 2</td>
<td>44.27 KHz</td>
</tr>
<tr>
<td>FEZ Panda II</td>
<td>12.7 KHz</td>
</tr>
<tr>
<td>Netduino</td>
<td>8.4 KHz</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>The post <a href="https://logicaprogrammabile.it/mkr1000-gpio-speed-test/">MKR1000 gpio speed test</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/mkr1000-gpio-speed-test/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Flyport Ethernet Speed Test</title>
		<link>https://logicaprogrammabile.it/flyport-ethernet-speed-test/</link>
					<comments>https://logicaprogrammabile.it/flyport-ethernet-speed-test/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Fri, 28 Jun 2013 10:36:13 +0000</pubDate>
				<category><![CDATA[OpenPicus]]></category>
		<category><![CDATA[Flyport]]></category>
		<category><![CDATA[GPIO]]></category>
		<category><![CDATA[Speed Test]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=3701</guid>

					<description><![CDATA[<p>Risultati velocità di commutazione pin digitale Anche per il modulo Flyporyt Ethernet ho realizzato lo speed test come quello per le schede Netduino, Arduino e GHI. Il test consiste nella commutazione continua di un singolo pin digitale, misurando con un oscilloscopio, la frequenza risultante. Il...</p>
<p>The post <a href="https://logicaprogrammabile.it/flyport-ethernet-speed-test/">Flyport Ethernet Speed Test</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Risultati velocità di commutazione pin digitale</h3>
<p>Anche per il modulo <strong>Flyporyt Ethernet</strong> ho realizzato lo <strong>speed test</strong> come quello per le schede <strong>Netduino</strong>, <strong>Arduino</strong> e <strong>GHI</strong>. Il test consiste nella commutazione continua di un singolo pin digitale, misurando con un oscilloscopio, la frequenza risultante.</p>
<p>Il circuito elettrico dei collegamenti è il seguente:</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2013/06/FlyportSpeedTestOsc.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3705" src="https://logicaprogrammabile.it/wp-content/uploads/2013/06/FlyportSpeedTestOsc.png" alt="Circuito Speed Test Flyport" width="574" height="350" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/06/FlyportSpeedTestOsc.png 574w, https://logicaprogrammabile.it/wp-content/uploads/2013/06/FlyportSpeedTestOsc-300x182.png 300w" sizes="auto, (max-width: 574px) 100vw, 574px" /></a></p>
<p><span id="more-3701"></span></p>
<p>mentre questo è il risultato della misura:</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2013/06/FlyportSpeedTest.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3703" src="https://logicaprogrammabile.it/wp-content/uploads/2013/06/FlyportSpeedTest.png" alt="Flyport Ethernet Speed Test" width="629" height="449" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/06/FlyportSpeedTest.png 629w, https://logicaprogrammabile.it/wp-content/uploads/2013/06/FlyportSpeedTest-300x214.png 300w" sizes="auto, (max-width: 629px) 100vw, 629px" /></a></p>
<p>Come si può osservare la frequenza e di ben<strong> 134.5KHz</strong>, un risultato che reputo molto soddisfacente, paragonato ai precedenti speed test.</p>
<p>La tabella seguente riepiloga i risultati misurati con le varie schede</p>
<table>
<tbody>
<tr>
<td><strong>Tipo Scheda</strong></td>
<td><strong>Frequenza di commutazione</strong></td>
</tr>
<tr>
<td>Flyport Ethernet</td>
<td>134.5 KHz</td>
</tr>
<tr>
<td>Arduino UNO</td>
<td>125 KHz</td>
</tr>
<tr>
<td>Arduino LEONARDO / MICRO</td>
<td>106 KHz</td>
</tr>
<tr>
<td>FEZ Panda II</td>
<td>12.7 KHz</td>
</tr>
<tr>
<td>Netduino Plus 2</td>
<td>44.27 KHz</td>
</tr>
<tr>
<td>Netduino</td>
<td>8.4 KHz</td>
</tr>
</tbody>
</table>
<p>Lo speed test è indicativo e non stabilisce certamente la scheda migliore. Ogni dispositivo possiede pro e contro a prescindere dal risultato dello speed test.</p>
<p>The post <a href="https://logicaprogrammabile.it/flyport-ethernet-speed-test/">Flyport Ethernet Speed Test</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/flyport-ethernet-speed-test/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Netduino Plus 2 Speed Test</title>
		<link>https://logicaprogrammabile.it/netduino-plus-2-speed-test/</link>
					<comments>https://logicaprogrammabile.it/netduino-plus-2-speed-test/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Thu, 17 Jan 2013 11:29:23 +0000</pubDate>
				<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[.Net micro framework]]></category>
		<category><![CDATA[Speed Test]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=3249</guid>

					<description><![CDATA[<p>Velocità di commutazione del nuovo Netduino Plus 2 Eccoci nuovamente al mio classico speed test per misurare la frequenza massima ottenibile dalla commutazione continua di un singolo pin. La scheda in esame è il nuovo Netduino Plus 2 basato sulla cpu STmicro STM32F4 operante a...</p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-plus-2-speed-test/">Netduino Plus 2 Speed Test</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Velocità di commutazione del nuovo Netduino Plus 2</h3>
<p>Eccoci nuovamente al mio classico speed test per misurare la frequenza massima ottenibile dalla commutazione continua di un singolo pin.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3255" src="https://logicaprogrammabile.it/wp-content/uploads/2013/01/Netduino_Plus_2.png" alt="Netduino Plus 2" width="225" height="168" /><span id="more-3249"></span></p>
<p>La scheda in esame è il nuovo <strong>Netduino Plus 2</strong> basato sulla cpu <strong>STmicro STM32F4</strong> operante a <strong>168Mhz</strong>. Sicuramente l&#8217;incremento di frequenza ha permesso maggiori prestazioni ma il risultato è ben lontano dai 125KHz ottenuti dall&#8217;<strong>Arduino UNO,</strong> infatti la frequenza misurata è di <strong>44.27 KHz,</strong> che paragonata alla prima versione della scheda (quella basata sulla cpu AT91SAM7 operante a 48MHz), è comunque un ottimo risultato che fa ben sperare in evoluzioni future e miglioramenti prestazionali nell&#8217;archittetura <strong>.Net micro framework</strong>.</p>
<p>Di seguito la tabella aggiornata degli speed test delle board che ho provato</p>
<table>
<tbody>
<tr>
<td><strong>Tipo Scheda</strong></td>
<td><strong>Frequenza di commutazione</strong></td>
</tr>
<tr>
<td>Arduino UNO</td>
<td>125 KHz</td>
</tr>
<tr>
<td>Arduino LEONARDO</td>
<td>106 KHz</td>
</tr>
<tr>
<td>FEZ Panda II</td>
<td>12.7 KHz</td>
</tr>
<tr>
<td>Netduino Plus 2</td>
<td>44.27 KHz</td>
</tr>
<tr>
<td>Netduino</td>
<td>8.4 KHz</td>
</tr>
</tbody>
</table>
<p>Questo invece lo screen shot della schermata dell&#8217;oscilloscopio</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3259" src="https://logicaprogrammabile.it/wp-content/uploads/2013/01/TEK00010.png" alt="Netduino Plus 2 Test toggle pin" width="640" height="480" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/01/TEK00010.png 640w, https://logicaprogrammabile.it/wp-content/uploads/2013/01/TEK00010-300x225.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-plus-2-speed-test/">Netduino Plus 2 Speed Test</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/netduino-plus-2-speed-test/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Arduino Leonardo speed test</title>
		<link>https://logicaprogrammabile.it/arduino-leonardo-speed-test/</link>
					<comments>https://logicaprogrammabile.it/arduino-leonardo-speed-test/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Wed, 30 May 2012 15:20:48 +0000</pubDate>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Leonardo]]></category>
		<category><![CDATA[Speed Test]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=2810</guid>

					<description><![CDATA[<p>Test di commutazione su pin digitale Ho acquistato di recente la nuova scheda Arduino Leonardo basata sul chip Atmel Mega32U4. Questo microcontrollore possiede un modulo usb integrato che sostituisce il modulo di conversione usb-ttl presente nella Arduino UNO, rendendo la scheda molto &#8216;snella&#8217; visto l&#8217;esiguo...</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-leonardo-speed-test/">Arduino Leonardo speed test</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Test di commutazione su pin digitale</h3>
<p>Ho acquistato di recente la nuova scheda <strong>Arduino Leonardo</strong> basata sul chip <strong>Atmel Mega32U4</strong>. Questo microcontrollore possiede un modulo usb integrato che sostituisce il modulo di conversione usb-ttl presente nella <strong>Arduino UNO</strong>, rendendo la scheda molto &#8216;snella&#8217; visto l&#8217;esiguo numero di componenti che ospita.</p>
<p>La prima prova che voglio effettuare è il classico speed test che ho realizzato anche per le altre schede. Questa verifica consiste nel commutare un pin digitale in modo ripetitivo, utilizzando solamente le istruzioni che permettono di porre il pin digitale a livello alto e a livello basso e, avvalendomi di un oscilloscopio ,misurare la frequenza di commutazione.</p>
<p>Lo sketch caricato sulla <strong>Leonardo</strong> è il seguente:</p>
<p><span id="more-2810"></span></p>
<pre class="lang:arduino decode:true  ">void setup()
{
  //pin0 in uscita
  pinMode(0, OUTPUT);
}

void loop()
{
  //ciclo infinito
  while(true)
  {
    //metto il pin0 alto
    digitalWrite(0, HIGH);
    //metto il pin0 basso
    digitalWrite(0, LOW);
  }
}</pre>
<p>&nbsp;</p>
<p>mentre lo schema elettrico del test è il seguente</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2012/05/Leonardo.gif"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2815" title="Leonardo" src="https://logicaprogrammabile.it/wp-content/uploads/2012/05/Leonardo.gif" alt="" width="437" height="229" srcset="https://logicaprogrammabile.it/wp-content/uploads/2012/05/Leonardo.gif 437w, https://logicaprogrammabile.it/wp-content/uploads/2012/05/Leonardo-300x157.gif 300w" sizes="auto, (max-width: 437px) 100vw, 437px" /></a></p>
<p>la frequenza misurata risulta pari a <strong>106 Khz</strong> leggermente inferiore a quella ottenuta con la Arduino UNO(125Khz). Ho realizzato una semplice tabella riepilogativa con le varie frequenze delle diverse schede che ho sottoposto al test.</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><strong>Tipo Scheda</strong></td>
<td style="text-align: center;"><strong>Frequenza di commutazione</strong></td>
</tr>
<tr>
<td style="text-align: left;">Arduino UNO</td>
<td style="text-align: left;"> 125  Khz</td>
</tr>
<tr>
<td style="text-align: left;">Arduino LEONARDO</td>
<td style="text-align: left;"> 106  Khz</td>
</tr>
<tr>
<td style="text-align: left;">Netduino standard</td>
<td style="text-align: left;"> 8.4   Khz</td>
</tr>
<tr>
<td style="text-align: left;">Fez Panda II</td>
<td style="text-align: left;"> 12.7 Khz</td>
</tr>
</tbody>
</table>
<p>The post <a href="https://logicaprogrammabile.it/arduino-leonardo-speed-test/">Arduino Leonardo speed test</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/arduino-leonardo-speed-test/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Arduino Uno gpio Speed Test</title>
		<link>https://logicaprogrammabile.it/arduino-uno-gpio-speed-test/</link>
					<comments>https://logicaprogrammabile.it/arduino-uno-gpio-speed-test/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Thu, 24 Mar 2011 13:01:56 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[GPIO]]></category>
		<category><![CDATA[Speed Test]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=585</guid>

					<description><![CDATA[<p>Gpio Speed Test velocità di commutazione di un pin digitale Per eseguire una comparazione con Netduino ho eseguito lo stesso esperimento (Netduino speed test) anche per Arduino Uno. Il gpio speed test è molto semplice, basta definire un pin in uscita ed eseguire in modo...</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-uno-gpio-speed-test/">Arduino Uno gpio Speed Test</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Gpio Speed Test velocità di commutazione di un pin digitale</h1>
<p>Per eseguire una comparazione con Netduino ho eseguito lo stesso esperimento (<a href="https://logicaprogrammabile.it/netduino-gpio-speed-test/">Netduino speed test</a>) anche per <strong>Arduino Uno</strong>. Il gpio speed test è molto semplice, basta definire un pin in uscita ed eseguire in modo ciclico un&#8217;istruzione che lo ponga a livello logico alto e poi basso.<br />
Questa commutazione continua genera un segnale ad onda quadra misurabile con un oscilloscopio.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-612 size-full" title="DSCF0945" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/DSCF0945.jpg" alt="Arduino uno gpio speed test" width="400" height="300" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/DSCF0945.jpg 400w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/DSCF0945-300x225.jpg 300w" sizes="auto, (max-width: 400px) 100vw, 400px" /></p>
<p>Il codice seguente mostra come effettuare questo test:</p>
<pre class="lang:arduino decode:true ">void setup()
{
  pinMode(0, OUTPUT); //Definisce il Pin0 come Uscita
}

void loop()
{
  while(true)
  {
    digitalWrite(0, HIGH); //Commuta l'uscita alta
    digitalWrite(0, LOW); //Commuta l'uscita bassa
  }
}</pre>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-609 size-full" title="DSCF0943" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/DSCF0943.jpg" alt="Arduino Speed test" width="350" height="262" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/DSCF0943.jpg 350w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/DSCF0943-300x224.jpg 300w" sizes="auto, (max-width: 350px) 100vw, 350px" /></p>
<p>La frequenza ottenuta sul pin 0 è di ben 125 KHz decisamente superiore a quella ottenuta dal Netduino (8.4KHz) nonostante i suoi 48 Mhz di clock contro i 16Mhz dell&#8217;Arduino.</p>
<p>L&#8217;istruzione digitalWrite() impiega circa 4uS contro i 53uS della Write() eseguita dal Netduino.</p>
<p>Netduino impiega delle risorse per far girare il .Net micro framework ecco perché nello speed test contro Arduino esce perdente.<br />
Arduino nonostante i sui 16Mhz di clock è capace di essere più veloce, perché il suo codice, accede direttamente alle funzioni a basso livello del microprocessore ATMEGA328.</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-uno-gpio-speed-test/">Arduino Uno gpio Speed Test</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/arduino-uno-gpio-speed-test/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Netduino GPIO Speed Test</title>
		<link>https://logicaprogrammabile.it/netduino-gpio-speed-test/</link>
					<comments>https://logicaprogrammabile.it/netduino-gpio-speed-test/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Tue, 08 Mar 2011 15:22:27 +0000</pubDate>
				<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[.Net micro framework]]></category>
		<category><![CDATA[Speed Test]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=266</guid>

					<description><![CDATA[<p>Testare la velocità di commutazione di un pin digitale Una delle domande che mi pongo quando lavoro con un dispositivo programmabile è quanto questo sia veloce. Non so se esistano procedure specifiche che indichino la potenza di calcolo effettiva, indicativamente il test che eseguo io...</p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-gpio-speed-test/">Netduino GPIO Speed Test</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Testare la velocità di commutazione di un pin digitale</h1>
<p>Una delle domande che mi pongo quando lavoro con un dispositivo programmabile è quanto questo sia veloce. Non so se esistano procedure specifiche che indichino la potenza di calcolo effettiva, indicativamente il test che eseguo io è quello di commutare di continuo un&#8217;uscita digitale e verificare con un oscilloscopio il tempo della durata di una istruzione.<br />
Il codice è il seguente:</p>
<pre class="lang:c# decode:true ">//Netduino GPIO
OutputPort Test = new OutputPort(Pins.GPIO_PIN_D0, false);

while(true)
{
Test.Write(true);
Test.Write(false);
 }</pre>
<p>&nbsp;</p>
<p>Questo codice generare un onda quadra con una frequenza di circa 8.4 KHz; Il segnale positivo generato dalla Write(true) dura circa 53us mentre il segnale negativo dovuto alla funzione Write(false)dura circa 64us. Verosimilmente il segnale negativo dura qualche microsecondo in più poiché il processore deve eseguire anche l’istruzione While(true). Quindi l’istruzione While viene eseguita in circa 11us (64us – 53us)</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-269 size-full" title="SpeedTest" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/SpeedTest.gif" alt="Netduino GPIO " width="359" height="278" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/SpeedTest.gif 359w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/SpeedTest-300x232.gif 300w" sizes="auto, (max-width: 359px) 100vw, 359px" /></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-274 size-full" title="SpeedTestFx" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/SpeedTestFx.gif" alt="Segnale PWM 50 per cento" width="507" height="335" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/SpeedTestFx.gif 507w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/SpeedTestFx-300x198.gif 300w" sizes="auto, (max-width: 507px) 100vw, 507px" /><span id="more-266"></span>Per verificare la correttezza di queste misure ho modificato il codice aggiungendo un’altra istruzione Write(false) per verificare che l’impulso negativo fosse di circa 117us (53us + 53us + 11us)</p>
<pre class="lang:c# decode:true ">OutputPort Test = new OutputPort(Pins.GPIO_PIN_D0, false);

while(true)
{
Test.Write(true); //Questa istruzione dura 53us
Test.Write(false); //Questa istruzione dura 53us
Test.Write(false); //Questa istruzione dura 53us
 }</pre>
<p>&nbsp;</p>
<p>La misura con l’oscilloscopio è per l’impulso positivo di circa 53us (istruzione Write(true)) e di circa 117us per l’impulso negativo (53us più 64us, due istruzioni Write(false) e istruzione while(true)).</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-281 size-full" title="SpeedTestFx1" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/SpeedTestFx1.gif" alt="Netduino GPIO test speed" width="507" height="334" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/SpeedTestFx1.gif 507w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/SpeedTestFx1-300x197.gif 300w" sizes="auto, (max-width: 507px) 100vw, 507px" /></p>
<p>Queste prove sono state eseguite compilando in modalità Debug, mentre utilizzando la modalità Release i tempi migliorano grazie all’ottimizzazione del codice. Per l’impulso negativo abbiamo circa 53us e per l’impulso positivo abbiamo circa 52us. Quindi le istruzioni write() durano circa 52us mentre l’istruzione while(true) dura circa 1us.</p>
<p>Ogni istruzione impiega un certo tempo per essere eseguita; questo tempo dipende esclusivamente dalla potenza di calcolo del processore Atmel del Netduino. Non abbiamo quindi un controllo diretto sul tempo di esecuzione del programma, sappiamo che ogni istruzione impiega un certo tempo; per migliorare le prestazioni dei nostri programmi dobbiamo imparare a scrivere le istruzioni in modo che impieghino il minor tempo possibile.</p>
<p>In definitiva il Netduino non è velocissimo come un ad esempio un PicMicro; questo dipende sicuramente dal fatto che  il microprocessore Atmel deve far girare il .Net micro framework.<br />
Certamente questo piccola perdita di prestazioni è trascurabile rispetto ai vantaggi nell&#8217;utilizzare un ambiente gestito dal .Net micro framework, che semplifica la creazione dei programmi e la gestione dell&#8217;hardware.</p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-gpio-speed-test/">Netduino GPIO Speed Test</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/netduino-gpio-speed-test/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
