Most Arduino SPI tutorials show this simple but poor SPI bus design:
A much better SPI bus design can prevent conflicts. 3 simple improvements are needed:
Click "Read more" for details on these 3 steps.
I am happy to report Windows 10 Preview build 9860 fixes the long-standing USB serial bugs, which impact nearly all Arduino compatible boards.
Windows 10 is finally going to support all class-compliant USB serial (eg, CDC-ACM) as well as Linux and Mac OS-X. Very exciting.
Earlier this summer, I worked on a tiny piece of the Embrace sculpture, for Burning Man 2014.
Inside were 2 hearts, one made here in Portland by Lostmachine Andy & other burners at Flat Rat Studios. I made electronics to gradually fade 4 incandescent light bulbs in heart beating patterns.
Click "Read more" for technical details and many more wonderful photos (taken by Sarah Taylor)....
Update: a live demo page is now available. :)
Recently I've been working on an optimized ILI9341 display library, to take advantage of Teensy 3.1's more capable SPI hardware. Here's a quick video demo, so you can see how much of a difference it makes.
In the transition from 8 to 32 bit microcontrollers, on-chip SPI ports usually gain more sophisticated features. Special programming is needed to fully levergage these more powerful features. Merely recompiling code designed for simple SPI hardware on 8 bit hardware rarely acheives the best performance. As you can see in the video, optimizing for these features makes a pretty dramatic improvement.
Click "Read more" for the all the technical details...
For the last several weeks, I've been working on SPI transactions for Arduino's SPI library, to solve conflicts that sometimes occur between multiple SPI devices when using SPI from interrupts and/or different SPI settings.
To explain, a picture is worth 1000 words. In this screenshot, loop() repetitively sends 2 bytes, where green is its chip select and red is the SPI clock. Blue is the interrupt signal (rising edge) from a wireless module. In this test, the interrupt happens at just the worst moment, during the first byte while loop() is using the SPI bus!
Click "Read mode" for lots more detail.....
Recently I've been working to improve the Arduino SPI library, to better support multiple SPI devices with different settings, and SPI devices requiring interrupts.
Today I discovered a new problem while testing the HopeRF RFM69 wireless module.
Click "Read more" for details and the workaround I found....
Years ago, around the time DorkbotPDX's meetup moved from Vendetta to NW Lucky Lab, Ben Bleything brought LCDs from decommissioned point-of-sale terminals to the meetup. I did some reverse engineering to get them working!
At the time, I wrote 3 blog articles aboug the reverse engineering effort. Only one of them survived from the early days of this website. Recently, I found the original text those old 3 articles, and also a small pile of the LCDs... which I'll be giving away at upcoming meetings!
Click "Read more" for those 3 original articles with the fine details of reverse engineering (and source code) for these old LCDs....
Click "Read more" for more photos...