3

I managed to work with timer 0 and 1 but am unable to generate a PWM with timer 2 in my atmega328p.

This is the code:

#include <avr/io.h>

int main(void)
{
    /* PD6 output */
    DDRD |= (1 << DDD6);

    /* 50% duty cycle */
    OCR2A = 128;

    /* fast PWM  */
    TCCR2A |= (1 << WGM21) | (1 << WGM20);

    /* prescaler = 8 */
    TCCR2B |= (1 << CS21);

    while (1);

}

Could someone explain what the issue is and why I am not seeing a pwm signal on pin 6 of my arduino uno board?

Thanks

Duncan C
  • 5,682
  • 3
  • 17
  • 29
traducerad
  • 143
  • 3
  • 2
    The post is definitely on topic. I don't understand why it has attracted a vote to be closed. – MichaelT Apr 06 '19 at 23:45
  • I am the one who up-voted the question, one of the three up-votes for the answer, and just up-voted your comment :) – VE7JRO Apr 07 '19 at 00:12
  • It's a shame that multitudes of "leave open" votes don't cancel our erroneous "off-topic" votes. Clearly on-topic. And timers are always such fun! :) – Madivad Apr 09 '19 at 15:14

1 Answers1

5

The output compare unit of timer 2 is connected to pins PB3 (OC2A) and PD3 (OC2B). So you have to configure those as outputs. Keep in mind that you can't choose any pin when using hardware pwm, this hardware feature is linked to specific pins.

You also have to set COM2A1 in TCCR2A. Otherwise OC2A is disconnected from the output compare unit (ref: Table 17-3 in datasheet). The effect of COM2A0/1 depends on the configuration in WGM20-WGM22. The same applies to OC2B respectively.

Sim Son
  • 1,859
  • 12
  • 18
  • I tried what you suggested, but that doesn't seem to work: https://paste.ubuntu.com/p/K8KmKnqyvV/

    Any suggestions?

    – traducerad Apr 06 '19 at 19:40
  • I compiled/flashed your code and I found that in TCCR2A you have to set COM2A1 (see my edit). – Sim Son Apr 06 '19 at 20:37
  • @traducerad: The comment // enable timer 2 in your code is wrong. It should be // disable timer 2 in order to be consistent with what the following line actually does. – Edgar Bonet Apr 07 '19 at 10:34