Hi Per Öberg,
> I'm currently developing a small os for my TS7250 as a course project
> and i thought that it would be nice to do something like this.
I ported the uCOS-II OS to the ARM LPC2000 series of micros.
http://www.ovro.caltech.edu/~dwh/ucos/project_AR1803.pdf
http://www.ovro.caltech.edu/~dwh/ucos/gcc_and_ucosii.zip
The initial section of that document is independent of the OS
used, and covers the setup of the ARM interrupt controller
for FIQ and IRQ interrupts, and interrupt nesting.
I'm not sure if the EP9302 controller is the same, but
perhaps the above document could be of use to you.
Cheers,
Dave
> I have come to the conclusion that using interrupts for this only messes
> things up.
>
> Reason 1)
> I am using the 8pin matrix keypad from TS and i have used 4 pins as
> output and 4 as input. The four outputs are supposed to sink the four
> inputs which works nicely without any pullups. I thought it would be
> nice to set all outputs to zero and wait for a change on some of the
> pins to go low (or high again) before scanning the keybord. This
> approach only allows me to react on change from one key of each row at a
> time so pushing more than one key at a time does not work with this
> setup. Polling each 5 ms would allow me to react on a least 2 keys and
> at most 4 keys at once depending on which keys are pressed.
>
> Reason 2)
> I'm getting spurious interrupts when i disable and re enable the
> interrupts for the GPIO (and yes, i have read the documentation for the
> EP9302 and i'm using the procedure suggested there). I was trying to
> program the VIC on my TS board to let the GPIO be a fast interrupt that
> had precedence over the usual interrupt source but right now everything
> is a mess. I guess you wont be running in to this one though since
> you're not developing an entire OS.
>
> Regards
> Per Öberg
>
>
> David Farrell wrote:
>> 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
>>
>>
>>
------------------------------------
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/
|