lophtware

Logo

lophtware projects

GitHub Profile

Core - Pins Changed

Report Type: Interrupt IN
Report Size: 16 Bytes

Report ID Flags Latch LSB Latch MSB Port LSB Port MSB Change LSB Change MSB First Timestamp Second Timestamp
00011000 000000 s 0 llllllll 00000 lll pppppppp 00000 ppp cccccccc 00000 ccc 4 bytes 4 bytes

Report ID

HID Report ID. Always 0x18.

Flags

Bits Direction Meaning
000000    
s IN Stable flag; 1 if there were no changes in between starting and finishing the port sampling operation, or 0 if the ports were unstable. See the notes below.
0    

Port LSB

The Least Significant Byte of a word that represents a mask of the state of the pin latches. The 11 bits in the mask correspond to the user-defined IDs provided by the Pin Configuration (A2)-Pin Configuration (C9) commands.

Latch MSB

The Most Significant Byte of a word that represents a mask of the state of the pin latches. The 11 bits in the mask correspond to the user-defined IDs provided by the Pin Configuration (A2)-Pin Configuration (C9) commands.

Port LSB

The Least Significant Byte of a word that represents a mask of the state of the pins. The 11 bits in the mask correspond to the user-defined IDs provided by the Pin Configuration (A2)-Pin Configuration (C9) commands.

Port MSB

The Most Significant Byte of a word that represents a mask of the state of the pins. The 11 bits in the mask correspond to the user-defined IDs provided by the Pin Configuration (A2)-Pin Configuration (C9) commands.

Change LSB

The Least Significant Byte of a word that represents a mask of which pins have changed. The 11 bits in the mask correspond to the user-defined IDs provided by the Pin Configuration (A2)-Pin Configuration (C9) commands.

Change MSB

The Most Significant Byte of a word that represents a mask of which pins have changed. The 11 bits in the mask correspond to the user-defined IDs provided by the Pin Configuration (A2)-Pin Configuration (C9) commands.

First Timestamp

The value of the microcontroller’s COUNT register when the first change was detected. The COUNT register increments at a rate of 12MHz, so each LSb is approximately 83.333ns.

This field is Little Endian, ie. the Least Significant Byte of the word appears first. Bit numbering within the constituent bytes is unaffected.

Second Timestamp

The value of the microcontroller’s COUNT register when the ports were sampled, which is just before this report is sent. Depending on how busy the microcontroller is processing other tasks, this could be many milliseconds after _First Timestamp_. The COUNT register increments at a rate of 12MHz, so each LSb is approximately 83.333ns.

This field is Little Endian, ie. the Least Significant Byte of the word appears first. Bit numbering within the constituent bytes is unaffected.

Notes

The port sampling operation is not atomic so it is possible that there are changes during the sampling operations that means there are mismatches in the reported _Latch_, _Port_ and _Change_ masks. If this happens then the values of the _Latch_ and _Port_ fields are not reliable for the corresponding _Change_ mask, in which case the s bit will be 0 and another Pins Changed IN Report will be sent.

The 11 bits in the _Latch_, _Port_ and _Change_ masks correspond to the user-defined IDs provided by the Pin Configuration (A2)-Pin Configuration (C9) commands.