Fork us on GitHub Follow us on Facebook Follow us on Twitter

Version 5 (modified by Jiri Svoboda, 10 years ago) (diff)

On vs. off

Programming Neo FreeRunner LEDs

Neo FreeRunner has three LED indicators:

Color Location IO Port/pin
orange behind power button GPB0
blue behind power button GPB1
red behind aux button GPB2

Combination of orange and blue behind the power button should give purple.

Port B Control Registers

Register Address Description Reset value
GPBCON 0x56000010 Pin configuration 0x0
GPBDAT 0x56000014 Data in/out undefined
GPBDN 0x56000018 Pull-down disable 0x0

GPB has 11 pins (GPB0 through GPB11 inclusive).

Register descriptions:

  • GPBCON: Two configuration bits per pin (GPBCON[1:0] for GPB0, GPBCON[3:2] for GPB1, etc.), 00 = Input, 01 = Output, 10 = XXX, 11 = reserved. XXX refers to internal signals, different for each pin.
  • GPBDAT[10:0]: Write GPB10..GPB0 in output mode and read GPB10..GPB0 in input mode.
  • GPBDN[10:0]: 0 = pull-down enabled, 1 = pull-down disabled in GPB10..GPB0.

For blinking LEDs, we select output mode (0b01) for GPB0..GPB2. Pull-down should be disabled. Then write to GPBDAT[0:2]. To turn the LED on, the pin must be driven high, to turn it off it must be driven low.



  • Not verified
  • From the documentation I've seen it is not clear whether the registers are sensitive to endianness and if so, what their endianness is.
  • Could not find in datasheet whether H drive is coded as 1 or 0 (probably 1?)