Upload
obelia
View
53
Download
0
Embed Size (px)
DESCRIPTION
Embedded System Overview. 1. RockOn! 2008. Why an Embedded System?. General Purpose computer Usually has a human in the loop Can be reconfigured to do any number of tasks (excel, email, music) Embedded Systems (RSW Board) Doesn’t require human input all the time Must meet real-time goals - PowerPoint PPT Presentation
Citation preview
RockOn! 2008
1
Embedded System
Overview
RockOn! 2008
RockOn! 2008
2
Why an Embedded System?
- General Purpose computer-Usually has a human in the loop-Can be reconfigured to do any number
of tasks (excel, email, music)
- Embedded Systems (RSW Board)-Doesn’t require human input all the
time-Must meet real-time goals- Heart monitor- Automatic braking systems (ABS)
- Takes specific inputs and computes outputs for a very specific application
RockOn! 2008
3
Why an Embedded System?
- General Purpose computer-Usually has a human in the loop-Can be reconfigured to do any number
of tasks (excel, email, music)
- Embedded Systems (RSW Board)-Doesn’t require human input all the
time-Must meet real-time goals- Heart monitor- Automatic braking systems (ABS)
- Takes specific inputs and computes outputs for a very specific application
RockOn! 2008
4
Signal Types - Analog
- Continuous function
- Measures real world value and represents it as a time varying voltage- voice, sun brightness and
temperature trends
- Can’t store Analog signal. Storage has to be represented as “0” and “1”s on a computer system
RockOn! 2008
5
Signal Types - Digital
- Non-continuous, discreet and quantized steps- 1V, 2V, 3V, 4V….90V
- Binary information- Individual bits, button push, “there or not there”
-Only method for storage of information with a computer system- Serial cables is an example of digital communication
RockOn! 2008
6
Accuracy v. Precision
- Accuracy-How close you are to the true value of the object
being measured-How often do you hit the bull’s eye?-Capable of accurately measuring the earth’s
gravity every time
- Precision- The smaller the division, the smaller change which
can be observed. The ruler.-Capable of sensing the change of .001g’s
High ALow P
High PLow A
RockOn! 2008
7
Precision and Recording Data
- A state is one unique combination of bits- 1 bit – 0 or 1 = 2 states = 21
- 2 bits – 00, 01, 10, 11 = 4 states = 22 - 4 bits – 0000, 0001….1111 = 16 States = 24
- 8bits = 28= 256 states- 16bits = 216 = 65,536 states
-More bits provides more precision over a given voltage range
- If it is necessary to record small changes, more precision (bits), is required
- 8 bits is a byte
RockOn! 2008
8
Sensor & Storage
- Item to be measured-Real world units -Degrees Celsius
- Temperature Sensor- Converts temp to Analog Voltage-42.0 C to 4.20V
- Analog to Digital Converter- Converts 4.20V to Digital value to be stored as binary- Input voltage range 0-5V- Output Count range 0-255 (8 bits)- Linearly scaled- 4.20V / 5.0V * 256counts = 215
42.0 C temp
4.20V
0C = 0V
5V = 255
0V = 0
215 counts = 11010111 binaryStorage for
later use
50C = 5V
RockOn! 2008
• Quantization of an Analog Signal into a Digital Signal
9
Analog to Digital Converter
Quantization of an Analog Signal into a Digital Signal.
Digitally converted signals
Black line – 4 bits more info
Red line – 2 bitsless info
321
Digital Conversion
Analog Signal (volts)
RockOn! 2008
10
What does this all look like on the AVR board?
- ATmega 32 FBD AVR Pinout
RockOn! 2008
11
Interfacing with the real world
- The ATmega 32 has four Ports which each has 8 pins.
- Each pin can be individually configured.-Analog in -Digital in or out
- Software sets up these pins, reads sensors, stores data
Ports A, B, C, DPins 0-7
RockOn! 2008
12
C Programming
Review
RockOn! 2008
RockOn! 2008
13
History of C
- C is a general purpose, block structured, procedural computer programming language
- Created in 1972 by Dennis Ritchie at the Bell Telephone Laboratories
- Standardized in the early 1980s
- The original C programming language is considered to be the language of choice for embedded systems
- C is used for the workshop
RockOn! 2008
14
History of C++
- C++ is a middle level programming language that supports the ability to create classes
- C++ was created by Bjarne Stroustrup to be a “better C”
- First standardized in 1998
- C++ is a spin on the usage of the ++ syntax in programming, and literally means “C + 1”, which implies a programming language a level above C
RockOn! 2008
15
Variables
- Variables are name-declared regions for storage
- Unlike real numbers, the values of a variable can change depending on the operations done on it
- For example, you can declare the letter ‘a’ to be a variable, and then later equate that letter with some value
Example a=4The value of ‘a’ has been equated to the number 4
- This value can change through an operationExample a=4;
a=a+2;The value of ‘a’ has been updated to a = 4+2, or 6
RockOn! 2008
16
Variables
- All variables must be declared before they are used
- General form for variable declaration:
<variable type> <name of variable>
- A variable name can be anything that is not already used by the c program
- Common variable types are int (integer), char (character), and float
Example int foo;
RockOn! 2008
17
Operators
- The values of a variable can change depending on the operation used on the variable.
- Basic Operators Example (using int a=4)+ (addition) a+2 = 6- (subtraction) a -3 = 1* (multiplication) a*2 = 8/ (division) a/4=1
- Uncommon Operators++ (increment) a++; a=5-- (decrement) a--; a=3
RockOn! 2008
18
Conditional Control
- The ability to control the flow of your code through decision-making
- Allows the program to skip or execute a section of code if some stated condition is met.
RockOn! 2008
19
Conditional Control
- Conditional statements are created using relational operators
> greater than< less than>= greater than or equal to <= less than or equal to!= not equal to== equal to
RockOn! 2008
20
If Statements
- General formif (conditional statement)
{execute all commands inside the bracketswhen above conditional statement is true}
- Exampleif(5>4)
{printf(“Five is greater than four.”)}
RockOn! 2008
21
Else Statements
- Used in order to force the program to execute a different section of code should the original IF statement prove false
- General formelse
{execute all commands inside the
brackets}
RockOn! 2008
22
If/Else Statements
- Exampleif(3>4)
{printf(“Three is greater than four.”)}
else{printf(“Three is less than four.”)}
- In this example, only the content of the else statement executes
RockOn! 2008
23
Else If Statements
- Used should more than 2 conditions be required.
- ELSE IF statements are placed between the initial IF statement and the final ELSE statement
- General formelse if(statement inside is true)
{execute all commands inside the
brackets}
RockOn! 2008
24
If / Else If / Else Statements
- Exampleint a = 3;if(a>3)
{printf(“a is greater than three.”)}
else if (a==3){printf(“a is equal to three.”) }
else{printf(“a is less than three.”)}
- In this case, only the ELSE IF statement will occur.
RockOn! 2008
25
For Loops
- For loops will execute a statement a defined number of times, and stop execution once the condition is declared false
- Used to avoid writing the same line of code multiple times
- General formfor ( variable initialization; condition; variable update )
{ code to execute while the condition is true
}
RockOn! 2008
26
For Loops
- Examplefor(int x = 0; x < 10; x++)
{printf(“Hello World!”)}
- The above example will print the phrase 10 times, from x = 0 being the first count, to x=9 being the last count
- x++ increments x by 1 after each execution of the loop, because x++ is a post increment
RockOn! 2008
27
While Loops
- While loops will execute a statement as long as the condition is met
- Used to avoid writing the same line of code multiple times
- General formwhile (condition)
{ code to execute while the condition is true
}
RockOn! 2008
28
While Loops
- Examplewhile(1)
{printf(“Infinite loop”)}
- The above example is an infinite loop that will print “Infinite loop” forever
- The “1” statement is equivalent to always TRUE, and so the condition is always met
RockOn! 2008
29
Functions
- A function is a block of code that, when called, executes a set of pre-defined commands
- Some functions come included in a library or in other reference codes, and some have to be written out from start
RockOn! 2008
30
Functions
- A function is a block of code that, when called, executes a set of pre-defined commands
- Some functions come included in a library or in other reference codes, and some have to be written out from start
RockOn! 2008
31
Function Advantages
- The main advantages of a function are:
- Organization; allows a programmer to organize different commands under different function names, thus making a program easier to follow
- Code Simplification; the programmer can call the same function repetitively in order to avoid repeating lines
- Flexibility; allows other programmers to use a set of commands without needing to recreate all the content within the function
RockOn! 2008
32
Function Format
- Functions have a two general forms: a return and non-return
- All functions must have a return-type, such as void (used for non-return functions), int, char, etc…
- Most functions have parameters or arguments - values of which the pre-defined code will work with; some functions do not
- There is no real limit to the number of parameters, but the smaller the amount the better
RockOn! 2008
33
Return Functions
- A function with a return command will output a value depending on the inputs, or parameters, given to the function
- Example int a = content(int x, int y)
- The output of the content function will be set to the variable a
- The output depends on the commands in the function content and the value of the parameters x and y – the inputs of the function
RockOn! 2008
34
Non-Return Functions
- A function without a return command will simply execute the pre-defined commands within its body without any output given
- Example greaterthanone(int x)
- The greaterthanone function may compare the value of its parameter, x, with 1, and execute a set of commands if the value of x is actually larger than 1
- It does not generate an output, or return value
RockOn! 2008
35
Creating a Function
- Define the return type
- Define the parameters and their variable types
- In order to return a value, include a return statement at the end of the code
- Example return foo
- The function will return the stored value of the variable foo
- Provide comments describing the function functionality
RockOn! 2008
36
Creating a Function
- General form
return-type function_name(arg_type1 arg1, arg_type2 arg2,…,arg_typen argn)
{commands to execute in the functionreturn statement if needed}
RockOn! 2008
37
Creating a Function
- Example of a Simple Function:
int checkequal(int x, int y) //function name and type{ //with 2 parametersif(x == y)
{return 1 //if parameters equal} //function returns
TRUEelse
{return 0 //else, functions
returns} //false
}
RockOn! 2008
38
Calling a Function
- Call the Function
int a = 5; //define one variable for functionint b = 4; //define another variable
int valid = checkequal(a,b) //call function and check
//if equal values
- The variable ‘valid’ will, in this case, hold the value 0, or FALSE, because variable a does not equal variable b
RockOn! 2008
39
#include
- The directive #include <file name> tells the C compiler to enter the contents of the specified file in that location
- This allows for a complicated program to spread on more than 1 .h or .c file, which allows better organization
- #include may be needed to access pre-defined values by the program
- Example #include <math.h>
- Allows access to the math library, which contains many important math functions and variables
RockOn! 2008
40
#define
- Can be used to declare values for constants
- Example #define MAXSIZE 256
- The value MAXSIZE always refers to the number 256
- Can be used for argument declarations, which is slightly similar to basic function declaration
- Example #define DOUBLE(x) 2*x
- Every time DOUBLE() is called with some number in its parenthesis, it will take that number or variable and multiply it by 2
RockOn! 2008
41
C Review Quiz – Question #1
Which of the following C statements declares an integer variable named my_int and assigns it a value of 42?
a) integer my_int(42);b) int my_int = 42;c) my_int = 42;d) my_int integer = 42;
EXPLANATION: all variables must be declared a type, and all declarations must occur before name assignments. To declare an integer, write ‘int’.
RockOn! 2008
42
C Review Quiz – Question #2
What is the value of output after the loop is executed?int i;int output;output = 1;for (i = 0; i < 30; i = i + 3){if (i < 15){
output = output * 2;}else{
output = output – 2;}}
a) 52b) 42c) 32d) 22
EXPLANATION: The output is effectively doubled 5 times, and then subtracted from 5 times. So, (2^5)-10 is the mathematical solution
RockOn! 2008
43
C Review Quiz – Question #3
- The next 2 questions refer to the function foo, defined below:int foo(double a, char b, long c);
What is the return type of foo?a) intb) doublec) chard) long
EXPLANATION: The return type of a function is the type of the function, not the type of its parameters.
RockOn! 2008
44
C Review Quiz – Question #4
Which of the following statements correctly calls foo and assigns the return value to the variable x (ignore the type of x for this question)?
a) x = foo(1, 2.2, 5);b) x = foo(1.5, ‘a’, 1000);c) x.foo(1.5, ‘b’, 1000);d) x(foo(1, ‘c’, 0.25));
EXPLANATION: Return values must be written into an equal statement, and the function must have the correct parameter types for its inputs.
RockOn! 2008
45
C Review Quiz – Question #5
What value is contained in x[3] after the following code is executed?int x[10]; for (int i = 0; i < 10; ++i){
x[10-i] = i + 1;}
a) 5b) 6c) 7d) 8
EXPLANATION: The statement ++i is a pre increment. 1 is added to the value of i before i is used in the body. In this case, the first value of i used in the body of the loop is actually 1.
RockOn! 2008
46
C Review Quiz – Question #6
What is the value of output after the following code is executed?
int output;int a = 10, b = 1, c = 4, d = 7;if ((a < b) || ((b < c) && (d >= b))){
output = 1;}else{
output = 0;}
EXPLANATION: And operations (&&) are analyzed first. Thus, d is greater than b and c is greater than b is true. If one condition of an or (||) statement is true, the entire or statement is true.
a) 0b) 1
RockOn! 2008
47
C Review Quiz – Question #7
Which of the following logical expressions evaluates to 1 for the given values?A = 2;B = 0;C = 0;D = 1;E = 3; a) !(D || (E < A))b) ((D < A) || (C == B) && E)c) ((E || F) && C)d) ((C == D) || ((D < E) && (A < B)))
EXPLANATION: D<A in choice (b) evaluates to 1, which makes the entire statement evaluate to 1 because or statements are analyzed after and statements.
RockOn! 2008
48
C Review Quiz – Question #8
Given a function void foo(int x), which of the following correctly calls foo?
a) int x = 3; void foo(int x);b) void foo(3);c) foo(-3);d) int x = 3; foo(int x);
EXPLANATION: The function only requires an integer declared parameter, or an integer placed inside the parenthesis. To call a function, simply write the name followed by filling the parameter positions.
RockOn! 2008
49
C Review Quiz – Question #9
Find the error in the following code:char test;
scanf(test);
1. switch (test){
2. case a:printf(“Hello!”);break;
3. case ‘b’:printf(“Goodbye!”);break;
4. default: printf(“Input is not a or b”);
break;};
EXPLANATION: Test is defined as a character, and thus all values must be defined under quotes.
RockOn! 2008
50
C Review Quiz – Question #10
Which of the following is not a valid variable declaration?
a) int a[10];b) void b;c) long c;d) char d = 0;
EXPLANATION: To declare a variable void is not possible. Void is used for non-return functions
RockOn! 2008
51
Software Walkthrough
RockOn! 2008
RockOn! 2008
52
Brains…
- Now we will make your electronics come alive
- These steps are designed to teach you how to program your AVR and test its functionality
RockOn! 2008
53
Brains…
- Now we will make your electronics come alive
- These steps are designed to teach you how to program your AVR and test its functionality
RockOn! 2008
54
Materials
- All necessary coding files provided -Programs you will need- WinAVR (Version 20071221)- AVR Studio- RealTerm-Drivers for ISP and USB-to-Serial Converter-All installed on laptop and contained on DVD-ROM
- Utility suite to assist in development- Timer Setup Utility- In System Memory Programming Utility- Data Parser Utility
RockOn! 2008
55
AVR Studio
- Integrated Development Environment (IDE)
- Allows for easy interface to AVR from coding to device programming
- Allows all programming to be done within 1 program
- Provides framework for platform lessons and flight code
RockOn! 2008
56
AVR Studio
RockOn! 2008
57
AVR Studio Interface
Source Files
Header Files
Active File
Compiler Messages
Close Up
RockOn! 2008
58
Lesson 0:POST Test
RockOn! 2008
RockOn! 2008
59
Lesson 0: POST
- What is a POST?- Power-On System Test- Checks functionality of AVR board systems
- Objectives- Verify functionality of AVR board- Learn to load code onto the AVR
- What systems are checked?- EEPROM memory for data memory protection- Analog Sensors- Flash Memory
RockOn! 2008
60
Lesson 0: POST
- Open Atmel AVR Studio
- On the welcoming screen, press “Open”
RockOn! 2008
61
Lesson 0: POST
- In the RockOn! Workshop folder on the desktop, open the file POST/POST.aps , in the POST folder
RockOn! 2008
62
Lesson 0: POST
- During build, compiler warnings are okay, errors are not
- Build the code- Click Build -> Build (F7)
- If any errors occur, check your code for typos or errors- Ask for help if you cannot fix the error
RockOn! 2008
63
Lesson 0: POST
- Before making any connections to the AVR board, power to the board should be DISCONNECTED, either at the battery connection or at the connection pins on the board
- Be sure to take ESD precautions (put on your wrist strap)
RockOn! 2008
64
Lesson 0: POST
- Connect the AVRISP to the computer
- Connect the AVRISP to the AVR board
RockOn! 2008
65
Lesson 0: POST
RockOn! 2008
66
Lesson 0: POST
- NOTE: The programming header must be connected as shown. Flipping it around will cause programming to fail.
RockOn! 2008
67
Lesson 0: POST
- Create a serial connection between the AVR board and the computer by,- Connecting the USB to Serial Adapter to the computer
RockOn! 2008
68
Lesson 0: POST
- Connecting the USB to Serial Adapter to the data retrieval board
RockOn! 2008
69
Lesson 0: POST
- Connecting the data retrieval board to the AVR board
- NOTE: the orientation of the cables must match those shown below
RockOn! 2008
70
Lesson 0: POST
- Both the serial connection between board and computer and the ISP connection between board and computer will be needed
- The ISP connection is necessary for loading code onto the board
- The serial connection is necessary for analysis of the board by the computer
- For loading code or data retrieval and conversion, the AVR board needs to be powered on and activated
RockOn! 2008
71
Lesson 0: POST
- To use the USB-to-Serial Converter, the COM port it is connected to must be identified
- Click Start and right click on “My Computer”
- Left click on “Properties”
RockOn! 2008
72
Lesson 0: POST
- Click on “Hardware” - Click on “Device Manager”
RockOn! 2008
73
Lesson 0: POST
- Click on “Ports (COM & LPT)- Keyspan USB Serial Port = COM4
RockOn! 2008
74
Lesson 0: POST
- At this point, connect power to the AVR board
- RDY LED should be on if the RBF jumper is inserted
- Click the G-Switch (ON LED should be activated)
RockOn! 2008
75
Lesson 0: POST
- Now, go to the start menu and open up RealTerm
- RealTerm allows serial communication with the AVR board
- Will be used to collect results of POST
RockOn! 2008
76
Lesson 0: POST
-Click on the “Port” tab
RockOn! 2008
77
Lesson 0: POST
- Set the baud to 19200- Set the Port to the port for the USB-to-Serial cable- Make sure the Open button is depressed- Click the Change button to apply your changes - CTS(8) and DSR(6) “lights” should turn green
RockOn! 2008
78
Lesson 0: POST
- Click on the “Display” tab
RockOn! 2008
79
Lesson 0: POST
- Check the “newLine mode” box-Make sure the top bubble on the left, reading “Ascii”, is
selected- Check the “Scrollback” box
RockOn! 2008
80
Lesson 0: POST
- Go back to AVR Studio
- Click the “AVR” button on the bottom toolbar
RockOn! 2008
81
Lesson 0: POST
- This is the image you should have received.
- On the main tab, make sure that ATmega32 is the selected device, the programming mode is ISP, and the ISP Frequency is 125.0 kHz
RockOn! 2008
82
Lesson 0: POST
- If the program cannot connect to the AVRISP, make sure that the AVRISP mkII is selected in the left menu and try again
- If you did not get the pop-up box in the slide before, then you are most likely at this step.
RockOn! 2008
83
Lesson 0: POST
- The first time you program the AVR, you must set the fuses.
- Click on the “Fuses” tab
- Set your fuse settings as shown
RockOn! 2008
84
Lesson 0: POST
- On the “Program” tab, click the “…” in the FLASH section and select “POST/post/POST.hex” as the executable file, found in the RockOn folder.
RockOn! 2008
85
Lesson 0: POST
- Click “Program” in the FLASH section
-While this programs, go back to the RealTerm window
RockOn! 2008
86
Lesson 0: POST
- Once the code has been programmed, click on the black text section of the screen and press any key to begin the POST
RockOn! 2008
87
Lesson 0: POST
- Let the POST run (5 to 10 minutes)
- Results will be shown at the end of the POST
- If any tests fail ask for assistance from workshop personnel
RockOn! 2008
88
Lesson 0: POST
- Highlight text in the RealTerm window and select “CTRL C” on your keyboard.- Open Microsoft Word- Select “CTRL V” to paste text- Save file as “POST_KIT_XX.doc” to your desktop
RockOn! 2008
89
Lesson 0: POST
- Remove power from the AVR board
- Remove the Data Retrieval connector from the AVR board
- Close the RealTerm program
- Close the AVR Studio program
- You are now ready to start programming and testing your AVR board
RockOn! 2008
90
ENDLesson 0:
POST Test
RockOn! 2008
RockOn! 2008
91
Lesson 1:Blink an LED
RockOn! 2008
RockOn! 2008
92
Lesson 1: Blink an LED
- Objectives- Introduce fundamental library functions
- Introduce AVR Studio interface
- Create a simple program and load it onto the AVR board
RockOn! 2008
93
Lesson 1: Blink an LED
- Objectives- Introduce fundamental library functions
- Introduce AVR Studio interface
- Create a simple program and load it onto the AVR board
RockOn! 2008
94
Lesson 1: Blink an LED - Functions
- Upcoming Functions
cbi(register, pin)
sbi(register, pin)
_delay_ms(time)
RockOn! 2008
95
Lesson 1: Blink an LED - Functions
- cbi(register, pin)
- Clears a bit in a register
- Example: cbi(PORTB, 3) clears bit 3 in the PORTB register
-Uses- Set a pin as an input by clearing the corresponding bit in the Data Direction Register- cbi(DDRB, 3) sets pin B3 as an input- Turn on the status LED by calling cbi(PORTD, 6)- LED uses reverse logic, so clearing the pin activates the LED
RockOn! 2008
96
Lesson 1: Blink an LED - Functions
- Example cbi(PORTD, 6)
RockOn! 2008
97
Lesson 1: Blink an LED - Functions
- sbi(register, pin)
- Sets a bit in a register
- Example: sbi(PORTB,3) sets bit 3 in the PORTB register
- Uses- Set a pin as an output by setting the corresponding bit in the Data Direction Register- sbi(DDRD, 6) sets pin D6 as an output (status LED)- Turn off the status LED by calling sbi(PORTD, 6)
RockOn! 2008
98
Lesson 1: Blink an LED - Functions
- Example sbi(PORTD, 6)
RockOn! 2008
99
Lesson 1: Blink an LED - Functions
- delay_ms(time)- Delays the given amount of time in milliseconds- Example: _delay_ms(1);- Limitation: The function can only delay a small amount of time (about 2 ms) due to hardware limitations- In order to wait more you can call the function multiple times- Uses- Wait a certain amount of time between function calls- Can be used to blink an LED- Turn the LED on- Wait for a small amount of time- Turn off the LED- Wait again
RockOn! 2008
100
Opening the Project
- Open Atmel AVR Studio
- On the welcoming screen, press “Open”
RockOn! 2008
101
Opening the Project
- In the RockOn! Workshop folder on the desktop, open the file Code/Work/RocketSat.aps (file with bug icon)
RockOn! 2008
102
Lesson 1: Blink an LED
- Your Turn- In AVR Studio, right-click on “Source Files” on the left sidebar- Choose “Add Existing Source Files”- Add “led.c” to the project. Double click on “led.c” to open
RockOn! 2008
103
Lesson 1: Blink an LED
- The correct “led.c” file should only have comments in it
RockOn! 2008
104
Lesson 1: Blink an LED
- In led.c, write code to blink an LED
- Suggestions- Remember to delay after turning the LED on and off
- Remember that to repeat an action indefinitely, it can be put in a while (1) loop
- Use the comments in the file to guide you
RockOn! 2008
105
Lesson 1: Blink an LED - Code
sbi(DDRD, 6);
while (1) {
cbi(PORTD, 6); _delay_ms(2);_delay_ms(2); _delay_ms(2); sbi(PORTD, 6); _delay_ms(2);_delay_ms(2);_delay_ms(2);
}
RockOn! 2008
106
Lesson 1: Blink an LED
- Building Your Completed Code- Once code is written, you need to compile and link it to make an executable file
- Click Build->Build (F7)
RockOn! 2008
107
Lesson 1: Blink an LED
- Connecting the AVR Board to the Computer
RockOn! 2008
108
Lesson 1: Blink an LED
RockOn! 2008
109
Lesson 1: Blink an LED
- Connect the AVRISP to the programming header
- Make sure that all power connections have been DISCONNECTED before starting this process
RockOn! 2008
110
Lesson 1: Blink an LED
- NOTE: The programming header must be connected as shown. Flipping it around will cause programming to fail.
RockOn! 2008
111
Lesson 1: Blink an LED
- FINAL RESULT
RockOn! 2008
112
Lesson 1: Blink an LED
- Connect power to the AVR board before loading any code
- Install RBF jumper
- Install and activate G-Switch
RockOn! 2008
113
Lesson 1: Blink an LED
- Click the “AVR” button on the bottom toolbar to begin to load the code
RockOn! 2008
114
Lesson 1: Blink an LED
- This is the image you should have received.
- On the “Main” tab, make sure that ATmega32 is the selected device, the programming mode is ISP, and the ISP Frequency is 125.0 kHz
RockOn! 2008
115
Lesson 1: Blink an LED
- If the program cannot connect to the AVRISP, make sure that the AVRISP mkII is selected in the left menu and try again
- If you did not get the pop-up box in the slide before, then you are most likely at this step.
RockOn! 2008
116
Lesson 1: Blink an LED
- On the “Program” tab, click the “…” in the FLASH section and select “code/work/
default/RockOn.hex” as the executable file, found in the RockOn folder.
RockOn! 2008
117
Lesson 1: Blink an LED
- Click “Program” in the FLASH section
- After loading, your LED should begin blinking
- It is blinking so fast you it will appear to be only on
- Let’s reprogram with more delays
RockOn! 2008
118
Lesson 1: Blink an LED - Code
sbi(DDRD, 6); while (1) {
cbi(PORTD, 6); _delay_ms(2);_delay_ms(2); _delay_ms(2); _delay_ms(2);_delay_ms(2); _delay_ms(2);_delay_ms(2);_delay_ms(2); _delay_ms(2); _delay_ms(2);
RockOn! 2008
119
Lesson 1: Blink an LED - Code
sbi(PORTD, 6); _delay_ms(2);_delay_ms(2); _delay_ms(2); _delay_ms(2);_delay_ms(2); _delay_ms(2);_delay_ms(2);_delay_ms(2); _delay_ms(2); _delay_ms(2);
}
RockOn! 2008
120
Lesson 1: Blink an LED
- Building Your Completed Code- Once code is written, you need to compile and link it to make an executable file
- Click Build->Build (F7)
RockOn! 2008
121
Lesson 1: Blink an LED
- Click the “AVR” button on the bottom toolbar to begin to load the code
RockOn! 2008
122
Lesson 1: Blink an LED
- On the “Program” tab, click the “…” in the FLASH section and select “code/work/
default/RockOn.hex” as the executable file, found in the RockOn folder.
RockOn! 2008
123
Lesson 1: Blink an LED
- Click “Program” in the FLASH section
- After loading, your LED should NOW be noticeably blinking
- Disconnect power
- Leave AVR ISP connected
RockOn! 2008
124
Lesson 1: Blink an LED
- Challenge, if you have time before we go on, try:- changing the blink pattern of your LED- Example: Three delays on, five delays off-writing the code more efficiently
RockOn! 2008
125
ENDLesson 1:Blink an LED
RockOn! 2008
RockOn! 2008
126
Lesson 2:Flash Memory
RockOn! 2008
RockOn! 2008
127
Lesson 2: Flash Memory
- Objectives:- Learn about the RocketSat memory system
- Learn to write data to the flash memory
RockOn! 2008
128
Lesson 2: Flash Memory
- Objectives:- Learn about the RocketSat memory system
- Learn to write data to the flash memory
RockOn! 2008
129
Lesson 2: Flash Memory Overview
AVR CodeAVR Code
Memory BufferMemory Buffer
write( )
DataFlash16 Mbits = 2 MB
DataFlash16 Mbits = 2 MB
Atmega32
memFlush( )
RockOn! 2008
130
Lesson 2: Flash Memory Overview
RockOn! 2008
131
Lesson 2: Flash Memory - Functions
- Upcoming Functions
write(unsigned char data)
memFlush( )
ISMPCheck( )
RSInit( )
RockOn! 2008
132
Lesson 2: Flash Memory - Functions
- Important Functions From Previous Lessoncbi(register, pin)sbi(register, pin) _delay_ms(time)
RockOn! 2008
133
Lesson 2: Flash Memory - Functions
- write(unsigned char data)
- Writes a byte of data to the memory buffer on the AVR
- Example: write(‘R’);
- NOTE: Calling write( ) DOES NOT write data to flash memory. It adds the data to the buffer, which can then be flushed to memory later
- Uses- Store sensor data for retrieval later
RockOn! 2008
134
Lesson 2: Flash Memory - Functions
- memFlush( )
- Writes a single byte of data from the memory buffer on the AVR to the external flash memory
- Example: memFlush( );
- NOTE: Every time you call write(), you must call memFlush()
RockOn! 2008
135
Lesson 2: Flash Memory - Functions
- ISMPCheck( )
- Checks if the data retrieval board has been connected to the AVR board
- Example: ISMPCheck( );
- If the board is connected, the data retrieval interface is activated, and data can be read from the external flash memory
- Should always be called at the beginning of a program that uses the flash memory
RockOn! 2008
136
Lesson 2: Flash Memory - Functions
- RSInit( )
- Initializes the systems on the AVR board
- Example: RSInit();
- Should always be called at the beginning of a program
RockOn! 2008
137
Lesson 2: Flash Memory
- Your Turn
-Remove led.c from the project by right-clicking led.c in the “Source Files” section and choosing “Remove File from Project”
-Add flash.c to the project using the same method as in Lesson 1
RockOn! 2008
138
Lesson 2: Flash Memory
- Make sure that the correct file has been opened, “flash.c”
NEED NEW PICTURE WITH DELAY INCLUDE LINE
RockOn! 2008
139
Lesson 2: Flash Memory
- Your Turn (continued)-Write code in flash.c to write your name to external flash
memory- Build your program and upload it to the AVR board
- Hints-Remember that write only allows for one byte of data
(one character) to be sent to the buffer at a time
-Remember that memFlush( ) only sends one byte of data to be sent to flash memory at a time
-We will use the LED code in Lesson 1 as well
RockOn! 2008
140
Lesson 2: Flash Memory - Code
RSInit( );ISMPCheck( );sbi(DDRD, 6);
write('R'); memFlush( );
write('i'); memFlush( );
write(‘l’);memFlush( );
Code is case
sensitive
RockOn! 2008
141
Lesson 2: Flash Memory - Code
write('e'); memFlush( );
write('y'); memFlush( );
cbi(PORTD, 6); _delay_ms(2);_delay_ms(2); _delay_ms(2); _delay_ms(2);_delay_ms(2); _delay_ms(2);
RockOn! 2008
142
Lesson 2: Flash Memory - Code
sbi(PORTD, 6); _delay_ms(2);
_delay_ms(2);_delay_ms(2); _delay_ms(2); _delay_ms(2);_delay_ms(2);
while (1);
RockOn! 2008
143
Lesson 2: Flash Memory
- Building Your Complete Code-Once code is written, you need to compile and link it to
make an executable file
-Click Build->Build (F7)
RockOn! 2008
144
Lesson 2: Flash Memory
- Connecting the AVR Board to the Computer
RockOn! 2008
145
Lesson 2: Flash Memory
- Connect the AVRISP to the programming header
- Disconnect the board from power during this procedure
RockOn! 2008
146
Lesson 2: Flash Memory
- Connect power to the AVR board before loading any code
- Install RBF jumper
- Install and activate G-Switch
RockOn! 2008
147
Lesson 2: Flash Memory
- Loading the Executable to the AVR Board
- Click the “AVR” button on the bottom toolbar
RockOn! 2008
148
Lesson 2: Flash Memory
- Since all details for the STK500 have been formatted, they should not have to be done again
- Click “Program” in the FLASH section
- Your LED should flash and your name written to the flash memory…now what?
-Welcome to Lesson 3
RockOn! 2008
149
ENDLesson 2:Flash Memory
RockOn! 2008
RockOn! 2008
150
Lesson 3:Data Retrieval Utility
RockOn! 2008
RockOn! 2008
151
Lesson 3: Data Retrieval Utility
- Objectives
- Introduce the In System Memory Programming (ISMP) Utility (more commonly known as the Data Retrieval Utility)
-Use the Data Retrieval Utility to retrieve data from flash memory
RockOn! 2008
152
Lesson 3: Data Retrieval Utility
- Objectives
- Introduce the In System Memory Programming (ISMP) Utility (more commonly known as the Data Retrieval Utility)
-Use the Data Retrieval Utility to retrieve data from flash memory
RockOn! 2008
153
Lesson 3: Data Retrieval Utility
- Right now, your name is in flash memory.
- Question: How do you read that data back?
- Answer: In the Data Retrieval Utility
- Utility has four functions- Read Entire Memory- Erase Memory- Read Portion of Memory- Software Arming
RockOn! 2008
154
Lesson 3: Data Retrieval Utility
- In the “RockOn! Workshop” folder on the desktop, open the “RocketSat Utilities” folder
RockOn! 2008
155
Lesson 3: Data Retrieval Utility
- Inside, open the “Data Retrieval Utility” folder and open data_util.exe
RockOn! 2008
156
Lesson 3: Data Retrieval Utility
- If Windows asks if you want to run the program, click “Run”
RockOn! 2008
157
Lesson 3: Data Retrieval Utility
- Read Entire Memory-Allows user to read the entire
2 MB memory of the external flash
-Use- Select the serial port
location on your computer (COM1) and the name of a file in which the data should be stored- Click “Retrieve Data”
RockOn! 2008
158
Lesson 3: Data Retrieval Utility
- Read Portion of Memory-Allows user to read a portion of
the external flash memory
-Use- Select the serial port location
on your computer (COM1) and the name of a file in which the data should be stored- Select the start address in
memory (usually 0) and the length of the data segment- Click “Retrieve Data”
RockOn! 2008
159
Lesson 3: Data Retrieval Utility
- Erase Memory-Allows user to erase the
external flash memory
-Use- Select the serial port
location on your computer (COM1)- Click “Erase Memory”
RockOn! 2008
160
Lesson 3: Data Retrieval Utility
- Software Arming-Allows user to enable or disable
write protection on the memory- The green circle will blink in the
same pattern as the status LED on the AVR board
-Use- Select the serial port location
on your computer (COM1)- Click “Check Armed Status”- To change the status of the
payload, click “Arm Payload” or “Disarm Payload”
RockOn! 2008
161
Lesson 3: Data Retrieval Utility
- Your Turn-Open the Data Retrieval
Utility-Disconnect power from the
AVR board-Connect the data retrieval
board to the data header on the AVR board
-Note: Same orientation must be maintained when connecting to both boards
RockOn! 2008
162
Lesson 3: Data Retrieval Utility
RockOn! 2008
163
Lesson 3: Data Retrieval Utility
- Connect the board to the computer using the data retrieval header, a serial cable, and the USB to Serial adapter
RockOn! 2008
164
Lesson 3: Data Retrieval Utility
RockOn! 2008
165
Lesson 3: Data Retrieval Utility
- Once all connections are completed, connect power to the AVR board
-Make sure RBF jumper is installed and activate G-Switch
- Does your LED blink? Why or why not?
- Power to the AVR board is required during usage of the RocketSat utilities
RockOn! 2008
166
Lesson 3: Data Retrieval Utility
- Verify Keyspan USB to Serial comm port as we did in Lesson 0
RockOn! 2008
167
Lesson 3: Data Retrieval Utility
- On the Data Retrieval Utility, select the “Software Arming” mode
- To determine if the serial connection is active, select the “Check Armed Status” button of the correct COM port
-You want the green LED to flash for a successful connection
- If an error message occurs,- Check your serial connections- check if AVR board has power
RockOn! 2008
168
Lesson 3: Data Retrieval Utility
- On the Data Retrieval Utility, select the “Read Portion of Memory” mode
-Choose the correct COM# for the port
- Pick an output file name and save to Desktop by selecting “…”
Less_3_Kit_XX.txt- Use a start address of 0 and a
length of 100-Click “Retrieve Data”
RockOn! 2008
169
Lesson 3: Data Retrieval Utility
-When the read operation is complete, open the output file and make sure that the name that you wrote to memory is at the beginning of the file
- Name more than once means payload activated more than once and extra characters after name is fine
RockOn! 2008
170
Lesson 3: Data Retrieval Utility
- Once data has been retrieved successfully, clear out memory by using the “Erase Memory” tab of the Data Retrieval Utility
- Select the Correct COM port-Click “Erase Memory”
- This will take ~13 seconds
RockOn! 2008
171
Lesson 3: Data Retrieval Utility
- To check if the memory erase was successful, complete the exact same process with the “Read Portion of Memory” tab as was done earlier.
- Data file should be Less_3b_KIT_XX.txt
-Click “Retrieve Data”-Open new and name
should be erased
RockOn! 2008
172
Lesson 3: Data Retrieval Utility
- Disconnect power from the AVR board
- Disconnect Data Retrieval Header from AVR board
- Prepare for Lesson 4
RockOn! 2008
173
ENDLesson 3:
Data Retrieval Utility
RockOn! 2008
RockOn! 2008
174
Lesson 4:Analog to Digital
Converter
RockOn! 2008
RockOn! 2008
175
Lesson 4: Analog to Digital Converter
- Objectives
- Learn to use the AVR’s internal analog to digital converters (ADCs)
- Learn to read 8-bit and 10-bit conversions and write them to memory
RockOn! 2008
176
Lesson 4: Analog to Digital Converter
- Objectives
- Learn to use the AVR’s internal analog to digital converters (ADCs)
- Learn to read 8-bit and 10-bit conversions and write them to memory
RockOn! 2008
177
Lesson 4: Analog to Digital Converter
-What is the difference between 8-bit and 10-bit conversions?
-An 8-bit conversion has 28 (0 to 255) possible values,
-Resolution is 1/(28 – 1) = 1/255 = 0.00392 V
RockOn! 2008
178
Lesson 4: Analog to Digital Converter
- A 10-bit conversion has 210 (0 to 1024) possible values
-Resolution is 1/(210 – 1) = 1/1023 = 0.000978 V
- For a device that is very precise, a 10-bit conversion allows for a higher resolution on the data (high-range accelerometers)
RockOn! 2008
179
Lesson 4: Analog to Digital Converter - Functions
- Upcoming Functions
adcGetChar(unsigned char ch)
adcGet16(unsigned char ch)
write16(unsigned short data)
RockOn! 2008
180
Lesson 4: Analog to Digital Converter - Functions
- Important Functions From Previous Lessonscbi(register, pin)sbi(register, pin)_delay_ms(time)write(unsigned char data)memFlush( )ISMPCheck()RSInit
RockOn! 2008
181
Lesson 4: Analog to Digital Converter - Functions
- adcGetChar(unsigned char ch)
-Reads an 8-bit conversion from the internal ADC on the channel given by ch-Returns an unsigned char
- Example: unsigned char value = adcGetChar(ACCEL_X_HIGH);
- Each sensor connected to the AVR has its own channel- The header file adc.h defines values that can be used for ch
RockOn! 2008
182
Lesson 4: Analog to Digital Converter - Functions
- adcGet16(unsigned char ch)
-Reads a 10-bit conversion from the internal ADC on the channel given by ch-Returns an unsigned short (16 bits) with the lower 6 bits
set as 0
- Example: unsigned short value = adcGet16(ACCEL_X_HIGH);
- The same values can be used for ch as is used in adcGetChar( )
RockOn! 2008
183
Lesson 4: Analog to Digital Converter - Functions
- write16(unsigned short data)
-Writes a 16-bit value to the memory buffer
- Example: write16(adcGet16(ACCEL_X_HIGH))
-Can be used to send 10-bit conversions to the memory buffer
-NOTE: memFlush( ) must be called TWICE when write16( ) is used, as two bytes must be sent to flash memory
RockOn! 2008
184
Lesson 4: Analog to Digital Converter
- Your turn-Remove flash.c from the project and add analog.c
RockOn! 2008
185
Lesson 4: Analog to Digital Converter
-Write code in analog.c that constantly samples all 8 sensors on the board and writes those values to memory
- Hints
- To write an analog sample to memory, you can do one of two things
1.unsigned char temp;temp = adcGetChar(ACCEL_X_HIGH);write(temp)
2.write(adcGetChar(ACCEL_X_HIGH));
RockOn! 2008
186
Lesson 4: Analog to Digital Converter
- Hints
- To write an analog sample to memory, you can do one of two things
1. unsigned char temp;temp = adcGetChar(ACCEL_X_HIGH);write(temp)
2. write(adcGetChar(ACCEL_X_HIGH));
RockOn! 2008
187
Lesson 4: Analog to Digital Converter - Code
RSInit( );ISMPCheck( );sbi(DDRD, 6);
while (1) {
write(adcGetChar(ACCEL_X_LOW)); memFlush( );
write(adcGetChar(ACCEL_Y_LOW)); memFlush( );
write(adcGetChar(ACCEL_Z_LOW));memFlush( );
RockOn! 2008
188
Lesson 4: Analog to Digital Converter - Code
write(adcGetChar(ACCEL_X_HIGH)); memFlush( );
write(adcGetChar(ACCEL_Y_HIGH)); memFlush( );write(adcGetChar(ACCEL_Z_HIGH)); memFlush( );
write(adcGetChar(TEMP)); memFlush( );
write(adcGetChar(PRESSURE));memFlush( );
RockOn! 2008
189
Lesson 4: Analog to Digital Converter - Code
cbi(PORTD, 6); _delay_ms(2); _delay_ms(2); _delay_ms(2);_delay_ms(2);
sbi(PORTD, 6); _delay_ms(2);_delay_ms(2);_delay_ms(2);_delay_ms(2);
}
}
RockOn! 2008
190
Lesson 4: Analog to Digital Converter
- Building Your Complete Code
-Once code is written, you need to compile and link it to make an executable file
-Click Build->Build (F7)
RockOn! 2008
191
Lesson 4: Analog to Digital Converter
- Connecting the AVR Board to the Computer
RockOn! 2008
192
Lesson 4: Analog to Digital Converter
- Connect the AVRISP to the programming header
- Disconnect the board from power during this procedure
RockOn! 2008
193
- Connect power to the AVR board before loading any code
- Install RBF jumper
- Install and activate G-Switch
Lesson 4: Analog to Digital Converter
RockOn! 2008
194
Lesson 4: Analog to Digital Converter
- Give power to the AVR Board before loading any code
- Loading the Executable to the AVR Board
- Click the “AVR” button on the bottom toolbar
RockOn! 2008
195
Lesson 4: Analog to Digital Converter
- Since all details for the STK500 have been formatted, they should not have to be done again
- Click “Program” in the FLASH section
- Let program run for a minute or two
- Disconnect power from AVR Board
RockOn! 2008
196
Lesson 4: Analog to Digital Converter
- Open the Data Retrieval Utility-With the power on the AVR board off, connect the data
retrieval board to the data header on the AVR board
RockOn! 2008
197
Lesson 4: Analog to Digital Converter
- Connect the board to the computer using the data retrieval header, a serial cable, and the USB to Serial adapter
RockOn! 2008
198
Lesson 4: Analog to Digital Converter
RockOn! 2008
199
Lesson 4: Analog to Digital Converter
- Give power to the board before using the Data Retrieval Utility
- Make sure RBF jumper is installed and activate the G-Switch
RockOn! 2008
200
Lesson 4: Analog to Digital Converter
- On the Data Retrieval Utility, select the “Software Arming” mode
- To determine if the serial connection is active, select the check armed status button of the correct COM port
-You want the green LED to flash for a successful connection- If an error message occurs,- Check your serial connections- check if AVR board has power
RockOn! 2008
201
Lesson 4: Analog to Digital Converter
- Read the data off of the external flash using the data retrieval board and Data Retrieval Utility and save it into a file
- choose an appropriately large address length to be able to gather sufficient data
RockOn! 2008
202
- On the Data Retrieval Utility, select the “Read Portion of Memory” mode
-Choose the correct COM# for the port
- Pick an output file name and save to Desktop by selecting “…”
Less_4_Kit_XX.txt- Use a start address of 0 and a
length of 10,000-Click “Retrieve Data”
Lesson 4: Analog to Digital Converter
RockOn! 2008
203
Lesson 4: Analog to Digital Converter
- Disconnect power from the AVR Board
- Leave Data Retrieval Connector attached for to the board
- If you have the time…
- Implement functions from previous lessons into this one to make the program code more efficient
- Implement an LED design that works in a more beneficial manner
RockOn! 2008
204
ENDLesson 4:
Analog to Digital Converter
RockOn! 2008
RockOn! 2008
205
Lesson 5:Data Parser Utility
RockOn! 2008
RockOn! 2008
206
Lesson 5: Data Parser Utility
- Objectives
-Modify the data in order to analyze it properly
- Learn how to use the Data Parser Utility
- Learn how to convert voltages to proper units
RockOn! 2008
207
Lesson 5: Data Parser Utility
- Objectives
-Modify the data in order to analyze it properly
- Learn how to use the Data Parser Utility
- Learn how to convert voltages to proper units
RockOn! 2008
208
Lesson 5: Data Parser Utility
- Open the data file on Desktop from the previous exerciseLess_4_Kit_XX.txt
- Can anyone tell me what these random characters actually mean?
- Problem: the data that we read is in binary, but our sensors output voltages
- Solution: parse the data file and convert back to voltages from binary
RockOn! 2008
209
Lesson 5: Data Parser Utility
- In the RocketSat Utilities folder, open the Data Parser Utility folder
- Run parser_util.exe (NOT Parser.exe)
RockOn! 2008
210
Lesson 5: Data Parser Utility
- This is the RocketSat Parser Utility that we will be using for this lesson.
RockOn! 2008
211
Lesson 5: Data Parser Utility
- In the “Data File” field, enter the name of the file from the last exercise Less_4_Kit_XX.txt- This is the file to be parsed
- In the “Output File” field, enter a filename with .csv as the ending- Less_4_Kit_XX.csv
RockOn! 2008
212
Lesson 5: Data Parser Utility
-Make sure that both of the boxes are checked
- The first one toggles whether the output file is opened once parsing is complete
- The second box ensures that the output file is compatible with Microsoft Excel
RockOn! 2008
213
Lesson 5: Data Parser Utility
- In the “Number of Columns” field, enter the number of sensors or inputs in the data file
- In this case, 8 sensors were read, so enter 8
- Press “Apply”
RockOn! 2008
214
Lesson 5: Data Parser Utility
- For each sensor (in the order you sampled them in your code)
-Name the sensor
- Enter the number of bytes per sample
-Check the box if the data is a count, not a voltage
- In this case, DO NOT check the boxes, as these values represent voltages
RockOn! 2008
215
Lesson 5: Data Parser Utility
- Press “Parse Data”-A black console window
should appear
- This is the actual parser process, DO NOT close the window, it will close on its own
-When the parsing is finished, wait for the output file to open in Excel
RockOn! 2008
216
Lesson 5: Data Parser Utility
- Excel should open something like this.
- The data shown in the spreadsheet is the voltage seen by the sensors each time they were sampled
- To do a more successful analysis of the spreadsheet, you can use the graphing program in excel to graph from 1 to all of your columns.
RockOn! 2008
217
Lesson 5: Data Parser Utility
- Highlight the rows that you wish to graph or compare.
- Click on a cell, and drag mouse until satisfied with selection of cells
- Select the Chart Wizard button on the Standard toolbar.
RockOn! 2008
218
Lesson 5: Data Parser Utility
- The Chart Wizard should show up.- Select the chart type
(Scatter with line-connected data points is recommended)
- To see a sample, click the Press and Hold button.
-Once satisfied, click Next
- For now, skip steps 2 and 3, which is mostly about labeling details on the graph, by pressing “Next” repetitively.
RockOn! 2008
219
Lesson 5: Data Parser Utility
- In step 4, select to place the chart ‘As new sheet:’ Name it whatever you like.
-When done, click Finish.
RockOn! 2008
220
Lesson 5: Data Parser Utility
- Your graph will now display in a new sheet of the excel notebook
RockOn! 2008
221
Lesson 5: Data Parser Utility
- Once the data has been properly collected and parsed, memory should be erased in order to prepare for the next memory write code
-Make sure that the serial connection between the AVR board, Data Retrieval Board, and computer is correctly connected
RockOn! 2008
222
Lesson 5: Data Parser Utility
- Open the Data Retrieval Utility-With the power on the AVR board off, connect the data
retrieval board to the data header on the AVR board
RockOn! 2008
223
- Give power to the board before using the Data Retrieval Utility
- Make sure RBF jumper is installed and activate the G-Switch
Lesson 5: Data Parser Utility
RockOn! 2008
224
Lesson 5: Data Parser Utility
- On the Data Retrieval Utility, select the “Software Arming” mode
- To determine if the serial connection is active, select the check armed status button of the correct COM port
-You want the green LED to flash for a successful connection
- If an error message occurs,- Check your serial connections- check if AVR board has power
RockOn! 2008
225
Lesson 5: Data Parser Utility
- Once connection verified, clear out memory by using the “Erase Memory” tab of the Data Retrieval Utility
- Select the Correct COM port
-Click “Erase Memory”
- Disconnect power but leave Data Retrieval Connector attached
RockOn! 2008
226
Lesson 5: Data Parser Utility
- Let’s try this again with 10 bit samples
- The high-range accelerometers can sense loads up to 35 g, which means that an acceleration of 1 g will cause a very low change in voltage
- The temperature and pressure sensors are also very sensitive
- To get better precision out of these devices, change your sampling code to take 10-bit samples from these devices
RockOn! 2008
227
Lesson 5: Data Parser Utility
- Hints-Don’t forget to call memFlush( ) twice for each
write16( ) call you make
-Remember that write() should be used with adcGetChar( ) and write16() should be used with adcGet16( )
- Try adding in a column in order to compare a 10-bit and an 8-bit set of data.
RockOn! 2008
228
Lesson 5: Data Parser Utility - Code
RSInit( );ISMPCheck( );sbi(DDRD, 6);
while (1) {
write16(adcGet16(ACCEL_X_LOW)); memFlush( );memFlush( );
write16(adcGet16(ACCEL_Y_LOW)); memFlush( ); memFlush( );
RockOn! 2008
229
Lesson 5: Data Parser Utility - Code
write16(adcGet16(ACCEL_Z_LOW));memFlush( );memFlush( );
write16(adcGet16(ACCEL_X_HIGH)); memFlush( );memFlush( );
write16(adcGet16(ACCEL_Y_HIGH)); memFlush( );memFlush( );
write16(adcGet16(ACCEL_Z_HIGH)); memFlush( ); memFlush( );
RockOn! 2008
230
Lesson 5: Data Parser Utility - Code
write16(adcGet16(TEMP)); memFlush( );memFlush( );
write16(adcGet16(PRESSURE));memFlush( );memFlush( );
cbi(PORTD, 6); _delay_ms(2); _delay_ms(2); _delay_ms(2); _delay_ms(2); _delay_ms(2); _delay_ms(2);
RockOn! 2008
231
Lesson 5: Data Parser Utility - Code
sbi(PORTD, 6); _delay_ms(2); _delay_ms(2);_delay_ms(2);_delay_ms(2); _delay_ms(2);_delay_ms(2);
}}
RockOn! 2008
232
Lesson 5: Data Parser Utility
- Building Your Complete Code
-Once code is written, you need to compile and link it to make an executable file
-Click Build->Build (F7)
RockOn! 2008
233
Lesson 5: Data Parser Utility
-Connect the AVRISP to the programming header
-Disconnect the board from power during this procedure
RockOn! 2008
234
- Give power to the board before using the Data Retrieval Utility
- Make sure RBF jumper is installed and activate the G-Switch
- Is your code running?
- Why?
Lesson 5: Data Parser Utility
RockOn! 2008
235
Lesson 5: Data Parser Utility
- Give power to the AVR Board before loading any code
- Loading the Executable to the AVR Board
- Click the “AVR” button on the bottom toolbar
RockOn! 2008
236
Lesson 5: Data Parser Utility
- Click “Program” in the FLASH section
- Disconnect power and Data Retrieval Connector from AVR Board
- Connect power and activate G-Switch
- Let program run for a minute
- Disconnect power
RockOn! 2008
237
Lesson 5: Data Parser Utility
- Open the Data Retrieval Utility-With the power on the AVR board off, connect the data
retrieval board to the data header on the AVR board
RockOn! 2008
238
Lesson 5: Data Parser Utility
- Open the Data Retrieval Utility-With the power on the AVR board off, connect the data
retrieval board to the data header on the AVR board
RockOn! 2008
239
- Give power to the board before using the Data Retrieval Utility
- Make sure RBF jumper is installed and activate the G-Switch
Lesson 5: Data Parser Utility
RockOn! 2008
240
Lesson 5: Data Parser Utility
- On the Data Retrieval Utility, select the “Software Arming” mode
- To determine if the serial connection is active, select the check armed status button of the correct COM port
-You want the green LED to flash for a successful connection
- If an error message occurs,- Check your serial connections- check if AVR board has power
RockOn! 2008
241
- On the Data Retrieval Utility, select the “Read Portion of Memory” mode
-Choose the correct COM# for the port
- Pick an output file name and save to Desktop by selecting “…”
Less_5_Kit_XX.txt- Use a start address of 0 and a
length of 10,000-Click “Retrieve Data”
Lesson 4: Analog to Digital Converter
RockOn! 2008
242
Lesson 5: Data Parser Utility
- In the RocketSat Utilities folder, open the Data Parser Utility folder
- Run parser_util.exe (NOT Parser.exe)
RockOn! 2008
243
Lesson 5: Data Parser Utility
- In the “Data File” field, enter the name of the file from the last exercise Less_5_Kit_XX.txt- This is the file to be parsed
- In the “Output File” field, enter a filename with .csv as the ending- Less_5_Kit_XX.csv
RockOn! 2008
244
Lesson 5: Data Parser Utility
-Make sure that both of the boxes are checked
- The first one toggles whether the output file is opened once parsing is complete
- The second box ensures that the output file is compatible with Microsoft Excel
RockOn! 2008
245
Lesson 5: Data Parser Utility
- In the “Number of Columns” field, enter the number of sensors or inputs in the data file
- In this case, 8 sensors were read, so enter 8
- Press “Apply”
RockOn! 2008
246
Lesson 5: Data Parser Utility
- For each sensor (in the order you sampled them in your code)
-Name the sensor
- Enter the number of bytes per sample (in this case 2)
-Check the box if the data is a count, not a voltage
- In this case, DO NOT check the boxes, as these values represent voltages
RockOn! 2008
247
Lesson 5: Data Parser Utility
- Press “Parse Data”-A black console window
should appear
- This is the actual parser process, DO NOT close the window, it will close on its own
-When the parsing is finished, wait for the output file to open in Excel
RockOn! 2008
248
Lesson 5: Data Parser Utility
- Excel should open something like this.
- The data shown in the spreadsheet is the voltage seen by the sensors each time they were sampled
- To do a more successful analysis of the spreadsheet, you can use the graphing program in excel to graph from 1 to all of your columns.
RockOn! 2008
249
Lesson 5: Data Parser Utility
- Create graphs like you did previously to compare results.
- Here is a sample of ACCEL Y LOW (8 bit) and ACCEL Y LOW (10 bit)
2.38
2.39
2.4
2.41
2.42
2.43
2.44
2.45
2.46
2.47
2.48
0 20 40 60 80 100 120 140
Y Low (10)
Y Low (8)
RockOn! 2008
250
Lesson 5: Data Parser Utility
- Clear out memory by using the “Erase Memory” tab of the Data Retrieval Utility
- Select the Correct COM port
-Click “Erase Memory”
- Disconnect power but leave Data Retrieval Connector attached
RockOn! 2008
Converting Data
RockOn! 2008
RockOn! 2008
Converting Data - Overview
- You now have voltage data for each sensor.
- The next step is figuring out how to convert the voltages into useful units.
- Each type of sensor comes with a detailed datasheet filled with useful information, including how to convert the data.
- The datasheets for all the sensors are in the manual.
- If you are interested, the datasheets for the other integrated circuits used on the payload are available on the DVD.
RockOn! 2008
Converting Data - Overview
- You now have voltage data for each sensor.
- The next step is figuring out how to convert the voltages into useful units.
- Each type of sensor comes with a detailed datasheet filled with useful information, including how to convert the data.
- The datasheets for all the sensors are in the manual.
- If you are interested, the datasheets for the other integrated circuits used on the payload are available on the DVD.
RockOn! 2008
Converting Data - Process
- All the sensors are proportional to the actual value, but have an offset – that is, you can use a linear equation to convert from units to voltage.
- Each sensor can be characterized by its sensitivity and its zero output offset: VOUT = sensitivity * X + offset, where X is data in the appropriate units for the sensor in question.
- We want the converted data X in terms of VOUT, so we solve the equation for X as follows:
VOUT = sensitivity * X + offset
VOUT - offset = sensitivity * X
(VOUT - offset) / sensitivity = X
X = (1/sensitivity) * VOUT – (offset/sensitivity)
RockOn! 2008
Converting Data – Temperature Sensor 1
- Open the datasheet for the LM50c temperature sensor.
- The front page gives an overview of the sensor. Scan through the datasheet to see what other information it has, including detailed electronic and mechanical information.
RockOn! 2008
Converting Data – Temperature Sensor 2
- Scroll down to page 2, where you will see the image below, along with an equation which gives output voltage in terms of temperature: VOUT = 10mV/ °C * Temp °C + 500mV
- Notice that the sensitivity of the device is 10mV/C, while the zero temperature offset is 500mV.
RockOn! 2008
Converting Data – Temperature Sensor 3
- Solve the equation for temperature in terms of voltage. Be careful of units. The final equation should use volts rather than millivolts.
1.) 1000 mV = 1 V
2.) VOUT = 0.01 V/ °C * Temp °C + 0.5 V
3.) Temp °C/ (V / 100 °C) = VOUT – 0.5 V
4.) Temp °C = 100*(°C / V)* VOUT – 50 °C
RockOn! 2008
Converting Data – Pressure Sensor 1
- Open the datasheet for the ASDX015 pressure sensor.
- Notice that unlike the temperature sensor, this datasheet is for a whole series of pressure sensors.
-We use the ASDX015, which can measure pressures between 0PSI and 15PSI.
RockOn! 2008
Converting Data – Pressure Sensor 2
- Scroll down to page 3, where you will see these tables.
- Locate the sensitivity and zero pressure offset of the ASDX015
VOUT = 0.267*(V/PSI)*Press. + 0.5 V
RockOn! 2008
Converting Data – Pressure Sensor 3
- Solve the equation for pressure in terms of voltage.
1.) VOUT = 0.267*(V/PSI)*Press. + 0.5 V
2.) VOUT - 0.5 V = 0.267*(V/PSI)*Press.
3.) Pressure = 3.75*(PSI/V)*VOUT - 1.87 PSI
RockOn! 2008
Converting Data – Low Range Accelerometers 1
- Open the datasheet for the ADXL103/ADXL203 single/dual axis precision (low range) accelerometers.
- Notice the functional block diagram on the front page. Block diagrams are useful for understanding the basics behind a system without the overwhelming detail of a full schematic.
RockOn! 2008
Converting Data – Low Range Accelerometers 2
- Scroll down to the specifications table on page 3.
- Locate the sensitivity and the 0g offset, which is called the “0g Voltage at XOUT, YOUT” in this datasheet.
VOUT = 1*(V/g)*acc. + 2.5 V
1.0 V/g
2.5 V
RockOn! 2008
Converting Data – Low Range Accelerometers 2
- Solve the equation for g’s in terms of voltage.
1.) VOUT = 1*(V/g)*acc. + 2.5 V
2.) VOUT - 2.5 V = (V/g)*acc.
3.) Acceleration = VOUT *g – 2.5*g
RockOn! 2008
Converting Data – High Range Accelerometers 1
- Open the datasheets for the ADXL78 single axis high range accelerometer and the ADXL278 dual axis high range accelerometer.
- Notice that they are almost identical. If you want, you can look at a few pages to confirm that.
- The conversion is the same, so we will just use the ADXL78 datasheet. Again, you can cross-check with the ADXL278 datasheet to be sure.
RockOn! 2008
Converting Data – High Range Accelerometers 2
- Scroll down to the specifications table on page 3.
-We use the AD22279.
- Find the sensitivity, which determines how the output voltage changes based on acceleration.
- For some reason, the zero-g offset is omitted from this page.
55 mV/g
RockOn! 2008
Converting Data – High Range Accelerometers 3
- Scroll down to this chart on page 6. It shows the theory of how the accelerometers work.
- It also shows the output voltage at 0g (the zero-g offset)
VOUT = 55*(mV/g)*acc. + 2.5 V
RockOn! 2008
- Solve the equation for acceleration in terms of voltage. Be careful of units. The final equation should use volts rather than millivolts.
1.) 1000 mV = 1 V
2.) VOUT = 0.055*(V/g)*acc. + 2.5 V
3.) VOUT – 2.5 V = 0.055*(V/g)*acc.
4.) Acceleration = 18.18*(g/V)*VOUT – 45.45 g
Converting Data – High Range Accelerometers 3
RockOn! 2008
268
ENDLesson 5:
Data Parser Utility
RockOn! 2008
RockOn! 2008
269
Lesson 6:Geiger Counter
RockOn! 2008
RockOn! 2008
270
Lesson 6: Geiger Counter
- Objectives
- Learn to read the number of counts detected by the Geiger counter
RockOn! 2008
271
Lesson 6: Geiger Counter
- Objectives
- Learn to read the number of counts detected by the Geiger counter
RockOn! 2008
272
Lesson 6: Geiger Counter - Functions
- Upcoming Functions
getEXTo( )
setEXTo(unsigned char val)
RockOn! 2008
273
Lesson 6: Geiger Counter - Functions
-Important Functions From Previous Lessonscbi(register, pin)sbi(register, pin)_delay_ms(time)write(unsigned char data)memFlush( )ISMPCheck()RSInitadcGetChar(unsigned char ch)adcGet16(unsigned char ch)write16(unsigned short data)
RockOn! 2008
274
Lesson 6: Geiger Counter - Functions
- getEXT0( )
-Get the number of counts seen by the Geiger counter-Returns an unsigned char
- Example: getEXT0( );
-NOTE: The number of counts is stored in a single byte, so no more than 255 counts can be seen at a time
- It is important to clear the counts every time they are read with the next function
RockOn! 2008
275
Lesson 6: Geiger Counter - Functions
- setEXT0(unsigned char val)
- Sets the number of Geiger counts in memory
- Example: setEXT0(0);
- In most cases, this function will be used to clear the Geiger counts by passing 0 into the function
RockOn! 2008
276
Lesson 6: Geiger Counter
- Your Turn-Remove analog.c from the project and add geiger.c
RockOn! 2008
277
Lesson 6: Geiger Counter
-Write a program that continuously reads the Geiger counts and delays at least 1 ms between samples
- Hints-Don’t forget to clear the Geiger counts between reads
-Data Retrieval Connector should still be connected
RockOn! 2008
278
Lesson 6: Geiger Counter - Code
RSInit( );ISMPCheck( ); sbi(DDRD, 6);
while (1){
write(getEXT0( )); memFlush( );
setEXT0(0);
cbi(PORTD, 6); _delay_ms(2); _delay_ms(2);
RockOn! 2008
279
Lesson 6: Geiger Counter - Code
_delay_ms(2); _delay_ms(2);_delay_ms(2); _delay_ms(2);
sbi(PORTD, 6); _delay_ms(2); _delay_ms(2);_delay_ms(2); _delay_ms(2);_delay_ms(2); _delay_ms(2);
}}
RockOn! 2008
280
Lesson 6: Geiger Counter
- Building Your Complete Code
-Once code is written, you need to compile and link it to make an executable file
-Click Build->Build (F7)
RockOn! 2008
281
Lesson 6: Geiger Counter
- Connect the AVRISP to the programming header
- Disconnect the board from power during this procedure
- Data Retrieval Connector should still be connected
RockOn! 2008
282
- Give power to the board before using the Data Retrieval Utility
- Make sure RBF jumper is installed and activate the G-Switch
Lesson 5: Data Parser Utility
RockOn! 2008
283
Lesson 6: Geiger Counter
- Give power to the AVR Board before loading any code
- Loading the Executable to the AVR Board
- Click the “AVR” button on the bottom toolbar
RockOn! 2008
284
Lesson 6: Geiger Counter
- Click “Program” in the FLASH section
- Disconnect power and Data Retrieval Connector
- Connect power and activate G-Switch
- Let program run for a minute (use your radiation source)
- Disconnect power
RockOn! 2008
285
Lesson 6: Geiger Counter
-While running your code on the AVR board, bring a radiation source close to the Geiger counter and notice that the LED blinks rapidly
RockOn! 2008
286
Lesson 6: Geiger Counter
- Open the Data Retrieval Utility-With the power on the AVR board off, connect the data
retrieval board to the data header on the AVR board
RockOn! 2008
287
- Give power to the board before using the Data Retrieval Utility
- Make sure RBF jumper is installed and activate the G-Switch
Lesson 6: Geiger Counter
RockOn! 2008
288
Lesson 6: Geiger Counter
- On the Data Retrieval Utility, select the “Software Arming” mode
- To determine if the serial connection is active, select the check armed status button of the correct COM port
-You want the green LED to flash for a successful connection
- If an error message occurs,- Check your serial connections- check if AVR board has power
RockOn! 2008
289
- On the Data Retrieval Utility, select the “Read Portion of Memory” mode
-Choose the correct COM# for the port
- Pick an output file name and save to Desktop by selecting “…”
Less_6_Kit_XX.txt- Use a start address of 0 and a
length of 10,000-Click “Retrieve Data”
Lesson 6: Geiger Counter
RockOn! 2008
290
- Run parser_util.exe (NOT Parser.exe)
- Use the Data Parser Utility to convert your results to counts
- Note that you should only have 1 column this time
-Make sure that the check box in the count column is checked
Lesson 6: Geiger Counter
RockOn! 2008
291
Lesson 5: Data Parser Utility
- In the “Data File” field, enter the name of the file from the last exercise Less_6_Kit_XX.txt- This is the file to be parsed
- In the “Output File” field, enter a filename with .csv as the ending- Less_6_Kit_XX.csv
RockOn! 2008
292
Lesson 6: Geiger Counter
-Make sure that both of the boxes are checked
- The first one toggles whether the output file is opened once parsing is complete
- The second box ensures that the output file is compatible with Microsoft Excel
RockOn! 2008
293
Lesson 6: Geiger Counter
- In the “Number of Columns” field, enter the number of sensors or inputs in the data file
- In this case, 1 sensor was read, the Geiger Counter
- Press “Apply”
RockOn! 2008
294
Lesson 6: Geiger Counter
- For the sensor
-Name the sensor
- Enter the number of bytes per sample (1 byte)
-Check the box since the data is a count and NOT a voltage
RockOn! 2008
295
Lesson 6: Geiger Counter
- Press “Parse Data”-A black console window
should appear
- This is the actual parser process, DO NOT close the window, it will close on its own
-When the parsing is finished, wait for the output file to open
RockOn! 2008
296
Lesson 6: Geiger Counter
- Excel should open something like this
- Numbers will vary, depending on how the radiation source was used near the Geiger counter.
- Highlight the rows that you wish to graph or compare.
- Do not include cells that have 255
RockOn! 2008
297
Lesson 6: Geiger Counter
- The Chart Wizard should show up.
- Select the chart type (Scatter with line-connected data points is recommended)
- To see a sample, click the Press and Hold button.
-Once satisfied, click Next
RockOn! 2008
298
Lesson 6: Geiger Counter
- In step 4, select to place the chart ‘As new sheet:’ Name it whatever you like.-When done, click Finish.
RockOn! 2008
299
Lesson 6: Geiger Counter
-Your graph will now display in a new sheet of the excel notebook
Geiger
0
2
4
6
8
10
12
0 50 100 150 200 250 300
Geiger
RockOn! 2008
300
Lesson 6: Geiger Counter
- Once finished with lesson 6, clear out memory by using the “Erase Memory” tab of the Data Retrieval Utility
- Select the Correct COM port
-Click “Erase Memory”
- Disconnect power but leave the Data Retrieval Connector attached
RockOn! 2008
301
ENDLesson 6:Geiger Counter
RockOn! 2008
RockOn! 2008
302
Lesson 7:Timers
RockOn! 2008
RockOn! 2008
303
Lesson 7: Timers
- Objectives
- Learn how to use the AVR’s internal timers to perform tasks periodically
-Use the timers to sample sensors
RockOn! 2008
304
Lesson 7: Timers
- Objectives
- Learn how to use the AVR’s internal timers to perform tasks periodically
-Use the timers to sample sensors
RockOn! 2008
305
Lesson 7: Timers
- A timer is a device on the AVR that counts clock ticks and calls a function when that count reaches a value set in the Output Compare Register (OCR)
- The clock can also be divided by a prescale value before it is counted- Example: If a prescale of 64 is used, then 64 ticks of the
clock are a single count in the timer
- Allows a function to be called periodically at exact time intervals
RockOn! 2008
306
Lesson 7: Timers
- On this AVR, there are three timers- Timers 0 and 2 have 8-bit OCR registers, which means
they can count up to 255- Timer 1 has a 16-bit OCR register, so it can count up to
216 – 1 = 65,535
- For this project, we will be using timer 0
- All timer 0 functions have corresponding timer 1 and timer 2 functions that can be used in the same manner
RockOn! 2008
307
Lesson 7: Timers - Functions
- Upcoming Functions
setTimero(unsigned char ocr, prescale))
setTimeroFunction(func)
startTimero()
RockOn! 2008
308
Lesson 7: Timers - Functions
- Important Functions From Previous Lessons
cbi(register, pin) adcGet16(unsigned char ch)
sbi(register, pin) write16(unsigned short data)
_delay_ms(time) getEXTo()
write(unsigned char data) setEXTo(unsigned char val)
memFlush( )
ISMPCheck()
RSInit
adcGetChar(unsigned char ch)
RockOn! 2008
309
Lesson 7: Timers - Functions
- setTimer0(unsigned char ocr, prescale)
- Sets the OCR and prescale values for timer0-Uses defined values for prescale- Prescale values are limited to specific values in
hardware
- Example: setTimer0(78, TIMER0_DIV1024)
- Sets timer 0 to “go off” after it counts 78*1024 ticks of the clock
RockOn! 2008
310
Lesson 7: Timers - Functions
- setTimer0Function(func)
- Tells timer 0 to call func whenever it counts up to the value in the OCR register
- Example: void myFunc(void) { … }setTimer0Function(myFunc);
RockOn! 2008
311
Lesson 7: Timers - Functions
- startTimer0( )
- Starts timer 0
- Example: startTimer0( )
- Should only be used once timer 0 has been setup using setTimer0 and setTimer0Function
RockOn! 2008
312
Lesson 7: Timers
- Calculating settings for the timer is tedious
- Finding settings by hand can cause error in the desired frequency or period
- Solution: Use the AVR Timer Setting Utility, which minimizes the error for the desired values
- Open “timer_util.exe”
RockOn! 2008
313
Lesson 7: Timers
- Settings Box
-Allows user input for timer, clock speed, period/frequency, and flight duration
- For this flight, remember to find settings for Timer/Counter 0
RockOn! 2008
314
Lesson 7: Timers
- Recommended Settings
-Minimizes the error while staying within constraints
- Prescale value must be allowed by device
- OCR value must fit in 8-bit or 16-bit register, depending on the timer
RockOn! 2008
315
Lesson 7: Timers
- Possible Settings
-Allows the user to vary the prescale value to see what the OCR value would be for the given frequency
-OCR box turns red when a prescale value causes register overflow
RockOn! 2008
316
Lesson 7: Timers
- Your Turn
-Remove geiger.c from the project and add timers.c
-Write code in timers.c that blinks the status LED by using timer 0
RockOn! 2008
317
Lesson 7: Timers
- This should involve two parts
- In main( ), the system should be initialized and the timer setup with a period of 20 ms (Use timer_util.exe)
- In MyTimerFunction( ), the LED should be toggled
- To toggle the LED, use the static variable in the timer function
- This variable will save its value between function calls- To change the value of the LED, you can use an if
statement to check the value of is_on
RockOn! 2008
318
Lesson 7: Timers - Code
void MyTimerFunction(void){
static char is_on = 1; if (is_on == 1) {
sbi(PORTD, 6); is_on = 0;
}else {
cbi(PORTD, 6); is_on = 1;
}}
RockOn! 2008
319
Lesson 7: Timers - Code
int main( ){
sei( );
RSInit( ); ISMPCheck( ); sbi(DDRD, 6);
setTimer0(78, TIMER0_DIV1024); setTimer0Function(MyTimerFunction); startTimer0( ); while(1);
}
RockOn! 2008
320
Lesson 7: Timers
-Building Your Complete Code
-Once code is written, you need to compile and link it to make an executable file
-Click Build->Build (F7)
RockOn! 2008
321
Lesson 7: Timers
-Connect the AVRISP to the programming header
-Disconnect the board from power during this procedure
RockOn! 2008
322
- Give power to the board before using the Data Retrieval Utility
- Make sure RBF jumper is installed and activate the G-Switch
Lesson 7: Timers
RockOn! 2008
323
Lesson 7: Timers
- Give power to the AVR Board before loading any code
- Loading the Executable to the AVR Board
- Click the “AVR” button on the bottom toolbar
RockOn! 2008
324
- Click “Program” in the FLASH section
- Disconnect power and Data Retrieval Connector
- Connect power and activate G-Switch
- Is your LED blinking?
- Try again for 60 ms
- Disconnect power
Lesson 7: Timers
RockOn! 2008
325
Lesson 7: Timers - Code
void MyTimerFunction(void){
static char is_on = 1; if (is_on == 1) {
sbi(PORTD, 6); is_on = 0;
}else {
cbi(PORTD, 6); is_on = 1;
}}
RockOn! 2008
326
Lesson 7: Timers - Code
int main( ){
sei( );
RSInit( ); ISMPCheck( ); sbi(DDRD, 6);
setTimer0(256, TIMER0_DIV1024); setTimer0Function(MyTimerFunction); startTimer0( );
}
Change this value for 60 ms using Timer
Utility
RockOn! 2008
327
Lesson 7: Timers
-Building Your Complete Code
-Once code is written, you need to compile and link it to make an executable file
-Click Build->Build (F7)
RockOn! 2008
328
Lesson 7: Timers
-Connect the AVRISP to the programming header
-Disconnect the board from power during this procedure
RockOn! 2008
329
- Give power to the board before using the Data Retrieval Utility
- Make sure RBF jumper is installed and activate the G-Switch
Lesson 7: Timers
RockOn! 2008
330
Lesson 7: Timers
- Give power to the AVR Board before loading any code
- Loading the Executable to the AVR Board
- Click the “AVR” button on the bottom toolbar
RockOn! 2008
331
- Click “Program” in the FLASH section
- Disconnect power and Data Retrieval Connector
- Connect power and activate G-Switch
- Is your LED blinking?
- Disconnect power, Data Retrieval Connector and AVR ISP Connector
Lesson 7: Timers
RockOn! 2008
332
ENDLesson 7:
Timers
RockOn! 2008
RockOn! 2008
333
Lesson 8:Flight Code
RockOn! 2008
RockOn! 2008
334
Lesson 8: Flight Code
- Objectives
- Learn about the software organization for the project
- Learn how the memory protection system works
- Bring together lessons 1 – 7 into the final flight code for the project
RockOn! 2008
335
Lesson 8: Flight Code
- Objectives
- Learn about the software organization for the project
- Learn how the memory protection system works
- Bring together lessons 1 – 7 into the final flight code for the project
RockOn! 2008
336
Lesson 8: Flight Code
- Software Organized into three distinct parts
- Initialization Code
-Main Loop (Background)
-Memory Protection System
RockOn! 2008
337
Lesson 8: Flight Code
- Initialization Code- Sets up all systems (RSInit( ))- Checks if the data retrieval board has been plugged in- Sets up the memory protection system
RockOn! 2008
338
Lesson 8: Flight Code
-Main Loop (Background)
- Infinite loop that runs in the background- Constantly tries to flush the memory buffer to
external flash- Updates the memory protection latches
- Timer Function (Foreground)- Samples sensors and Geiger counter-Writes sampled values to the memory buffer
RockOn! 2008
339
Lesson 8: Flight Code
-Memory Protection System
-Checks accelerometers to detect when launch occurs
-After a launch is detected, any future power on operations will lock the external memory so that no write operations can occur
- This will protect data in case the payload is activated once it lands
-Was unnecessary during lessons, as it would have complicated programs and gotten in the way
RockOn! 2008
340
Lesson 8: Flight Code
- Check made for write protection
-Vertical Acceleration: A vertical acceleration greater than 2 g that lasts for a second will cause the vertical acceleration latch to be set
-Memory is write-protected only if the latch is set
RockOn! 2008
341
Lesson 8: Flight Code
- To clear the latches, the Software Arming mode of the ISMP Utility can be used
- All teams should ensure that their payload is ARMED before turning in payloads for flight
- After landing, the payload should be DISARMED if it is not already to protect flight data
-We will go over this in great detail
RockOn! 2008
342
Lesson 8: Flight Code - Functions
- Upcoming Functions
latchCheck( )
latch1( )
latchLED( )
RockOn! 2008
343
Lesson 8: Flight Code - Functions
- Important Functions From Previous Lessons
cbi(register, pin)
sbi(register, pin)
_delay_ms(time)
write(unsigned char data)
memFlush( )
ISMPCheck()
RSInit
adcGetChar(unsigned char ch)
adcGet16(unsigned char ch)
write16(unsigned short data)
RockOn! 2008
344
Lesson 8: Flight Code - Functions
- Important Functions From Previous Lessons
getEXTo()
setEXTo(unsigned char val)
setTimeroFunction(func)
setTimero(unsigned char ocr, prescale)
startTimero()
RockOn! 2008
345
Lesson 8: Flight Code - Functions
- latchCheck( )
-Checks if the memory protection latch has been set
- Example: latchCheck()
- If the latch is set, this function locks the external memory so that no writes can occur
- Should always be called in the initialization section of code AFTER RSInit( ) and ISMPCheck( )
RockOn! 2008
346
Lesson 8: Flight Code - Functions
- latch1( )
-Checks if the vertical acceleration latch condition has been met
- Example: latch1()
- If it has, this function sets the latch so that future calls of latchCheck( ) will see that a vertical jolt has been experienced
- Should be called in the main loop
RockOn! 2008
347
Lesson 8: Flight Code
- latchLED( )
-Updates the latch LED to show the status of the payload
- Example latchLED()
- LED will blink constantly if the payload is armed
- LED will have an irregular blink pattern with two blinks if the vertical latch is set
- LED will be steadily on if the payload is disarmed
- Should be called in the main loop
RockOn! 2008
348
Lesson 8: Flight Code
- Your Turn-Remove timers.c (NOT timer.c) from the project and
add flight.c
RockOn! 2008
349
Lesson 8: Flight Code
- Your Turn
-Write the final flight code for the AVR board
-Use the software model discussed earlier in this section and the hints in flight.c to write the required code
-Use a 50 ms sample period
-Use the timer utility to get your prescale and OCR values
RockOn! 2008
350
Lesson 8: Flight Code - Code
void sample(void){
write(adcGetChar(ACCEL_X_LOW)); write(adcGetChar(ACCEL_Y_LOW)); write(adcGetChar(ACCEL_Z_LOW)); write16(adcGet16(ACCEL_X_HIGH));write16(adcGet16(ACCEL_Y_HIGH)); write16(adcGet16(ACCEL_Z_HIGH));write16(adcGet16(TEMP)); write16(adcGet16(PRESSURE));write(getEXT0());setEXT0(0);
}
RockOn! 2008
351
Lesson 8: Flight Code - Code
int main( ){
sei( );
RSInit( ); ISMPCheck( ); latchCheck( );
setTimer0(195, TIMER0_DIV1024); setTimer0Function(sample); startTimer0( );
RockOn! 2008
352
Lesson 8: Flight Code - Code
while (1){
memFlush( ); latch1( );latchLED( );
}}
RockOn! 2008
353
Lesson 8: Flight Code
- Building Your Complete Code
-Once code is written, you need to compile and link it to make an executable file
-Click Build->Build (F7)
RockOn! 2008
354
Lesson 8: Flight Code
-Connect the AVRISP to the programming header
-Disconnect the board from power during this procedure
RockOn! 2008
355
- Give power to the board before using the Data Retrieval Utility
- Make sure RBF jumper is installed and activate the G-Switch
- Timer code is still loaded so it will begin to execute
- New code will overwrite
Lesson 8: Flight Code
RockOn! 2008
356
Lesson 8: Flight Code
-Give power to the AVR Board before loading any code
-Loading the Executable to the AVR Board
-Click the “AVR” button on the bottom toolbar
RockOn! 2008
357
- Verify you are using the right *.hex file
- Click “Program” in the FLASH section
- Let program run for a minute
- Is you LED blinking? It should be blinking twice and then a pause
- Disconnect power
Lesson 8: Flight Code
RockOn! 2008
358
Lesson 8: Flight Code
- Remember,
- LED will blink constantly if the payload is armed
- LED will have an irregular blink pattern with two blinks if the vertical latch is set
- LED will be steadily on if the payload is disarmed
RockOn! 2008
359
Lesson 8: Flight Code
- Once the flight code has loaded properly, the flash memory should be erased in order to prepare for calibrations data recording
- Using the data retrieval utility, erase the memory of the board and reset the arming or latches
- Disconnect power and remove AVR ISP from the AVR board
RockOn! 2008
360
Lesson 8: Flight Code
- Open the Data Retrieval Utility-With the power on the AVR board off, connect the data
retrieval board to the data header on the AVR board
RockOn! 2008
361
- Give power to the board before using the Data Retrieval Utility
- Make sure RBF jumper is installed and activate the G-Switch
- Flight code will not execute because Data Retrieval Connector is attached
Lesson 8: Flight Code
RockOn! 2008
362
Lesson 8: Flight Code
- On the Data Retrieval Utility, select the “Software Arming” mode
- Should say “Partially Armed” and blink with the same pattern
- Click “Disarm” and then check status again
- Should say “Safe”
RockOn! 2008
363
Lesson 8: Flight Code
- Select the “Erase Memory” tab on the Data Retrieval Utility
- Select the Correct COM port
-Click “Erase Memory”
RockOn! 2008
364
Lesson 8: Flight Code
- On the Data Retrieval Utility, select the “Software Arming” mode
- Click “Check Armed Status”
- Click “Arm Payload”
- Should say “Armed”
- Disconnect power and Data Retrieval Connector from AVR board
RockOn! 2008
365
ENDLesson 8:
Flight Code
RockOn! 2008
RockOn! 2008
366
Big Picture
RockOn! 2008
RockOn! 2008
367
Lesson 9:Flight Code Testing
RockOn! 2008
RockOn! 2008
368
Lesson 9: Flight Code Testing
- Objectives
-Verify that the AVR board and software are working correctly
-Gather data that will later be used to calibrate sensors
RockOn! 2008
369
Lesson 9: Flight Code Testing
- Objectives
-Verify that the AVR board and software are working correctly
-Gather data that will later be used to calibrate sensors
RockOn! 2008
370
Lesson 9: Flight Code Testing
- In order to calibrate sensors, several tests must be run
- These tests will also be used to verify that the system is functioning correctly
- After each test, use the ISMP and Parser Utilities to create csv files of the output, and save these files
RockOn! 2008
371
- Connect power to the board
- Make sure RBF jumper is installed and activate the G-Switch
- LED should be blink twice and pause then blink twice again
Lesson 9: Flight Code Testing
RockOn! 2008
372
Lesson 9: Flight Code Testing
-With one single data gathering run of the flight code, conduct 3 tests
- Pressure Test- Blow into the pressure sensor with a straw for 10 to 15
seconds-Wait about 15 seconds before the next test
- Temperature Test- Touch the temperature sensor for 10 to 15 seconds-Wait about 15 seconds before the next test
RockOn! 2008
373
Lesson 9: Flight Code Testing
- Accelerometers Test- Perform the following actions in the correct order for
about 10 to 15 seconds each- Set the X-,Y-,Z-axis plates flat- Set X-accel pointing up- Set X-accel pointing down- Set Y-accel pointing up- Set Y-accel pointing down- Set Z-accel pointing up- Set Z-accel pointing down- Set X-,Y-,Z-axis plates flat
RockOn! 2008
374
Lesson 9: Flight Code Testing
- Set the X-,Y-,Z-axis plates flat
RockOn! 2008
375
Lesson 9: Flight Code Testing
- Set X-accel pointing up
RockOn! 2008
376
Lesson 9: Flight Code Testing
- Set X-accel pointing down
RockOn! 2008
377
Lesson 9: Flight Code Testing
- Set Y-accel pointing up
RockOn! 2008
378
Lesson 9: Flight Code Testing
- Set Y-accel pointing down
RockOn! 2008
379
Lesson 9: Flight Code Testing
- Set Z-accel pointing up
RockOn! 2008
380
Lesson 9: Flight Code Testing
- Set Z-accel pointing down
RockOn! 2008
381
Lesson 9: Flight Code Testing
- Set X-,Y-,Z-axis plates flat
RockOn! 2008
382
Lesson 9: Flight Code Testing
- Disconnect power
- Attach the Data Retrieval Connector
- Open the Data Retrieval Utility
RockOn! 2008
383
Lesson 9: Flight Code Testing
- Connect power to the AVR board before using the Data Retrieval Utility
RockOn! 2008
384
- On the Data Retrieval Utility, select the “Software Arming” mode
- Should say “Partially Armed” and blink with the same pattern
- Click “Disarm” and then check status again
- Should say “Safe”
Lesson 9: Flight Code Testing
RockOn! 2008
385
- On the Data Retrieval Utility, select the “Read Portion of Memory” mode
-Choose the correct COM# for the port
- Pick an output file name and save to Desktop by selecting “…”
Calibration_Kit_XX.txt- Use a start address of 0 and a
length of 100,000-Click “Retrieve Data”
Lesson 9: Flight Code Testing
RockOn! 2008
386
- Run parser_util.exe (NOT Parser.exe)
Lesson 9: Flight Code Testing
RockOn! 2008
387
- In the “Data File” field, enter the name of the file from the last exercise Calibration_Kit_XX.txt- This is the file to be parsed
- In the “Output File” field, enter a filename with .csv as the ending-Calibration_Kit_XX.csv
Lesson 9: Flight Code Testing
RockOn! 2008
388
-Make sure that both of the boxes are checked
- The first one toggles whether the output file is opened once parsing is complete
- The second box ensures that the output file is compatible with Microsoft Excel
Lesson 9: Flight Code Testing
RockOn! 2008
389
Lesson 9: Flight Code Testing
- In the “Number of Columns” field, enter the number of sensors or inputs in the data file
- In this case, 9 sensors were read, so enter 9
- Press “Apply”
RockOn! 2008
390
Lesson 9: Flight Code Testing
- For each sensor (in the order you sampled them in your code)-Name the sensor- Enter the number of bytes
per sample-Check the box if the data is
a count, not a voltage- The low accelerometers
and the geiger counter are 1 byte, the others 2 bytes- The Geiger counter
should be set as a count
RockOn! 2008
391
Lesson 9: Flight Code Testing
- Press “Parse Data”-A black console window
should appear
- This is the actual parser process, DO NOT close the window, it will close on its own
-When the parsing is finished, wait for the output file to open
RockOn! 2008
392
Lesson 9: Flight Code Testing
- Excel should open something like this.
- The data shown in the spreadsheet is the voltage seen by the sensors each time they were sampled
RockOn! 2008
393
- Verify that these files have been written to your Desktop.
-We will use these files on Day 5 of this workshop
Lesson 9: Flight Code Testing
- Select the “Erase Memory” tab on the Data Retrieval Utility
- Select the Correct COM port
-Click “Erase Memory”
RockOn! 2008
394
- On the Data Retrieval Utility, select the “Software Arming” mode
- Click “Check Armed Status’
- Click “Arm Payload”
- Should say “Armed”
- Disconnect power and Data Retrieval Connector from AVR board
Lesson 9: Flight Code Testing
RockOn! 2008
395
ENDLesson 9:
Flight Code Testing
RockOn! 2008
RockOn! 2008
396
Lesson 10:Flight Preparation
RockOn! 2008
RockOn! 2008
397
Lesson 10: Flight Preparation
- Objectives
-Activate system and let it record in the current configuration settings
- Prepare AVR and system for flight- Erase Memory
-Arm System
RockOn! 2008
398
Lesson 10: Flight Preparation
- Objectives
-Activate system and let it record in the current configuration settings
- Prepare AVR and system for flight- Erase Memory
-Arm System
RockOn! 2008
399
Lesson 10: Flight Preparation
- Open the Data Retrieval Utility
- Verify Power, AVR ISP, and Data Retrieval Connector are not attached to AVR board
- Connect the data retrieval board to the data header on the AVR board
- DO NOT CONNECT THE AVR ISP DURING THIS LESSON
RockOn! 2008
400
Lesson 10: Flight Preparation
RockOn! 2008
401
Lesson 10: Flight Preparation
- Connect the board to the computer using the data retrieval header, a serial cable, and the USB to Serial adapter
RockOn! 2008
402
Lesson 10: Flight Preparation
RockOn! 2008
403
Lesson 10: Flight Preparation
- On the Data Retrieval Utility, select the “Software Arming” mode
- To determine if the serial connection is active, select the check armed status button of the correct COM port
-You want the green LED to flash for a successful connection
- If an error message occurs,- Check your serial connections- check if AVR board has power
RockOn! 2008
404
Lesson 10: Flight Preparation
- Open the ISMP Utility and go to the Erase Memory Tab
- Verify that you have selected the correct COM port
- Press the erase button
RockOn! 2008
405
Lesson 10: Flight Preparation
- Now switch to the Software Arming Tab of the ISMP Utility
- Press the Check Armed Status Button
RockOn! 2008
406
Lesson 10: Flight Preparation
- Depending on the status of the payload, the button at the bottom of the utility will either read “Arm Payload” or “Disarm Payload”
- Press the button until the armed status field says “Armed”
- Disconnect power and the AVR ISP and Data Retrieval Connector
RockOn! 2008
407
Lesson 10: Flight Preparation
- Connect power to the AVR board
- Activate the system (while power is connected) by activating the G-switch
- The system should now be gathering data
- Run the system for a full 15 minutes if system is not using flight batteries. If using flight batteries or are integrated to the flight deck, only run this test for a few minutes
- After time has been reached, disconnect power from AVR Board
RockOn! 2008
408
- Connect power to the AVR board
- Connect the Data Retrieval Connector
Lesson 10: Flight Preparation
RockOn! 2008
409
- On the Data Retrieval Utility, select the “Software Arming” mode
- Should say “Partially Armed” and blink with the same pattern
- Click “Check Armed Status”
- Click “Disarm Payload” and then check status again
- Should say “Safe”
Lesson 10: Flight Preparation
RockOn! 2008
410
- On the Data Retrieval Utility, select the “Read Entire Memory” mode
-Choose the correct COM# for the port
- Pick an output file name and save to Desktop by selecting “…”
Less_11_Kit_XX.txt
-Click “Retrieve Data”
- This will take some time to complete
Lesson 10: Flight Preparation
RockOn! 2008
411
Lesson 10: Flight Preparation
- Open up the Data Parser Utility
- Do NOT make any changes to the utility; all setting should have been saved from lesson 9
- Press “Parse Data”-When the parsing is
finished, wait for the output file to open
RockOn! 2008
412
Lesson 10: Flight Preparation
- Verify that these values look logical (i.e. that nothing exceeds 5 volts)
- Proceed with final flight preparation steps
RockOn! 2008
413
Lesson 10: Flight Preparation
- Open the ISMP Utility and go to the Erase Memory Tab
- Verify that you have selected the correct COM port
- Press the erase button
RockOn! 2008
414
Lesson 10: Flight Preparation
- Now switch to the Software Arming Tab of the ISMP Utility
- Press the “Check Armed Status” Button
- Depending on the status of the payload, the button at the bottom of the utility will either read “Arm Payload” or “Disarm Payload”
- Press the button until the armed status field says Armed.
RockOn! 2008
415
Lesson 10: Flight Preparation
- Disconnect power from the AVR board
- Disconnect the Data Retrieval Connector from the AVR board
- CONGRATULATIONS, your system is now ARMED and Ready for Flight
- SYSTEM CANNOT BE ACTIVATED UNLESS ALL THREE ARE TRUE1. RBF IS CONNECTED2. POWER IS CONNECTED3. G-SWITCH IS ACTIVATED
RockOn! 2008
416
ENDLesson 10:Flight Preparation
RockOn! 2008