Elbows deep

Apologies in advance to all those waiting on a reply from me; this week I’m elbows deep trying to finish a large assignment handed out in a subject where the lecturer is slightly less useful than random Googling – so if I have to delay my response until I have a good opportunity next week to look it over, please be patient and understanding during this depressingly difficult time.

This also means that I’ll be delaying the next official LUFA release until the 12th – I simply won’t have the time to support any problems with it until then, and I’m still making a few last changes to the codebase. Special thanks to Andrei Krainev for his excellent feedback on the beta version I released a little while back, as his efforts have yielded some positive changes to the codebase. Actually, I expect I’ll need to spend the week in hiding for this too, since Andrei’s feedback has led me to make two breaking changes to the library:

1) The USB_Init() function, the heart of the LUFA USB driver, no longer calls sei() to enable global interrupts. While the USB driver requires global interrupts to be enabled, Andrei is quite correct that this is bad practice for a third party to do, so now it’s left to the user to perform once all their init code has completed. This is a silent breaking change (which is a bad thing) and I don’t expect people to see the change in the documentation. Because of this, I’ve also made a very tiny breaking change:

2) The USBInterrupt.c LUFA driver source file has moved from LUFA/Drivers/USB/HighLevel/ to LUFA/Drivers/USB/LowLevel where is was *supposed* to be located, but apparently I miscategorized it forever and a day ago when it was first written. This is fixed with just a slight change to the user application’s makefile (or the project won’t compile any more) but will make it quite obvious that reading the migration notes is a good idea :). On the upside, this should make Matt from Micropendous happy as he wanted this change too so that his up-and-coming ARM9 port of LUFA is neat and tidy.

I got an interesting email from a nice German fellow named Christoph, who sent me some pictures of his LUFA application. This is probably the most interesting one yet – other than the robotic LUFA powered wheelchair another guy was trying to build a while back – and I thought I’d post the pictures here. I hope he doesn’t mind if I repost his explanation of the device here…

They had some problems with the
original MRI trigger (which is quite expensive, bytheway…) in order to
synchronize the pictures from the MRI unit with the events (images,
sounds, etc.) which are used to stimulate the test person inside the
unit. So they called me and I set up a new trigger module. The firmware
on the AT90USB162 is quite simple and uses your keyboard example, the
only difference is the trigger condition (external interrupt). The
problem was to design a board which is resistant against the strong
magnetic fields of the MRI unit, even if the module is not placed in the
hot-spot – normally the test person’s brain… 😉 – of the MRI unit

Which is very cool – LUFA powered MRI machine! Well, it’s only a tiny component, but still pretty darn incredible. Here’s the MRI machine and unit in question:

LUFA Powered MRI Trigger Unit

LUFA Powered MRI Trigger Unit

The MRI Machine all Hooked Up

The MRI Machine all Hooked Up

Now, I don’t want to be one of those cruddy cop-out dime-a-dozen blogs which have no meaningful content other than a bunch of links to other’s good work, but I feel like I have to give another mention to Elastic Sheep, a blog run by a guy named Mathieu who is rapidly becoming a great source of articles around practical LUFA implementations. His latest project is the first of at least two articles designing a WAV player using my LUFA Mass Storage demo and a Teensy board. Definitely someone to watch in the next few months – I might have to start adding links in the official LUFA docs since the articles are really good.

I really got to finish this damn assignment. Over and out.

 

Comments

No comments so far.

Leave a Reply

 
(will not be published)
 
 
Comment
 
 

 

Vital Stats

  • 35 Years Old
  • Australian
  • Lover of embedded systems
  • Firmware engineer
  • Self-Proclaimed Geek

Latest Blog Posts

RSS