You are on page 1of 20

1.

INTRODUCTION
EMBEDDED DEVELOPER

An embedded developer is a software engineer specialising in designing, developing and testing


embedded systems. Embedded systems are designed to perform specific tasks, such as controlling a
device or providing a service. As an embedded software developer, you will be working to create
applications and systems that are, reliable, efficient and cost-effective.

EMBEDDED SYSTEM
As its name suggests, Embedded means something that is attached to another thing. An embedded
system can be thought of as a computer hardware system having software embedded in it. An
embedded system can be an independent system or it can be a part of a large system. An embedded
system is a microcontroller or microprocessor-based system which is designed to perform a specific

task. For example, a fire alarm is an embedded system, it will sense only smoke.

An embedded system has three components −

● It has hardware.
● It has application software.
● It has Real Time Operating system (RTOS)

CHARACTERISTICS OF AN EMBEDDED SYSTEM

Single-functioned − An embedded system usually performs a specialized operation and does the same
repeatedly. For example: A pager always functions as a pager.

Tightly constrained − All computing systems have constraints on design metrics, but those on an
embedded system can be especially tight. Design metrics is a measure of an implementation's features
such as its cost, size, power, and performance [1]. It must be of a size to fit on a single chip, must
perform fast enough to process data in real time and consume minimum power to extend battery life.

Reactive and Real time − Many embedded systems must continually react to changes in the system's
environment and must compute certain results in real time without any delay. Consider an example of
a car cruise controller; it continually monitors and reacts to speed and brake sensors [2]. It must
compute acceleration or de-accelerations repeatedly within a limited time; a delayed computation can
result in failure to control of the car.

LIET-EEE 20KD1A0236 Page 1


Microprocessors based − It must be microprocessor or microcontroller based.

Memory − It must have a memory, as its software usually embeds in ROM. It does not need any
secondary memories in the computer.

Connected − It must have connected peripherals to connect input and output devices.

PURPOSE OF EMBEDDED SYSTEMS:

Each Embedded Systems is designed to serve the purpose of any one or a combination of the following
tasks.

▪ Data Collection/Storage/Representation
▪ Data Communication
▪ Data (Signal) Processing
▪ Monitoring
▪ Control
▪ Application Specific User Interface

Microchip Technology Inc. is a well-known American multinational corporation that specializes in the
design and production of microcontrollers, microprocessors, and other semiconductor products. Here's
an overview of the organization. Microchip Technology Inc. was founded in 1987, and it has its
headquarters in Chandler, Arizona, USA. Over the years, it has grown to become one of the leading
companies in the microcontroller industry [3].The All-India Council of Technical
Education(AICTE)and Edu Skills have launched the virtual internship program on Embedded System
supported by Microchip.

LIET-EEE 20KD1A0236 Page 2


2.8BIT MICROCONTROLLERS: ARCHITECTURE OF PIC16
INTRODUCTION:
8-bit PIC® Microcontroller (MCU) Summary
The first Peripheral Interface Controller (PIC®) was developed in 1975. It was a 16-bit core, created
to handle the input/output tasks of larger Central Processor Units (CPUs) to improve overall system
performance. It offered Read-Only Memory (ROM), Random Access Memory (RAM) and a simple
but efficient CPU.
Microchip's first 8-bit microcontroller (MCU), was the PIC1650. Over time, 8-bit PIC expanded from
12-bit instruction words to 14 and 16. Non-volatile program and data memory was introduced along
with more package options and many new digital and analog peripherals. Improvements to power
consumption, performance and cost also became available.
ARCHITECTURE:
PIC Microcontroller architecture is based on Harvard architecture and supports RISC architecture
(Reduced Instruction Set Computer). Memory organisation (ram, rom, stack), CPU, timers, counter,
ADC, DAC, serial communication, CCP module, and I/O ports are all part of the PIC microcontroller
architecture. For communicating with additional peripherals, the PIC microcontroller supports
protocols such as CAN, SPI, and UART.
INSTRUCTION SET:
CPU (Central Processing Unit):
PIC microcontroller’s CPU consists of:
Arithmetic logic unit (ALU)
Memory unit (MU)
Control unit (CU)
Accumulator
ALU is used to perform arithmetic and logical operations. After the instructions have been processed,
memory is employed to store them. The internal and external peripherals attached to the CPU are
controlled by the control unit, and the results are stored in the accumulator. It supports normally RISC
architecture.
INTERRUPT:
It has been already mentioned that microcontrollers differs from other integrated circuits. Most of them
are ready for installation into the target device just as they are, this is not the case with the
microcontrollers. In order that the microcontroller may operate, it needs precise instructions on what

