All microcontroller based applications include the microcontroller code called firmware but it is surprising how many people forget that they may need to update it when their products are scattered at customer locations. This may be because (heaven forbid) that they discover a bug in the system that needs to be corrected or, more commonly, that the product needs new features in response to customer feedback or competitor’s actions. So how do we simplify firmware updates?
Category Archives: Microcontrollers
Program in C or Assembler?
A common question we get is should I program my microcontroller in C or assembler? This usually means do I bother with assembler or just use C. Sometimes it just means that I do not know the difference. So what is the difference?
What is AVR microcontroller?
An AVR microcontroller is a type of device manufactured by Atmel, which has particular benefits over other common chips, but first what is a microcontroller?
The easiest way of thinking about it is to compare a microcontroller with your PC, which has a motherboard in it. On that motherboard is a microprocessor (Intel, AMD chips) that provides the intelligence, RAM and EEPROM memories and interfaces to rest of system, like serial ports (mostly USB ports now), disk drives and display interfaces.
A microcontroller has all or most of these features built-in to a single chip, so it doesn’t need a motherboard and many components, LEDs for example, can be connected directly to the AVR. If you tried this with a microprocessor, bang!
All About CAN Bus, CAN USB and CAN-FD
What is CAN bus? Officially, CAN is a Controller Area Network, which is a network of independent controllers communicating securely. It was first developed by Bosch and Intel in 1990 and has been amended since. The International Standards Organisation (ISO) has further defined CAN using their OSI model.
Continue reading “All About CAN Bus, CAN USB and CAN-FD” »Programming AVR Bootloader Code
We have been asked about how you can program an application code file and a separate bootloader into an AVR microcontroller using a Kanda programmer. It isn’t possible to program two separate files but it is simple enough to combine them into one file.
Continue reading “Programming AVR Bootloader Code” »Why Use AVR Dragon?
AVR Dragon is a low cost In System Programmer (ISP) and also an In Circuit Emulator (ICE) in one package. It operates from Atmel AVR Studio development environment and is great for code development.
What can it do?
AVR Dragon
Portable PIC Programmers
Most of us have PIC programmers for development, such as Microchip IDC2 or a PIC ICSP programmer such as PRESTO, which are very good at what they do. But they are not ideal for either production or field updates, because they require too much knowledge to use or need a laptop to be used in a challenging environment.
So what are the alternatives?
Continue reading “Portable PIC Programmers” »
AVR Microcontroller Default Clock
One feature of AVR devices that can baffle new users is the default clock setting on new AVR microcontrollers. They are set to run from their internal RC oscillator, usually 1 MHz, which throws out the timing on code samples, such as UART.
If the code is configured for an 8MHz clock and there is a 8MHz clock on the target board, you expect it to work but instead you get nothing or garbled characters. This is due to the default Internal RC. How do you change it?
PIC In-system Programming
PIC microcontrollers, like most modern microcontrollers, can be programmed in system (or in circuit – ICSP) rather than in a socket programmer. This has advantages in development and in production, for example, to use different firmware for different versions or to speed up production. The major benefit though is field upgrades. We can give you lots of horror stories about people who didn’t think of firmware upgrades and had to recall products to fix a bug, not a cheap option. So how do you add In System Programming to your designs?
The major factors are the electronic design of the ICSP circuit and the ICSP connector format. Let’s look at the connector format first. Most Microchip development boards (and ICD2/3 debuggers) use RJ11 connector by default, but this is a poor choice for field or production use.
AVR Microcontroller C Code
The AVR microcontroller is excellent with C code because it was designed with C in mind. Atmel have also made it easy to use C in AVR Studio, as WinAVR compiler can run from within AVRStudio just like the assembler.
Only a few years ago, using C compilers involved complicated commandline instructions and make files but WinAVR more or less takes care of this for you. WinAVR is based on the free GNU-GCC compiler but is much friendlier, especially for beginners.