Soldered SD Card Arduino Library
1.0.0
Easily read and write files to and form the SD card breakout! A fork of the original SDFat library by Bill Greiman.
Toggle main menu visibility
Loading...
Searching...
No Matches
SdSpiAvr.h
Go to the documentation of this file.
1
25
#ifndef SdSpiAvr_h
26
#define SdSpiAvr_h
27
// Use of in-line for AVR to save flash.
28
#define nop asm volatile("nop\n\t")
29
//------------------------------------------------------------------------------
30
inline
void
SdSpiArduinoDriver::begin
(
SdSpiConfig
spiConfig)
31
{
32
(void)spiConfig;
33
SPI.begin();
34
}
35
//------------------------------------------------------------------------------
36
inline
void
SdSpiArduinoDriver::activate
()
37
{
38
SPI.beginTransaction(
m_spiSettings
);
39
}
40
//------------------------------------------------------------------------------
41
inline
void
SdSpiArduinoDriver::deactivate
()
42
{
43
SPI.endTransaction();
44
}
45
//------------------------------------------------------------------------------
46
inline
uint8_t
SdSpiArduinoDriver::receive
()
47
{
48
return
SPI.transfer(0XFF);
49
}
50
//------------------------------------------------------------------------------
51
inline
uint8_t
SdSpiArduinoDriver::receive
(uint8_t *buf,
size_t
count)
52
{
53
if
(count == 0)
54
{
55
return
0;
56
}
57
uint8_t *pr = buf;
58
SPDR = 0XFF;
59
while
(--count > 0)
60
{
61
while
(!(SPSR & _BV(SPIF)))
62
{
63
}
64
uint8_t in = SPDR;
65
SPDR = 0XFF;
66
*pr++ = in;
67
// nops to optimize loop for 16MHz CPU 8 MHz SPI
68
nop;
69
nop;
70
}
71
while
(!(SPSR & _BV(SPIF)))
72
{
73
}
74
*pr = SPDR;
75
return
0;
76
}
77
//------------------------------------------------------------------------------
78
inline
void
SdSpiArduinoDriver::send
(uint8_t data)
79
{
80
SPI.transfer(data);
81
}
82
//------------------------------------------------------------------------------
83
inline
void
SdSpiArduinoDriver::send
(
const
uint8_t *buf,
size_t
count)
84
{
85
if
(count == 0)
86
{
87
return
;
88
}
89
SPDR = *buf++;
90
while
(--count > 0)
91
{
92
uint8_t b = *buf++;
93
while
(!(SPSR & (1 << SPIF)))
94
{
95
}
96
SPDR = b;
97
// nops to optimize loop for 16MHz CPU 8 MHz SPI
98
nop;
99
nop;
100
}
101
while
(!(SPSR & (1 << SPIF)))
102
{
103
}
104
}
105
#endif
// SdSpiAvr_h
SdSpiArduinoDriver::send
void send(uint8_t data)
Definition
SdSpiArtemis.cpp:63
SdSpiArduinoDriver::m_spiSettings
SPISettings m_spiSettings
Definition
SdSpiArduinoDriver.h:88
SdSpiArduinoDriver::receive
uint8_t receive()
Definition
SdSpiArtemis.cpp:51
SdSpiArduinoDriver::activate
void activate()
Definition
SdSpiArtemis.cpp:28
SdSpiArduinoDriver::begin
void begin(SdSpiConfig spiConfig)
Definition
SdSpiArtemis.cpp:33
SdSpiArduinoDriver::deactivate
void deactivate()
Definition
SdSpiArtemis.cpp:46
SdSpiConfig
SPI card configuration.
Definition
SdSpiDriver.h:112
src
SpiDriver
SdSpiAvr.h
Generated on
for Soldered SD Card Arduino Library by
1.17.0. Dark theme by
Tilen Majerle
. All rights reserved. Copyright:
Soldered