turnOffPWM()

概要

turnOffPWM()は、指定したタイマのPWM出力を停止します。詳細は、analogWrite()の説明を参考にしてください。

PWM出力の停止は、タイマ/カウンタ制御レジスタを操作することで実現します。

ソースコード

turnOffPWM()は、hardware/arduino/avr/cores/arduino/wiring_digital.c に定義されています。以下に全ソースコードを示します。実際には#if によりさまざまなチップに対応しています。

 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;
    }
}

入力はtimerでuint8_t型の変数です。タイマの値に応じて、タイマ/カウンタ制御レジスタ(TCCRnx)の比較出力選択ビットを操作して、出力を停止します。

cbi()は、第1引数で指定したアドレスの内容の第2引数ビットを0に設定するマクロです。

バージョン

Arduino AVR Boards 1.8.6

ライセンス

 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
*/

最終更新日

July 31, 2025

inserted by FC2 system