Microelectronics Lab ELCT 708 - German University in Cairo Microelectronic… · ATmega16...

Post on 20-Jul-2020

0 views 0 download

Transcript of Microelectronics Lab ELCT 708 - German University in Cairo Microelectronic… · ATmega16...

Dr M. Abd El Ghany Eng. Yasmin Adel

Microelectronics Lab

ELCT 708

Session 1

Introduction to Embedded System

&

AVR Microcontroller

&

C Programming Language

Dr M. Abd El Ghany Eng. Yasmin Adel

What is an embedded system

• It is a system that has software embedded in computer hardware.

• The system consists of a small computer that performs a specific task, inputs( sensors/buttons), and outputs(actuators). Depending on these inputs, the small computer decides how the output should be.

Dr M. Abd El Ghany Eng. Yasmin Adel

Examples

1-calculators ( inputs : buttons, small computer that evaluates mathematical operation results, output : number on LCD screen)

2-coffee machine ( inputs: buttons [type of coffee, sugar, shots], computer that based on the given inputs decided how to control the mechanical part (how long coffee will be injected based on the given number of shots)

3-cars [ input: obstacle detecting sensors, a small computer that if an obstacle if detected stops the car]

Dr M. Abd El Ghany Eng. Yasmin Adel

Embedded Systems

Characteristics

1. Reliability

2. Efficiency

3. Tightly-constrained

4. Maintainability

Dr M. Abd El Ghany Eng. Yasmin Adel

Reliability

• An error in an Embedded system application such as a TV remote control or compact disc player will result in a product that does not work and consequently does not sell.

• An error in Embedded system application such as an Antilock Braking System(ABS) or Breaking Assistant(BA) or autopilot could be fatal.

Dr M. Abd El Ghany Eng. Yasmin Adel

Efficiency

• Considered in real time applications.

• A real time application must be able to act at a speed corresponding with the occurrence of an actual process.

• It must compute certain results in certain real-time without delay.

Dr M. Abd El Ghany Eng. Yasmin Adel

Tightly-constrained

• Embedded Systems normally come with constraints in hardware resources:

1. Processing(speed)

2. Memory(Data)

3. Storage(Code Size)

• Most of the time it targets real time objectives, this means,

It needs to be fast and efficient(Response Time).

It needs to be predictable (execution time known ahead, and almost constant)

• Power limited(battery operated devices).

• Cost

• Size

Dr M. Abd El Ghany Eng. Yasmin Adel

Maintainability

• The ability to modify the system after its initial release and enhance its performance like execution time, code and memory size.

Dr M. Abd El Ghany Eng. Yasmin Adel

Can Personal Computer be considered as an

Embedded System as it integrates hardware

and software to perform functions? Why?

• PC cannot be considered as an embedded system because :

1.It uses a General-Purpose Processor.

2.The system is built independently from the software runs on it.

Dr M. Abd El Ghany Eng. Yasmin Adel

Micro Processor

• A microcontroller is not the same as a microprocessor.

• A microcontroller is itself a single chip computer system.

• It is a processor along with other several supporting components on one chip .

Microcontroller

• A microprocessor is a single chip CPU used within other

computer systems. • CPU = ALU + Registers + Control unit

Dr M. Abd El Ghany Eng. Yasmin Adel

A microcontroller has seven main

components:

1.Central Processing Unit (CPU).

2.Memory Units.

3.Input and Output Ports (GPIO or DIO).

4.Timers.

5.Watch-Dog Timer.

6.Buses.

7.Interrupt Unit.

Dr M. Abd El Ghany Eng. Yasmin Adel

Microcontroller Vs. Microprocessors

Microcontroller Microprocessor

A processor along with other components on chip(ADC/MEMORY)

A processor on a single chip

Used for a specific task (Coffee machine) Used for General Purpose (Laptops and PCs)

Supplied with pins along each side. The pins presented by a microcontroller are used for power, ground, oscillator, I/O ports, interrupt request signals, reset and control

Pins are most often memory bus signals (rather than I/O ports).

Limited memory

Configurable memory

Small Design Area, consequently less power. Low cost

Larger Design area, power consumption, and higher cost

Slow clock rates(MHz) Fast clock rates (GHz)

Dr M. Abd El Ghany Eng. Yasmin Adel

Why do we have different

microcontrollers in the market?

• Differences in requirements, make the manufacturers produce different microcontrollers with different memory sizes, number of I/O lines and number of integrated peripheral devices. Other wise they are all similar to use.

Dr M. Abd El Ghany Eng. Yasmin Adel

AVR

• AVR developed by Amtel

• AVR derives its name from its developers and stands for

Alf-Eigel Bogen Vegard Wollan RISC microcontroller.

• Also known as Advanced Virtual RISC.

Dr M. Abd El Ghany Eng. Yasmin Adel

What is special about AVR?

• They have fast execution time since most of the instructions execute in one clock cycle.

• AVR are about 4 times faster than PICs.

• They consume less power.

Dr M. Abd El Ghany Eng. Yasmin Adel

Naming Convention

Dr M. Abd El Ghany Eng. Yasmin Adel

ATmega16 Architecture

1. CPU

• CPU is like a brain of the controller which helps in executing a number of instructions. It can handle interrupts, perform calculations and control peripherals with the help of registers. Atmega16 comes with two buses called instruction bus and data bus.

• The CPU reads the instructions in the instruction bus while data bus is used to read or write the corresponding data. The CPU mainly consists of the program counter, general purpose registers, stack pointer, instruction register and an instruction decoder.

Dr M. Abd El Ghany Eng. Yasmin Adel

ATmega16 Architecture

2. ROM

• The controller program is stored in ROM, also known as non-volatile programmable flash memory. The flash memory comes with a resolution of at least 10,000 write/erase cycles. Flash memory is mainly divided into two parts known as Application flash section and booth flash section.

• Program of the controller is stored in the applications flash section. While booth flash section is optimized to work directly when the controller is powered up.

Dr M. Abd El Ghany Eng. Yasmin Adel

ATmega16 Architecture

3. RAM

• The SRAM (static random access memory) is used for storing information temporarily and comes with 8-bit registers. This is just like a regular computer RAM which is used to supply data through the runtime.

Dr M. Abd El Ghany Eng. Yasmin Adel

ATmega16 Architecture

4. Interrupt

• The interrupt is used for an emergency which puts the main function on hold and executes the necessary instructions at that time. Once the interrupt is called and executed the code switches back to the main program.

Dr M. Abd El Ghany Eng. Yasmin Adel

ATmega16 Architecture

5. I/O modules

• Digital I/O modules are used to set a digital communication between the controller and external devices. While analog I/O modules are used for transferring analog information. Analog comparators and ADC fall under the category of analog I/O modules.

Dr M. Abd El Ghany Eng. Yasmin Adel

ATmega16 Architecture

6. Timers

• Timers are used for calculating the internal signal within the controller. Atmega16 comes with two 8-bit timers and one 16-bit timer. All these timers work as a counter when they are optimized for external signals.

7. Watchdog timer

The watchdog timer is a remarkable addition in this controller which is used to generate the interrupt and reset the timer. It comes with 128kHz distinct CLK source.

Dr M. Abd El Ghany Eng. Yasmin Adel

ATmega16 Architecture

8. Serial Communication

• Atmega16 comes with USART and SPI units that are used for developing serial communication with the external devices.

9. Analog Comparator

• It compares the input values of two analog signals.

Dr M. Abd El Ghany Eng. Yasmin Adel

ATmega16 Architecture

10. Internal Calibrated Oscillator

• It is equipped with an internal oscillator for driving its clock. By default ATmega16 is set to operate at internal calibrated oscillator of 1Mhz.

• The maximum frequency of internal oscillator is 8 Mhz.

• ATmega16 can be operated using an external crystal oscillator with a maximum frequency of 16Mhz.

Dr M. Abd El Ghany Eng. Yasmin Adel

Pin Configuration

Dr M. Abd El Ghany Eng. Yasmin Adel

AVR ATmega16

Dr M. Abd El Ghany Eng. Yasmin Adel

Assembly Language

Dr M. Abd El Ghany Eng. Yasmin Adel

Why do use C ?

• Each microcontroller has an individual instruction set and assembly language.

Modifying assembly language code so a program written for one

microcontroller will run on a different microcontroller is very time

consuming and effort intensive.

• Writing C code that supports general microcontroller features helps to avoid

portability problems.

• Using C library functions and header files ensures that application source code can be recompiled for different microcontroller targets.

Dr M. Abd El Ghany Eng. Yasmin Adel

Why do use C ?

• C is a high level language. You will be able to program your applications quickly.

• C’s breadth of expression is concise and powerful; therefore,

each line of code written in C can replace many lines of assembly

language.

• Debugging and maintaining code written in C is much easier than in assembly language code.

Dr M. Abd El Ghany Eng. Yasmin Adel

Dr M. Abd El Ghany Eng. Yasmin Adel

Compiler

• The compiler converts code written in a human-readable programming language into assembly code.

• GNU compiler collection or GCC is the most widely used C compiler.

• The linker is a computer program that takes one or more object files

generated by a compiler and combines them into one, executable program.

Linker

Assembler

• The assembler converts the assembly code into a machine code representation which is understood by your processor. This step creates object files.

Dr M. Abd El Ghany Eng. Yasmin Adel

Compiler vs Assembler vs Linker

Dr M. Abd El Ghany Eng. Yasmin Adel

Linker VS Compiler

Dr M. Abd El Ghany Eng. Yasmin Adel

Executable File

• This is a set of instructions (machine code).

• It is used by the microcontroller to run its specific function.

Dr M. Abd El Ghany Eng. Yasmin Adel

Dr M. Abd El Ghany Eng. Yasmin Adel

Types Bits Bytes Range

Signed Char 8 1 -128 to +127

Unsigned char 8 1 0 to 255

Int 32 4 -2,147,483,648 to 2,147,483,647

Long 32 4 -2,147,483,648 to 2,147,483,647

Unsigned long 32 4 0 to 4,294,697,295

Long long 64 8 -(2^63) to (2^63)-1

Unsigned long long 64 8 0 to 2*((2^63)-1)

Short int 16 2 -32,768 to 32,767

Unsigned short 16 2 0 to 65,535

Float 32 4 3.4E-38 to 3.4 E+38 (fraction)

Double 64 8 1.7E-308 to 1.7E+308 (fraction)

Long double 80 10 3.4E-4932 to 1.1 E+4932 (fraction)

Dr M. Abd El Ghany Eng. Yasmin Adel

Printf

Dr M. Abd El Ghany Eng. Yasmin Adel

Scanf

Dr M. Abd El Ghany Eng. Yasmin Adel

Array

1. Array declaration by specifying size:

• Int arr1[10];

2. Array declaration by initializing elements:

• Int arr2[]={10,20,30};

3. Array declaration by specifying size and initializing elements:

• Int arr3[2]={10,20};

Dr M. Abd El Ghany Eng. Yasmin Adel

Accessing Array Elements:

Dr M. Abd El Ghany Eng. Yasmin Adel

Types of Operators

1. Arithmetic Operators 2. Relational Operators 3. Logical Operators 4. Assignment Operators 5. Increment and decrement Operators 6. Conditional Operators 7. Bitwise Operators 8. Special Operators

Dr M. Abd El Ghany Eng. Yasmin Adel

1. Arithmetic Operators

Dr M. Abd El Ghany Eng. Yasmin Adel

2. Relational Operators

Dr M. Abd El Ghany Eng. Yasmin Adel

3. Logical Operators

Dr M. Abd El Ghany Eng. Yasmin Adel

4. Assignment Operators

Dr M. Abd El Ghany Eng. Yasmin Adel

5.Increment and decrement

Operators

Increment prefix ++i

Increment postfix i++

Decrement prefix --i

Decrement postfix i--

Dr M. Abd El Ghany Eng. Yasmin Adel

6. Conditional Operators

Dr M. Abd El Ghany Eng. Yasmin Adel

7. Bitwise Operators

Operator Use Example

& Bitwise AND 101&001=001

| Bitwise OR 110 |101=111

<< Left shift 110<<1=100

>> Right shift 110>>2=001

~ Ones complement ~110=001

Dr M. Abd El Ghany Eng. Yasmin Adel

8. Special Operator

Dr M. Abd El Ghany Eng. Yasmin Adel

if-else-if ladder

Dr M. Abd El Ghany Eng. Yasmin Adel

For loop

Dr M. Abd El Ghany Eng. Yasmin Adel

While

Dr M. Abd El Ghany Eng. Yasmin Adel

Do while

Dr M. Abd El Ghany Eng. Yasmin Adel

Switch

Dr M. Abd El Ghany Eng. Yasmin Adel

Function

Name Definition Example in code

Parameter Names inside function definition

x,y

Argument Names inside function call

a,b

Dr M. Abd El Ghany Eng. Yasmin Adel

Arguments

• Arguments are passed by value.

• Any changes inside the parameters doesn’t effect the arguments.

Dr M. Abd El Ghany Eng. Yasmin Adel

Question

What will happen to the values of i and d ?

Dr M. Abd El Ghany Eng. Yasmin Adel

Memory

• Main Memory is divided into bytes, with each byte capable of storing eight bits of information.

• If there are n bytes in memory, we can

think of addresses as numbers that range from 0 to n-1.

Dr M. Abd El Ghany Eng. Yasmin Adel

Memory

• Each variable occupies one or more bytes of the memory ; the address of the first byte is said to be the address of the variable.

• The variable I occupies the bytes at addresses 2000 and 2001, so I’s address is 2000:

Dr M. Abd El Ghany Eng. Yasmin Adel

Pointers

• Pointer Variable is a variable that store an address.

• Pointer variable P stores the address of variable i.

Dr M. Abd El Ghany Eng. Yasmin Adel

Pointer Declaration

• A pointer variable must be preceded by an asterisk:

int *p; (it points nowhere)

• This declaration means that p is a pointer variable capable of pointing to objects of type int.

Dr M. Abd El Ghany Eng. Yasmin Adel

Pointers Operators

• Address Operator (&)

• Indirection Operator (*)

Dr M. Abd El Ghany Eng. Yasmin Adel

Address Operator (&)

1. int i,*p; p=&i;

2. int i;

int *p=&i;

3. int i, *p=&i;

Dr M. Abd El Ghany Eng. Yasmin Adel

Indirection Operator(*)

• Once a pointer variable points to an object, we can use (*) to access what is stored in the object.

• If p points to I we can print the value of i as

printf(“%d\n”,*p) ;

• Changing the value of p changes the value of I

• Changing the value of I changes the value of p

Dr M. Abd El Ghany Eng. Yasmin Adel

Indirection Operator(*)

Dr M. Abd El Ghany Eng. Yasmin Adel

Wrong Assignments

1. Int *p;

Printf(“%d”,*p);

2. Int *p;

*p=1;

Dr M. Abd El Ghany Eng. Yasmin Adel

Pointer Assignment

Int i, j, *p, *q

p=&i;

q = p;

Dr M. Abd El Ghany Eng. Yasmin Adel

Pointer Assignment

• The first lines of code are pointer assignment while the second is not.

• *q=*p means that copy the value of p to q.

Dr M. Abd El Ghany Eng. Yasmin Adel

Question

int a=5;

int *b=&a;

int c=*b;

a=7;

Printf(“%d\n%d\n”,*b,c);

Dr M. Abd El Ghany Eng. Yasmin Adel

Results

• *b=7

• C=5

Dr M. Abd El Ghany Eng. Yasmin Adel

Pass by Reference

Dr M. Abd El Ghany Eng. Yasmin Adel

Assignment 1

• You have to complete the function void update(int *a, int *b), which reads two integers as argument, and sets a with the sum of them, and b with the absolute difference of them.

• A=a+b

• B=|a-b|

• Input Format

• Input will contain two integers a, and b , separated by a newline.

• Output Format

• You have to print the updated value of a and b, on two different lines. You only have to complete the void update(int *a,int *b) function.

Dr M. Abd El Ghany Eng. Yasmin Adel

Assignment 2

• Write a c function for swapping of two arrays of the same dimensions.

• In the main function test your code by declaring 2 arrays of size 5 and print the output of each array on the console.

Dr M. Abd El Ghany Eng. Yasmin Adel

Assignment 3

• Write a function to print half pyramid using *. The user give the number of rows use scanf and print the output on the console.

*

**

***

****

*****