Over the last ~25 years, a rapid shift and progress in MCU technology has taken place. Where high-level development using an MCU required specialized knowledge and OTP devices, this has transformed into a wide selection of cost effective flash devices that could be programmed and then reprogrammed. This introduced the option of rapid development and enabled minor code changes and effectively experimentation with code to be a part of development. The introduction of flash based program memory meant that very little time was needed, something of a hinderance when using an UVEPROM device.
When the PIC16C84 was introduced and later the PIC16F84, this was a welcome shift for hobbyists as now it was more cost effective to build that DIY project which previously may have been only accessible to the professional, or someone who had the resources to purchase or assemble the equipment needed.
Hobbyist SupportHobbyist support and community for embedded projects grew along with the the availability of flash devices. Many 3rd party vendors produced development boards, device programmers, compilers, simulators, emulators and so on.
For most of us, we built something with the PIC16F84, and later the PIC16F877, and so on. The use of these devices for hobbyist projects was possible because they were available in DIP packages, and therefore easy to assemble.
For a larger PIC count for example a 64 PIN TQFP, this would have required at the very least a higher level of skill to produce the PCB with the fine pitched pins and then SMD soldering skills.
At present, the availability of budget PCB manufacturing vendors, CAD packages that are free to use has bridged that divide and now for a few dollars a high quality PCB is sitting on your desk and ready for assembly. You need a steady hand, a good dose of flux, a fine soldering nib and your 64 PIN TQFP package is secured to the PCB and ready for testing.
It's a big jump from an 18PIN DIP to a 64PIN TQFP in I/O and peripherals. Although, the divide is not as wide as it would seem owing to the common architecture between devices, code written for an 18 PIN device could be easily adapted to larger pin devices.
The complexity is brought on by the application or the demand of the end user. In the past it would be fine for a project to do its work while flashing an LED to indicate activity. In today's highly connected and interacting world, end users want connected systems that they can interact with, configure to their needs and get continuous feedback from. This places a significant demand on the device, the I/O requirement and peripherals that the device has. The speed at which the device operates is also under pressure as data must be pulled through readily and be available quickly.
Development Board DesignWhen you research what is available, there are three basic approaches to deciding on what to build into a development board.
- Minimalist: Include only the necessary electronics for the MCU to run.
- General Purpose: This option requires that the basic components to build an application are on board. This may be limited to a few push buttons and LEDs and may include and LCD.
- Niche or Sample Application/Reference Design: This option includes hardware that enables the engineer to refine or develop their code to work for one specific application, for example a motor driver or IoT application. In this instance the development board would include the electronics required to function in a single application and the PCB would not be useful in other scenarios or applications.
The Signum takes the Minimalist approach, and the reason is so that the PCB is cost effective and flexible, able to be used in multiple applications. The headers to which the I/O have been tracked enable a shield to be created to be "plugged in" to the PCB.
The basic elements available on the SIGNUM are:
- Power Supply: The PCB includes an LM317 which is configures to work in either 5v0 or 3v3 operation
- Power indication and Reset: An LED that indicates power is on the board is supplemented with a reset button should the MCU go into a loop
- Speed / MIPS: The PCB includes a resonator, which is usually an 8MHZ or you can opt for the one you require.
- I/O: All the MCUs I/O is tracked to headers enabling you to have direct access to the MCU.
- USART: A CH340G is included with a USB Type B connector
- Programming: The PICs 5 PIN ICSP header is included for use by a PICKIT programmer.
Basic Workings
The SIGNUM is intended to provide all that is needed for the MCU to power up and run in a manner that is stable and reliable. This role enables the embedded to developer to then only add the components and additional circuitry that they require. This keeps cost and design complexity down.
Sample Code
The sample code sets up a PIC18F6410, configures the device to read an analog input and exports that value over a COM port.
char uart_rd;
unsigned int AnalogVal;
void SetupDevice(){
ADCON0.ADON = 1; // Configure AN pins as digital
ADCON1.ADON = 0;
ADCON2.ADON = 0;
UART1_Init(9600); // Initialize UART module at 9600 bps
Delay_ms(100); // Wait for UART module to stabilize
UART1_Write(10);
UART1_Write(13);
}
void main() {
SetupDevice(); // Start Device
UART1_Write_Text("Start");
UART1_Write(10);
UART1_Write(13);
while (1) { // Endless loop
AnalogVal = ADC_Read(1);
if (UART1_Data_Ready()) { // If data is received,
uart_rd = UART2_Read(); // read the received data,
UART2_Write(uart_rd); // and send data via UART
}
}
}
SummaryIn the first installment, we have had a look at the history of PICs and development boards and what can be built into a development board. We then reviewed the rationale that went into the design of the SIGNUM and rounded that off with a code sample for using the PIC development board.
ConclusionDevelopment boards remain a necessary element of product or application design. A compact development board can be used as is and installed in the field.
For more information, see the following link: https://docs.haventechnik.com/radix-signum
Comments