Skip to main content
  • 1308 Accesses

Abstract

This chapter discusses the software development process of embedded systems. Specific focus is given to OS-less approach on Arduino Uno with C programming. Bitmath is introduced which is essential for direct port access. In the context of Arduino Uno with its microcontroller ATmega328, many examples and references are included for ease of understanding of these concepts. Examples include usage of interrupt, timer, and direct memory access (Arduino Due). Finally, artificial intelligence is also introduced. For OS-based approach, key concepts are discussed including multithreading, multitasking, scheduling, and points out some shared memory issues and software performance measures.

Design is not just what it looks like and feels like. Design is how it works.—Steve Jobs, co-founder of Apple Inc.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 79.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  1. E.A. Lee, "Cyber physical systems: design challenges," 2008 11th IEEE International Symposium on Object and Component-Oriented Real-Time Distributed Computing (ISORC), Orlando, FL, 2008, pp. 363–369

    Google Scholar 

  2. B. Tabbara, A. Tabbara, A. Sangiovanni-Vincentelli, Function/Architecture Optimization and Co-Design of Embedded Systems (Kluwer Academic Publishers, 2000)

    Google Scholar 

  3. J. Stankovic, Misconceptions about real-time computing. IEEE Computer 21, 10 (1988)

    Article  Google Scholar 

  4. Atmel ATmega328 datasheet. https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf

    Google Scholar 

  5. P. Marwedel, Embedded System Design: Embedded Systems Foundations of Cyber-Physical Systems (2011)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Exercise

Exercise

Problem 4.1: Write an Arduino Uno code for Morse Code of "SOS" by blinking the internal LED (connected to Pin 13).

Problem 4.2: Write an Arduino Uno code for Temperature measurement with a thermistor. The analog data from the sensor must be converted to Fahrenheit and Centigrade. Display the temperature readings on an LCD display.

Problem 4.3: What are different queueing mechanisms in ES? Discuss relative advantages and disadvantages. Provide two examples where each of them is more suitable.

Problem 4.4: Describe the 6 sleeping modes of Arduino Uno in order of lower current consumption. Why interrupt is suitable for sleeping modes?

Problem 4.5: What is time service? What module you will need for time service in Arduino Uno?

Problem 4.6: Write a bitmath code to set the digital pin 5 to output mode without changing any other pin modes. Write another code using bitmath to toggle the pin 5 output value.

Problem 4.7: Write a code for a traffic light (using Red, Yellow, Green LEDs) and a pedestrian switch (using a push button). First implement the code with delay function, then implement with Timer2 and PCINT interrupt, with lowest current sleep mode.

Problem 4.8: What are two main type of software buffer? Describe relative advantages and disadvantages.

Problem 4.9: Write a C code that utilizes timer/counter hardware of ATmega328 of Arduino Uno, employs extended standby sleep mode, and generates an output pulse of 10 Hz through pin 13.

Problem 4.10. Write a code to implement a IIR LPF for a push button input that turns on an LED.

Problem 4.11: Write a C code that implements ANN machine learning (ML) algorithm to first train with a set of given data in the code, then runs the ANN ML to monitor 3 analog input values (A0–A2) to turn ON/OFF two LEDs (connected to D6–D7).

Rights and permissions

Reprints and permissions

Copyright information

© 2021 Springer Nature Switzerland AG

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Morshed, B.I. (2021). Software Design. In: Embedded Systems – A Hardware-Software Co-Design Approach. Springer, Cham. https://doi.org/10.1007/978-3-030-66808-2_4

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-66808-2_4

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-66807-5

  • Online ISBN: 978-3-030-66808-2

  • eBook Packages: EngineeringEngineering (R0)

Publish with us

Policies and ethics