9. TOPIC TO BE DISCUSSED
• MICROCONTROLLERS
• AVR MICROCONTROLLERS
• FLOW CHART
• FLOWCODE
10. AVR MICROCONTROLLERS
• The acronym AVR has been reported to stand for: Advanced Virtual
RISC and also for the chip's designers: Alf-Egil Bogen and Vegard Wollan
who designed the basic architecture at the Norwegian Institute of
Technology.
• RISC stands for reduced instruction set computer.
CPU design with a reduced instruction set as well as a simpler
set of instructions (like for example PIC and AVR)
11. A LITTLE HISTORY
• The PIC (Programmable Interrupt Controller) appeared around 1980.
→ 8 bit bus
→ executes 1 instruction in 4 clk cycles
→ Harvard architecture
• AVR (1994)
→ 8 bit bus
→ one instruction per cycle
→ Harvard architecture
13. AVR DIFFERENT GROUPS
• Classic AVR
• e.g. AT90S2313, AT90S4433
• Mega
• e.g. ATmega8, ATmega32, ATmega128
• Tiny
• e.g. ATtiny13, ATtiny25
• Special Purpose AVR
• e.g. AT90PWM216,AT90USB1287
14. LET’S GET FAMILIAR WITH THE AVR PART
NUMBERS
ATmega128
ATtiny44
Atmel group
Flash =128K
Atmel
Flash =4K
AT90S4433
Atmel Classic
group
Flash =4KTiny
group
15. AVR’S CPU
• AVR’s CPU
• ALU
• 32 General Purpose registers (R0
to R31)
• PC register
• Instruction decoder CPU
PC
ALU
registers
R1
R0
R15
R2
…
R16
R17
…
R30
R31
Instruction Register
Instruction decoder
SREG: I T H S V N CZ
16. TOPIC TO BE DISCUSSED
• MICROCONTROLLERS
• AVR MICROCONTROLLERS
• FLOW CHART
• FLOWCODE
17. FLOWCHART
• A flowchart is a diagram that depicts
the “flow” of a program.
START
Display message “How many hours did
you work?”
Read Hours
Display message “How much do you get
paid per hour?”
Read Pay Rate
Multiply Hours by Pay Rate. Store
result in Gross Pay.
Display Gross Pay
END
18. ALGORITHMS AND FLOWCHARTS
• A typical programming task can be divided into two
phases:
• Problem solving phase
• produce an ordered sequence of steps that describe
solution of problem
• this sequence of steps is called an ALGORITHM
• Implementation phase
• implement the program in some programming language
20. BASIC FLOWCHART SYMBOLS
• Terminals
• represented by rounded
rectangles
• indicate a starting or ending
point
Terminal
START
END
Terminal
START
Display message “How many
hours did you work?”
Read Hours
Display message “How much do
you get paid per hour?”
Read Pay Rate
Multiply Hours by Pay Rate.
Store result in Gross Pay.
Display Gross Pay
END
21. BASIC FLOWCHART SYMBOLS
• Input/Output Operations
• represented by parallelograms
• indicate an input or output
operation
Display message
“How many hours
did you work?”
Read Hours
Input/Output
Operation
START
Display message “How many
hours did you work?”
Read Hours
Display message “How much do
you get paid per hour?”
Read Pay Rate
Multiply Hours by Pay Rate.
Store result in Gross Pay.
Display Gross Pay
END
22. BASIC FLOWCHART SYMBOLS
• Processes
• represented by rectangles
• indicates a process such as a
mathematical computation or
variable assignment
Multiply Hours
by Pay Rate.
Store result in
Gross Pay.
Process
START
Display message “How many
hours did you work?”
Read Hours
Display message “How much do
you get paid per hour?”
Read Pay Rate
Multiply Hours by Pay Rate.
Store result in Gross Pay.
Display Gross Pay
END
26. DECISION STRUCTURE
• A new symbol, the diamond, indicates a yes/no question. If the answer
to the question is yes, the flow follows one path. If the answer is
no, the flow follows another path
YESNO
27. DECISION STRUCTURE
• In the flowchart segment below, the question “is x < y?” is asked. If the
answer is no, then process A is performed. If the answer is yes, then
process B is performed.
YESNO
x < y?
Process BProcess A
28. DECISION STRUCTURE
• The flowchart segment below shows how a decision structure is
expressed in C++ as an if/else statement.
YESNO
x < y?
Calculate a as x
times 2.
Calculate a as x
plus y.
if (x < y)
a = x * 2;
else
a = x + y;
Flowchart C++ Code
29. DECISION STRUCTURE
• The flowchart segment below shows a decision structure with only
one action to perform. It is expressed as an if statement in C++ code.
if (x < y)
a = x * 2;
Flowchart C++ Code
YESNO
x < y?
Calculate a as x
times 2.
30. REPETITION STRUCTURE
• A repetition structure represents part of the program that repeats. This
type of structure is commonly known as a loop.
31. REPETITION STRUCTURE
• Notice the use of the diamond symbol. A loop tests a condition, and if
the condition exists, it performs an action. Then it tests the condition
again. If the condition still exists, the action is repeated. This
continues until the condition no longer exists.
32. REPETITION STRUCTURE
• In the flowchart segment, the question “is x < y?” is asked. If the
answer is yes, then Process A is performed. The question “is x < y?” is
asked again. Process A is repeated as long as x is less than y. When
x is no longer less than y, the repetition stops and the structure is
exited.
x < y? Process
A
YES
33. REPETITION STRUCTURE
• The flowchart segment below shows a repetition structure expressed
in C++ as a while loop.
while (x < y)
x++;
Flowchart
C++ Code
x < y? Add 1 to
x
YES
34. CONTROLLING A REPETITION STRUCTURE
• The action performed by a repetition structure must eventually cause the
loop to terminate. Otherwise, an infinite loop is created.
• In this flowchart segment, x is never changed. Once the loop starts, it will
never end.
• QUESTION: How can this
flowchart be modified so
it is no longer an infinite
loop?
x < y? Display x
YES
35. CONTROLLING A REPETITION STRUCTURE
• ANSWER: By adding an action within the repetition that changes the
value of x.
x < y? Display x Add 1 to x
YES
36. A PRE-TEST REPETITION STRUCTURE
• This type of structure is known as a pre-test repetition structure. The
condition is tested BEFORE any actions are performed.
x < y? Display x Add 1 to x
YES
37. A PRE-TEST REPETITION STRUCTURE
• In a pre-test repetition structure, if the condition does not exist, the
loop will never begin.
x < y? Display x Add 1 to x
YES
38. A POST-TEST REPETITION STRUCTURE
• This flowchart segment shows a post-test
repetition structure.
• The condition is tested AFTER the actions
are performed.
• A post-test repetition structure always
performs its actions at least once.
Display x
Add 1 to x
YES
x < y?
39. A POST-TEST REPETITION STRUCTURE
• The flowchart segment below shows a post-test repetition structure
expressed in C++ as a do-while loop.
do
{
cout << x << endl;
x++;
} while (x < y);
Flowchart
C++ Code
Display x
Add 1 to x
YES
x < y?
40. CASE STRUCTURE
• One of several possible actions is taken, depending on the
contents of a variable.
41. CASE STRUCTURE
• The structure below indicates actions to perform depending
on the value in years_employed.
CASE
years_employed
1 2 3 Other
bonus = 100 bonus = 200 bonus = 400 bonus = 800
42. CASE
years_employed
1 2 3 Other
bonus = 100 bonus = 200 bonus = 400 bonus = 800
If years_employed =
1, bonus is set to 100
If years_employed =
2, bonus is set to 200
If years_employed =
3, bonus is set to 400
If years_employed is
any other value, bonus
is set to 800
CASE STRUCTURE
43. CONNECTORS
• Sometimes a flowchart will not fit on one page.
• A connector (represented by a small circle) allows you to connect two
flowchart segments.
A
45. MODULES
• A program module (such as a function in C++) is represented by a
special symbol.
46. •The position of the module symbol
indicates the point the module is
executed.
•A separate flowchart can be
constructed for the module.
START
END
Read Input.
Call calc_pay function.
Display results.
MODULES
47. COMBINING STRUCTURES
• Structures are commonly combined to create more complex
algorithms.
• The flowchart segment below combines a decision structure with a
sequence structure.
x < y? Display x Add 1 to x
YES
48. COMBINING STRUCTURES
• This flowchart segment
shows two decision
structures combined.
Display “x is
within limits.”
Display “x is outside
the limits.”
YESNO
x > min?
x < max?
YESNO
Display “x is outside
the limits.”
49. EXAMPLE 1
• Draw flowchart to creates a table
for the two-variable equation X =3Y
by calculating and printing the
value of X for each positive-integer
value of Y.
50. EXAMPLE 2
A program is required to read three
numbers, add them together and
print their total.
Input Processing Output
Number1
Number2
Number3
Read three numbers
Add number together
Print total number
total
Add numbers to total
Read
Number1
Number2
number3
Print total
Start
Stop
51. EXAMPLE 3
• A program is required to prompt the
terminal operator for the maximum
and minimum temperature readings
on a particular day, accept those
readings as integers, and calculate
and display to the screen the
average temperature, calculated by
(maximum temperature + minimum
temperature)/2.
Input Processing Output
Max_temp
Min_temp
Prompt for temperatures
Get temperatures
Calculate average temperature
Display average temperature
Avg_temp
52. EXAMPLE 4
• Design an algorithm that will
prompt a terminal operator for
three characters, accept those
characters as input, sort them
into ascending sequence and
output them to the screen.
Input Processing Output
Char_1
Char_2
Char_3
Prompt for characters
Accept three characters
Sort three characters
Output three characters
Char_1
Char_2
Char_3
53. EXAMPLE 5
• Design a program that will
prompt for and receive 18
examination scores from a
mathematics test, compute
the class average, and
display all the scores and the
class average to the screen.
Input Processing Output
18 exam scores Prompt the scores
Get scores
Compute class average
Display scores
Display class average
18 exam scores
Class_average
54. Start
Total_score =
zero
I = 1
Add scores(I)
to
Total score
I = I + 1
Calculate
average
I = I + 1
Prompt and
get
Scores (I)
I = 1
I <= 18 ?
Display
Scores (I)
I <= 18 ?
Display
average
Stop
T
F
T
F
55. FLOWCODE
• Flowcode is one of the World’s most advanced graphical programming
languages for microcontrollers. The great advantage of Flowcode is that it
allows those with little experience to create complex electronic systems.
Flowcode is available in twenty languages and supports a wide range of
devices. Separate versions are available for the PICmicro (8-bit),
AVR/Arduino, dsPIC/PIC24 and ARM series of microcontrollers. Flowcode
can be used with many microcontroller development hardware solutions
including those from Matrix such as Formula Flowcode, E-blocks, MIAC and
ECIO.
56. ADVANTAGES
• Save time and money Flowcode facilitates the rapid design of electronic systems based of microcontrollers.
• Easy to use interface Simply drag and drop icons on-screen to create an electronic system without writing traditional code line
by line.
• Fast and flexible Flowcode has a host of high level component subroutines which means rapid system development. The
flowchart programming method allows to develop microcontroller programs.
• Error free results Flowcode works. What you design and simulate on-screen is the result you get when you download to your
microcontroller.
• Open architecture Flowcode allows you to view C and ASM code for all programs created and customise them. Access circuit
diagram equivalents to the system you design through our data sheets and support material.
• Fully supported Flowcode is supported by a wide range of materials and books for learning about, and developing, electronic
systems.
• Core-independent Flowcode programs developed for one microcontrollers easily transfer to another microcontroller.
57. FEATURES
• Supported microcontrollers Microchip PIC 10, 12, 16, 18, dsPIC, PIC24, Atmel AVR/Arduino, Atmel ARM.
• Supported communication systems Bluetooth, CAN, FAT, GPS, GSM, I2C, IrDA, LIN, MIDI, One wire, RC5, RF, RFID, RS232,
RS485, SPI, TCP/IP, USB, Wireless LAN, ZigBee
• Supported components ADC, LEDs, switches, keypads, LCDs, Graphical colour LCD, Graphical mono LCDs, Sensors, 7-
segment displays, Internal EEPROM, comms systems, Touchscreen LCD, Webserver.
• Supported mechatronics Accelerometer, PWM, Servo, Stepper, Speech.
• Supported subsystems MIAC, MIAC expansion modules, Formula Flowcode.
• Panel designer Design a panel of your choice on-screen and simulate it.
• In-Circuit Debug (ICD) When used with EB006 PIC Multiprogrammer, EB064 dsPIC/PIC24 Multiprogrammer or FlowKit.
• Tight integration with E-blocks Each comms system is supported by E-blocks hardware.
• Virtual networks Co-simulation of many instances of Flowcode for multi-chip systems. Co-simulation of MIAC based systems with
MIAC expansion modules.