Estoy usando el microcontrolador AT32UC3C que tiene 64 pines. Estoy usando gpio pin PB01 como SCK y gpio pin PA04 como SDA y marcando manualmente alto y bajo. Estos pines se configuran como GPIO_OPEN_DRAIN y GPIO_DIR_OUTPUT. He conectado este controlador al sensor MPU9150 que conecta el pin PB01 a SCK y PA04 al SDA del sensor. Lo que observé en el osciloscopio es cuando leo los valores del acelerómetro del MPU9150, el alto voltaje de la línea SDA es 3.3V y el bajo voltaje es 0.24V. Pero cuando veo el voltaje en la línea SDA al acceder al magnetómetro de MPU9150, el valor más bajo sube a 1.68V. El sensor está enviando datos y confirmando al microcontrolador, pero el microcontrolador no trata a 1,68 V como lógica baja. Así que todos los valores de registro se leen como 1. ¿Puedo resolver el problema sin cambiar el hardware? Quiero decir que si defino un nuevo valor de umbral para nivel lógico alto y nivel lógico bajo y digo que si el voltaje está por encima de 2 V, considérelo como lógico alto. ¿Es posible.
La hoja de datos de AT32UC3C dice:
PIN__GPIO__PIN TYPE