You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.8 KiB
53 lines
1.8 KiB
#include "PinInfo.h"
|
|
#include <algorithm>
|
|
|
|
void setup()
|
|
{
|
|
while (!Serial) {}
|
|
|
|
// setup an array containing info for all digital pins
|
|
PinInfo* pins[CORE_NUM_DIGITAL];
|
|
for (unsigned i = 0; i < CORE_NUM_DIGITAL; i++)
|
|
{
|
|
pins[i] = new PinInfo(i);
|
|
}
|
|
|
|
// Print out info sorted by pin numbers
|
|
Serial.println("-------------------------------");
|
|
Serial.println(" Sorted by pin number");
|
|
printPins(pins, CORE_NUM_DIGITAL);
|
|
|
|
Serial.println("\n-------------------------------");
|
|
Serial.println(" Sorted by PWM timer");
|
|
std::sort(pins, pins + CORE_NUM_DIGITAL, [](PinInfo* a, PinInfo* b) {
|
|
if (a->pwmTimerInfo.type < b->pwmTimerInfo.type) return false;
|
|
if (a->pwmTimerInfo.type > b->pwmTimerInfo.type) return true;
|
|
if (a->pwmTimerInfo.module < b->pwmTimerInfo.module) return true;
|
|
return false;
|
|
});
|
|
printPins(pins, CORE_NUM_DIGITAL);
|
|
|
|
Serial.println("\n-------------------------------");
|
|
Serial.println(" Sorted by GPIO register: ");
|
|
std::sort(pins, pins + CORE_NUM_DIGITAL, [](PinInfo* a, PinInfo* b) {
|
|
if (a->gpioInfo.gpioPortNr < b->gpioInfo.gpioPortNr) return true;
|
|
if (a->gpioInfo.gpioPortNr > b->gpioInfo.gpioPortNr) return false;
|
|
if (a->gpioInfo.gpioBitNr < b->gpioInfo.gpioBitNr) return true;
|
|
return false;
|
|
});
|
|
printPins(pins, CORE_NUM_DIGITAL);
|
|
}
|
|
|
|
void loop() {}
|
|
|
|
// Helpers -------------------------------------------------------
|
|
|
|
void printPins(PinInfo* pins[], unsigned nrOfPins)
|
|
{
|
|
Serial.println("Pin | GPIO Reg | PWM timer");
|
|
Serial.println("----|------------|-------------");
|
|
for (unsigned i = 0; i < nrOfPins; i++)
|
|
{
|
|
Serial.printf("%02d | %-9s | %-10s\n", pins[i]->pin, pins[i]->gpioInfo.name, pins[i]->pwmTimerInfo.name);
|
|
}
|
|
}
|
|
|