Chapter 7 Accessing Microcontroller Registers
|
|
|
- Jonah Holt
- 9 years ago
- Views:
Transcription
1 Chapter 7 Accessing Microcontroller Registers Microcontroller programming requires efficient techniques for register access. Registers are used to configure the CPU and peripheral hardware devices such as flash access, clocks, I/O ports, timers, communication interfaces (UART, SPI TM, CAN [1]), etc. This chapter describes C++ methods that can be used to manipulate microcontroller registers. The focus of this chapter is placed on template methods that provide for efficient, scalable and nearly portable register access. 7.1 Defining Constant Register Addresses C programmers often define register addresses with a preprocessor #define. For example, // The 8-bit address of portb. #define REG_PORTB ((uint8_t) 0x25U) The preprocessor symbol REG_PORTB represents the 8 bit address of portb on our target with the 8 bit microcontroller. We first encountered this register in the LED program of Sect The value of portb s address is 0x25. The type of the address is uint8_t. In addition, the type information is tightly bound to the preprocessor definition with a C-style cast operator. All-in-all, this is a robust register definition in C. As mentioned in association with the LED program in Sect. 1.10, portb can also be manipulated via direct memory access in the C language. For example, the following C code sets the value of portb to zero. // Set portb to 0. *((volatile uint8_t*) REG_PORTB) = 0U; C.M. Kormanyos, Real-Time C++, DOI / , Springer-Verlag Berlin Heidelberg
2 128 7 Accessing Microcontroller Registers In C++ it can be convenient to define register addresses with compile-time constant static integral members of a class type (such as a structure) or using the constexpr keyword. This technique has already been used a few times in this book and is described in greater detail in Sect In particular, namespace mcal struct reg static constexpr std::uint8_t portb = 0x25U; // Additional registers //... ; Register addresses can alternatively be defined as compile-time constants with constexpr possibly in a namespace for naming uniqueness. For example, namespace mcal namespace reg constexpr std::uint8_t portb = 0x25U; ; // Additional registers //... The mcal::reg structure (or the mcal::reg namespace) can be used to define a variety of microcontroller register addresses. Each register address needed in the program can be included as a compile-time constant. In the mcal::reg structure above, for example, the 8 bit address of portb on our target with the 8 bit microcontroller has a compile-time constant value equal to 0x25. Using the mcal::reg structure (or alternatively the namespace mcal::reg) it is straightforward to set portb via direct memory access in C++. For instance, // Set portb to 0. *reinterpret_cast<volatile std::uint8_t*> (mcal::reg::portb) = 0U; As mentioned in Sects and 4.10, compile-time constants are just as efficient as preprocessor #defines, but have superior type information. Compile-time
3 7.2 Using Templates for Register Access 129 constants are well-suited for defining register addresses because they require no storage and are available for constant folding. Register addresses defined as compile-time constants can also be used as parameters in C++ templates. This can be used to create highly optimized template classes that can be mapped to the microcontroller s peripherals resulting in efficient hardware-access code that possesses a high degree of portability. This technique will be shown in the next section and also used for a serial SPI TM driver in Sect Using Templates for Register Access Consider the template class below. It is a scalable template class designed for setting the value of a microcontroller register. template<typename addr_type, typename reg_type, const addr_type addr, const reg_type val> class reg_access public: static void reg_set() *reinterpret_cast<volatile reg_type*>(addr) = val; ; The reg_access class has four template parameters that specify the characteristics of the microcontroller register. The addr_type parameter defines the type of the register s address. When used with portb on our target with the 8 bit microcontroller, for example, the type of addr_type is std::uint8_t. The reg_type parameter defines the physical width of the register. This is also std::uint8_t for portb on our target with the 8 bit microcontroller. 1 The last two template parameters, addr and val, define the register s address and the value that should be written it. These two parameters must be integral compile-time constants. The reg_access template has one static method called reg_set(). This function is designed for setting a register at a fixed address with a constant value. For example, 1 Note, however, that a register s width need not necessarily have the same type as its address. One often encounters registers with 8 bit width or 16 bit width on a 32 bit machine, etc.
4 130 7 Accessing Microcontroller Registers // Set portb to 0. reg_access< mcal::reg::portb, 0x00U>::reg_set(); As in the examples in the previous section, this code also sets the value of the portb register to zero. This is accomplished by calling the reg_set() function. Notice how this code obtains the address of portb from the mcal::reg class. There are several advantages to implementing register access functions in a templated class such as reg_access. In particular, reg_access offers scalability and portability because it can be used with different register types and microcontroller architectures. In the code below, for example, a register with a 32 bit address and an 8 bit width is set with an 8 bit value. 2 // Set timer0 mode register tm0ctl0 to zero. reg_access<std::uint32_t, mcal::reg::tm0ctl0, 0x00U>::reg_set(); In the following code, a register with a 32 bit address and 16 bit width is set with a 16 bit value. // Set timer0 compare register tm0cmp0 to 32,000. reg_access<std::uint32_t, std::uint16_t, mcal::reg::tm0cmp0, 32000U>::reg_set(); The reg_set() function of the reg_access class is quite efficient because all the template parameters are compile-time entities. When compiling the sample above, for example, the compiler eliminatesthe addr and val template parameters via constant folding and sees in reg_set() the following statement. *reinterpret_cast<volatile std::uint16_t*> (0xFFFFF694UL) = 32000U; 2 This example and the following one have been taken from code that I once wrote to initialize timer0 for a well-known 32 bit microcontroller.
5 7.3 Generic Templates for Register Access 131 Since this code is entirely known at compile time, the compiler can optimize it to the best of its ability. In fact, the compiler could potentially substitute a single opcode for the operation if one is available for the CPU architecture and the compiler is capable of recognizing the opportunity to do so. 7.3 Generic Templates for Register Access Based on the reg_set() subroutine in the previous section, we can add additional functions such as logic and bit operations to the reg_access class. For example, we will now add to the reg_access class a function for the logical or operator. template<typename addr_type, typename reg_type, const addr_type addr, const reg_type val = 0> class reg_access public: static void reg_set() *reinterpret_cast<volatile reg_type*>(addr) = val; static void reg_or() *reinterpret_cast<volatile reg_type*>(addr) = val; ; The reg_or() function is similar to the reg_set() function. The only difference is that instead of setting the value with operator=(), the logical or operator is used. This subroutine can be used for or-ing the value of a register at a fixed address with a constant value. In particular, // Set portb.5 to 1. reg_access< mcal::reg::portb, 0x20U>::reg_or();
6 132 7 Accessing Microcontroller Registers This code is equivalent to *reinterpret_cast<volatile std::uint8_t*>(0x25) = 0x20; and it performs a bitwise or of portb with the 8 bit value 0x20. Thissets portb.5 on our target with the 8 bit microcontroller to high. As a final example, we will add a dedicated bit operation to the reg_access class. For example, template<typename addr_type, typename reg_type, const addr_type addr, const reg_type val = 0> class reg_access public: //... static void bit_not() *reinterpret_cast<volatile reg_type*>(addr) ^= (1 << val); ; The bit_not() function performs a bitwise exclusive-or (xor) of a register with a bitmask containing a single bit. Notice that the val parameter here is used to create the bitmask from 1 shifted left val times. The bit_not() function has the effect of toggling a bit from low to high and vice versa. For example, // Toggle portb.5. reg_access< mcal::reg::portb, 5U>::bit_not(); This code is equivalent to *reinterpret_cast<volatile std::uint8_t*>(0x25) ^= 0x20;
7 7.3 Generic Templates for Register Access 133 and it performs a bitwise xor of portb with 0x20. This toggles portb.5 on our target with the 8 bit microcontroller from low to high and vice versa. It is the same register manipulation that was introduced in the toggle() function of the led class in the LED program of Sect So now the reg_access class includes functions for register set, logical or and bitwise xor. It is straightforward to add even more register functions. For example, the class synopsis of an extended reg_access class is shown below. template<typename addr_type, typename reg_type, const addr_type addr, const reg_type val> class reg_access public: static void reg_set() /*... */ static void reg_and() /*... */ static void reg_or () /*... */ static reg_type reg_get() /*... */ static void bit_set() /*... */ static void bit_clr() /*... */ static void bit_not() /*... */ static bool bit_get() /*... */ static void variable_reg_set(const reg_type) //... ; This version of the reg_access class is contained in the companion code of this book. It has functions for register set, get, various bit operations, etc. In this sense, the reg_access class is a scalable, flexible and generic template that can be used for register manipulation on any microcontroller platform, regardless of the address widths and register types. Register manipulation code can never be truly portable because the addresses and purposes of registers are specific to a given microcontroller. The reg_access class, however, makes no use of these kinds of microcontroller-specific details. So as long as the microcontroller-specific details are localized somewhere else (such as in something like the mcal::reg structure), the reg_access class remains portable perhaps as portable as possible for microcontroller register access.
8 134 7 Accessing Microcontroller Registers 7.4 Bit-Mapped Structures Microcontroller programmers often use C-style structures with bit-fields to represent bits or groups of bits in a register. This is useful for creating a bit-mapped structure that identically matches the bits in a hardware register. For example, an 8 bit port register can be represented with the C-style bit-mapped structure shown below. typedef struct struct_bit8_type std::uint8_t b0 : 1; std::uint8_t b1 : 1; std::uint8_t b2 : 1; std::uint8_t b3 : 1; std::uint8_t b4 : 1; std::uint8_t b5 : 1; std::uint8_t b6 : 1; std::uint8_t b7 : 1; bit8_type; Using the bit8_type structure is straightforward. For example, the code below sets portb.5 to high. reinterpret_cast<volatile bit8_type*> (mcal::reg::portb)->b5 = 1U; It can also be convenient to combine a built-in integral type with a bit-mapped register structure in a C-style union. For instance, typedef union union_reg_map_c std::uint8_t value; bit8_type bits; reg_map_c; In this example, we have combined the 8 bits in the bit8_type structure with an std::uint8_t in the reg_map_c union. This makes it possible to manipulate either the individual bits or the value of the entire register depending on the coding situation. In particular,
9 7.4 Bit-Mapped Structures 135 // Set portb to 0. reinterpret_cast<volatile reg_map_c*> (mcal::reg::portb)->value = 0U; // Set portb.5 to 1. reinterpret_cast<volatile reg_map_c*> (mcal::reg::portb)->bits.b5 = 1U; In C++, it is possible to take the concept of the reg_map_c union and create from it a generic template class for register mapping. For example, template<typename addr_type, typename reg_type, typename bits_type, const addr_type addr> class reg_map public: static reg_type& value() return *reinterpret_cast<volatile reg_type*>(addr); static bits_type& bits() return *reinterpret_cast<volatile bits_type*>(addr); ; The reg_map class has four template parameters similar to the ones in the reg_access structure from the previous sections of this chapter. In particular, the addr_type parameter specifies the type of the register s address. The addr parameter provides the constant value of the register s address. The reg_type gives the type of the register. The new bits_type template parameter is intended to be a bit-mapped structure representing the bit-mapping of the hardware register. These template parameters are used by reg_map s two static members functions to provide access the register as a value or a bit-map. The value() subroutine returns a non-constant (i.e., modifiable) reference to the value of the register. The bits() subroutine returns a non-constant reference to the bit-mapped value of the register.
10 136 7 Accessing Microcontroller Registers Imagine we would like to use the reg_map class to access the portb register on our target with the 8 bit microcontroller. In particular, // Set portb to 0. reg_map< bit8_type, mcal::reg::portb>::value() = 0U; // Set portb.5 to 1. reg_map< bit8_type, mcal::reg::portb>::bits().b5 = 1U; Bit-mapped structures provide an intuitive and elegant way to identically map a software structure to a hardware register or set of registers. Using bit-mapped structures, however, can result in potentially non-portable code. This is because, according to specification, the type of bit-field members in a structure must be one of signed or unsigned int. Bit-mapped structures, however, often use other integral types in order to obtain the right structure packing for the hardware. If bit-mapped structures are to be used, one may want to check how the compiler handles them and ensure that the desired bit-mapping is actually carried out. The code of bit-mapped structures should also be clearly marked with a comment indicating potential non-portability. Reference 1. ISO, ISO :2003: Road Vehicles Controller Area Network (CAN) Part 1: Data Link Layer and Physical Signaling (International Organization for Standardization, Geneva, 2003)
11
C Programming. for Embedded Microcontrollers. Warwick A. Smith. Postbus 11. Elektor International Media BV. 6114ZG Susteren The Netherlands
C Programming for Embedded Microcontrollers Warwick A. Smith Elektor International Media BV Postbus 11 6114ZG Susteren The Netherlands 3 the Table of Contents Introduction 11 Target Audience 11 What is
Keil C51 Cross Compiler
Keil C51 Cross Compiler ANSI C Compiler Generates fast compact code for the 8051 and it s derivatives Advantages of C over Assembler Do not need to know the microcontroller instruction set Register allocation
Programing the Microprocessor in C Microprocessor System Design and Interfacing ECE 362
PURDUE UNIVERSITY Programing the Microprocessor in C Microprocessor System Design and Interfacing ECE 362 Course Staff 1/31/2012 1 Introduction This tutorial is made to help the student use C language
2.0 Command and Data Handling Subsystem
2.0 Command and Data Handling Subsystem The Command and Data Handling Subsystem is the brain of the whole autonomous CubeSat. The C&DH system consists of an Onboard Computer, OBC, which controls the operation
ELEG3924 Microprocessor Ch.7 Programming In C
Department of Electrical Engineering University of Arkansas ELEG3924 Microprocessor Ch.7 Programming In C Dr. Jingxian Wu [email protected] OUTLINE 2 Data types and time delay I/O programming and Logic operations
An Introduction to MPLAB Integrated Development Environment
An Introduction to MPLAB Integrated Development Environment 2004 Microchip Technology Incorporated An introduction to MPLAB Integrated Development Environment Slide 1 This seminar is an introduction to
How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)
TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions
Top 10 Bug-Killing Coding Standard Rules
Top 10 Bug-Killing Coding Standard Rules Michael Barr & Dan Smith Webinar: June 3, 2014 MICHAEL BARR, CTO Electrical Engineer (BSEE/MSEE) Experienced Embedded Software Developer Consultant & Trainer (1999-present)
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive
Freescale Semiconductor, I
nc. Application Note 6/2002 8-Bit Software Development Kit By Jiri Ryba Introduction 8-Bit SDK Overview This application note describes the features and advantages of the 8-bit SDK (software development
How to design and implement firmware for embedded systems
How to design and implement firmware for embedded systems Last changes: 17.06.2010 Author: Rico Möckel The very beginning: What should I avoid when implementing firmware for embedded systems? Writing code
8-Bit Flash Microcontroller for Smart Cards. AT89SCXXXXA Summary. Features. Description. Complete datasheet available under NDA
Features Compatible with MCS-51 products On-chip Flash Program Memory Endurance: 1,000 Write/Erase Cycles On-chip EEPROM Data Memory Endurance: 100,000 Write/Erase Cycles 512 x 8-bit RAM ISO 7816 I/O Port
Keywords are identifiers having predefined meanings in C programming language. The list of keywords used in standard C are : unsigned void
1. Explain C tokens Tokens are basic building blocks of a C program. A token is the smallest element of a C program that is meaningful to the compiler. The C compiler recognizes the following kinds of
Definitions and Documents
C Compiler Real-Time OS Simulator Training Evaluation Boards Using and Programming the I 2 C BUS Application Note 153 June 8, 2000, Munich, Germany by Keil Support, Keil Elektronik GmbH [email protected]
Soft processors for microcontroller programming education
Soft processors for microcontroller programming education Charles Goetzman Computer Science University of Wisconsin La Crosse [email protected] Jeff Fancher Electronics Western Technical College
MICROPROCESSOR AND MICROCOMPUTER BASICS
Introduction MICROPROCESSOR AND MICROCOMPUTER BASICS At present there are many types and sizes of computers available. These computers are designed and constructed based on digital and Integrated Circuit
Lecture N -1- PHYS 3330. Microcontrollers
Lecture N -1- PHYS 3330 Microcontrollers If you need more than a handful of logic gates to accomplish the task at hand, you likely should use a microcontroller instead of discrete logic gates 1. Microcontrollers
C++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
CHAPTER 7: The CPU and Memory
CHAPTER 7: The CPU and Memory The Architecture of Computer Hardware, Systems Software & Networking: An Information Technology Approach 4th Edition, Irv Englander John Wiley and Sons 2010 PowerPoint slides
Operating Systems. Lecture 03. February 11, 2013
Operating Systems Lecture 03 February 11, 2013 Goals for Today Interrupts, traps and signals Hardware Protection System Calls Interrupts, Traps, and Signals The occurrence of an event is usually signaled
APPLICATION NOTE. Atmel AT02607: Wireless Product Development Using Atmel Studio and ASF. Atmel MCU Wireless. Description.
APPLICATION NOTE Atmel AT02607: Wireless Product Development Using Atmel Studio and ASF Description Atmel MCU Wireless This application note introduces the users on how to develop products using Atmel
A 5 Degree Feedback Control Robotic Arm (Haptic Arm)
A 5 Degree Feedback Control Robotic Arm (Haptic Arm) 1 Prof. Sheetal Nirve, 2 Mr.Abhilash Patil, 3 Mr.Shailesh Patil, 4 Mr.Vishal Raut Abstract: Haptics is the science of applying touch sensation and control
Application Note: AN00141 xcore-xa - Application Development
Application Note: AN00141 xcore-xa - Application Development This application note shows how to create a simple example which targets the XMOS xcore-xa device and demonstrates how to build and run this
Microcontrollers in Practice
M. Mitescu I. Susnea Microcontrollers in Practice With 117 Figures, 34 Tables and CD-Rom 4y Springer Contents Resources of Microcontrollers, 1 1.1 In this Chapter 1 1.2 Microcontroller Architectures 1
TivaWare Utilities Library
TivaWare Utilities Library USER S GUIDE SW-TM4C-UTILS-UG-1.1 Copyright 2013 Texas Instruments Incorporated Copyright Copyright 2013 Texas Instruments Incorporated. All rights reserved. Tiva and TivaWare
sqlpp11 - An SQL Library Worthy of Modern C++
2014-09-11 Code samples Prefer compile-time and link-time errors to runtime errors Scott Meyers, Effective C++ (2nd Edition) Code samples Let s look at some code String based In the talk, we looked at
Von der Hardware zur Software in FPGAs mit Embedded Prozessoren. Alexander Hahn Senior Field Application Engineer Lattice Semiconductor
Von der Hardware zur Software in FPGAs mit Embedded Prozessoren Alexander Hahn Senior Field Application Engineer Lattice Semiconductor AGENDA Overview Mico32 Embedded Processor Development Tool Chain HW/SW
Microtronics technologies Mobile: 99707 90092
For more Project details visit: http://www.projectsof8051.com/rfid-based-attendance-management-system/ Code Project Title 1500 RFid Based Attendance System Synopsis for RFid Based Attendance System 1.
Atmel AVR4027: Tips and Tricks to Optimize Your C Code for 8-bit AVR Microcontrollers. 8-bit Atmel Microcontrollers. Application Note.
Atmel AVR4027: Tips and Tricks to Optimize Your C Code for 8-bit AVR Microcontrollers Features Atmel AVR core and Atmel AVR GCC introduction Tips and tricks to reduce code size Tips and tricks to reduce
AN10850. LPC1700 timer triggered memory to GPIO data transfer. Document information. LPC1700, GPIO, DMA, Timer0, Sleep Mode
LPC1700 timer triggered memory to GPIO data transfer Rev. 01 16 July 2009 Application note Document information Info Keywords Abstract Content LPC1700, GPIO, DMA, Timer0, Sleep Mode This application note
The C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
XMOS Programming Guide
XMOS Programming Guide Document Number: Publication Date: 2014/10/9 XMOS 2014, All Rights Reserved. XMOS Programming Guide 2/108 SYNOPSIS This document provides a consolidated guide on how to program XMOS
S7 for Windows S7-300/400
S7 for Windows S7-300/400 A Programming System for the Siemens S7 300 / 400 PLC s IBHsoftec has an efficient and straight-forward programming system for the Simatic S7-300 and ern controller concept can
Computer Organization and Components
Computer Organization and Components IS1500, fall 2015 Lecture 5: I/O Systems, part I Associate Professor, KTH Royal Institute of Technology Assistant Research Engineer, University of California, Berkeley
Why using ATmega16? University of Wollongong Australia. 7.1 Overview of ATmega16. Overview of ATmega16
s schedule Lecture 7 - C Programming for the Atmel AVR School of Electrical, l Computer and Telecommunications i Engineering i University of Wollongong Australia Week Lecture (2h) Tutorial (1h) Lab (2h)
A DIY Hardware Packet Sniffer
A DIY Hardware Packet Sniffer Affordable Penetration Testing for the Individual Veronica Swanson: University of California, Irvine CyberSecurity for the Next Generation North American Round, New York 15
150127-Microprocessor & Assembly Language
Chapter 3 Z80 Microprocessor Architecture The Z 80 is one of the most talented 8 bit microprocessors, and many microprocessor-based systems are designed around the Z80. The Z80 microprocessor needs an
Serial port interface for microcontroller embedded into integrated power meter
Serial port interface for microcontroller embedded into integrated power meter Mr. Borisav Jovanović, Prof. dr. Predrag Petković, Prof. dr. Milunka Damnjanović, Faculty of Electronic Engineering Nis, Serbia
USART and Asynchronous Communication
The USART is used for synchronous and asynchronous serial communication. USART = Universal Synchronous/Asynchronous Receiver Transmitter Our focus will be on asynchronous serial communication. Asynchronous
Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives
Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,
Software based Finite State Machine (FSM) with general purpose processors
Software based Finite State Machine (FSM) with general purpose processors White paper Joseph Yiu January 2013 Overview Finite state machines (FSM) are commonly used in electronic designs. FSM can be used
Implementing SPI Master and Slave Functionality Using the Z8 Encore! F083A
Application Note Implementing SPI Master and Slave Functionality Using the Z8 Encore! F083A AN026701-0308 Abstract This application note demonstrates a method of implementing the Serial Peripheral Interface
MICROPROCESSOR. Exclusive for IACE Students www.iace.co.in iacehyd.blogspot.in Ph: 9700077455/422 Page 1
MICROPROCESSOR A microprocessor incorporates the functions of a computer s central processing unit (CPU) on a single Integrated (IC), or at most a few integrated circuit. It is a multipurpose, programmable
MPLAB Harmony System Service Libraries Help
MPLAB Harmony System Service Libraries Help MPLAB Harmony Integrated Software Framework v1.08 All rights reserved. This section provides descriptions of the System Service libraries that are available
3. Programming the STM32F4-Discovery
1 3. Programming the STM32F4-Discovery The programming environment including the settings for compiling and programming are described. 3.1. Hardware - The programming interface A program for a microcontroller
Java Embedded Applications
TM a One-Stop Shop for Java Embedded Applications GeeseWare offer brings Java in your constrained embedded systems. You develop and simulate your Java application on PC, and enjoy a seamless hardware validation.
Programming Flash Microcontrollers through the Controller Area Network (CAN) Interface
Programming Flash Microcontrollers through the Controller Area Network (CAN) Interface Application te Programming Flash Microcontrollers through the Controller Area Network (CAN) Interface Abstract This
The AVR Microcontroller and C Compiler Co-Design Dr. Gaute Myklebust ATMEL Corporation ATMEL Development Center, Trondheim, Norway
The AVR Microcontroller and C Compiler Co-Design Dr. Gaute Myklebust ATMEL Corporation ATMEL Development Center, Trondheim, Norway Abstract High Level Languages (HLLs) are rapidly becoming the standard
1 Abstract Data Types Information Hiding
1 1 Abstract Data Types Information Hiding 1.1 Data Types Data types are an integral part of every programming language. ANSI-C has int, double and char to name just a few. Programmers are rarely content
DsPIC HOW-TO GUIDE Creating & Debugging a Project in MPLAB
DsPIC HOW-TO GUIDE Creating & Debugging a Project in MPLAB Contents at a Glance 1. Introduction of MPLAB... 4 2. Development Tools... 5 3. Getting Started... 6 3.1. Create a Project... 8 3.2. Start MPLAB...
Microcontroller Systems. ELET 3232 Topic 8: Slot Machine Example
Microcontroller Systems ELET 3232 Topic 8: Slot Machine Example 1 Agenda We will work through a complete example Use CodeVision and AVR Studio Discuss a few creative instructions Discuss #define and #include
Chapter 2 Logic Gates and Introduction to Computer Architecture
Chapter 2 Logic Gates and Introduction to Computer Architecture 2.1 Introduction The basic components of an Integrated Circuit (IC) is logic gates which made of transistors, in digital system there are
Systems I: Computer Organization and Architecture
Systems I: Computer Organization and Architecture Lecture : Microprogrammed Control Microprogramming The control unit is responsible for initiating the sequence of microoperations that comprise instructions.
Research and Design of Universal and Open Software Development Platform for Digital Home
Research and Design of Universal and Open Software Development Platform for Digital Home CaiFeng Cao School of Computer Wuyi University, Jiangmen 529020, China [email protected] Abstract. With the development
Freescale Semiconductor, Inc. Product Brief Integrated Portable System Processor DragonBall ΤΜ
nc. Order this document by MC68328/D Microprocessor and Memory Technologies Group MC68328 MC68328V Product Brief Integrated Portable System Processor DragonBall ΤΜ As the portable consumer market grows
MACHINE ARCHITECTURE & LANGUAGE
in the name of God the compassionate, the merciful notes on MACHINE ARCHITECTURE & LANGUAGE compiled by Jumong Chap. 9 Microprocessor Fundamentals A system designer should consider a microprocessor-based
Serial Communications
Serial Communications 1 Serial Communication Introduction Serial communication buses Asynchronous and synchronous communication UART block diagram UART clock requirements Programming the UARTs Operation
Comp151. Definitions & Declarations
Comp151 Definitions & Declarations Example: Definition /* reverse_printcpp */ #include #include using namespace std; int global_var = 23; // global variable definition void reverse_print(const
Am186ER/Am188ER AMD Continues 16-bit Innovation
Am186ER/Am188ER AMD Continues 16-bit Innovation 386-Class Performance, Enhanced System Integration, and Built-in SRAM Problem with External RAM All embedded systems require RAM Low density SRAM moving
Microcontrollers Deserve Protection Too
Microcontrollers Deserve Protection Too Amit Levy with: Michael Andersen, Tom Bauer, Sergio Benitez, Bradford Campbell, David Culler, Prabal Dutta, Philip Levis, Pat Pannuto, Laurynas Riliskis Microcontrollers
Operating Systems 4 th Class
Operating Systems 4 th Class Lecture 1 Operating Systems Operating systems are essential part of any computer system. Therefore, a course in operating systems is an essential part of any computer science
Lab 1 Course Guideline and Review
Lab 1 Course Guideline and Review Overview Welcome to ECE 3567 Introduction to Microcontroller Lab. In this lab we are going to experimentally explore various useful peripherals of a modern microcontroller
C++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
E-Series. Human Machine Interfaces. Evolution By Design MITSUBISHI ELECTRIC AUTOMATION, INC.
E-Series Human Machine Interfaces E Evolution By Design MITSUBISHI ELECTRIC AUTOMATION, INC. Discover the Many Facets of Mitsubishi Electric. The Power in Automation Solutions. E-Series is a family of
Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
GETTING STARTED WITH ANDROID DEVELOPMENT FOR EMBEDDED SYSTEMS
Embedded Systems White Paper GETTING STARTED WITH ANDROID DEVELOPMENT FOR EMBEDDED SYSTEMS September 2009 ABSTRACT Android is an open source platform built by Google that includes an operating system,
Serial Communications
April 2014 7 Serial Communications Objectives - To be familiar with the USART (RS-232) protocol. - To be able to transfer data from PIC-PC, PC-PIC and PIC-PIC. - To test serial communications with virtual
Chapter 3: Operating-System Structures. Common System Components
Chapter 3: Operating-System Structures System Components Operating System Services System Calls System Programs System Structure Virtual Machines System Design and Implementation System Generation 3.1
Using the CoreSight ITM for debug and testing in RTX applications
Using the CoreSight ITM for debug and testing in RTX applications Outline This document outlines a basic scheme for detecting runtime errors during development of an RTX application and an approach to
etpu Host Interface by:
Freescale Semiconductor Application Note AN2821 Rev. 2, 08/2007 etpu Host Interface by: David Paterson Ming Li MCD Applications 1 Introduction This application note discusses the enhanced Time Processing
M85 OpenCPU Solution Presentation
M85 OpenCPU Solution Presentation 2013/09/22 Wireless Solutions Co., Ltd. All rights reserved OUTLINE OpenCPU Summary Advantages Software Architecture What s New? Open Resources Development Requirements
Digitale Signalverarbeitung mit FPGA (DSF) Soft Core Prozessor NIOS II Stand Mai 2007. Jens Onno Krah
(DSF) Soft Core Prozessor NIOS II Stand Mai 2007 Jens Onno Krah Cologne University of Applied Sciences www.fh-koeln.de [email protected] NIOS II 1 1 What is Nios II? Altera s Second Generation
POCKET SCOPE 2. The idea 2. Design criteria 3
POCKET SCOPE 2 The idea 2 Design criteria 3 Microcontroller requirements 3 The microcontroller must have speed. 3 The microcontroller must have RAM. 3 The microcontroller must have secure Flash. 3 The
ET-BASE AVR ATmega64/128
ET-BASE AVR ATmega64/128 ET-BASE AVR ATmega64/128 which is a Board Microcontroller AVR family from ATMEL uses MCU No.ATmega64 and ATmega128 64PIN. Board ET-BASE AVR ATmega64/128 uses MCU s resources on
DS1104 R&D Controller Board
DS1104 R&D Controller Board Cost-effective system for controller development Highlights Single-board system with real-time hardware and comprehensive I/O Cost-effective PCI hardware for use in PCs Application
3F6 - Software Engineering and Design. Handout 10 Distributed Systems I With Markup. Steve Young
3F6 - Software Engineering and Design Handout 10 Distributed Systems I With Markup Steve Young Contents 1. Distributed systems 2. Client-server architecture 3. CORBA 4. Interface Definition Language (IDL)
Phys4051: C Lecture 2 & 3. Comment Statements. C Data Types. Functions (Review) Comment Statements Variables & Operators Branching Instructions
Phys4051: C Lecture 2 & 3 Functions (Review) Comment Statements Variables & Operators Branching Instructions Comment Statements! Method 1: /* */! Method 2: // /* Single Line */ //Single Line /* This comment
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies)
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies) Duration of Course: 6 Months Fees: Rs. 25,000/- (including Service Tax) Eligibility: B.E./B.Tech., M.Sc.(IT/ computer
Interface and Simulation of a LCD Text Display
OVERVIEW The following application note describes the interface of a LCD text display to a 8051 microcontroller system. This application note comes with the µvision2 project LCD_Display.UV2 that includes
SKP16C62P Tutorial 1 Software Development Process using HEW. Renesas Technology America Inc.
SKP16C62P Tutorial 1 Software Development Process using HEW Renesas Technology America Inc. 1 Overview The following tutorial is a brief introduction on how to develop and debug programs using HEW (Highperformance
UML - Getting Started EA v4.0
UML - Getting Started Codegeneration with Enterprise Architect How to generate Code from an Enterprise Architect UML Model with the help of and Willert Software Tools RXF (Realtime execution Framework)
AN4664 Application note
Application note SPC56ELxx Automotive MCU multicore architectures and getting started Introduction This document provides an introduction to the world of multi-core MCU architectures and programming and
Applications Development on the ARM Cortex -M0+ Free On-line Development Tools Presented by William Antunes
Applications Development on the ARM Cortex -M0+ Free On-line Development Tools Presented by William Antunes Agenda Cortex M0+ architecture Introduction to Kinetis L Freedom board Arrow Cloud Connect Internet
AN1229. Class B Safety Software Library for PIC MCUs and dspic DSCs OVERVIEW OF THE IEC 60730 STANDARD INTRODUCTION
Class B Safety Software Library for PIC MCUs and dspic DSCs AN1229 Authors: Veena Kudva & Adrian Aur Microchip Technology Inc. OVERVIEW OF THE IEC 60730 STANDARD INTRODUCTION This application note describes
AVR151: Setup and Use of the SPI. Introduction. Features. Atmel AVR 8-bit Microcontroller APPLICATION NOTE
Atmel AVR 8-bit Microcontroller AVR151: Setup and Use of the SPI APPLICATION NOTE Introduction This application note describes how to set up and use the on-chip Serial Peripheral Interface (SPI) of the
The Real-Time Operating System ucos-ii
The Real-Time Operating System ucos-ii Enric Pastor Dept. Arquitectura de Computadors µc/os-ii Overview µc/os-ii Task Management Rate Monotonic Scheduling Memory Management µc/gui µc/fs Books and Resources
PC Base Adapter Daughter Card UART GPIO. Figure 1. ToolStick Development Platform Block Diagram
TOOLSTICK VIRTUAL TOOLS USER S GUIDE RELEVANT DEVICES 1. Introduction The ToolStick development platform consists of a ToolStick Base Adapter and a ToolStick Daughter card. The ToolStick Virtual Tools
Chapter 13. PIC Family Microcontroller
Chapter 13 PIC Family Microcontroller Lesson 01 PIC Characteristics and Examples PIC microcontroller characteristics Power-on reset Brown out reset Simplified instruction set High speed execution Up to
How Safe does my Code Need to be? Shawn A. Prestridge, Senior Field Applications Engineer
How Safe does my Code Need to be? Shawn A. Prestridge, Senior Field Applications Engineer Agendum What the benefits of Functional Safety are What the most popular safety certifications are Why you should
Programming A PLC. Standard Instructions
Programming A PLC STEP 7-Micro/WIN32 is the program software used with the S7-2 PLC to create the PLC operating program. STEP 7 consists of a number of instructions that must be arranged in a logical order
UNIT 4 Software Development Flow
DESIGN OF SYSTEM ON CHIP UNIT 4 Software Development Flow Interrupts OFFICIAL MASTER IN ADVANCED ELECTRONIC SYSTEMS. INTELLIGENT SYSTEMS Outline Introduction Interrupts in Cortex-A9 Processor Interrupt
Fondamenti su strumenti di sviluppo per microcontrollori PIC
Fondamenti su strumenti di sviluppo per microcontrollori PIC MPSIM ICE 2000 ICD 2 REAL ICE PICSTART Ad uso interno del corso Elettronica e Telecomunicazioni 1 2 MPLAB SIM /1 MPLAB SIM is a discrete-event
Building Blocks for PRU Development
Building Blocks for PRU Development Module 1 PRU Hardware Overview This session covers a hardware overview of the PRU-ICSS Subsystem. Author: Texas Instruments, Sitara ARM Processors Oct 2014 2 ARM SoC
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
ETEC 2301 Programmable Logic Devices. Chapter 10 Counters. Shawnee State University Department of Industrial and Engineering Technologies
ETEC 2301 Programmable Logic Devices Chapter 10 Counters Shawnee State University Department of Industrial and Engineering Technologies Copyright 2007 by Janna B. Gallaher Asynchronous Counter Operation
Lab 1: Introduction to Xilinx ISE Tutorial
Lab 1: Introduction to Xilinx ISE Tutorial This tutorial will introduce the reader to the Xilinx ISE software. Stepby-step instructions will be given to guide the reader through generating a project, creating
