ebook img

Introduction to Embedded Systems: Using ANSI C and the Arduino Development Environment PDF

276 Pages·2010·1.67 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Introduction to Embedded Systems: Using ANSI C and the Arduino Development Environment

~ \ i \) I\ l;-\ '\ & ~ ·1 :\ Y I' l H) I I'll I\ I I\ II I I\\ Introduction to Embedded Systems Using ANSI C and the Arduino Development Environment David Russell Introduction to Embedded Systems Using ANSI C and the Arduino Development Environment Copyright © 2010 by Morgan & Claypool All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means—electronic, mechanical, photocopy, recording, or any other except for brief quotations in printed reviews, without the prior permission of the publisher. Introduction to Embedded Systems: Using ANSI C and the Arduino Development Environment David J. Russell www.morganclaypool.com ISBN: 9781608454983 paperback ISBN: 9781608454990 ebook DOI 10.2200/S00291ED1V01Y201007DCS030 A Publication in the Morgan & Claypool Publishers series SYNTHESIS LECTURES ON DIGITAL CIRCUITS AND SYSTEMS Lecture #30 Series Editor: Mitchell A. Thornton, Southern Methodist University Series ISSN Synthesis Lectures on Digital Circuits and Systems Print 1932-3166 Electronic 1932-3174 Synthesis Lectures on Digital Circuits and Systems Editor Mitchell A.Thornton, Southern Methodist University The Synthesis Lectures on Digital Circuits and Systems series is comprised of 50- to 100-page books targeted for audience members with a wide-ranging background. The Lectures include topics that are of interest to students, professionals, and researchers in the area of design and analysis of digital circuits and systems. Each Lecture is self-contained and focuses on the background information required to understand the subject matter and practical case studies that illustrate applications. The format of a Lecture is structured such that each will be devoted to a specific topic in digital circuits and systems rather than a larger overview of several topics such as that found in a comprehensive handbook. The Lectures cover both well-established areas as well as newly developed or emerging material in digital circuits and systems design and analysis. Introduction to Embedded Systems: Using ANSI C and the Arduino Development Environment David J. Russell 2010 Arduino Microcontroller: Processing for Everyone! Part II Steven F. Barrett 2010 Arduino Microcontroller Processing for Everyone! Part I Steven F. Barrett 2010 Digital System Verification: A Combined Formal Methods and Simulation Framework Lun Li and Mitchell A. Thornton 2010 Progress in Applications of Boolean Functions Tsutomu Sasao and Jon T. Butler 2009 Embedded Systems Design with the Atmel AVR Microcontroller: Part II Steven F. Barrett 2009 iv Embedded Systems Design with the Atmel AVR Microcontroller: Part I Steven F. Barrett 2009 Embedded Systems Interfacing for Engineers using the Freescale HCS08 Microcontroller II: Digital and Analog Hardware Interfacing Douglas H. Summerville 2009 Designing Asynchronous Circuits using NULL Convention Logic (NCL) Scott C. Smith and Jia Di 2009 Embedded Systems Interfacing for Engineers using the Freescale HCS08 Microcontroller I: Assembly Language Programming Douglas H.Summerville 2009 Developing Embedded Software using DaVinci & OMAP Technology B.I. (Raj) Pawate 2009 Mismatch and Noise in Modern IC Processes Andrew Marshall 2009 Asynchronous Sequential Machine Design and Analysis: A Comprehensive Development of the Design and Analysis of Clock-Independent State Machines and Systems Richard F. Tinder 2009 An Introduction to Logic Circuit Testing Parag K. Lala 2008 Pragmatic Power William J. Eccles 2008 Multiple Valued Logic: Concepts and Representations D. Michael Miller and Mitchell A. Thornton 2007 Finite State Machine Datapath Design, Optimization, and Implementation Justin Davis and Robert Reese 2007 v Atmel AVR Microcontroller Primer: Programming and Interfacing Steven F. Barrett and Daniel J. Pack 2007 Pragmatic Logic William J. Eccles 2007 PSpice for Filters and Transmission Lines Paul Tobin 2007 PSpice for Digital Signal Processing Paul Tobin 2007 PSpice for Analog Communications Engineering Paul Tobin 2007 PSpice for Digital Communications Engineering Paul Tobin 2007 PSpice for Circuit Theory and Electronic Devices Paul Tobin 2007 Pragmatic Circuits: DC and Time Domain William J. Eccles 2006 Pragmatic Circuits: Frequency Domain William J. Eccles 2006 Pragmatic Circuits: Signals and Filters William J. Eccles 2006 High-Speed Digital System Design Justin Davis 2006 vi Introduction to Logic Synthesis using Verilog HDL Robert B.Reese and Mitchell A.Thornton 2006 Microcontrollers Fundamentals for Engineers and Scientists Steven F. Barrett and Daniel J. Pack 2006 Introduction to Embedded Systems Using ANSI C and the Arduino Development Environment David J. Russell University of Nebraska-Lincoln SYNTHESIS LECTURES ON DIGITAL CIRCUITS AND SYSTEMS #30 C M & cLaypool Morgan publishers & ABSTRACT Many electrical and computer engineering projects involve some kind of embedded system in which a microcontroller sits at the center as the primary source of control.The recently-developed Arduino development platform includes an inexpensive hardware development board hosting an eight-bit ATMEL ATmega-family processor and a Java-based software-development environment. These features allow an embedded systems beginner the ability to focus their attention on learning how to write embedded software instead of wasting time overcoming the engineering CAD tools learning curve. The goal of this text is to introduce fundamental methods for creating embedded software in general, with a focus on ANSI C. The Arduino development platform provides a great means for accomplishing this task. As such, this work presents embedded software development using 100% ANSI C for the Arduino’s ATmega328P processor. We deviate from using the Arduino-specific Wiring libraries in an attempt to provide the most general embedded methods.In this way,the reader will acquire essential knowledge necessary for work on future projects involving other processors. Particular attention is paid to the notorious issue of using C pointers in order to gain direct access to microprocessor registers, which ultimately allow control over all peripheral interfacing. KEYWORDS embedded systems, embedded software, embedded development, microcontroller, mi- croprocessor, ANSI C, Arduino, ATmega328P To my best friend Jamie and our three wonderful kids: Gates, Gracen, and Gavin xi Contents Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 1.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Digital Representation of Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Digital Logic Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 Digital Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.5 Information Representation in a Digital Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.1 Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.2 Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 ANSI C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.1.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2 Essential Elements of the Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.3 Formatted Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.4 Variables and Arithmetic Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.4.1 Variable Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.4.2 Type Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.4.3 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.4.4 Arithmetic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.4.5 Relational and Logical Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.4.6 Increment and Decrement Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.4.7 Bitwise Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.4.8 Assignment Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.4.9 Conditional Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.5 Control Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.5.1 If-Else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.5.2 Else-If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.5.3 Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.5.4 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 xii 2.5.5 Infinite Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.5.6 Miscellaneous (Please Don’t Use) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.6 Functions and Program Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.7 Scope Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.8 Pointers and Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 2.8.1 Passing by Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 2.8.2 Dynamic Memory Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 2.9 Multi-dimensional Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 2.10 Function Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 2.11 Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 2.11.1 Typedef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 2.12 Unions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 2.13 Bit-fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 2.14 Variable-length Argument Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 3 Introduction to Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 3.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 3.2 Experiments Using the Arduino Duemilanove Development Board . . . . . . . . . . . 80 3.3 Arduino Tools Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4 Embedded Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.2 Debugging the Arduino Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 5 ATmega328P Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.2 AVR CPU Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 6 General-Purpose Input/Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 6.1 Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 6.1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 6.1.2 Basic Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 6.1.3 Pin-muxing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.2 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 6.2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 6.2.2 Internal Pull-up Resistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 xiii 6.3 Accessing GPIO lines in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 6.3.1 Managing Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 6.3.2 Managing Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 6.4 Pertinent Register Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 6.4.1 PORTB - The Port B Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.4.2 DDRB - The Port B Data Direction Register . . . . . . . . . . . . . . . . . . . . . 108 6.4.3 PINB - The Port B Input Pins Address. . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.4.4 PORTC - The Port C Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.4.5 DDRC - The Port C Data Direction Register . . . . . . . . . . . . . . . . . . . . . 108 6.4.6 PINC - The Port C Input Pins Address . . . . . . . . . . . . . . . . . . . . . . . . . . 109 6.4.7 PORTD - The Port D Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 6.4.8 DDRD - The Port D Data Direction Register . . . . . . . . . . . . . . . . . . . . . 109 6.4.9 PIND - The Port D Input Pins Address . . . . . . . . . . . . . . . . . . . . . . . . . . 109 7 Timer Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 7.1 Pulse Width Modulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 7.1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 7.1.2 Demodulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 7.1.3 Modulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 7.2 Input Capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.3 Pertinent Register Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.3.1 TCCR0A - Timer/Counter0 Control Register A . . . . . . . . . . . . . . . . . . 120 7.3.2 TCCR0B - Timer/Counter0 Control Register B . . . . . . . . . . . . . . . . . . . 122 7.3.3 TCNT0 - Timer/Counter0 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 7.3.4 OCR0A - Output Compare0 Register A . . . . . . . . . . . . . . . . . . . . . . . . . 123 7.3.5 OCR0B - Output Compare0 Register B . . . . . . . . . . . . . . . . . . . . . . . . . . 123 7.3.6 TCCR1A - Timer/Counter1 Control Register A . . . . . . . . . . . . . . . . . . 123 7.3.7 TCCR1B - Timer/Counter1 Control Register B . . . . . . . . . . . . . . . . . . . 125 7.3.8 TCCR1C - Timer/Counter1 Control Register C . . . . . . . . . . . . . . . . . . 126 7.3.9 TCNT1H and TCNT1L - Timer/Counter1 Register . . . . . . . . . . . . . . 127 7.3.10 OCR1AH and OCR1AL - Output Compare1 Register A . . . . . . . . . . 127 7.3.11 OCR1BH and OCR1BL - Output Compare1 Register B . . . . . . . . . . . 128 7.3.12 ICR1H and ICR1L - Input Capture1 Register . . . . . . . . . . . . . . . . . . . . 128 7.3.13 TCCR2A - Timer/Counter2 Control Register A . . . . . . . . . . . . . . . . . . 128 7.3.14 TCCR2B - Timer/Counter2 Control Register B . . . . . . . . . . . . . . . . . . . 130 7.3.15 TCNT2 - Timer/Counter2 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 7.3.16 OCR2A - Output Compare2 Register A . . . . . . . . . . . . . . . . . . . . . . . . . 132 xiv 7.3.17 OCR2B - Output Compare2 Register B . . . . . . . . . . . . . . . . . . . . . . . . . . 132 7.3.18 ASSR - Asynchronous Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 7.3.19 GTCCR - General Timer/Counter Control Register . . . . . . . . . . . . . . . 133 8 Analog Input Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 8.1 Analog-to-Digital Converters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 8.1.1 ADC Peripheral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 8.2 Analog Comparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 8.3 Pertinent Register Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 8.3.1 ADMUX - ADC Multiplexer Selection Register . . . . . . . . . . . . . . . . . . 140 8.3.2 ADCSRA - ADC Control and Status Register A . . . . . . . . . . . . . . . . . . 142 8.3.3 ADCH and ADCL - ADC Data Register . . . . . . . . . . . . . . . . . . . . . . . . 143 8.3.4 ADCSRB - ADC Control and Status Register B . . . . . . . . . . . . . . . . . . 143 8.3.5 DIDR0 - Digital Input Disable Register 0 . . . . . . . . . . . . . . . . . . . . . . . . 144 8.3.6 ACSR - Analog Comparator Control and Status Register . . . . . . . . . . . 144 8.3.7 DIDR1 - Digital Input Disable Register 1 . . . . . . . . . . . . . . . . . . . . . . . . 145 9 Interrupt Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 9.1.1 Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 9.1.2 ISR and Main Task Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 9.1.3 ATmega328P Interrupts in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 9.2 Pertinent Register Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 9.2.1 EICRA - External Interrupt Control Register A . . . . . . . . . . . . . . . . . . . 154 9.2.2 EIMSK - External Interrupt Mask Register . . . . . . . . . . . . . . . . . . . . . . . 154 9.2.3 EIFR - External Interrupt Flag Register . . . . . . . . . . . . . . . . . . . . . . . . . . 155 9.2.4 PCICR - Pin Change Interrupt Control Register . . . . . . . . . . . . . . . . . . 155 9.2.5 PCIFR - Pin Change Interrupt Flag Register . . . . . . . . . . . . . . . . . . . . . 155 9.2.6 PCMSK2 - Pin Change Mask Register 2 . . . . . . . . . . . . . . . . . . . . . . . . . 156 9.2.7 PCMSK1 - Pin Change Mask Register 1 . . . . . . . . . . . . . . . . . . . . . . . . . 156 9.2.8 PCMSK0 - Pin Change Mask Register 0 . . . . . . . . . . . . . . . . . . . . . . . . . 156 9.2.9 TIMSK0 - Timer/Counter0 Interrupt Mask Register . . . . . . . . . . . . . . . 157 9.2.10 TIFR0 - Timer/Counter0 Interrupt Flag Register . . . . . . . . . . . . . . . . . . 157 9.2.11 TIMSK1 - Timer/Counter1 Interrupt Mask Register . . . . . . . . . . . . . . . 158 9.2.12 TIFR1 - Timer/Counter1 Interrupt Flag Register . . . . . . . . . . . . . . . . . . 159 9.2.13 TIMSK2 - Timer/Counter2 Interrupt Mask Register . . . . . . . . . . . . . . . 159 9.2.14 TIFR2 - Timer/Counter2 Interrupt Flag Register . . . . . . . . . . . . . . . . . . 160

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.