Go Down

Topic: PWM 38Khz (Read 2416 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