• Home
  • Blog Posts
  • Categories
  • About Me
  • Contact Me
  • Disclosure

  • Home
  • Blog Posts
  • Categories

Technical Concepts in Computer Engineering: Embedded Systems Development

September 20, 2018

This post is the first part of the on-going Technical Concepts in Computer Engineering series.

Through last year, I got questions from a lot of people both through social media and in the Computer Engineering department about one specific thing: What the topics of more technical courses in a Computer Engineering degree are like, and how to deal with them.

Therefore, I have created these series of blog posts to help people get familiar with Computer Engineering, and also answer the questions in people’s minds related to the courses in such a degree. Thus, I will slightly go through the courses that I find the most important by giving some insights about how I felt during the course and what I had learned.

Now, let us begin with Embedded Systems Development.

The objective of this course is to design and implement software for embedded systems, starting with the assembly language and concluding with C. Before taking such a course, I could have never imagined that being so close to hardware could have been this fun!

At the beginning

At the beginning of the course, I felt a little overwhelmed about the things that we will do in the course, let’s see why:

  • Before this course, I had never programmed in assembly from scratch.
  • The slides of the course were like they had been written in a language that I had never spoken.
  • The data sheet of the PIC18F8722 microcontroller that will be used throughout the course for the programming homeworks, labs and the exams had more than 400 pages.
  • Also, I did not quite know what a microcontroller is, and how a microcontroller board works. Yet, there I was trying to figure out how to test the board in order to confirm that it works correctly in the very first week of the semester:

View this post on Instagram

Having fun with some #hardware 🤓Meet my new not-so-little friend: UNI-DS6 , 280218 #embeddedsystems #makerrevolution #hardworkpaysoffs #engineeringstudent #womenintech

A post shared by @ codingwoman on Feb 28, 2018 at 8:54am PST

 

What did we do through the scope of this course?

The course was really entertaining since we had a lot of programming homeworks to have hands-on experience with embedded systems development.

For example, the aim of one of our homeworks was to design and implement a simple version of the well-known pong game by using interrupts and timers. I re-named it as “Pic-Pong” since the name of the microcontroller that we used during the course was PIC. At the end, we built something like this:

View this post on Instagram

It’s PIC-Pong time! Dancing with the #embedded, 070418 #embeddedsystems #computerengineering

A post shared by @ codingwoman on Apr 8, 2018 at 6:38am PDT

 

Another homework was about implementing and application for a product called “very safe” which is a steel safe protected through an electronic lock. It took me 12 hours straight in the laboratory looking at the computer and the embedded development board, but eventually, I made it! The results were amazing:

View this post on Instagram

Here is to the ones who always wish to have more time to play with #hardware ⚡️ Gonna miss playing with this little board, 010518 #embedded #embeddedsystems #computerengineering

A post shared by @ codingwoman on Apr 30, 2018 at 4:38pm PDT

 

To give more insights about the video above, the thing that I control using the stick is called a “potentiometer”. In this basic application, it helps the user to select a 4-digit password by turning it. When the user turns it to left or right a new voltage value is assigned. These voltage values are read by the program to map them to digits in a range of 0 to 9.

How did I achieve?

  • Since I wasn’t familiar with the topics taught in the course, I worked regularly after each class to not forget what I had learned that day.
  • I did a lot of hands-on practice with the embedded development board, especially before the laboratory exam which consists of writing three different programs for the embedded development board in 4 hours.
  • I always tried to learn the logic behind the things that I was learning, and did not quit when I thought that I failed. If I ever thought that I failed, I worked on another topic for some time and came back later.

 

View this post on Instagram

When you met the two #deadlines but the remaining ones are looking at your face saying “Oh, you totally forgot about us then 😯” — #thisisfine🔥, 110318 #study📚 #workspacegoals #deskorganization #messedup #computerengineering #womenintech

A post shared by @ codingwoman on Mar 11, 2018 at 11:11am PDT

 

What I had learned?

I learned…

  • A lot of things about microcontrollers, and the embedded development board. For the ones who don’t know, microcontroller is a control device which incorporates a microprocessor, and microprocessor is an integrated circuit that contains all the functions of a CPU (Central Processing Unit) of a computer.
  • About different architectures such as Harvard and Von-Neumann. I also learned about two different instruction sets named RISC (Reduced Instruction Set Computer) and CISC (Complex Instruction Set Computer). For the case of PIC18, it uses the first ones respectively. Yet, Intel x86 architecture that is commonly used nowadays has CISC architecture.
  • How to read such an assembly instruction:
    ADDWF 0x059, W
  • About the Ports and Registers, and how to use them for purposes like input and output
  • About interrupts, their priorities and the flags associated with them
  • Timers and Analog to Digital Converters
  • Also, a little bit about the Real Time Operating Systems

 

That’s all about the Embedded Systems Development course. I hope this article gave you some insights about the courses in a Computer Engineering degree. If you want to hear about the upcoming posts, you can stay tuned by joining my newsletter.

– Coding Woman

 

Share

Computer Engineering

codingwoman

Leave A Reply


Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.



  • Popular Posts

    • Discover Blogs by Women in Tech 👩🏼‍💻
      August 31, 2018
    • Hello World!
      January 20, 2018
    • Why You Should Set Your Goals Ridiculously High
      June 15, 2018
  • Tags

    Choices Cognitive Science Computer Vision Deep Learning Dreams Generative Goals Productivity
  • Buy me a coffee

    If you like my page, you can support me by buying me a coffee.


  • Newsletter


© Copyright Coding Woman | 2018 - 2020

We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.OkPrivacy policy