Pines Analógicos Portenta H7

Hola

Estoy experimentado problemas con los pines analógicos del portenta H7,

Actualmente tengo montado un portenta H7, con una Portenta mid carrier y un modulo 4G.

Cuando configuro los pines analógicos como salida y por ejemplo pongo en HIGH el pin A2, se pone en HIGH también el pin A4. Cuando pongo en HIGH el pin A3, se pone en HIGH también el pin A5.

En la documentación de la portenta mid carrier el pin A2 se llama PC2_C y el pin A4 se puede llamar como PC2. Para el pin A3  -  PC3_C  y para el A5 -  PC3.

Pongo un código que me activa varios pines y enciende el led de la placa. Es una secuencia que ha de seguir para activarme 2   tb6612 y abrir o cerrar unas electroválvulas de 9v latch.

En el código original no había delay de 10, pero se lo he puesto para ver si había algún cambio.
````const int BIN2 = A4;                // Direction  A4
const int BIN1 = A3;              // Direction  A3
const int STBY = A2;              // standby    A2
const int AIN1 = A1;             // Direction  A1
const int AIN2 = A0;              // Direction  A0
const int STBY2 = A5;             // standby2   A5


void setup() {

  pinMode(LEDR, OUTPUT);
  digitalWrite(LEDR, HIGH); // turn the LED off after being turned on by pinMode()
  pinMode(LEDG, OUTPUT);
  digitalWrite(LEDG, HIGH); // turn the LED off after being turned on by pinMode()
  pinMode(LEDB, OUTPUT);
  digitalWrite(LEDB, HIGH); // turn the LED off after being turned on by pinMode()


  pinMode(BIN2, OUTPUT);
  pinMode(BIN1, OUTPUT);
  pinMode(STBY, OUTPUT);
  pinMode(AIN1, OUTPUT);
  pinMode(AIN2, OUTPUT);
  pinMode(STBY2, OUTPUT);
}

void loop() {
  
delay(2000);
ActivarValvula1();
ledSequence();
delay(2000);
CerrarValvula1();
 ledSequence3();
delay(2000);
ActivarValvula2();
ledSequence();
delay(2000);
CerrarValvula2();
 ledSequence3();
delay(2000);
ActivarValvula3();
ledSequence();
delay(2000);
CerrarValvula3();
 ledSequence3();
delay(2000);
ActivarValvula4();
ledSequence();
delay(2000);
CerrarValvula4();
ledSequence3();
delay(2000);




}


void ActivarValvula1 () {

    
    digitalWrite (AIN1, LOW);
    delay(10);
    digitalWrite (AIN2, HIGH);
    delay(10);
    digitalWrite (STBY, HIGH);
    delay (400);
    digitalWrite (STBY, LOW );
    delay(10);
    digitalWrite (AIN1, LOW);
    delay(10);
    digitalWrite (AIN2, LOW);
    Serial.println( "Riego Activado 1");
         
    
}



void CerrarValvula1 (){

    
    digitalWrite (AIN1, HIGH);
    delay(10);
    digitalWrite (AIN2, LOW);
    delay(10);
    digitalWrite (STBY, HIGH);
    delay (400);
    digitalWrite (STBY, LOW);
    delay(10);
    digitalWrite (AIN1, LOW);
    delay(10);
    digitalWrite (AIN2, LOW);
    Serial.println( "Riego Desactivado 1");
   
    
}



void ActivarValvula2 () {

    
    digitalWrite (BIN1, LOW);
    delay(10);
    digitalWrite (BIN2, HIGH);
    delay(10);
    digitalWrite (STBY, HIGH);
    delay (400);
    digitalWrite (STBY, LOW );
    delay(10);
    digitalWrite (BIN1, LOW);
    delay(10);
    digitalWrite (BIN2, LOW);
    Serial.println ("Riego Activado 2");
        
    
   }