LIET-EEE 20KD1A0236 Page 3


to do. In other words, a program that the microcontroller should execute must be written and loaded
into the microcontroller. This chapter covers the commands which the microcontroller "understands".
The instruction set for the 16FXX includes 35 instructions in total. Such a small number of instructions
is specific to the RISC microcontroller because they are well-optimized from the aspect of operating
speed
SPECIAL FEATURES:
• PIC devices generally feature:
• Flash memory (program memory, programmed using MPLAB devices)
• SRAM (data memory)
• EEPROM (programmable at run-time)
• Sleep mode (power savings)
• Watchdog timer.
• Various crystal or RC oscillator configurations, or an external clock.

LIET-EEE 20KD1A0236 Page 4


3.INTRODUCTION TO MP LAB® XIDE
INTRODUCTION:

MPLAB X Integrated Development Environment (IDE) is an expandable, highly configurable


software program that incorporates powerful tools to help you discover, configure, develop, debug and
qualify embedded designs for most of our microcontrollers and digital signal controllers
PROJECT:
How do I start a project in Mplab?
Open a Project - Developer Help
Step 1: Connect Hardware.
Step 2: Create and Setup MPLAB X IDE Project for MCU1.
Step 3: Configure MCU1 Resources with MCC.
Step 4: Build and Program MCU1.
Step 5: Create and Setup MPLAB X IDE Project for MCU2.
Step 6: Configure MCU2 Resources with MCC.
Step 7: Build and Program MCU2.
Step 8: Test Application.

CODE DEVELOPMENT:
The P-Star can be programmed using standard development tools from Microchip. This section
explains how to get started programming the P-Star in the C language using MPLAB X and XC8.
MPLAB X a free integrated development (IDE) from Microchip for programming their PIC
microcontrollers. XC8 is a C compiler from Microchip for 8-bit PICs. Both programs run on
Windows, Max OS X, and Linux.
Download and install the latest versions of MPLAB X and XC8 .Find “MPLAB X IDE” in your Start
Menu and run it.From the File menu, select “New Project”.On the first screen theNew Project wizard,
select the “Microchip Embedded” category and then select “Standalone Project”. Click “Next”.

DEBUGGING:
Target Debugging In an integrated development environment (IDE), the execution of the code is
tested on a debugger. The debugger can be a software program that simulates the operation of the
microcontroller for testing, or it can be a hardware instrument to analyse the program as it executes
in the application.

LIET-EEE 20KD1A0236 Page 5


Software Debuggers Simulators are built into MPLAB X IDE so a program can be tested without any
additional hardware. A simulator is a software debugger, and the debugger functions for the simulator
are almost Identical to the hardware debuggers, allowing a new tool to be learned with ease. Usually
a simulator runs somewhat slower than an actual microcontroller since the CPU in the computer is
being used to simulate the operations of the microcontroller.
Hardware Debuggers There are two types of hardware that can be used with MPLAB X IDE:
programmers and hardware debuggers. A programmer simply burns the machine code from the PC
into the internal memory of the target microcontroller. The microcontroller can then be plugged into
the application and, hopefully, it will run as designed.

LIET-EEE 20KD1A0236 Page 6


4.GETTING STARTED WITH PIC16F1xxx MCUs USING
MCC AND STATE MACHINES
INTRODUCTION:
There are three main pieces you will need in order to get started: software, hardware and
documentation. We'll cover each of these in detail here. If you are unfamiliar with the 8-bit PIC®
MCU, then you might consider also reviewing the training module Get Started With The PIC16F1xxx
MCU which provides a detailed understanding of the 8-bit architecture
STATE MACHINES:
A state machine starts in a known initial state and responds to a specific set of inputs. Inputs in an
MPLAB® Harmony application come from hardware changes or API calls from the user.
Each state monitors its inputs and periodically decides if it should remain in its current state or
transition to the next state. Each time a transition occurs, there are usually some side effects (like
inserting a byte of data into a hardware FIFO for transmission).

