000 09893nam a2200769 i 4500
001 6813318
003 IEEE
005 20200413152858.0
006 m eo d
007 cr cn |||m|||a
008 100812s2010 caua foab 001 0 eng d
020 _a9781608454990 (electronic bk.)
020 _z9781608454983 (pbk.)
024 7 _a10.2200/S00291ED1V01Y201007DCS030
_2doi
035 _a(CaBNVSL)gtp00543043
035 _a(OCoLC)707877265
040 _aCaBNVSL
_cCaBNVSL
_dCaBNVSL
050 4 _aTK7895.E42
_bR875 2010
082 0 4 _a004.16
_222
100 1 _aRussell, David James.
245 1 0 _aIntroduction to embedded systems
_h[electronic resource] :
_busing ANSI C and the Arduino development environment /
_cDavid J. Russell.
260 _aSan Rafael, Calif. (1537 Fourth Street, San Rafael, CA 94901 USA) :
_bMorgan & Claypool,
_cc2010.
300 _a1 electronic text (xx, 255 p. : ill.) :
_bdigital file.
490 1 _aSynthesis lectures on digital circuits and systems,
_x1932-3174 ;
_v# 30
538 _aMode of access: World Wide Web.
538 _aSystem requirements: Adobe Acrobat Reader.
500 _aPart of: Synthesis digital library of engineering and computer science.
500 _aSeries from website.
504 _aIncludes bibliographical references (p. 249) and index.
505 0 _aPreface --
505 8 _a1. Introduction -- Background -- Digital representation of information -- Digital logic fundamentals -- Digital vectors -- Information representation in a digital processor -- Numbers -- Text --
505 8 _a2. ANSI C -- Introduction -- Background -- Essential elements of the language -- Formatted output -- Variables and arithmetic expressions -- Variable names -- Type conversions -- Constants -- Arithmetic operators -- Relational and logical operators -- Increment and decrement operators -- Bitwise operators -- Assignment operators -- Conditional expression -- Control flow -- If-else -- Else-if -- Switch -- Loops -- Infinite loops -- Miscellaneous (please don't use) -- Functions and program structures -- Scope rules -- Pointers and arrays -- Passing by reference -- Dynamic memory allocation -- Multi-dimensional arrays -- Function pointers -- Structures -- Typedef -- Unions -- Bit-fields -- Variable-length argument lists --
505 8 _a3. Introduction to Arduino -- Background -- Experiments using the Arduino duemilanove development board -- Arduino tools tutorial --
505 8 _a4. Embedded debugging -- Introduction -- Debugging the arduino tutorial --
505 8 _a5. Atmega328p architecture -- Overview -- AVR CPU core --
505 8 _a6. General-purpose input/output -- Output -- Introduction -- Basic operation -- Pin-muxing -- Input -- Introduction -- Internal pull-up resistor -- Accessing GPIO lines in C -- Managing outputs -- Managing inputs -- Pertinent register descriptions -- PORTB, The Port B Data Register -- DDRB, The Port B Data Direction Register -- PINB, The Port B Input Pins Address -- PORTC, The Port C Data Register -- DDRC, The Port C Data Direction Register -- PINC, The Port C Input Pins Address -- PORTD, The Port D Data Register -- DDRD, The Port D Data Direction Register -- PIND, The Port D Input Pins Address --
505 8 _a7. Timer Ports -- Pulse width modulation -- Introduction -- Demodulation -- Modulation -- Input Capture -- Pertinent register descriptions -- TCCR0A, Timer/Counter0 Control Register A -- TCCR0B, Timer/Counter0 Control Register B -- TCNT0, Timer/Counter0 Register -- OCR0A, Output Compare0 Register A -- OCR0B, Output Compare0 Register B -- TCCR1A, Timer/Counter1 Control Register A -- TCCR1B, Timer/Counter1 Control Register B -- TCCR1C, Timer/Counter1 Control Register C -- TCNT1H and TCNT1L, Timer/Counter1 Register -- OCR1AH and OCR1AL, Output Compare1 Register A -- OCR1BH and OCR1BL, Output Compare1 Register B -- ICR1H and ICR1L, Input Capture1 Register -- TCCR2A, Timer/Counter2 Control Register A -- TCCR2B, Timer/Counter2 Control Register B -- TCNT2, Timer/Counter2 Register -- OCR2A, Output Compare2 Register A -- OCR2B, Output Compare2 Register B -- ASSR, Asynchronous Status Register -- GTCCR, General Timer/Counter Control Register --
505 8 _a8. Analog input ports -- Analog-to-digital converters -- ADC peripheral -- Analog comparator -- Pertinent register descriptions -- ADMUX, ADC Multiplexer Selection Register -- ADCSRA, ADC Control and Status Register A -- ADCH and ADCL, ADC Data Register -- ADCSRB, ADC Control and Status Register B -- DIDR0, Digital Input Disable Register -- ACSR, Analog Comparator Control and Status Register -- DIDR1, Digital Input Disable Register --
505 8 _a9. Interrupt processing -- Introduction -- Context -- ISR and main task communication -- ATmega328P interrupts in C -- Pertinent register descriptions -- EICRA, External Interrupt Control Register A -- EIMSK, External Interrupt Mask Register -- EIFR, External Interrupt Flag Register -- PCICR, Pin Change Interrupt Control Register -- PCIFR, Pin Change Interrupt Flag Register -- PCMSK2, Pin Change Mask Register -- PCMSK1, Pin Change Mask Register -- PCMSK0, Pin Change Mask Register -- TIMSK0, Timer/Counter0 Interrupt Mask Register -- TIFR0, Timer/Counter0 Interrupt Flag Register -- TIMSK1, Timer/Counter1 Interrupt Mask Register -- TIFR1, Timer/Counter1 Interrupt Flag Register -- TIMSK2, Timer/Counter2 Interrupt Mask Register -- TIFR2, Timer/Counter2 Interrupt Flag Register -- SPCR, SPI Control Register -- SPSR, SPI Status Register -- UCSR0A, USART0 Control and Status Register A -- UCSR0B, USART0 Control and Status Register B -- TWCR, TWI Control Register -- ADCSRA, ADC Control and Status Register A -- ACSR, Analog Comparator Control and Status Register -- EECR, EEPROM Control Register --
505 8 _a10. Serial communications -- Introduction -- Inter-Integrated Circuit -- Serial Peripheral Interface -- Universal Asynchronous Receiver/Transmitter -- USART on ATmega328P -- Interrupt-based Serial Port Management in C -- Pertinent Register Descriptions -- TWBR, TWI Bit Rate Register -- TWCR, TWI Control Register -- TWSR, TWI Status Register -- TWDR, TWI Data Register -- TWAR, TWI Slave Address Register -- TWAMR, TWI Slave Address Mask Register -- SPCR, SPI Control Register -- SPSR, SPI Status Register -- SPDR, SPI Data Register -- UDR0, USART0 I/O Data Register -- UCSR0A, USART0 Control and Status Register A -- UCSR0B, USART0 Control and Status Register B -- UCSR0C, USART0 Control and Status Register C -- UBRR0H and UBRR0L, USART0 Baud Rate Registers --
505 8 _a11. Assembly language -- Introduction -- Arduino tool-chain -- Arduino assembly -- Arduino inline assembly -- C-instruction efficiency --
505 8 _a12. Non-volatile memory -- Introduction -- EEPROM via C on ATmega328P -- Pertinent register descriptions -- EEARH, EEPROM High Address Register -- EEARL, EEPROM Low Address Register -- EEDR, EEPROM Data Register -- EECR, EEPROM Control Register --
505 8 _aA. Arduino 2009 schematic --
505 8 _aB. ATmega328P registers -- B.1. Register summary --
505 8 _aC. ATmega328P assembly instructions -- C.1. Instruction set summary -- C.2. Instruction set notation -- SREG, AVR Status Register -- General purpose register file -- Miscellaneous -- Stack pointer --
505 8 _aD. Example C/C++ software coding guidelines -- D.1. Introduction -- Purpose -- Philosophy -- Format -- D.2. General recommendations -- D.3. Naming conventions -- D.4. Layout -- D.5. Statements -- Types -- Variables -- Loops -- Conditionals -- Functions -- Miscellaneous -- D.6. Comments -- D.7. Files --
505 8 _aBibliography -- Author's biography -- Index.
506 1 _aAbstract freely available; full-text restricted to subscribers or individual document purchasers.
510 0 _aCompendex
510 0 _aINSPEC
510 0 _aGoogle scholar
510 0 _aGoogle book search
520 3 _aMany 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.
530 _aAlso available in print.
650 0 _aEmbedded computer systems
_xProgramming.
653 _aembedded systems
653 _aembedded software
653 _aembedded development
653 _amicrocontroller
653 _amicroprocessor
653 _aANSI C
653 _aArduino
653 _aATmega328P
830 0 _aSynthesis digital library of engineering and computer science.
830 0 _aSynthesis lectures on digital circuits and systems,
_x1932-3174 ;
_v# 30.
856 4 2 _3Abstract with links to resource
_uhttp://ieeexplore.ieee.org/servlet/opac?bknumber=6813318
999 _c561772
_d561772