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