La hoja de datos pg.1 dice On-chip oscillator requiring no external component with optional external crystal
. Así que aparentemente puede funcionar en función del reloj PIC, o con su propio reloj.
En la página 2, dice que PD_SCK
es para Power down control (high active) and serial clock input.
Así que esto es incorrecto, como XI
es para Crystal I/O or external clock input, 0: use on-chip oscillator.
Así que XI LOW lo obliga a usar su propio oscilador; PD_SCK HIGH lo fuerza en modo de apagado.
La página 4 explica cómo usar el reloj interno o externo, y el tiempo y las velocidades disponibles. Si elige dejar que el HX711 use su propio reloj interno, entonces escupirá 10 u 80 muestras por segundo, dependiendo de si el pin RATE
es bajo o alto. Si está felizmente escupiendo 80 muestras por segundo, y el PIC comienza a ver esos datos en algún punto intermedio, será difícil determinar qué bit se está mirando y dónde comienza la siguiente muestra. Se puede hacer, pero requeriría un análisis detallado de los bits de datos entrantes.
Probablemente sería ventajoso ejecutar un pin de salida PIC a PD_SCK
y un pin de entrada PIC a DOUT
, olvidar las respuestas de reloj automático y "bit bang" cada vez que se ejecuta el código PIC. Por "bit-bang" me refiero a escribir un código PIC que obtiene cada bit, uno a la vez. Aquí hay un pseudo-código:
is DOUT low? If so, continue, else exit.
(send 1 clock pulse to the HX711: LOW, HIGH, LOW,
read the single data bit output into a 24-bit PIC integer,
rotate the integer one bit, either direction, doesn't matter)
do this exactly 24 times.
send 1 clock pulse.
DOUT should now be high. If it is not, an error occurred.
(If you want to keep the gain at 128 for the next sample, do nothing.
If you want to switch the HX711 to Channel B input with gain of 32, send 1 clock.
If you want to switch to Channel A input with gain of 64, send 1 more clock.)
Los requisitos de tiempo todavía se aplicarían; lo que significa que si el HX711 está configurado para emitir 80 muestras por segundo, no podrá leerlas a tiempo desde un PIC que se ejecute a 32 kHz. El PIC debe ser lo suficientemente rápido para leer una muestra antes de que llegue la siguiente. Eso no debería ser un problema si se usa un PIC rápido y la configuración de 10 muestras / seg.