MCC LAB SESSIONS:


he wizard will walk through selecting the microcontroller, the development programmer/debugger and
the compiler to use. This should be done before launching the MCC. The MCC tool, once installed,
can be launched from the the MPLAB X Tools menu under the 'Embedded' selection. Cloud-native
security is a security approach in which steps to ensure security are taken throughout the distinct
lifecycle of cloud-native applications, from the infrastructure planning phase to the client delivery and
maintenance.
How to install MCC in Mp lab?
1.step by Step
2.pen MPLAB X IDE Select the 'Tools' menu, and click on 'Plugins'.
3. In the MPLAB X IDE Plugins window, click the 'Available Plugins' tab.

LIET-EEE 20KD1A0236 Page 7


5.SYNATX AND STRUCTURE OF C

INTRODUCTION:
C Basic Syntax: The basic syntax of the C program consists of the header, main () function, variable
declaration, body, and return type of the program. The header is the first line in the C program with
extension. h which contains macro definitions and C functions
VARIABLES:
A variable is nothing but a name given to a storage area that our programs can manipulate. Each
variable in C has a specific type, which determines the size and layout of the variable's
memory; the range of values that can be stored within that memory; and the set of operations that can
be applied to the variable.
LITERALS AND CONSTANTS:
Literals are the Constant values that are assigned to the constant variables. Literals represent fixed
values that cannot be modified. Literals contain memory but they do not have references as variables.
Generally, both terms, constants, and literals are used interchangeably.
SYMBOLIC CONSTANTS:
Symbolic constants are what most people think of when someone refers to "constants" in any
programming language. Symbolic constants are nothing more than a label or name that is used to
represent a fixed value that never changes throughout a program. For example, one might define PI as
a constant to represent the value 3.14159.
DECISIONS:
A normal program is not a sequential execution of expressions or statements one after the other. It
will have certain conditions to be checked or it will have certain number of iterations. When we check
for certain conditions to execute further then it called as decision statements. If the condition in
decision statements are true then one set of instructions are executed, if false then another set of
instructions are executed. This kind of decision is done using conditional operator. That will be mainly
used to return single line of action / result. When we have to perform series of operation, we use
IF conditions
FUNCTIONS:
Functions in C are the basic building blocks of a C program. A function is a set of statements enclosed
within curly brackets ({}) that take inputs, do the computation, and provide the resultant output. You
can call a function multiple times, thereby allowing reusability and modularity in C programming.

LIET-EEE 20KD1A0236 Page 8


6.ADVANCED C PROGRAMMING
INTRODUCTION:
The Advanced C Function is an extension of C Function with additional properties which are not
available in C Function. It allows you to add additional library files (.dll, so and. a) via the Library
import tab and external C/C++ language source files via the Additional sources tab.

DATA STRUCTURES
A structure creates a data type that can be used to group items of possibly different types into a
single type. We can group this into a structure. First, we have to declare the structure. We declare a
structure that contains a street name, a house number, a 5-digit postcode, and a city.

DATA STRUCTURES POINTERS


A pointer is defined as a derived data type that can store the address of other C variables or a memory
location. We can access and manipulate the data stored in that memory location using pointers. As
the pointers store the memory addresses, their size is independent of the type of data they are pointing
to Data Structures are used to store and manage data in an efficient and organised way for faster and
easy access and modification of Data. Some of the basic data structures are Arrays, LinkedList, Stacks,
Queues etc.

ADVANCED DATA STRUCTURES


After arrays, the second most popular data structure is Linked List. A linked list is a linear data
structure, made of a chain of nodes in which each node contains a value and a pointer to the next node
in the chain. In this article, let’s see how to implement a linked list in C.

LIET-EEE 20KD1A0236 Page 9


