Visualizza messaggio singolo
Vecchio 18 aprile 12, 01:13   #6 (permalink)  Top
gawain
User
 
L'avatar di gawain
 
Data registr.: 18-04-2008
Residenza: milano
Messaggi: 405
Citazione:
Originalmente inviato da faustog_2 Visualizza messaggio
Ok ho capito!

quindi in pratica è come eseguire :

BTFSC REGISTRO,BIT
SE NON è ZERO
SE E' ZERO

qui invece sinttatticamente significa spostati di ICF1 posizioni a partire da quella a zero, (estrema destra) e piazza un 1 (uno) , quindi se facendo l'AND ovvero

per esempio ICF1 = 2 allora sposta un 1 (uno) in posizione 2 a sinistra, poi esegui una AND e valuta il risultato

0110.0101
0000.0100 Vero


oppure

0110.0001
0000.0100 Falso

Altra osservazione, partendo dalla tua osservazione in merito agli interrupt, mi sembra strano che però con il convertitore ADC non ci siano questi brutti effetti!
In sistanza facendo la prova non mi dà nessuna imperfezione.

leggi qui:
Arduino - Knob


Servo myservo;

int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin

void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop()
{
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}

la libreria servo forza periodicamente l'azzeramento del contatore che ti impedisce ti utilizzarlo senza glitch nella lettura del ppm...
i metodi usati in ppm.h non non modificano mai il valore del contatore, solo cosi riesci a ottenere piu funzioni indipendenti come lettura ppm e driver servi.
inoltre il driver dei servi basato su una una lookup table e sul xor tra due byte garantisce una omogeneita di timing tra canali assoluta e le uniche operazioni diverse avvengono durante il segnale di sincro quindi senza effetto.
gawain non è collegato   Rispondi citando