I'm not sure I would do this the same way. Why Interrupts? how soon do
you need to respond to the key? Pthreads run fine on TS-XXXX, create
a separate thread to output row and read columns.
If you need interrupts, stepping to the next row should disable the
drive of the current (pressed) key so should reduce the time you need
to wait for debounce, you may not even need to disable the interrupt.
Be sure to have pullups on the columns so un-driven return to
inactive, only active row would be driven low. DO as little as
possible in the isr.
--- In "bdon003" <> wrote:
>
> I am using the ts-7300 for my senior design project, and I am
> preparing to write a Linux driver for it. Everything on the board is
> pretty much how I got it, same kernel and everything. I need to hook
> up a 3x4 Matrix Keypad to the board and have it send an interrupt when
> a key has been pressed. I am going to connect the three column data
> lines from the keypad to interrupt-enabled I/O pins on one of the
> headers, and then the row data lines will be connected to the same
> header but without interrupts enabled. Will I need to worry about
> debounce control inside the handler? What I obviously don't want is
> more than one interrupt to be sent for only one key press. I am still
> doing some more reading on drivers but my plan is:
> 1. Disable interrupts associated with the keypad
> 2. Read from the header what key was pressed and store it in the next
> cell of an array
> 3. Signal that a tasklet needs to be run to do the overall
> processing/checking of the entered code so far
> 4. Increment the counter keeping track of the next available cell in
> the array
> 5. Re-enable the disabled interrupts
>
> Will this solve my problem? It seems that if the time it takes for
> the key to settle is longer than the time it takes to do those five
> steps, then I would need to do some adjusting. What is a better way
> to do this? Thanks for any help
>
------------------------------------
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/ts-7000/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/ts-7000/join
(Yahoo! ID required)
<*> To change settings via email:
<*> To unsubscribe from this group, send an email to:
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|