View Single Post
  #12   Spotlight this post!  
Unread 20-10-2010, 20:31
Greg McKaskle Greg McKaskle is online now
Registered User
FRC #2468 (Team NI & Appreciate)
 
Join Date: Apr 2008
Rookie Year: 2008
Location: Austin, TX
Posts: 4,754
Greg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond repute
Re: How do I use interrupts?

To answer some, hopefully all of the questions. The Wait for Interrupt is a somewhat high level, but relatively low jitter way to respond to an FRC specific interrupt raised by the FPGA.

Notice that Interrupt Open lets you specify specific FRC related I/O triggers. In the general FPGA tool, you write the FPGA to poll, calculate, or do whatever you want at 40MHz or less. The FPGA code you write can raise the one of N interrupts on the PPC (32 interrupts I believe, but it could be less). The lower level library let you determine whether the acknowledge will take place after your code or before. For FRC, it is hidden and set to ack first.

To be honest, I haven't used the interrupt stuff a ton, but unlike many other libraries where close is pretty foolproof, you may want to ensure that you close resources or you may find some odd behaviors. If so, reboot the cRIO.

Another comment on the interrupt stuff, keep in mind that the heavy protection and isolation you associate with OSes is far thinner and sometimes nonexistent on RT systems such as VXWorks. Newer versions of VXWorks have different configurations which support more user protection and isolation, but the version on the cRIO has high I/O throughput, but less isolation, in fact very little.

I don't believe that the event structure works on RT, at least much of it doesn't work there since the event structure is primarily for UI operations. It is certainly not setup to handle interrupts. The event structure also deals with user events which can be used much like queues.

If you need to set priorities, and I highly doubt that you do, you can set different subVI priorities and put each of them to wait on different interrupts.

Greg McKaskle
Reply With Quote