Tengo un microcontrolador con CAN y necesito implementar un maestro CANOpen. Debe cambiar una E / S de pin en un dispositivo de terceros utilizando la especificación CANOpen DS 401.
¿Cuál es la mejor manera de lograrlo?
El problema es que no se puede acceder al bit de E / S individualmente, pero solo se pueden registrar 8bits completos o 16bits (CANOpen DS 401 - Dirección de registro 6200h).
Puedo ver dos opciones:
A)
- A.1) Escriba en "Salida de máscara de filtro" (CANOpen DS 401 - Registrar dirección 6308h) con la máscara de bits que quiero modificar.
- A.2) Escriba en "Write Outputs 16 Bits" (CANOpen DS 401 - Registre la dirección 6300H) con el valor deseado
- A.3) Restablecer "Salida de máscara de filtro" (CANOpen DS 401 - Registrar dirección 6308h).
B) ("Salida de máscara de filtro" siempre está configurada)
- B.1) Lea "Salidas de escritura 16 bits" (CANOpen DS 401 - Registro de dirección 6300H)
- B.2) Escriba en "Write Outputs 16 Bits" (CANOpen DS 401 - Registre la dirección 6300H) con el valor modificado leído en el paso B.1
Ventajas de A)
- Más seguro
Ventajas de B)
- Menos mensajes
Mi entorno es una configuración maestra múltiple, con valores de "Write Outputs 16 Bits" que se emiten siempre como TPDO.