Difference between revisions of "Lab Assignments"
(→Serial Communication) |
(→DBC File) |
||
(76 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
+ | <span id="BackToTop"></span> | ||
+ | <div class="noprint" style="background-color:#FAFAFA; position:fixed; bottom:2%; left:0.25%; padding:0; margin:0;"> | ||
+ | [[#top|Back to the Top]] | ||
+ | </div> | ||
+ | |||
= Hello World = | = Hello World = | ||
− | |||
− | |||
− | |||
=== Assignment === | === Assignment === | ||
− | + | *Get the development environment from sourceforge. | |
: '''[https://sourceforge.net/projects/armdevpkg/files/: SourceForge SJSU Development Package]''' | : '''[https://sourceforge.net/projects/armdevpkg/files/: SourceForge SJSU Development Package]''' | ||
− | + | *Compile a sample FreeRTOS sample project | |
− | + | *Load it onto the processor | |
− | + | *Add a terminal command to your project, have it do something creative (Like print temperature on the screen) | |
Reference this article on how to add a terminal command: | Reference this article on how to add a terminal command: | ||
Line 22: | Line 24: | ||
Only submit the relevant code, or just the code you added. | Only submit the relevant code, or just the code you added. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
= Project Setup = | = Project Setup = | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
= Final Wiki Schedule = | = Final Wiki Schedule = | ||
− | = | + | = CAN Communication Demo = |
− | |||
− | + | === Assignment === | |
− | |||
− | = | ||
Demonstrate that each ECU is able to communicate over the CAN Bus | Demonstrate that each ECU is able to communicate over the CAN Bus | ||
Line 167: | Line 38: | ||
*Code should utilize the auto-generated artifacts from the DBC file | *Code should utilize the auto-generated artifacts from the DBC file | ||
*MIA handling should occur on the messages that are expected to be received | *MIA handling should occur on the messages that are expected to be received | ||
− | *Upon MIA, an LED indicator should indicate that there is 1 or more message in the MIA state | + | *: Upon MIA, an LED indicator should indicate that there is 1 or more message in the MIA state |
− | + | ||
+ | In person demonstration should be given for this assignment and there is nothing to turn in otherwise. | ||
= Producer / Consumer Tasks = | = Producer / Consumer Tasks = | ||
+ | |||
+ | |||
+ | === Assignment === | ||
*Create a task that polls the acceleration sensor, and determines the orientation of the board, such as "up, down, left, right". Create an enumeration such as "typdef enum { invalid, up, down, left, right, }orientation_t; | *Create a task that polls the acceleration sensor, and determines the orientation of the board, such as "up, down, left, right". Create an enumeration such as "typdef enum { invalid, up, down, left, right, }orientation_t; | ||
+ | *Create a queue, and have the first task send orientation values every second to the queue. | ||
+ | *: Print something BEFORE and AFTER sending the enumeration value to the queue. | ||
*Create a task that is waiting on the orientation enumeration to be sent by the previous task. | *Create a task that is waiting on the orientation enumeration to be sent by the previous task. | ||
− | * | + | *: Print something immediately after the second task receives the data from the queue. |
− | |||
− | |||
*Use same priority for both tasks and note down the print-outs. | *Use same priority for both tasks and note down the print-outs. | ||
*Alter the priority of second task to use higher priority, and note down the print-outs | *Alter the priority of second task to use higher priority, and note down the print-outs | ||
− | *Note down your results, and submit it at the top of your code submission. | + | *: Note down your results, and submit it at the top of your code submission. |
= Project Prototypes = | = Project Prototypes = | ||
+ | |||
+ | === Assignment === | ||
Project prototypes are expected to demonstrate the following: | Project prototypes are expected to demonstrate the following: | ||
Line 191: | Line 68: | ||
*Extra credit if you go above and beyond and show even more progress such as a working Android app | *Extra credit if you go above and beyond and show even more progress such as a working Android app | ||
− | |||
− | |||
− | = | + | = Individual Contribution = |
− | |||
− | + | You will be grading your group members based on how much or how little they contributed to the project. You must be ethical, and honest, and not go based on your "emotions". | |
− | |||
− | |||
− | + | Example: | |
− | + | Name Letter Grade Notes | |
+ | Last1, First1 A This student was involved in all aspects of the project design and was present at all group meetings. | ||
+ | Last2, First2 C- This student contributed to writing the report but was absent for many group meetings. |
Latest revision as of 00:10, 18 March 2020
Contents
Hello World
Assignment
- Get the development environment from sourceforge.
- Compile a sample FreeRTOS sample project
- Load it onto the processor
- Add a terminal command to your project, have it do something creative (Like print temperature on the screen)
Reference this article on how to add a terminal command:
http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board
SUBMIT YOUR CODE online (copy/paste to Text Entry box). Or simply provide me a link if you use Gitlab or other online repository for your code submission.
Only submit the relevant code, or just the code you added.
Project Setup
Final Wiki Schedule
CAN Communication Demo
Assignment
Demonstrate that each ECU is able to communicate over the CAN Bus
- Code should utilize the auto-generated artifacts from the DBC file
- MIA handling should occur on the messages that are expected to be received
- Upon MIA, an LED indicator should indicate that there is 1 or more message in the MIA state
In person demonstration should be given for this assignment and there is nothing to turn in otherwise.
Producer / Consumer Tasks
Assignment
- Create a task that polls the acceleration sensor, and determines the orientation of the board, such as "up, down, left, right". Create an enumeration such as "typdef enum { invalid, up, down, left, right, }orientation_t;
- Create a queue, and have the first task send orientation values every second to the queue.
- Print something BEFORE and AFTER sending the enumeration value to the queue.
- Create a task that is waiting on the orientation enumeration to be sent by the previous task.
- Print something immediately after the second task receives the data from the queue.
- Use same priority for both tasks and note down the print-outs.
- Alter the priority of second task to use higher priority, and note down the print-outs
- Note down your results, and submit it at the top of your code submission.
Project Prototypes
Assignment
Project prototypes are expected to demonstrate the following:
- Reliable CAN communication between different ECUs
- Basic obstacle avoidance (free-run mode)
- Reliable sensor inputs (PCAN will be used by class mentors to assess)
- Reasonable motor commands (PCAN will be used by class mentors to assess)
- Extra credit if you go above and beyond and show even more progress such as a working Android app
Individual Contribution
You will be grading your group members based on how much or how little they contributed to the project. You must be ethical, and honest, and not go based on your "emotions".
Example:
Name Letter Grade Notes Last1, First1 A This student was involved in all aspects of the project design and was present at all group meetings. Last2, First2 C- This student contributed to writing the report but was absent for many group meetings.