Go Down

Topic: PWM 38Khz (Read 2803 times) previous topic - next topic

leo72


Anche perchè il codice di Leo non mi funziona.
Code: [Select]
TCCR4A = ((1<<COM4A0) | (1<<WGM40));
TCCR4B = (1<<CS40);
OCR4A = 105;


Sul pin 6, dichiarato come output non accade nulla e non riesco a spiegarmi il perchè.

Spero ancora nel vostro aiuto.
Grazie


Hai messo il pinMode(6, OUTPUT) ?

Etan


Hai messo il pinMode(6, OUTPUT) ?


Si ma niente! Sull'oscilloscopio ho sempre un segnale a 0V.
Tu l'hai provato?


XD XD :smiley-sweat: ma no Etan, mica mi riferivo a te!
Sul resto devi aspettare Leo, il mago è lui in queste cose....

Scusa Michele non avevo capito. Grazie per il tuo prezioso aiuto.

leo72



Hai messo il pinMode(6, OUTPUT) ?


Si ma niente! Sull'oscilloscopio ho sempre un segnale a 0V.
Tu l'hai provato?

Ho provato sull'Arduino UNO, usando i corrispondenti pin OC0A e OC1A, ed a me i led si accendono. A questo punto ho dei dubbi sulla corrispondenza fra canali dei timer e pin dell'Arduino MEGA dello schema che ho allegato alcuni post fa.

Michele Menniti

e questa mi sembra la stessa storia dell'altro Topic, evidentemente il problema è proprio la non corrispondenza dei timer :smiley-sad-blue:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

Boh. Ho ricontrollato ora, OC4A è su D6, sulla MEGA.

Etan

sembra più complicato del previsto.... :(

come se ne esce, avete qualche idea ?

Se provassimo a settare i registri in un altro modo?

leo72

L'unica alternativa facile potrebbe essere questa:
http://arduino.cc/forum/index.php/topic,117425.0.html
Si chiama PWM Frequency Library e dovrebbe poter generare un segnale PWM di sequenza a scelta sia su UNO che su MEGA.
Provala.

Etan


Cmq prova queste righe di codice messe nel setup.
Dovrebbero impostare il timer 4 dell'Atmega2560 in modalità Phase Correct PWM ad 8 bit con top fissato da OCR4A. se non ho fatto male i conti, hai i tuoi 38095 Hz sul pin D6.

TCCR4A = ((1<<COM4A0) | (1<<WGM40));
TCCR4B = (1<<CS40);
OCR4A = 105;



Dopo qualche tempo ho ripreso in mano il progetto della barriera IR.
Il codice di leo funziona sul pin d6 del mega, ma la frequenza purtroppoè pari a 31Khz circa e non 38 come desiderato.
Variando OCR4A non cambia nulla, qualcuno ha avuto modo di provare se va?

leo72

Mi sa che ho fatto male i conti, usando una modalità sbagliata del timer.

Riprova così:

Code: [Select]
TCCR4A = ((1<<COM4A0) | (1<<WGM41) | (1<<WGM40));
TCCR4B = ((1<<CS40) | (1<<WGM43));
OCR4A = 105;

Etan

Così è perfetto, ho i 38Khz sul d6!
Sei un grande leo.

leo72


Così è perfetto, ho i 38Khz sul d6!
Sei un grande leo.

;)

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy