Skip to main content

Featured post

Digital Clock On LCD (16x2) PIC16F1937 Used In FlowCode Programming and Simulation

In this sample project we are using FlowCode Simulation Software for Programming and Testing with PIC16F1937.It shows how to use and simulate and program LCD for use in different projects.In this Project we have created digital clock(Using two digit each for seconds minute and hours in 24 Hour format on LCD) on 16x2 Liquid Crystal Display.Varying the delay and write-erase sequence can be manipulated to get desired result.

Here is the Flow code program:
LCD(16x2) Display Related Programs
ADC-Voltage as Float(LCD with PIC16F1937)
ADC-Voltage as String (LCD with PIC16F1937)
ADC Sampling and outputting to a LCD(LCD with PIC16F1937)
Printing Number on 16x2 LCD Display with PIC16F88
Printing and Updating Number on 16x2 LCD Display
Printing a Two line(String) message (LCD 16x2)
Printing a formatted number on ( LCD 16x2 ) Using PIC16F88

LCD (Liquid Crystal Display 16X2):-
Its screen is an electronic display module and find a wide range of applications. A 16x2 LCD display is very basic module and is very…

Embedded C know How - Introduction Salient Features of Embedded Programming

Introduction to Embedded C

Be it a digital camera or a mobile phone or a washing machine, all of them has some kind of processor functioning inside it. Associated with each processor is the embedded software. If hardware forms the body of an embedded system, embedded processor acts as the brain, and embedded software forms its soul. It is the embedded software which primarily governs the functioning of embedded systems.

Suggested Readings:
Embedded Systems and C Programming - Home Page - Index

More Links:
Difference Between C and Embedded C
Programming Using Embedded C
Embedded Electronics-Real-time software-Introduction 
Karnaugh_Maps-Digital Electronics Tutorials 
Micro-controllers-Basic Introduction Tutorials
During infancy years of microprocessor based systems, programs were developed using assemblers and fused into the EPROMs. There used to be no mechanism to find what the program was doing. LEDs, switches, etc. were used to check correct execution of the program. Some ‘very fortunate’ developers had In-circuit Simulators (ICEs), but they were too costly and were not quite reliable as well.

As time progressed, use of microprocessor-specific assembly-only as the programming language reduced and embedded systems moved onto C as the embedded programming language of choice. C is the most widely used programming language for embedded processors/controllers. Assembly is also used but mainly to implement those portions of the code where very high timing accuracy, code size efficiency, etc. are prime requirements.

Initially C was developed by Kernighan and Ritchie to fit into the space of 8K and to write (portable) operating systems. Originally it was implemented on UNIX operating systems. As it was intended for operating systems development, it can manipulate memory addresses. Also, it allowed programmers to write very compact codes. This has given it the reputation as the language of choice for hackers too.

As assembly language programs are specific to a processor, assembly language didn’t offer portability across systems. To overcome this disadvantage, several high level languages, including C, came up. Some other languages like PLM, Modula-2, Pascal, etc. also came but couldn’t find wide acceptance. Amongst those, C got wide acceptance for not only embedded systems, but also for desktop applications. 

Even though C might have lost its sheen as mainstream language for general purpose applications, it still is having a strong-hold in embedded programming. Due to the wide acceptance of C in the embedded systems, various kinds of support tools like compilers & cross-compilers, ICE, etc. came up and all this facilitated development of embedded systems using C.

Subsequent sections will discuss what is Embedded C, features of C language, similarities and difference between C and embedded C, and features of embedded C programming.


EMBEDDED System Programming

Embedded systems programming is different from developing applications on a desktop computers. Key characteristics of an embedded system, when compared to PCs, are as follows:

1. Embedded devices have resource constraints(limited ROM, limited RAM, limited stack space, less processing power)

2. Components used in embedded system and PCs are different; embedded systems typically uses smaller, less power consuming components. · Embedded systems are more tied to the hardware.



Two salient features of Embedded Programming are code speed and code size. 

Code speed is governed by the processing power, timing constraints, whereas code size is governed by available program memory and use of programming language. Goal of embedded system programming is to get maximum features in minimum space and minimum time.


Embedded systems are programmed using different type of languages:
· Machine Code
· Low level language, i.e., assembly
· High level language like C, C++, Java, Ada, etc.
· Application level language like Visual Basic, scripts, Access, etc.


Assembly language maps mnemonic words with the binary machine codes that the processor uses to code the instructions. Assembly language seems to be an obvious choice for programming embedded devices. However, use of assembly language is restricted to developing efficient codes in terms of size and speed. Also, assembly codes lead to higher software development costs and code portability is not there. Developing small codes are not much of a problem, but large programs/projects become increasingly difficult to manage in assembly language. Finding good assembly programmers has also become difficult nowadays. Hence high level languages are preferred for embedded systems programming.

Advantages of Embedded C
1. It is small and reasonably simpler to learn, understand, program and debug.

2. C Compilers are available for almost all embedded devices in use today, and there is a large pool of experienced C programmers.

3. Unlike assembly, C has advantage of processor-independence and is not specific to any particular microprocessor/ microcontroller or any system. This makes it convenient for a user to develop programs that can run on most of the systems.

4. As C combines functionality of assembly language and features of high level languages, C is treated as a ‘middle-level computer language’ or ‘high level assembly language’

5. It is fairly efficient

6. It supports access to I/O and provides ease of management of large embedded projects.



Many of these advantages are offered by other languages also, but what sets C apart from others like Pascal, FORTRAN, etc. is the fact that it is a middle level language; it provides direct hardware control without sacrificing benefits of high level languages.

Compared to other high level languages, C offers more flexibility because C is relatively small, structured language; it supports low-level bit-wise data manipulation.

Compared to assembly language, C Code written is more reliable and scalable, more portable between different platforms (with some changes). Moreover, programs developed in C are much easier to understand, maintain and debug. Also, as they can be developed more quickly, codes written in C offers better productivity. C is based on the philosophy ‘programmers know what they are doing’; only the intentions are to be stated explicitly. It is easier to write good code in C & convert it to an efficient assembly code (using high quality compilers) rather than writing an efficient code in assembly itself. Benefits of assembly language programming over C are negligible when we compare the ease with which C programs are developed by programmers.

Objected oriented language, C++ is not apt for developing efficient programs in resource constrained environments like embedded devices. Virtual functions & exception handling of C++ are some specific features that are not efficient in terms of space and speed in embedded systems. Sometimes C++ is used only with very few features, very much as C.

Ada, also an object-oriented language, is different than C++. Originally designed by the U.S. DOD, it didn’t gain popularity despite being accepted as an international standard twice (Ada83 and Ada95). However, Ada language has many features that would simplify embedded software development.

Java is another language used for embedded systems programming. It primarily finds usage in high-end mobile phones as it offers portability across systems and is also useful for browsing applications. Java programs require Java Virtual Machine (JVM), which consume lot of resources. Hence it is not used for smaller embedded devices.

Efficient embedded C programs must be kept small and efficient; they must be optimized for code speed and code size. Good understanding of processor architecture embedded C programming and debugging tools facilitate this.

Comments

KeyWords

Show more

Popular posts from this blog

Digital Clock On LCD (16x2) PIC16F1937 Used In FlowCode Programming and Simulation

In this sample project we are using FlowCode Simulation Software for Programming and Testing with PIC16F1937.It shows how to use and simulate and program LCD for use in different projects.In this Project we have created digital clock(Using two digit each for seconds minute and hours in 24 Hour format on LCD) on 16x2 Liquid Crystal Display.Varying the delay and write-erase sequence can be manipulated to get desired result.

