The filament monitor sends 16-bit words to the Duet. Two types of words are transmitted: normal words, and quality information words. When the data is changing (normally because the filament is moving), a normal word is sent every 40ms. When the data isn't changing, alternating quality information words and normal words are sent every 500ms.
For all words transmitted:
For a normal word:
For a quality information word:
The 16 bits are sent using a self-clocking protocol as follows. The nominal bit time is 1ms but the Duet firmware allows a reasonable tolerance because the filament monitor clock source is the internal R-C oscillator in the microcontroller, so its speed is somewhat variable.
Idle state: the line must be be at 0 for at least 8 bit times Start bits: 1 followed by 0 Data bits 15, 14, 13, 12 Stuffing bit (inverse of bit 12) Data bits 11,10,9,8 Stuffing bit (inverse of bit 8) Data bits 7,6,5,4 Stuffing bit (inverse of bit 4) Data bits 3,2,1,0 Stuffing bit (inverse of bit 0) After the last stuffing bit, the line returns to 0 until the next start bit.