SPRUHZ7K August 2015 – April 2024 AM5706 , AM5708 , AM5716 , AM5718 , AM5718-HIREL
Table 28-14 describes the keyboard controller software mode.
Step | Register/Bit Field/Programming Model | Value D |
---|---|---|
Deactivate the internal keyboard controller sequencer by clearing the bit. | KBD_CTRL[1] NSOFTWARE_MODE | 0b0 |
Enable the interrupt event by setting the bit. | KBD_IRQENABLE_SET[0] IT_EVENT_EN | 0b1 |
Wait for the KBD_IRQ interrupt signal assertion. Begin the software scan when the interrupt signal is asserted: | ||
1) Disable all columns to drive a logical 0 on the kbd_col[8:0] output by writing 0xFF. (logical 1 bit = inactive column-row) | KBD_COLUMNOUTPUTS[8:0] KBC_REG | 0xFF |
2) Drive kbd_col(i) output, (where i = 0 to 8), to 0 to capture a pressed-key-event, at the corresponding row input. | KBD_COLUMNOUTPUTS[i] KBC_REG (where i = 0 to 8) | 0b0 |
3) Read the KBR_LATCH bit field of the KBD_ROWINPUTS register to determine which is the pressed key. | KBD_ROWINPUTS[8:0] KBR_LATCH | |
IF: KBR_LATCH k-bit = 0 , where k = 0 to 8 | ||
Then, the corresponding k-row is connected to the column being enabled. | ||
END IF | ||
Repeat step 2) and step 3) for all existing columns. | KBD_IRQWAKEEN[2:0] WUP_..._ENA | 0x– |
In software mode, during the manual keyboard scan, an interrupt is generated when a pressed key is detected.