]> git.piffa.net Git - aerei_site/blobdiff - _posts/snippets/2017-02-13-pulse-in.markdown
Navbar
[aerei_site] / _posts / snippets / 2017-02-13-pulse-in.markdown
diff --git a/_posts/snippets/2017-02-13-pulse-in.markdown b/_posts/snippets/2017-02-13-pulse-in.markdown
new file mode 100644 (file)
index 0000000..0d55432
--- /dev/null
@@ -0,0 +1,32 @@
+---
+layout: post
+title:  "Lettura dati canli RX con PulseIn"
+date:   2017-02-13 05:14:16 +0100
+categories: snippets
+---
+
+# PulseIn
+
+PulseIn e' il modo piu' semplice per decodificare un canale PWM in ingresso, puo' lavorare su qualunque PIN che possa essere utilizzato come *INPUT*. Il problema e' che la funzione e' blocking: mentre viene misurata la lunghezza dell'intervallo  il processore non puo' fare altro.
+
+Quindi possiamo anticipare un blocco di circa 1.5ms (media tra il minimo di 1ms e il massimo di 2ms) ogni 20ms (se la TX manda un impulso a ~50Hz, la FRSky che sto utilizzando ha un periodo di 18ms ma puo' essere impostata anche a 8ms).
+
+Questo puo' non avere un grosso effetto su dei lampeggi da 500ms ma e' influente su dei FADE o ovviamente la lettura di altri eventuali INPUT! Una soluzione potrebbe essere di lanciare la lettura con una frequenza minore, ad es. 5 volte al sec puo' essere adeguato per leggere un interruttore, vedi esempio di pulseIn con millis.
+
+
+Soluzione migliore: utilizzare gli interrupts.
+
+## Lettura di un canale
+
+
+{% highlight ruby %}
+{% include_relative /repo/esempi/snippets/lettura_servo_ch_pulse/lettura_servo_ch_pulse.ino %}
+{% endhighlight %}
+
+
+
+## Lettura di un canale con millis
+
+{% highlight ruby %}
+{% include_relative /repo/esempi/snippets/lettura_servo_ch_pulse_millis/lettura_servo_ch_pulse_millis.ino %}
+{% endhighlight %}