Enable D20-D23 Pins (CREST)

Intro

NEXTuino CREST has 24 High Side digital outputs. The first 20 outputs (D0–D19) can be controlled using standard Arduino functions (digitalWrite, analogWrite), but D20–D23 require PORT manipulation on the ATmega2560 because no Arduino pin numbers are assigned to these outputs.

Hardware Required

  • NEXTuino CREST
  • 12/24V DC Power supply

Note: Pin header is working on 5V TTL levels. Voltage levels over 5.5V can damage the NEXTuino permanently.

Code

void setup() {
  DDRD = DDRD | B01110000; // Set ports PD4, PD5, PD6 as outputs (D20, D21, D22)
  DDRJ = DDRJ | B00010000; // Set port PJ4 as output (D23)
}

void loop() {
  int del = 100;

  // Digital output D20
  PORTD = PORTD | B00010000; // Set HIGH
  delay(del);
  PORTD = PORTD & B11101111; // Set LOW
  delay(del);

  // Digital output D21
  // PORTD = PORTD | B00100000;
  // delay(del);
  // PORTD = PORTD & B11011111;
  // delay(del);

  // Digital output D22
  // PORTD = PORTD | B01000000;
  // delay(del);
  // PORTD = PORTD & B10111111;
  // delay(del);

  // Digital output D23
  // PORTJ = PORTJ | B00010000;
  // delay(del);
  // PORTJ = PORTJ & B11101111;
  // delay(del);

  // Set D20, D21, D22 HIGH simultaneously
  // PORTD = PORTD | B01110000;
  // PORTJ = PORTJ | B00010000; // D23 HIGH

  // Set D20, D21, D22 LOW simultaneously
  // PORTD = PORTD & B10001111;
  // PORTJ = PORTJ & B11101111; // D23 LOW
}