7.C PROGRAMMING: LINKED LIST DATA
STRUCTURE
INTRODUCTION:
A Linked List is a linear data structure. Every linked list has two parts, the data section and the address
section that holds the address of the next element in the list, which is called a node. The size of the
linked list is not fixed, and data items can be added at any locations in the list. The disadvantage is that
to get to a node, we must traverse to all the way from the first node to the node that we require. The
Linked List is like an array but unlike an array, it is not stored sequentially in the memory
LINKED LIST OVERVIEW
In computer science, a linked list is a linear collection of data elements whose order is not given by
their physical placement in memory. Instead, each element points to the next. It is a data structure
consisting of a collection of nodes which together represent a sequence.
DYNAMICALLY ALLOCATING MEMORY FOR LINKED LISTS:
A dynamic memory allocation method used in computer programming is called linked list allocation.
In this method, a linked list data structure is used to distribute memory. Memory is divided into a
number of blocks of similar size when allocating a linked list. In the linked list, each block is
symbolized by a node.
ALLOCATING LINKED LIST MEMORY BEFORE RUNTIME:
Dynamic memory allocation is also known as Runtime memory allocation because the memory is
allocated during runtime or program execution. The allocation and release of the memory space can
be done using the library functions of stdlib .h header file.

LIET-EEE 20KD1A0236 Page 10


8.C PROGRAMMING CALLBACKS
INTRODUCTION:
Callback functions execute according to their order in a queue. If a callback is executing and a user
action triggers a second callback, the second callback attempts to interrupt the first callback. The first
callback is the running callback. The second callback is the interrupting callback.
CALLBACK SERIES:

A callback is any executable code that is passed as an argument to another code, which is expected to
call back (execute) the argument at a given time. In simple language, If a reference of a function is
passed to another function as an argument to call it, then it will be called a Callback function.
FLEXIBLE CALLBACKS SETUPS:
Callbacks allow you to create more flexible and modular functions and enable you to separate hardware
and software operations. They also allow for multiple programmers to work on a project and provide
code to be combined with the main application program

CALLBACKS WITH INTERRUPTS


Callback functions execute according to their order in a queue. If a callback is executing and a user
action triggers a second callback, the second callback attempts to interrupt the first callback. The first
callback is the running callback. The second callback is the interrupting callback.

LIET-EEE 20KD1A0236 Page 11


9.ADVANCED EMBEDDED C TIPS,

TRICKS, AND CAUTIONS


INTRODUCTION:
Function Data Types. Embedded C programs can deal with both functions and parameters. The
function data type determines the type of value that can be returned by a given subroutine. Integer Data
Types. Embedded C supports three different data types for integers: int, short, and long
TIPS AND TRICKS:
Writing Clean and Readable Code in Embedded C Programming following below rules: Use names
with details in embedded c program. To make a readable code, use empty lines in embedded c program.
Never pass a function more than three parameters in embedded c programming.
PROGRAMMING CAUTIONS:
Never pass a function more than three parameters in embedded c programming. Instead of tabs, use
4 spaces for indentation. Put the opening braces (such as if, for, and while) on the same line as the
control statement, and the closing braces on a new line

LIET-EEE 20KD1A0236 Page 12


10.DESIGN CONSIDERATION FOR YOUR FIRST IOT
PROJECT
INTRODUCTION:
Five IoT Design Considerations
What is the Internet of Things? ...
Connectivity. ...
Continuity. ...
Compliance. ...
Coexistence. ...
Cybersecurity.
NETWORK MODEL:
The internet of things, or IoT, is a network of interrelated devices that connect and exchange data with
other IoT devices and the cloud. IoT devices are typically embedded with technology such as sensors
and software and can include mechanical and digital machines and consumer objects.
IOT ECOSYSTEM:
An IoT ecosystem consists of web-enabled smart devices that use embedded systems – such as
processors, sensors and communication hardware -- to collect, send and act on data they acquire from
their environments
IOT SECURITY PRIMER:
In essence, you start with a security risk analysis. You list your threats, vulnerabilities, and the
probability of an attack happening, and what the impact of that attack would be. Then decide on
appropriate countermeasures.

LIET-EEE 20KD1A0236 Page 13