Here is the Flow code program:
LCD(16x2) Display Related Programs
ADC-Voltage as Float(LCD with PIC16F1937)
ADC-Voltage as String (LCD with PIC16F1937)
ADC Sampling and outputting to a LCD(LCD with PIC16F1937)
Printing Number on 16x2 LCD Display with PIC16F88
Printing and Updating Number on 16x2 LCD Display
Printing a Two line(String) message (LCD 16x2)
Printing a formatted number on ( LCD 16x2 ) Using PIC16F88

LCD (Liquid Crystal Display 16X2):-
Its screen is an electronic display module and find a wide range of applications. A 16x2 LCD display is very basic module and is very…

Motor Types- Special Types of Motor

Motor Types- Special Types of Motor
1. Iron less or core-less rotor motorNothing in the principle of any of the motors described above requires that the iron (steel) portions of the rotor actually rotate. If the soft magnetic material of the rotor is made in the form of a cylinder, then (except for the effect of hysteresis) torque is exerted only on the windings of the electromagnets. Taking advantage of this fact is the core less or iron less DC motor, a specialized form of a PM DC motor. Optimized for rapid acceleration, these motors have a rotor that is constructed without any iron core. The rotor can take the form of a winding-filled cylinder, or a self-supporting structure comprising only the magnet wire and the bonding material. The rotor can fit inside the stator magnets; a magnetically soft stationary cylinder inside the rotor provides a return path for the stator magnetic flux.

Sending String with PIC16F877A Using Serial RS232 -Flowcode Simulation

Here we are using Flow-code Simulation Software for Programming and Testing with PIC16F877A for Simulation of this project .It shows how to send string and character through serial port.

Flow-code has following facility regarding Serial Communication:
1. Character Sent
2. Character Received 
3. Character in Queue

Here is the Flow code program:
More Post On Serial Communication
Serial RS232-Simple Echo Send and Receive- PIC16F88
Serial RS232 -String Receivev with PIC16F877A
RS232 and RS485 Comparative Study

In this project we are using LCD display for displaying sent string.Setting used can be seen in the video.We are sending " TechInventory "  and " RS232 Working " string through RS232 Serial port.Micro-controller used is PIC16F877A with 16X2 LCD display.

INDEX-Tutorials for Flow Code Programming and Simulation

Categorized Topics
We are using Flow Code Simulation Software from MATRIX for Programming and Testing,You will find topics from Flow Code Programming and Simulation.You can request a topic here.If some links are not working please let me know.
Flowcode is one of the world's most advanced graphical programming languages for micro-controllers. The great advantage of Flowcode is that it allows those with little to no programming experience to create complex electronic systems in minutes. Flowcode is available in multiple languages and currently supports the PICmicro, dsPIC, PIC24, AVR/Arduino and ARM series of micro controllers.You can Download the Demo Software HERE.







INDEX
Seven Segment LED Display 
Using Seven Segment with PIC16F88Counting using loops(Seven Segment with PIC16F88)Counting switch presses(Seven Segment with PIC16F88)
Timers and Counters
Timed Counter And Use of Timer Interrupt(PIC16F88)
ADC Programming
ADC Simulation In Flow CodeServo with ADC control input ,Flow Code Simulati…

Timed Counter And Use of Timer Interrupt Using PIC16F88 Microcontroller - Flow Code Simulation

Flow Code-Timed Counter And Use of Timer Interrupt(PIC16F88)

In this example of counting seconds using Timed Counter and Timer Interrupt.In this example we are using 7 Segment Display to display the results of calculation as seen in the examples code and videos.

Here is the MACRO for Interrupt Program Code:


Here is the Flow code MAIN program:
Complete list of projects:
Tutorials for Flow Code Programming and Simulation

Motor Types- DC Motor

