turnOffPWM()

Abstract

The turnOffPWM() stops PWM output of a specified timer. Please refer to the explanation of the analogWrite().

Stopping the PWM output is carried out by controlling timer/counter register.

Source Code

The turnOffPWM() is defined in hardware/arduino/avr/cores/arduino/wiring_digital.c as below. The function deals with many chips using #ifs.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
static void turnOffPWM(uint8_t timer)
{
    switch (timer)
    {
        case TIMER1A:   cbi(TCCR1A, COM1A1);    break;
        case TIMER1B:   cbi(TCCR1A, COM1B1);    break;
        case  TIMER0A:  cbi(TCCR0A, COM0A1);    break;
        case  TIMER0B:  cbi(TCCR0A, COM0B1);    break;
        case  TIMER2A:  cbi(TCCR2A, COM2A1);    break;
        case  TIMER2B:  cbi(TCCR2A, COM2B1);    break;
    }
}

The input is timer and its type is uint8_t. According to the value of timer, it operates the compare match output bit of Timer/Counter Control Registers(TCCRnx) to stop the output.

The cbi() is a macro to set the bit(the second argument) of the address(the first argument) to 0.

Version

Arduino AVR Boards 1.8.6

License

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
  Copyright (c) 2016 garretlab.
  Added source code explanation by garretlab.
*/

/*
  wiring_digital.c - digital input and output functions
  Part of Arduino - http://www.arduino.cc/

  Copyright (c) 2005-2006 David A. Mellis

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General
  Public License along with this library; if not, write to the
  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  Boston, MA  02111-1307  USA

  Modified 28 September 2010 by Mark Sproul
*/

Last Update

July 31, 2025

inserted by FC2 system