11.EXPLORING BLUETOOTH LOW ENERGY FROM
FIRST STEPS TO FINAL APP
INTRODUCTION:
BLE uses less power than previous versions of blue tooth technologies while still operating over the
same 2.4 GHz ISM band. BLE achieves this by constantly being in ‘sleep mode’ until a connection
is initiated. This allows BLE devices to function significantly longer than blue tooth devices because
BLE is not always consuming power from the devices battery. It is only consuming power when in
use and when connections are initiated. Before BLE, blue tooth enabled devices constantly used
power to support their blue tooth capabilities
OUT OF THE BOX DEMO:
Bluetooth positioning determines the location of blue tooth enabled devices. It relies on the received
signal strength (RSSI) measurements between blue tooth devices to estimate the distance between each
device. For blue tooth positioning to work there needs to be multiple blue tooth devices
communicating with each other to estimate the location of blue tooth devices.
HARDWARE:

The BLE Component consists of the BLE Stack, BLE Profile, BLE Component Hardware Abstraction
Layer (HAL), and the Link Layer.

LIET-EEE 20KD1A0236 Page 14


12.CREATING A SENSOR NODE FOR AZURE IOT CENTRAL
INTRODUCTION:
The Azure Internet of Things (IoT) is a collection of Microsoft-managed cloud services, edge
components, and SDKs that let you connect, monitor, and control your IoT assets at scale. In simpler
terms, an IoT solution is made up of IoT devices that communicate with cloud services.
SENSOR NODE:
In Azure IoT Explorer, select IoT hubs on the left menu, then select + Add connection. Paste the
connection string into the Connection string box. Select Save. If the connection succeeds, IoT Explorer
switches to the Devices view
CONNECTING AZURE:
Choose + New service connection and select Azure Resource Manager. Select the Managed Identity
Authentication option. Enter a user-friendly Connection name to use when referring to this service
connection. Select the Environment name (such as Azure Cloud, Azure Stack , or an Azure
Government Cloud).

LIET-EEE 20KD1A0236 Page 15


13.MOTOR CONTROL WORKSHOP USING dsPIC® DIGITAL
SIGNAL CONTROLLERS (DSC) DUAL CORE DEVICES
INTRODUCTION:

A Digital Signal Controller (DSC) is a single-chip, embedded controller that seamlessly integrates the
control attributes of a Microcontroller (MCU) with the computation and throughput capabilities of a
Digital Signal Processor (DSP) in a single core. Microchip’s dsPIC® DSC offers everything you would
expect from a powerful 16-bit MCU: fast, sophisticated and flexible interrupt handling; a wide array
of digital and analog peripheral functions; power management; flexible clocking options; power-on-
reset; brown-out protection; watchdog timer; code security; full-speed real-time emulation; and full-
speed in-circuit debug solutions. By skill fully adding DSP capability to a high-performance 16-
bit MCU, Microchip’s dsPIC30F and dsPIC33F families of DSCs achieve the best of both worlds and
mark the beginning of a new era in embedded control.
X2C SCOPE:
X2C-Scope is a virtual oscilloscope tool developed by Linz Centre Mechatronics which allows run-
time debugging or monitoring of your embedded application in MPLAB X IDE. This tool allows you
to “Watch” or “Plot” any global variable in
HARDWARE CONFIGURATION FOR THE LABs:
Hardware Development Tools

MPLAB ICD 2

In-Circuit Debugger

The MPLAB ICD 2 In-Circuit Debugger is a powerful,

low-cost development tool. Running under MPLAB

IDE, MPLAB ICD 2 can debug ASM or C source

code, watch and modify variables, single step and

set breakpoints. Key features of the MPLAB ICD 2:

MPLAB PM3

Device Programmer

MPLAB PM3 Device Programmer is a full-featured,

LIET-EEE 20KD1A0236 Page 16


production quality universal device programmer.

Using interchangeable socket modules, the MPLAB

PM3 supports virtually all programmable devices

from Microchip. MPLAB PM3 has improved

programming time for many devices and offers

a built-in interface for robust In-Circuit Serial

Programming™ (ICSP™).

The dsPIC DSC family is supported on the

PM3 and PRO MATE II Device Programmer with

appropriate socket modules.

MPLAB ICE 4000

In-Circuit Emulator for the dsPIC30F*

The powerful, full-featured real-time MPLAB ICE 4000

In-Circuit Emulator for the dsPIC30F is capable of

debugging the most demanding real-time systems. Key

features of the MPLAB ICE 4000 In-Circuit Emulator:

• Full-speed, real-time emulation