Motor Types- DC Motor Shunt DC motor: The rotor and stator windings are connected in parallel.Separately Excited motor: The rotor and stator are each connected from a different power supply, this gives another degree of freedom for controlling the motor over the shunt.Series motor: the stator and rotor windings are connected in series. Thus the torque is proportional to I*I  so it gives the highest torque per current ratio over all other DC motors.It is therefore used in starter motors of cars and elevator motors.For more related information please refer:
Motor Types-Introduction
Motor Types- DC Motor
Motor Types- AC Motor
Motor Types- Special Types of Motor
Servo Motors
Stepper Motor

Stepper Motors Examples with PIC16F88 -Flowcode Simulation

We are using FlowCode Simulation Software for Programming and Testing with PIC16F88 for Simulation of this project .It shows how to use and simulate and program Stepper Motors for use in different projects.

For concept of Different types of Motors and their properties please see:
Motor Types-Introduction
Motor Types- DC Motor
Motor Types- AC Motor
Motor Types- Special Types of Motor
Servo Motors
Here is the Flow code program:
Three Stepper are used to depict different configurations in which they can be used .Here functionality of auto off capability is used.It can be programmed to moved back to its original position if required.

More related Post :
Stepper motor Control using switches(Flow Code Simulation)
Stepper with switch control- Auto Off with PIC16F88

Here is the complete list of projects:
Tutorials for Flow Code Programming and Simulation

Fibonacci Series Using Array And For Loop - C Programming Examples

As we have started C Programming coding with Example Series, We have published last posts
"Write A Program For SUM of Infinite HP"

"Write A Program To Find SUM of AP" and

"Write A Program To Find SUM of GP Sequence".

We have chosen to start with Arithmetic Series and in this post you will find some basic idea and some useful concepts about Fibonacci Numbers .You can download C Codes below.Please let us know your feedback.

In this post we are doing again Fibonacci Series but with different approach.In last post "Fibonacci Progression Using While Loop" you will see how to generate Fibonacci Numbers by using concepts of  Do-While Loop.In this post we will talk about another loop i.e. For Loop and side by side Concept of Arrays will be discussed and demonstrated.
Fibonacci Series - Sequence ( Using Array And For Loop ) Video Tutorial(See C- Codes Below ):

For Loop Concept: FOR Loops are the most useful type. The syntax for a for loop is  for ( variable init…

Pulse Width Modulation,Simulation Micro controllers(PIC16F877)

Pulse Width Modulation,Simulation Micro controllers(PIC16F877)
This simulation depicts generation of PWM waves using Flow Code Simulation techniques.It will help to understand how to control speed of DC motor using PWM in controllers.

You may also like :
Servo with ADC control input
Stepper motor Control using switches
ADC Simulation In Flow Code 
Pulse Widht Modulation Simulation in Microcontrollers(PIC16F877)

Here is the complete list of projects:
Tutorials for Flow Code Programming and Simulation


Pulse-width modulation (PWM), or pulse-duration modulation (PDM), is a technique used to encode a message into a pulsing signal. It is a type of modulation. Although this modulation technique can be used to encode information for transmission, its main use is to allow the control of the power supplied to electrical devices, especially to inertial loads such as motors. In addition, PWM is one of the two principal algorithms used in photovoltaic solar battery chargers,the other being MPPT.

Printing a Two line(String) message (LCD 16x2) PIC16F88 FlowCode Programming and Simulation

We have been using FlowCode Simulation Software for Programming and Testing with PIC16F88.It shows how to use and simulate and program LCD for use in different projects.In this Project we are printing two line message on 16x2 LCD Display.In First line "Ingenuity Dias" is continuously displayed and in second line "tech-inventory" is displayed.Varying the delay and write-erase sequence can be manipulated to get desired result.

Here is the Flow code program:
LCD(16x2) Display Related Programs
ADC-Voltage as Float(LCD with PIC16F1937)
ADC-Voltage as String (LCD with PIC16F1937)
ADC Sampling and outputting to a LCD(LCD with PIC16F1937)
Printing Number on 16x2 LCD Display with PIC16F88
Printing and Updating Number on 16x2 LCD Display