es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error al leer/escribir desde CAN y sensor simultáneamente a través de I2C.

Estoy utilizando una placa de comunicación CAN y un IMU MPU6050 para poder usar motores mientras también leo un ángulo del IMU.

Cuando los uso por separado, funciona correctamente, el IMU lee y el CAN puede activar y hacer funcionar los motores. El problema surge cuando ambos se activan al mismo tiempo y el script muestra el siguiente error:

IOError: [Errno 5] Error de entrada/salida

Aquí están los registros:

# Registros del MPU6050
MPU6050_ADDR = 0x68 #0x0c
PWR_MGMT_1 = 0x6B
SMPLRT_DIV = 0x19
CONFIG = 0x1A
GYRO_CONFIG = 0x1B
ACCEL_CONFIG = 0x1C
INT_PIN_CFG = 0x37
INT_ENABLE = 0x38
ACCEL_XOUT_H = 0x3B
ACCEL_YOUT_H = 0x3D

Y surgen mensajes de error cuando intento escribir un byte en el IMU al mismo tiempo que se activa el bus CAN:

# Escribir en el registro de configuración
bus.write_byte_data(MPU6050_ADDR, CONFIG, 0)

He creado un nuevo bus I2C para el IMU que es el bus #3, lo cual me proporciona las direcciones 0x68 y 0x0c.

He verificado el cableado, que es correcto. De lo contrario, obtendría el mismo error al ejecutarlos por separado.

¿Alguien tiene alguna sugerencia sobre qué probar a continuación?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que hay un conflicto entre el IMU y el bus CAN cuando ambos están activados simultáneamente, provocando un error de entrada/salida. Una sugerencia podría ser intentar utilizar un hilo o proceso separado para manejar cada dispositivo, de manera que puedan funcionar de forma independiente sin conflictos. Otra sugerencia podría ser verificar si hay recursos compartidos entre los dos dispositivos que podrían estar causando el conflicto, y de ser así, encontrar una forma de gestionar esos recursos de manera más efectiva. Además, podría ser útil consultar las hojas de datos tanto del IMU como de la tarjeta CAN para ver si existen configuraciones o ajustes específicos que podrían estar causando el problema.

Comments are closed.