Wanneer ik de toonfunctie op een Uno bel, waarom moet ik dan de pin-modus niet instellen?

Wanneer ik de toonfunctie op een Uno bel, waarom moet ik dan de pin-modus niet instellen? Zoals zo:

// Simplest tone
void setup() {
}

void loop() {
    tone (8,500); //on pin 8 output 500 Hz
}
5

1 antwoord

Omdat de code (hertz) de pincodemodus initialiseert, samen met de timer/contraregelaarregisters om de juiste frequentie te produceren.

void tone(uint8_t _pin, unsigned int frequency, unsigned long duration)
{
  uint8_t prescalarbits = 0b001;
  long toggle_count = 0;
  uint32_t ocr = 0;
  int8_t _timer;

  _timer = toneBegin(_pin);

  if (_timer >= 0)
  {
   //Set the pinMode as OUTPUT
    pinMode(_pin, OUTPUT);
   ... 

Zie Tone.cpp - regel 255 voor de bron.

7
toegevoegd