El método a continuación le dirá si existe un pin en el controlador. Entonces, para determinar si estamos usando un controlador de 20 o 28 pines, seleccione un pin digital que sea > 20 y pásalo como parámetro a la función de abajo. Si devuelve true, tienes un controlador de 28 pin. Si devuelve falso, tienes un controlador de 20 pin. Probé esto usando mi Launchpad MSP430G2553 y obtuve los siguientes resultados:
showPinExistence(2);
showPinExistence(3);
showPinExistence(5);
showPinExistence(6);
showPinExistence(7);
showPinExistence(8);
showPinExistence(11);
showPinExistence(15);
showPinExistence(18);
showPinExistence(21);
showPinExistence(22);
showPinExistence(23);
void showPinExistence(int pin)
{
Serial.print("Pin ");
Serial.print(pin);
Serial.print(" Exists: ");
Serial.println(pinExists(pin)?"True":"False");
Serial.flush();
}
bool pinExists(int pin)
{
bool lowResult;
bool highResult;
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW);
lowResult = digitalRead(pin);
digitalWrite(pin, HIGH);
highResult = digitalRead(pin);
return lowResult != highResult;
}
Aquí está la salida para LaunchPad con MSP430G2553 (20 pin):
Pin 2 Exists: True
Pin 3 Exists: True
Pin 5 Exists: True
Pin 6 Exists: True
Pin 7 Exists: True
Pin 8 Exists: True
Pin 11 Exists: True
Pin 15 Exists: True
Pin 18 Exists: True
Pin 21 Exists: False
Pin 22 Exists: False
Pin 23 Exists: False
Aquí está la salida para MSP430G2553 (28 pin):
Pin 8 Exists: True
Pin 9 Exists: True
Pin 10 Exists: True
Pin 11 Exists: True
Pin 12 Exists: True
Pin 13 Exists: True
Pin 14 Exists: True
Pin 15 Exists: True
Pin 16 Exists: True
Pin 17 Exists: True
Pin 18 Exists: True
Pin 19 Exists: True
Pin 20 Exists: True
Pin 21 Exists: True
Pin 22 Exists: True
Pin 23 Exists: True
Tuve que comenzar con el pin 8 porque no me gustó cuando intenté establecer 2-7 como pines de salida :-) De todos modos, el punto es que puedes intentar configurar el pin 23 como un pin de salida y escribir y lea su valor para determinar si el chip que está utilizando es de 20 pines, o si tiene más de 20 pines. No tengo un chip de 32 pines, pero me imagino que podrías probar en un pin superior a 28 para determinar si es un chip de 32 pines.
Ahora, después de todo lo que he dicho. Desde que escribí esto, descubrí que ahora hay soporte de 28 pines en GitHub. Ahora lo estoy usando y me refiero a los pines con su notación P3_0, P2_0 correcta en lugar de hacerlo directamente por el número de Pin y esto parece estar funcionando bien ahora.