void CerrarValvula2 (){

    
    digitalWrite (BIN1, HIGH);
    delay(10);
    digitalWrite (BIN2, LOW);
    delay(10);
    digitalWrite (STBY, HIGH);
    delay (400);
    digitalWrite (STBY, LOW);
    delay(10);
    digitalWrite (BIN1, LOW);
    delay(10);
    digitalWrite (BIN2, LOW);
    Serial.println ("Riego Desactivado 2");
   
    
   }


void ActivarValvula3 () {

    
    digitalWrite (AIN1, LOW);
    delay(10);
    digitalWrite (AIN2, HIGH);
    delay(10);
    digitalWrite (STBY2, HIGH);
    delay (400);
    digitalWrite (STBY2, LOW );
    delay(10);
    digitalWrite (AIN1, LOW);
    delay(10);
    digitalWrite (AIN2, LOW);
    Serial.println ("Riego Activado Semillero");
         
    
   }



void CerrarValvula3 (){

    
    digitalWrite (AIN1, HIGH);
    delay(10);
    digitalWrite (AIN2, LOW);
    delay(10);
    digitalWrite (STBY2, HIGH);
    delay (400);
    digitalWrite (STBY2, LOW);
    delay(10);
    digitalWrite (AIN1, LOW);
    delay(10);
    digitalWrite (AIN2, LOW);
    Serial.println ("Riego Desactivado Semillero");    
  
    
   }


void ActivarValvula4 () {

    
    digitalWrite (BIN1, LOW);
    delay(10);
    digitalWrite (BIN2, HIGH);
    delay(10);
    digitalWrite (STBY2, HIGH);
    delay (400);
    digitalWrite (STBY2, LOW );
    delay(10);
    digitalWrite (BIN1, LOW);
    delay(10);
    digitalWrite (BIN2, LOW);
    Serial.println ("Riego Activado 4");
       
    
   }



void CerrarValvula4 (){

    
    digitalWrite (BIN1, HIGH);
    delay(10);
    digitalWrite (BIN2, LOW);
    delay(10);
    digitalWrite (STBY2, HIGH);
    delay (400);
    digitalWrite (STBY2, LOW);
    delay(10);
    digitalWrite (BIN1, LOW);
    delay(10);
    digitalWrite (BIN2, LOW);
    Serial.println ("Riego Desactivado 4");
    
    
   }

   void ledSequence() {
  // Control de LEDs
  digitalWrite(LEDB, LOW);  // Encender LED azul
  delay(500);              // Esperar medio segundo
  digitalWrite(LEDB, HIGH); // Apagar LED azul
  delay(500);              // Esperar medio segundo
}

void ledSequence2() {
  // Control de LEDs
  digitalWrite(LEDR, LOW);  // Encender LED rojo
  delay(1000);               // Esperar medio segundo
  digitalWrite(LEDR, HIGH); // Apagar LED rojo
  delay(1000);               // Esperar medio segundo

}

void ledSequence3() {
  // Control de LEDs
  digitalWrite(LEDG, LOW);  // Encender LED verde
  delay(10);               // Esperar medio segundo
  digitalWrite(LEDG, HIGH); // Apagar LED verde
  delay(10);               // Esperar medio segundo
}

Según la hoja de datos del STM32H747 (H7 para los amigos) a partir de la pág. 61, los pines x_C son solamente entradas analógicas (analog-only inputs) pero no es lo que señala el pinout del Portenta que los marca como digitales/analógicos.
La lógica indica que hay que confiar en la información que entrega el fabricante del micro por lo que la información de Arduino sería incorrecta.

Si estoy en lo correcto, los pines A0, A1, A2 y A3 no se podrían setear como salidas.

Estoy revisando la documentación del STM32H747 y parece que tiene bastante sentido lo que indicas.

Voy a intentar usar algún pin PWM que me queda disponible para hacer funcionar los tb6612.

Gracias.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.