• Supports full dsPIC30F supply voltage range

• 64K deep by 216-bit wide trace memory

• Unlimited breakpoints

• Complex break, trace and trigger logic

• Multi-level trigger up to four levels

• 48-bit time stamp

• USB connection to PC

• Stopwatch

• Full speed dsPIC DSC operation

LIET-EEE 20KD1A0236 Page 17


• USB or serial port connection to P Supports full dsPIC DSC supply voltage range Can be used as an
inexpensive programmer

• Smart watch variable windows

• Advanced breakpoint features

FORCED COMMUTATION:

Most historical communication systems can be considered to be "embedded" at least from one
perspective: they have a very narrowly defined task. They are not designed for general purpose
communication. For instance telephones were conceived for only for the purpose of voice
transmission.
COMMUNICATION BETWEEN THE CORES:

The communication between cores on the same CPU is known as inter-core communication. This
capability allows for efficient parallel processing and can improve overall performance. To send
instructions between cores, a CPU often uses a shared cache or memory.

LIET-EEE 20KD1A0236 Page 18


CONCLUSION
From this report, it is concluded that the internship “EMBEDDED DEVELOPER” by Microchip has
provided us with an immense knowledge on different aspects of EMBEDDED SYSTEMS in a simple
and understandable way.

EMBEDDED SYSTEMS is one of the most important aspects of the fast-paced growing digital world
and this internship helped us to understand these emerging technologies.

These fundamental courses cover all the basic information and create awareness in the students
regarding the security issues. The different types of MICROSHIP CONTROLLERS, these were
broadly discussed and the necessary steps are explained in a simple and understandable way

New emerging technologies and operations were discussed briefly with pictorial representations which
helped the students to understand and analyse them. The purpose of the internship is to help students
pursue a career in EMBEDDED SYSTEMS, as there are not enough professionals in the field at
present.

Microchip Networks EMBEDDED DEVELOPER Virtual Internship 2023 helped students to


understand and analyse the latest technologies in the EMBEDDED SYSTEMS sector and it enhances
the knowledge of a student on the EMBEDDED SYSTEMS DEVELOPMENT

LIET-EEE 20KD1A0236 Page 19


REFRENCES
1. Eclipse. IoT Developer Survey 2019 Results. Technical Report, Eclipse Foundation, 2019.
Available online: https://iot.eclipse.org/community/resources/iot-surveys/ (accessed on 10
July 2021).
2. Xu, H.; Yu, W.; Griffith, D.; Golmie, N. A Survey on Industrial Internet of Things: A Cyber-
Physical Systems Perspective. IEEE Access 2018, 6, 78238–78259. [Google Scholar]
[CrossRef] [PubMed]
3. Qiu, T.; Chen, N.; Li, K.; Atiquzzaman, M.; Zhao, W. How Can Heterogeneous Internet of
Things Build Our Future: A Survey. IEEE Commun. Surv. Tutorials 2018, 20, 2011–2027.
[Google Scholar] [CrossRef]
4. Ray, P. A survey on Internet of Things architectures. J. King Saud Univ. Comput. Inf. Sci.
2018, 30, 291–319. [Google Scholar] [CrossRef] [Green Version]
5. Akdur, D.; Garousi, V.; Demirörs, O. A survey on modeling and model-driven engineering
practices in the embedded software industry. J. Syst. Archit. 2018, 91, 62–82. [Google Scholar]
[CrossRef][Green Version]
6. Evanczuk, S. 2019 Embedded Markets Study Reflects Emerging Technologies, Continued
C/C++ Dominance; Technical Report; Aspencore, 2019. Available online:
https://www.embedded.com/2019-embedded-markets-study-reflects-emerging-technologies-
continued-c-c-dominance/ (accessed on 5 October 2021).
7. Devine, J.; Finney, J.; de Halleux, P.; Moskal, M.; Ball, T.; Hodges, S. MakeCode and
CODAL: Intuitive and efficient embedded systems programming for education. J. Syst. Archit.
2019, 98, 468–483. [Google Scholar] [CrossRef]
8. Microchip Technology. Atmel Start. 2020. Available online: https://start.atmel.com/ (accessed
on 21 October 2021).

LIET-EEE 20KD1A0236 Page 20

You might also like