Parallax has released Propeller GCC Beta!
Welcome to the beta test of Parallax’s Propeller GCC compiler for the P8X32A Propeller chip. The Propeller GCC Compiler tool-chain is an open-source, multi-OS, and multi-lingual compiler that targets the Parallax Propeller’s unique multicore architecture. Parallax has hired industry experts to develop all aspects of the toolchain, including the creation of a new development environment that simplifies writing code, compilation, and downloading to a Propeller board. The C and C++ compiler tools provide a significant benefit to Parallax customers who use our Propeller multicore processor. Using the Large Memory Model (LMM) and Extended Memory Model (XMM) gives the developer the ability to write C or C++ programs that run faster than Spin or exceed Spin’s 32 KB program size limit, respectively. Additionally, Parallax will be publishing tutorials on learn.parallax.com to provide experience to new developers interested in learning how to develop embedded applications in C or C++. All of this effort will immediately roll into developing compilation tools for Parallax Semiconductor’s long awaited Propeller 2 when it is released.
Parallax Releases Propeller GCC Beta - [Link]
Did you know each Arduino has a unique serial number in its USB interface that you can use to distinguish one Arduino from another? If you deal with multiple Arduinos, knowing exactly which one is plugged into your computer can be a real time-saver. But actually getting at this serial number and mapping it to COM ports can be challenging. For Windows computers, here’s “listComPorts”, implemented both in GCC C code and in VBScript, both available from my usbSearch github repository.
listComPorts – Windows command-line tool for USB-to-serial - [Link]
When we need some feedback from microcontroller usually we use USART. It allows to output messages, debug information to terminal screen. Also data can be sent to MCU same way. For this purpose STM32 microcontrollers have more than one USART interface allowing to have multiple streams of data output and input.
USART interface is designed to be very versatile allowing to have lots of modes including LIN, IrDA, Smart card emulation, DMA based transmissions. But for now lets focus on standard USART communications we we could send and receive messages from terminal window.
STM32F100RB microcontroller in Discovery board has three USARTs (USART1, USART2 and USART3). Other higher level STM32 microcontrollers have even more. USART1 is connected to APB2 bus while other USART’s are located on APB1. Every USART has a two DMA channels allowing data transfer between memory and Rx/Tx. Each USART has ten interrupt sources and all are mapped to same NVIC channel. So it is up to code to find out what triggered an interrupt. This is done by identifying flag in status register. Why don’t we take a real example and see how things work.
This little board demonstrates the capabilities of the MMA2260 +/- 1.5g X-Axis Micromachined Accelerometer. As you tip it back and forth, LEDs light up to show the magnitude and direction of the G force.
The MMA2260 is the fat SOIC 16 in the upper left, isolated so it could be cut off of the board and used as a breakout, keeping only a pin header and the recommended decoupling and output RC filter.
The microcontroller is a PIC16F628, which is entirely unsuited to this application, having no ADC. I failed to notice that, being quick to note “AN0″ on PORTA and slow to note that it was for a comparator, not an ADC. However, there is a builtin programmable voltage reference which was sufficiently accurate for lighting up 8 LEDs. I’m trying to get away from PICs, as AVRs have spoiled me with their GCC support, many registers and sane memory organization. Even on this project, which is only about 30 lines of C, most of the work was fighting SDCC bugs (failure to banksel, in this case). I’ve discovered a perverse pleasure in soldering down ICs to counteract my packrat nature. It did force me to put an ICSP header on, however.
MMA2260 Accelerometer Demo - [Link]
Don’t know anything about Embedded Electronics? Start here! Sparkfun has put together a nice lecture collection. Here it is:
Lecture 1 – What’s a microcontroller? Breadboard power supply
Lecture 2 – Loading code and compiler basics
Lecture 3 – Oscillators and fuse bits
Lecture 4 – UART and serial communication
Lecture 5 – AVR GCC and printf compiling
Lecture 6 – Soldering basics
Lecture 7 – SMD soldering Simon!
Lecture 8 – Eagle: Schematics
Lecture 9 – Eagle: PCB layout
Lecture 10 – Eagle: Creating a new part
Common Mistakes – Tips and tricks