sto per fare questa prova:
ho un arduino con un sensore che fa variare il segnale pwm su un pin digitale
vorrei leggere questo valore con un altro arduino.
credo che sia il modo più veloce e accurato che non usare la seriale.
sono costretto a fare questo perchè il sensore è un oscillatore dove nello scketch vengono modificati i timer di arduino, quindi non lo posso utilizzare per il resto della logica e elettronica collegata.
basta che collego il pin digitale(del primo arduino) ad un pin digitale (del secondo arduino) e metto la massa in comune?
prima di bruciare tutto chiedo consiglio
Usa pulseIn() per leggere la PWM ma sappi che un PWM di 255 o PWM di 0 ti genera un segnale continuo percui devi evitare questi due valori.
Alternativa: perché non usi l' interfaccia I2C? puoi trrasmettere piú dati con maggior precisione visto che il PWM ti da solo 8 Bit.
Ciao Uwe
grazie delle risp.
secondo te uwefed posso utilizzare i2c anche con i timer modificati?
quindi i2c è più veloce del segnale di un pin, o meglio trasmettere in i2c è più veloce di leggere un pin?
che indirizzo ha arduino in i2c? forse glielo posso settare come altri dispositivi
Ho dato un'occhiata alla lib Wire, mi pare che usi gli interrupt basati sul modulo hardware I2C,, quindi niente timer.
Ma quali timer hai modificato? E perché?
Vedo che imposti il timer 1 come contatore di eventi sul pin 5 e poi il timer 2 come temporizzatore.
Però questo non c'entra con l'RTC esterno, al max non riuscivi a comunicarci. Come hai fatto a fonderlo? Il bus I2C usa i pin A4 e A5, servono poi due R di pull-up per il bus: 1K5 o 2K2 vanno bene. Altri componenti non servono. Forse c'era qualche corto circuito?
volevo dire c'è un'induttanza.
comunque forse sarà stato un cortocircuito.
ma non vorrei riprovare. era un rtc già pronto, cioè con le sue resistenze e quarzo, era solo da mettere sui piedini di arduino.
alla fine farò un atmega per l'oscillatore , collegato in i2c con l'altro atmega e tutto il resto del circuito.
mi sembra la soluzione migliore.
oppure: posso portare delle istruzioni (che vanno nel loop) su un altro timer non influenzato dalle precedenti impostazioni?
stefanosky:
oppure: posso portare delle istruzioni (che vanno nel loop) su un altro timer non influenzato dalle precedenti impostazioni?
Negli interrupt è sempre bene che non ci siano istruzioni complesse. E poi i timer sugli Atmega sono solo 3, di cui lo 0 (l'unico che ti resta libero) viene usato per le funzioni temporali di Arduino (delay e millis) e per tutti gli eventi ad esse correlate.