Found an interesting behaviour with the Freescale FXOS8700CQ on the new Sumo Robots (see “Sensor and Communication Shield for Sumo Robot“): when enabling the accelerometer/magnetometer, it actually did not work:
Tag Archives: Tips&Tricks
My First DIY Smoked Beef Brisket: Day 2 – the Way and the Result
Sunday morning started at 7am in a good way: I think the sun guessed already that I want fire up my smoker today.
❗ And no, that’s not the smoker in that picture! That’s ground fog in the morning (see “Inversion“).
Ready to continue my week-end project: DIY Smoked Beef Brisked!
User Interrupt on NMI Pin with Kinetis and ExtInt Component
While my beef brisket (see “My First DIY Smoked Beef Brisket: Day 1“) is smoking on ;-), I have time to investigate a problem I was running on in my lecture on Friday: For the Joystick shield (see “JoyStick Shield with the FRDM Board“) on the FRDM-KL25Z board, I wanted to use an interrupt if I press the green button:
However, that did not work :-(.
My First DIY Smoked Beef Brisket: Day 1 – Preparation
Ahhhh, I truly love the Texas BBQ (see “BBQ Smoker Monitoring Robot“)! And what I love the most is Beef Brisket. Unfortunately, I cannot travel each time to the US to get some brisket. So good or bad, I have to make the brisket myself :-). The challenge is that outside of Texas, ‘Brisket’ probably is an unknown thing, especially in my area. In the usual grocery stores and supermarket, if I ask for a brisket, they they just shake their heads and ask “brisket what?”. Of course, my local butcher (Messerli, Metzger meines Vertrauens!) in Steinen knew exactly what I need for a Brisket :-): a special cut of beef from the lower chest of beef.
On Tuesday, I sent my wife to pre-order my cut of beef, and this morning we picked it up in the butcher’s store. An excellent piece, already trimmed, 1.662 kg:
Failed to Debug with GDB: Breakpoints or Expressions on non-existing Locations
Sometimes, there are ugly bugs in tools, and without knowing about them, it is likely to spend hours and hours, and of course to be frustrated. Knowing about these issues does not remove the issue, but at least helps to cut time to deal with it. And here is one which was nagging on me for a while with the GNU GDB debugger in Eclipse…..
💡 I have used the Q4 2014 GNU ARM Embedded (launchpad) toolsuite/gdb (4.9-2014-q4-major), and I have found that with that gdb version the issue described is fixed. If you are using Kinetis Design Studio, see “Switching ARM GNU Tool Chain and Libraries in Kinetis Design Studio” how to upgrade the tool chain.
I was happily debugging my project, making some changes, and suddenly I cannot debug it any more. What happens is that I can download the binary with GDB, but it immediately terminates and disconnects:
After digging and doing some trial and errors, I have found what is causing this.
Initializing. Target has been RESET and is active. Disconnected from "127.0.0.1" via 127.0.0.1 Terminating Gracefully... Target Disconnected.
Putting Code of Files into Special Section with the GNU Linker
The GNU Linker (ld) is very, very powerful. This time I wanted to put all my Processor Expert generated code into its own dedicated section. This is useful for example to have a bootloader or a library inside a special area in FLASH. It was not obvious to me how to do this with the linker, with some search on the internet and some trial and errors, I finally managed that. And as always with exploring things, I have learnt something :-). So here is how I’m able to put the code of arbitrary files into its own dedicated section.
Unlocking and Erasing FLASH with Segger J-Link
When using a bootloader (see “Serial Bootloader for the Freedom Board with Processor Expert“), then I usually protect the bootloader FLASH areas, so it does not get accidentally erased by the application ;-). When programming my boards with the P&E Multilink, then the P&E firmware will automatically unlock and erase the chip. That’s not the same if working with the Segger J-Link, as it but requires extra steps.
Emulating Eclipse ‘Run’ with ‘Debug’ Configuration
Student: “Professor, my application does not work!”
Professor: “What is the problem?”
Student: “I don’t know, but the LED on my board is not blinking.”
Professor: “Can you step through the port initialization sequence and check if the clocks are initialized correctly?”
Student: “I have pressed the ‘Run’ button, I’m not debugging”.
Professor: “Why are you not debugging?”
Student: “I always do a ‘Run’, and I do ‘Debug’ only if needed.”
Professor: “Ahhhhhhrrrrgggg!”
Clearly, I’m not immune to the ‘déformation professionelle‘. I very rarely use ‘Run’, because it simply does not offer much value compared to ‘Debug’ during development. If using ‘Run’ and then there is a problem, I have to ‘Debug’ anyway, why not ‘Debug’ from the beginning? It is simply not an efficient way to work for me. Or I’m missing something?
BBQ Smoker Monitoring Robot
I have to admit: I’m not a vegetarian. I love BBQ, and no offense to vegetarians! Today is perfect day for another BBQ session, and this time I plan to enhance it with electronics. No, not eating electronics, but doing BBQ with a little DIY electronic helper. There are different ways to cook meat on an open fire pit, and each region of the world has its own way to do it. Traditionally, in my area we are ‘grilling’ the meat: high temperature, for a few minutes, done! I like that ‘fast food way’ too, but there is an even better version: Slow food smoking!
I’m gifted that I had the opportunity to experience the Texas BBQ culture: slowly cooking the meat, at low temperature, and ‘smoking’ it: Cooking the meat around 80°C prevents that it gets dry (because the water does not vaporize, see this article on Wikipedia). There are different ways how to do this, but I love the way how it is done at the Salt Lick in Austin/TX with an open fire pit:
Executing Multiple Commands as Post-Build Steps in Eclipse
The GNU ARM Eclipse plugins from Liviu already offer several built-in actions which can be performed at the end of a build: creating flash image, create listing file and printing the code and data size:
But what if I need different things, or even more things?









