- Out-of-Stock
Andrzej Witkowski
The book describes a programming environment that is a set of free tools built around avr-gcc - the GNU C compiler for AVR processors. It is intended for all those who create or want to create programs written in C language for AVR microcontrollers. In particular, it is addressed to students of electronic and electrical fields as well as hobbyists who build devices with AVR microcontrollers. It can also be used by readers professionally involved in the programming of microcontrollers and all those who, while programming them in Assembler so far, want to expand their skills.
Table of Contents
1. Introduction
1.1. Basic information
1.2. The structure of the book
1.3. Sources of information
2. The GNU C development environment
2.1. Introduction
2.2. Environmental component programs
2.2.1. The Gnu Binutiis package
2.2.2. The GCC package
2.2.3. Avr-libc library
2.2.4. Make program
2.2.5. Programmers
2.2.6. Development tools
2.2.7. assemblers
2.2.8. Auxiliary programs
2.3. Installation
2.3.1. Windows system
2.3.2. Linux system
2.4. Avr-libc library
2.4.1. Start code
2.4.2. Definitions of special register names and bit flags
2.4.3. Mathematical library
2.4.4. Standard library C
2.4.5. Macros and functions that facilitate the use of peripheral systems
2.5. Gcc compiler
2.5.1. Principle of operation
2.5.2. Types of files
2.5.3. Options
2.5.3.1. Compiler options specific to AVR processors
2.5.3.2. Options controlling the type of result
2.5.3.3. Options fixing the dialect C
2.5.3.4. Options that enable or disable comments and error information
2.5.3.5. Options for the debugger
2.5.3.6. Optimization options
2.5.3.7. Directory options
2.5.3.8. Options determining how to generate the code
2.5.3.9. Preprocessor options
2.5.3.10. Assembler options
2.5.3.11. The options of the consolidator
2.5.4. Attributes of variables and functions
2.6. Make program
2.6.1. Principle of operation
2.6.2. Dependencies
2.6.3. Variables
2.7. The AVRDUDE program
2.7.1. Command line options
2.7.2. avrdude-gui
3. C language for AVR processors
3.1. Introduction
3.2. Operations on variables and special registers
3.3. Operations on bit variables
3.4. Volatile variables
3.5. References to different types of memory
3.5.1. Address spaces
3.5.2. EEPROM memory
3.5.3. Flash memory
3.6. Interrupt service
3.6.1. Declarations of the interrupt function
3.6.2. Hierarchy of interrupts
3.6.3. Preferably from the same variables in breaks and in the main program
3.6.4. Use in interrupt from global variables
3.7. Modifications to the start code
3.8. assembler
3.8.1. Rules for allocating registers by the compiler
3.8.2. Assembler as
3.8.2.1. Comments
3.8.2.2. expressions
3.8.2.3. labels
3.8.2.4. Directive
3.8.2.5. Cpp preprocessor
3.8.2.6. Example code in Assembler attached to C
3.8.3. Inserts in Assembler
3.8.3.1. Instruction asm
3.8.3.2. operands
3.8.3.3. Application examples
4. Creating the program
4.1. Basic principles
4.2. Creation and compilation of the project
4.2.1. AVR Studio
4.2.2. Mfile makefile file generator
4.2.3. Template for makefile files from WinAVR
4.3. Sample program
4.4. Compilation of the example program
4.4.1. AVR Studio
4.4.2. Command line
4.5. Project files
5. Examples of applications
5.1. Introduction
5.2. Operation of the matrix keyboard
5.2.1. Application description
5.2.2. implementation of
5.3. Data exchange via a serial interface
5.3.1. Application description
5.3.2. implementation of
5.4. Alphanumeric LCD display
5.4.1. Application description
5.4.2. implementation of
5.5. Keyboard support in interrupts
5.5.1. Application description
5.5.2. implementation of
5.6. Keyboard and LED display support
5.6.1. Application description
5.6.2. implementation of
5.7. Communication between multiple devices
5.7.1. RS-485 interface
5.7.2. Protocol description
5.7.2.1. Data frame formats
5.7.2.2. Error handling
5.7.3. Communication session
5.7.4. implementation of
5.7.4.1. Constants and variables used in the program
5.7.4.2. The parent system
5.7.4.3. Subordinate system
5.7.5. Time dependencies
5.7.5.1. Measure the gap between characters inside the frame
5.7.5.2. Measuring the gap between frames with requesting responses and data,
5.7.5.3. Measuring the gap between frames by the slave system
5.7.6. Data exchange
Attachment
Literature
Alphabetical index
Module with a water level sensor with a measuring range of up to 10 cm. The board is equipped with a Grove connector and communicates via the I2C interface. Seeed Studio 101020635
No product available!
Red mounting for Grove modules, which ensure convenient installation and replacement of modules in the project. Compatible with LEGO. Set of 4. Seeed Studio 110070024
No product available!
Module with a 3-axis H3LIS331DL accelerometer. The board is equipped with a Grove connector and communicates via the I2C interface. Seeed Studio 101020071
No product available!
Audio player module with MP3 decoder and microSD card slot. The board is equipped with a Grove connector and communicates via the I2C interface. Seeed Studio 107020069
No product available!
Module with a sensor for measuring the heart rate PAH8001EI-2G. The board is equipped with a Grove connector and communicates via a digital interface. Seeed Studio 101020082
No product available!
Module with a 12-channel capacitive touch sensor MPR121 in a set with 4 touch probes. The board is equipped with a Grove connector and communicates via the I2C interface. Seeed Studio 101020047
No product available!
2.4 GHz WiFi module based on W600. The board is equipped with a Grove connector and communicates via the UART interface. Seeed Studio 113020031
No product available!
Module with 1-axis ADXL1001 accelerometer with a range up to ± 100g. The board is equipped with a Grove connector and communicates via an analog interface. Seeed Studio 101020633
No product available!
Module with a 3-axis ADXL372 accelerometer with a measuring range up to ± 200g. The board is equipped with a Grove connector and communicates via the I2C interface. Seeed Studio 101020632
No product available!
Module with a 3-axis ADXL356B accelerometer with a measuring range up to ± 20g. The board is equipped with a Grove connector and communicates via the analog interface. Seeed Studio 101020637
No product available!
Module with a 3-axis ADXL356C accelerometer with a measuring range up to ± 40g. The board is equipped with a Grove connector and communicates via the analog interface. Seeed Studio 101020638
No product available!
Module with a 3-axis ADXL357 accelerometer with a measuring range up to ± 40g. The board is equipped with a Grove connector and communicates via the I2C interface. Seeed Studio 101020639
No product available!
The module with the ACS725 current sensor with a direct current measuring range up to 10 A. The board is equipped with a Grove connector and communicates via an analog interface. Seeed Studio 101020616
No product available!
The module with the ACS70331 current sensor with a direct and alternating current measuring range ±5 A. The board is equipped with a Grove connector and communicates via an analog interface. Seeed Studio 101020615
No product available!
The module with the ACS70331 current sensor with a direct current measuring range up to 2,5 A. The board is equipped with a Grove connector and communicates via an analog interface. Seeed Studio 101020652
No product available!
Module with a 3-color (red, black, white) e-Paper display with a diagonal of 1.54" and a resolution of 152x152 px. The board is equipped with a Grove connector and communicates via the UART interface. Seeed Studio 104020129
No product available!
Andrzej Witkowski