Remove accidentally duplicated model-specific peripheral driver files.
parent
ec19436d54
commit
0557676013
@ -0,0 +1,547 @@ |
||||
/* The standard CSS for doxygen */ |
||||
|
||||
body, table, div, p, dl { |
||||
font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; |
||||
font-size: 12px; |
||||
} |
||||
|
||||
/* @group Heading Levels */ |
||||
|
||||
h1 { |
||||
text-align: center; |
||||
font-size: 150%; |
||||
} |
||||
|
||||
h2 { |
||||
font-size: 120%; |
||||
} |
||||
|
||||
h3 { |
||||
font-size: 100%; |
||||
} |
||||
|
||||
dt { |
||||
font-weight: bold; |
||||
} |
||||
|
||||
div.multicol { |
||||
-moz-column-gap: 1em; |
||||
-webkit-column-gap: 1em; |
||||
-moz-column-count: 3; |
||||
-webkit-column-count: 3; |
||||
} |
||||
|
||||
p.startli, p.startdd, p.starttd { |
||||
margin-top: 2px; |
||||
} |
||||
|
||||
p.endli { |
||||
margin-bottom: 0px; |
||||
} |
||||
|
||||
p.enddd { |
||||
margin-bottom: 4px; |
||||
} |
||||
|
||||
p.endtd { |
||||
margin-bottom: 2px; |
||||
} |
||||
|
||||
/* @end */ |
||||
|
||||
caption { |
||||
font-weight: bold; |
||||
} |
||||
|
||||
span.legend { |
||||
font-size: 70%; |
||||
text-align: center; |
||||
} |
||||
|
||||
h3.version { |
||||
font-size: 90%; |
||||
text-align: center; |
||||
} |
||||
|
||||
div.qindex, div.navtab{ |
||||
background-color: #e8eef2; |
||||
border: 1px solid #84b0c7; |
||||
text-align: center; |
||||
margin: 2px; |
||||
padding: 2px; |
||||
} |
||||
|
||||
div.qindex, div.navpath { |
||||
width: 100%; |
||||
line-height: 140%; |
||||
} |
||||
|
||||
div.navtab { |
||||
margin-right: 15px; |
||||
} |
||||
|
||||
/* @group Link Styling */ |
||||
|
||||
a { |
||||
color: #153788; |
||||
font-weight: normal; |
||||
text-decoration: none; |
||||
} |
||||
|
||||
.contents a:visited { |
||||
color: #1b77c5; |
||||
} |
||||
|
||||
a:hover { |
||||
text-decoration: underline; |
||||
} |
||||
|
||||
a.qindex { |
||||
font-weight: bold; |
||||
} |
||||
|
||||
a.qindexHL { |
||||
font-weight: bold; |
||||
background-color: #6666cc; |
||||
color: #ffffff; |
||||
border: 1px double #9295C2; |
||||
} |
||||
|
||||
.contents a.qindexHL:visited { |
||||
color: #ffffff; |
||||
} |
||||
|
||||
a.el { |
||||
font-weight: bold; |
||||
} |
||||
|
||||
a.elRef { |
||||
} |
||||
|
||||
a.code { |
||||
color: #3030f0; |
||||
} |
||||
|
||||
a.codeRef { |
||||
color: #3030f0; |
||||
} |
||||
|
||||
/* @end */ |
||||
|
||||
dl.el { |
||||
margin-left: -1cm; |
||||
} |
||||
|
||||
.fragment { |
||||
font-family: monospace, fixed; |
||||
font-size: 105%; |
||||
} |
||||
|
||||
pre.fragment { |
||||
border: 1px solid #CCCCCC; |
||||
background-color: #f5f5f5; |
||||
padding: 4px 6px; |
||||
margin: 4px 8px 4px 2px; |
||||
overflow: auto; |
||||
word-wrap: break-word; |
||||
font-size: 9pt; |
||||
line-height: 125%; |
||||
} |
||||
|
||||
div.ah { |
||||
background-color: black; |
||||
font-weight: bold; |
||||
color: #ffffff; |
||||
margin-bottom: 3px; |
||||
margin-top: 3px |
||||
} |
||||
|
||||
div.groupHeader { |
||||
margin-left: 16px; |
||||
margin-top: 12px; |
||||
margin-bottom: 6px; |
||||
font-weight: bold; |
||||
} |
||||
|
||||
div.groupText { |
||||
margin-left: 16px; |
||||
font-style: italic; |
||||
} |
||||
|
||||
body { |
||||
background: white; |
||||
color: black; |
||||
margin-right: 20px; |
||||
margin-left: 20px; |
||||
} |
||||
|
||||
td.indexkey { |
||||
background-color: #e8eef2; |
||||
font-weight: bold; |
||||
border: 1px solid #CCCCCC; |
||||
margin: 2px 0px 2px 0; |
||||
padding: 2px 10px; |
||||
} |
||||
|
||||
td.indexvalue { |
||||
background-color: #e8eef2; |
||||
border: 1px solid #CCCCCC; |
||||
padding: 2px 10px; |
||||
margin: 2px 0px; |
||||
} |
||||
|
||||
tr.memlist { |
||||
background-color: #f0f0f0; |
||||
} |
||||
|
||||
p.formulaDsp { |
||||
text-align: center; |
||||
} |
||||
|
||||
img.formulaDsp { |
||||
|
||||
} |
||||
|
||||
img.formulaInl { |
||||
vertical-align: middle; |
||||
} |
||||
|
||||
div.center { |
||||
text-align: center; |
||||
margin-top: 0px; |
||||
margin-bottom: 0px; |
||||
padding: 0px; |
||||
} |
||||
|
||||
div.center img { |
||||
border: 0px; |
||||
} |
||||
|
||||
img.footer { |
||||
border: 0px; |
||||
vertical-align: middle; |
||||
} |
||||
|
||||
/* @group Code Colorization */ |
||||
|
||||
span.keyword { |
||||
color: #008000 |
||||
} |
||||
|
||||
span.keywordtype { |
||||
color: #604020 |
||||
} |
||||
|
||||
span.keywordflow { |
||||
color: #e08000 |
||||
} |
||||
|
||||
span.comment { |
||||
color: #800000 |
||||
} |
||||
|
||||
span.preprocessor { |
||||
color: #806020 |
||||
} |
||||
|
||||
span.stringliteral { |
||||
color: #002080 |
||||
} |
||||
|
||||
span.charliteral { |
||||
color: #008080 |
||||
} |
||||
|
||||
span.vhdldigit { |
||||
color: #ff00ff |
||||
} |
||||
|
||||
span.vhdlchar { |
||||
color: #000000 |
||||
} |
||||
|
||||
span.vhdlkeyword { |
||||
color: #700070 |
||||
} |
||||
|
||||
span.vhdllogic { |
||||
color: #ff0000 |
||||
} |
||||
|
||||
/* @end */ |
||||
|
||||
.search { |
||||
color: #003399; |
||||
font-weight: bold; |
||||
} |
||||
|
||||
form.search { |
||||
margin-bottom: 0px; |
||||
margin-top: 0px; |
||||
} |
||||
|
||||
input.search { |
||||
font-size: 75%; |
||||
color: #000080; |
||||
font-weight: normal; |
||||
background-color: #e8eef2; |
||||
} |
||||
|
||||
td.tiny { |
||||
font-size: 75%; |
||||
} |
||||
|
||||
.dirtab { |
||||
padding: 4px; |
||||
border-collapse: collapse; |
||||
border: 1px solid #84b0c7; |
||||
} |
||||
|
||||
th.dirtab { |
||||
background: #e8eef2; |
||||
font-weight: bold; |
||||
} |
||||
|
||||
hr { |
||||
height: 0px; |
||||
border: none; |
||||
border-top: 1px solid #666; |
||||
} |
||||
|
||||
hr.footer { |
||||
height: 1px; |
||||
} |
||||
|
||||
/* @group Member Descriptions */ |
||||
|
||||
.mdescLeft, .mdescRight, |
||||
.memItemLeft, .memItemRight, |
||||
.memTemplItemLeft, .memTemplItemRight, .memTemplParams { |
||||
background-color: #FAFAFA; |
||||
border: none; |
||||
margin: 4px; |
||||
padding: 1px 0 0 8px; |
||||
} |
||||
|
||||
.mdescLeft, .mdescRight { |
||||
padding: 0px 8px 4px 8px; |
||||
color: #555; |
||||
} |
||||
|
||||
.memItemLeft, .memItemRight, .memTemplParams { |
||||
border-top: 1px solid #ccc; |
||||
} |
||||
|
||||
.memItemLeft, .memTemplItemLeft { |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
.memTemplParams { |
||||
color: #606060; |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
/* @end */ |
||||
|
||||
/* @group Member Details */ |
||||
|
||||
/* Styles for detailed member documentation */ |
||||
|
||||
.memtemplate { |
||||
font-size: 80%; |
||||
color: #606060; |
||||
font-weight: normal; |
||||
margin-left: 3px; |
||||
} |
||||
|
||||
.memnav { |
||||
background-color: #e8eef2; |
||||
border: 1px solid #84b0c7; |
||||
text-align: center; |
||||
margin: 2px; |
||||
margin-right: 15px; |
||||
padding: 2px; |
||||
} |
||||
|
||||
.memitem { |
||||
padding: 0; |
||||
margin-bottom: 10px; |
||||
} |
||||
|
||||
.memname { |
||||
white-space: nowrap; |
||||
font-weight: bold; |
||||
margin-left: 6px; |
||||
} |
||||
|
||||
.memproto { |
||||
border-top: 1px solid #84b0c7; |
||||
border-left: 1px solid #84b0c7; |
||||
border-right: 1px solid #84b0c7; |
||||
padding: 0; |
||||
background-color: #d5e1e8; |
||||
font-weight: bold; |
||||
/* firefox specific markup */ |
||||
background-image: -moz-linear-gradient(rgba(228, 233, 245, 1.0) 0%, rgba(193, 205, 232, 1.0) 100%); |
||||
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; |
||||
-moz-border-radius-topright: 8px; |
||||
-moz-border-radius-topleft: 8px; |
||||
/* webkit specific markup */ |
||||
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(228, 233, 245, 1.0)), to(rgba(193, 205, 232, 1.0))); |
||||
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); |
||||
-webkit-border-top-right-radius: 8px; |
||||
-webkit-border-top-left-radius: 8px; |
||||
|
||||
} |
||||
|
||||
.memdoc { |
||||
border-bottom: 1px solid #84b0c7; |
||||
border-left: 1px solid #84b0c7; |
||||
border-right: 1px solid #84b0c7; |
||||
padding: 2px 5px; |
||||
background-color: #eef3f5; |
||||
border-top-width: 0; |
||||
/* firefox specific markup */ |
||||
-moz-border-radius-bottomleft: 8px; |
||||
-moz-border-radius-bottomright: 8px; |
||||
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; |
||||
/* webkit specific markup */ |
||||
-webkit-border-bottom-left-radius: 8px; |
||||
-webkit-border-bottom-right-radius: 8px; |
||||
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); |
||||
} |
||||
|
||||
.paramkey { |
||||
text-align: right; |
||||
} |
||||
|
||||
.paramtype { |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
.paramname { |
||||
color: #602020; |
||||
white-space: nowrap; |
||||
} |
||||
.paramname em { |
||||
font-style: normal; |
||||
} |
||||
|
||||
/* @end */ |
||||
|
||||
/* @group Directory (tree) */ |
||||
|
||||
/* for the tree view */ |
||||
|
||||
.ftvtree { |
||||
font-family: sans-serif; |
||||
margin: 0.5em; |
||||
} |
||||
|
||||
/* these are for tree view when used as main index */ |
||||
|
||||
.directory { |
||||
font-size: 9pt; |
||||
font-weight: bold; |
||||
} |
||||
|
||||
.directory h3 { |
||||
margin: 0px; |
||||
margin-top: 1em; |
||||
font-size: 11pt; |
||||
} |
||||
|
||||
/* |
||||
The following two styles can be used to replace the root node title |
||||
with an image of your choice. Simply uncomment the next two styles, |
||||
specify the name of your image and be sure to set 'height' to the |
||||
proper pixel height of your image. |
||||
*/ |
||||
|
||||
/* |
||||
.directory h3.swap { |
||||
height: 61px; |
||||
background-repeat: no-repeat; |
||||
background-image: url("yourimage.gif"); |
||||
} |
||||
.directory h3.swap span { |
||||
display: none; |
||||
} |
||||
*/ |
||||
|
||||
.directory > h3 { |
||||
margin-top: 0; |
||||
} |
||||
|
||||
.directory p { |
||||
margin: 0px; |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
.directory div { |
||||
display: none; |
||||
margin: 0px; |
||||
} |
||||
|
||||
.directory img { |
||||
vertical-align: -30%; |
||||
} |
||||
|
||||
/* these are for tree view when not used as main index */ |
||||
|
||||
.directory-alt { |
||||
font-size: 100%; |
||||
font-weight: bold; |
||||
} |
||||
|
||||
.directory-alt h3 { |
||||
margin: 0px; |
||||
margin-top: 1em; |
||||
font-size: 11pt; |
||||
} |
||||
|
||||
.directory-alt > h3 { |
||||
margin-top: 0; |
||||
} |
||||
|
||||
.directory-alt p { |
||||
margin: 0px; |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
.directory-alt div { |
||||
display: none; |
||||
margin: 0px; |
||||
} |
||||
|
||||
.directory-alt img { |
||||
vertical-align: -30%; |
||||
} |
||||
|
||||
/* @end */ |
||||
|
||||
address { |
||||
font-style: normal; |
||||
color: #333; |
||||
} |
||||
|
||||
table.doxtable { |
||||
border-collapse:collapse; |
||||
} |
||||
|
||||
table.doxtable td, table.doxtable th { |
||||
border: 1px solid #153788; |
||||
padding: 3px 7px 2px; |
||||
} |
||||
|
||||
table.doxtable th { |
||||
background-color: #254798; |
||||
color: #FFFFFF; |
||||
font-size: 110%; |
||||
padding-bottom: 4px; |
||||
padding-top: 5px; |
||||
text-align:left; |
||||
} |
||||
|
||||
|
||||
p {padding-left: 20px;} |
@ -1,189 +0,0 @@ |
||||
/*
|
||||
LUFA Library |
||||
Copyright (C) Dean Camera, 2010. |
||||
|
||||
dean [at] fourwalledcubicle [dot] com |
||||
www.fourwalledcubicle.com |
||||
*/ |
||||
|
||||
/*
|
||||
Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) |
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation for any purpose is hereby granted |
||||
without fee, provided that the above copyright notice appear in
|
||||
all copies and that both that the copyright notice and this |
||||
permission notice and warranty disclaimer appear in supporting
|
||||
documentation, and that the name of the author not be used in
|
||||
advertising or publicity pertaining to distribution of the
|
||||
software without specific, written prior permission. |
||||
|
||||
The author disclaim all warranties with regard to this |
||||
software, including all implied warranties of merchantability |
||||
and fitness. In no event shall the author be liable for any |
||||
special, indirect or consequential damages or any damages |
||||
whatsoever resulting from loss of use, data or profits, whether |
||||
in an action of contract, negligence or other tortious action, |
||||
arising out of or in connection with the use or performance of |
||||
this software. |
||||
*/ |
||||
|
||||
/** \file
|
||||
* |
||||
* SPI driver for the 8-bit AVRs. |
||||
* |
||||
* \note This file should not be included directly. It is automatically included as needed by the SPI driver |
||||
* dispatch header located in LUFA/Drivers/Peripheral/SPI.h. |
||||
*/ |
||||
|
||||
/** \ingroup Group_SPI
|
||||
* @defgroup Group_SPI_AVR8 8-Bit AVR SPI Driver |
||||
* |
||||
* SPI driver for the 8-bit AVRs. |
||||
* |
||||
* \note This file should not be included directly. It is automatically included as needed by the ADC driver |
||||
* dispatch header located in LUFA/Drivers/Peripheral/SPI.h. |
||||
* |
||||
* @{ |
||||
*/ |
||||
|
||||
#ifndef __SPI_AVR8_H__ |
||||
#define __SPI_AVR8_H__ |
||||
|
||||
/* Includes: */ |
||||
#include <stdbool.h> |
||||
|
||||
/* Preprocessor Checks: */ |
||||
#if !defined(__INCLUDE_FROM_SPI_H) |
||||
#error Do not include this file directly. Include LUFA/Drivers/Peripheral/SPI.h instead. |
||||
#endif |
||||
|
||||
/* Enable C linkage for C++ Compilers: */ |
||||
#if defined(__cplusplus) |
||||
extern "C" { |
||||
#endif |
||||
|
||||
/* Private Interface - For use in library only: */ |
||||
#if !defined(__DOXYGEN__) |
||||
/* Macros: */ |
||||
#define SPI_USE_DOUBLESPEED (1 << SPE) |
||||
#endif |
||||
|
||||
/* Public Interface - May be used in end-application: */ |
||||
/* Macros: */ |
||||
/** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 2. */ |
||||
#define SPI_SPEED_FCPU_DIV_2 SPI_USE_DOUBLESPEED |
||||
|
||||
/** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 4. */ |
||||
#define SPI_SPEED_FCPU_DIV_4 0 |
||||
|
||||
/** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 8. */ |
||||
#define SPI_SPEED_FCPU_DIV_8 (SPI_USE_DOUBLESPEED | (1 << SPR0)) |
||||
|
||||
/** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 16. */ |
||||
#define SPI_SPEED_FCPU_DIV_16 (1 << SPR0) |
||||
|
||||
/** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 32. */ |
||||
#define SPI_SPEED_FCPU_DIV_32 (SPI_USE_DOUBLESPEED | (1 << SPR1)) |
||||
|
||||
/** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 64. */ |
||||
#define SPI_SPEED_FCPU_DIV_64 (SPI_USE_DOUBLESPEED | (1 << SPR1) | (1 << SPR0)) |
||||
|
||||
/** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 128. */ |
||||
#define SPI_SPEED_FCPU_DIV_128 ((1 << SPR1) | (1 << SPR0)) |
||||
|
||||
/** SPI clock polarity mask for SPI_Init(). Indicates that the SCK should lead on the rising edge. */ |
||||
#define SPI_SCK_LEAD_RISING (0 << CPOL) |
||||
|
||||
/** SPI clock polarity mask for SPI_Init(). Indicates that the SCK should lead on the falling edge. */ |
||||
#define SPI_SCK_LEAD_FALLING (1 << CPOL) |
||||
|
||||
/** SPI data sample mode mask for SPI_Init(). Indicates that the data should sampled on the leading edge. */ |
||||
#define SPI_SAMPLE_LEADING (0 << CPHA) |
||||
|
||||
/** SPI data sample mode mask for SPI_Init(). Indicates that the data should be sampled on the trailing edge. */ |
||||
#define SPI_SAMPLE_TRAILING (1 << CPHA) |
||||
|
||||
/** SPI mode mask for SPI_Init(). Indicates that the SPI interface should be initialized into slave mode. */ |
||||
#define SPI_MODE_SLAVE (0 << MSTR) |
||||
|
||||
/** SPI mode mask for SPI_Init(). Indicates that the SPI interface should be initialized into master mode. */ |
||||
#define SPI_MODE_MASTER (1 << MSTR) |
||||
|
||||
/* Inline Functions: */ |
||||
/** Initialises the SPI subsystem, ready for transfers. Must be called before calling any other
|
||||
* SPI routines. |
||||
* |
||||
* \param[in] SPIOptions SPI Options, a mask consisting of one of each of the SPI_SPEED_*, |
||||
* SPI_SCK_*, SPI_SAMPLE_* and SPI_MODE_* masks |
||||
*/ |
||||
static inline void SPI_Init(const uint8_t SPIOptions) |
||||
{ |
||||
DDRB |= ((1 << 1) | (1 << 2)); |
||||
PORTB |= ((1 << 0) | (1 << 3)); |
||||
|
||||
SPCR = ((1 << SPE) | SPIOptions); |
||||
|
||||
if (SPIOptions & SPI_USE_DOUBLESPEED) |
||||
SPSR |= (1 << SPI2X); |
||||
else |
||||
SPSR &= ~(1 << SPI2X); |
||||
} |
||||
|
||||
/** Turns off the SPI driver, disabling and returning used hardware to their default configuration. */ |
||||
static inline void SPI_ShutDown(void) |
||||
{ |
||||
DDRB &= ~((1 << 1) | (1 << 2)); |
||||
PORTB &= ~((1 << 0) | (1 << 3)); |
||||
|
||||
SPCR = 0; |
||||
SPSR = 0; |
||||
} |
||||
|
||||
/** Sends and receives a byte through the SPI interface, blocking until the transfer is complete.
|
||||
* |
||||
* \param[in] Byte Byte to send through the SPI interface |
||||
* |
||||
* \return Response byte from the attached SPI device |
||||
*/ |
||||
static inline uint8_t SPI_TransferByte(const uint8_t Byte) ATTR_ALWAYS_INLINE; |
||||
static inline uint8_t SPI_TransferByte(const uint8_t Byte) |
||||
{ |
||||
SPDR = Byte; |
||||
while (!(SPSR & (1 << SPIF))); |
||||
return SPDR; |
||||
} |
||||
|
||||
/** Sends a byte through the SPI interface, blocking until the transfer is complete. The response
|
||||
* byte sent to from the attached SPI device is ignored. |
||||
* |
||||
* \param[in] Byte Byte to send through the SPI interface |
||||
*/ |
||||
static inline void SPI_SendByte(const uint8_t Byte) ATTR_ALWAYS_INLINE; |
||||
static inline void SPI_SendByte(const uint8_t Byte) |
||||
{ |
||||
SPDR = Byte; |
||||
while (!(SPSR & (1 << SPIF))); |
||||
} |
||||
|
||||
/** Sends a dummy byte through the SPI interface, blocking until the transfer is complete. The response
|
||||
* byte from the attached SPI device is returned. |
||||
* |
||||
* \return The response byte from the attached SPI device |
||||
*/ |
||||
static inline uint8_t SPI_ReceiveByte(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; |
||||
static inline uint8_t SPI_ReceiveByte(void) |
||||
{ |
||||
SPDR = 0x00; |
||||
while (!(SPSR & (1 << SPIF))); |
||||
return SPDR; |
||||
} |
||||
|
||||
/* Disable C linkage for C++ Compilers: */ |
||||
#if defined(__cplusplus) |
||||
} |
||||
#endif |
||||
|
||||
#endif |
||||
|
||||
/** @} */ |
@ -1,145 +0,0 @@ |
||||
/*
|
||||
LUFA Library |
||||
Copyright (C) Dean Camera, 2010. |
||||
|
||||
dean [at] fourwalledcubicle [dot] com |
||||
www.fourwalledcubicle.com |
||||
*/ |
||||
|
||||
/*
|
||||
Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) |
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation for any purpose is hereby granted |
||||
without fee, provided that the above copyright notice appear in
|
||||
all copies and that both that the copyright notice and this |
||||
permission notice and warranty disclaimer appear in supporting
|
||||
documentation, and that the name of the author not be used in
|
||||
advertising or publicity pertaining to distribution of the
|
||||
software without specific, written prior permission. |
||||
|
||||
The author disclaim all warranties with regard to this |
||||
software, including all implied warranties of merchantability |
||||
and fitness. In no event shall the author be liable for any |
||||
special, indirect or consequential damages or any damages |
||||
whatsoever resulting from loss of use, data or profits, whether |
||||
in an action of contract, negligence or other tortious action, |
||||
arising out of or in connection with the use or performance of |
||||
this software. |
||||
*/ |
||||
|
||||
/** \file
|
||||
* |
||||
* ADC driver for the 8-bit AVRs. |
||||
* |
||||
* \note This file should not be included directly. It is automatically included as needed by the USART driver |
||||
* dispatch header located in LUFA/Drivers/Peripheral/Serial.h. |
||||
*/ |
||||
|
||||
/** \ingroup Group_Serial
|
||||
* @defgroup Group_Serial_AVR8 8-Bit AVR Serial Driver |
||||
* |
||||
* Serial driver for the 8-bit AVRs. |
||||
* |
||||
* \note This file should not be included directly. It is automatically included as needed by the ADC driver |
||||
* dispatch header located in LUFA/Drivers/Peripheral/USART.h. |
||||
* |
||||
* @{ |
||||
*/ |
||||
|
||||
#ifndef __SERIAL_AVR8_H__ |
||||
#define __SERIAL_AVR8_H__ |
||||
|
||||
/* Includes: */ |
||||
#include <avr/io.h> |
||||
#include <avr/pgmspace.h> |
||||
#include <stdbool.h> |
||||
|
||||
/* Preprocessor Checks: */ |
||||
#if !defined(__INCLUDE_FROM_SERIAL_H) |
||||
#error Do not include this file directly. Include LUFA/Drivers/Peripheral/Serial.h instead. |
||||
#endif |
||||
|
||||
/* Public Interface - May be used in end-application: */ |
||||
/* Macros: */ |
||||
/** Macro for calculating the baud value from a given baud rate when the U2X (double speed) bit is
|
||||
* not set. |
||||
*/ |
||||
#define SERIAL_UBBRVAL(baud) ((((F_CPU / 16) + (baud / 2)) / (baud)) - 1) |
||||
|
||||
/** Macro for calculating the baud value from a given baud rate when the U2X (double speed) bit is
|
||||
* set. |
||||
*/ |
||||
#define SERIAL_2X_UBBRVAL(baud) ((((F_CPU / 8) + (baud / 2)) / (baud)) - 1) |
||||
|
||||
/* Pseudo-Function Macros: */ |
||||
#if defined(__DOXYGEN__) |
||||
/** Indicates whether a character has been received through the USART.
|
||||
* |
||||
* \return Boolean true if a character has been received, false otherwise |
||||
*/ |
||||
static inline bool Serial_IsCharReceived(void); |
||||
#else |
||||
#define Serial_IsCharReceived() ((UCSR1A & (1 << RXC1)) ? true : false) |
||||
#endif |
||||
|
||||
/* Inline Functions: */ |
||||
/** Initializes the USART, ready for serial data transmission and reception. This initializes the interface to
|
||||
* standard 8-bit, no parity, 1 stop bit settings suitable for most applications. |
||||
* |
||||
* \param[in] BaudRate Serial baud rate, in bits per second |
||||
* \param[in] DoubleSpeed Enables double speed mode when set, halving the sample time to double the baud rate |
||||
*/ |
||||
static inline void Serial_Init(const uint32_t BaudRate, const bool DoubleSpeed) |
||||
{ |
||||
UCSR1A = (DoubleSpeed ? (1 << U2X1) : 0); |
||||
UCSR1B = ((1 << TXEN1) | (1 << RXEN1)); |
||||
UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10)); |
||||
|
||||
DDRD |= (1 << 3);
|
||||
PORTD |= (1 << 2); |
||||
|
||||
UBRR1 = (DoubleSpeed ? SERIAL_2X_UBBRVAL(BaudRate) : SERIAL_UBBRVAL(BaudRate)); |
||||
} |
||||
|
||||
/** Turns off the USART driver, disabling and returning used hardware to their default configuration. */ |
||||
static inline void Serial_ShutDown(void) |
||||
{ |
||||
UCSR1A = 0; |
||||
UCSR1B = 0; |
||||
UCSR1C = 0; |
||||
|
||||
DDRD &= ~(1 << 3);
|
||||
PORTD &= ~(1 << 2); |
||||
|
||||
UBRR1 = 0; |
||||
} |
||||
|
||||
/** Transmits a given byte through the USART.
|
||||
* |
||||
* \param[in] DataByte Byte to transmit through the USART |
||||
*/ |
||||
static inline void Serial_TxByte(const char DataByte) |
||||
{ |
||||
while (!(UCSR1A & (1 << UDRE1))); |
||||
UDR1 = DataByte; |
||||
} |
||||
|
||||
/** Receives a byte from the USART.
|
||||
* |
||||
* \return Byte received from the USART |
||||
*/ |
||||
static inline uint8_t Serial_RxByte(void) |
||||
{ |
||||
while (!(UCSR1A & (1 << RXC1))); |
||||
return UDR1;
|
||||
} |
||||
|
||||
/* Disable C linkage for C++ Compilers: */ |
||||
#if defined(__cplusplus) |
||||
} |
||||
#endif |
||||
|
||||
#endif |
||||
|
||||
/** @} */ |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue