Added proof of concept for using hardware0 in SPI mode
This commit is contained in:
parent
ab1d55ee6f
commit
5cd2b963fa
@ -207,12 +207,15 @@ void usartTestUsage()
|
||||
|
||||
void newUartUsage()
|
||||
{
|
||||
using settings = uart::settings<9600, uart::DataBits::EIGHT, uart::Parity::NONE, uart::StopBits::ONE>;
|
||||
using uart0 = uart::detail::hardware0<settings, uart::Mode::ASYNCHRONOUS>;
|
||||
using config = uart::config<9600, uart::DataBits::EIGHT, uart::Parity::NONE, uart::StopBits::ONE>;
|
||||
using uart0 = uart::hardware0<uart::Mode::ASYNCHRONOUS, config>;
|
||||
using softuart = uart::software<io::P::B1, io::P::B2, config>;
|
||||
|
||||
uart::uart<uart0> serial;
|
||||
uart::uart<softuart> softSerial;
|
||||
|
||||
serial << "Hello World using finalized interface!" << F("\r\nAlso works from progmem\r\n");
|
||||
// softSerial << "Hello World using finalized software interface!" << F("\r\nAlso greetz from progmem\r\n");
|
||||
}
|
||||
|
||||
void oldUsartUsage()
|
||||
@ -226,11 +229,88 @@ void oldUsartUsage()
|
||||
_delay_ms(1000);
|
||||
}
|
||||
|
||||
namespace spi {
|
||||
|
||||
enum class Cpol {
|
||||
MODE_0,
|
||||
MODE_1,
|
||||
};
|
||||
|
||||
enum class Cpha {
|
||||
MODE_0,
|
||||
MODE_1,
|
||||
};
|
||||
|
||||
enum class DataOrder {
|
||||
MSB,
|
||||
LSB,
|
||||
};
|
||||
|
||||
template <const Cpol cpol, const Cpha cpha, const DataOrder dataOrder>
|
||||
struct config {
|
||||
static constexpr auto CPOL_MODE = cpol;
|
||||
static constexpr auto CPHA_MODE = cpha;
|
||||
static constexpr auto DATA_ORDER = dataOrder;
|
||||
};
|
||||
|
||||
template <class Driver>
|
||||
struct spi {
|
||||
spi()
|
||||
{
|
||||
Driver::init();
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace spi
|
||||
|
||||
namespace uart {
|
||||
|
||||
template <class config>
|
||||
class hardware0<Mode::SPI, config> {
|
||||
public:
|
||||
static void init()
|
||||
{
|
||||
UCSR0C |= (1 << UMSEL01) | (1 << UMSEL00);
|
||||
|
||||
if (DATA_ORDER == spi::DataOrder::MSB)
|
||||
UCSR0C &= ~(1 << UCSZ01);
|
||||
else
|
||||
UCSR0C |= (1 << UCSZ01);
|
||||
|
||||
if (CPOL_MODE == spi::Cpol::MODE_0)
|
||||
UCSR0C &= ~(1 << UCPOL0);
|
||||
else
|
||||
UCSR0C |= (1 << UCPOL0);
|
||||
|
||||
if (CPHA_MODE == spi::Cpha::MODE_0)
|
||||
UCSR0C &= ~(1 << UCSZ00);
|
||||
else
|
||||
UCSR0C |= (1 << UCSZ00);
|
||||
}
|
||||
|
||||
private:
|
||||
static constexpr auto CPOL_MODE = config::CPOL_MODE;
|
||||
static constexpr auto CPHA_MODE = config::CPHA_MODE;
|
||||
static constexpr auto DATA_ORDER = config::DATA_ORDER;
|
||||
};
|
||||
|
||||
} // namespace uart
|
||||
|
||||
void spiTest()
|
||||
{
|
||||
using config = spi::config<spi::Cpol::MODE_0, spi::Cpha::MODE_0, spi::DataOrder::MSB>;
|
||||
using uartspi = uart::hardware0<uart::Mode::SPI, config>;
|
||||
|
||||
spi::spi<uartspi> uartSpi;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
usartTestUsage();
|
||||
newUartUsage();
|
||||
oldUsartUsage();
|
||||
|
||||
spiTest();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit f08f607265cd316714d0db6fde5807e1c6320a72
|
||||
Subproject commit 29b4d85ce3e2a5467dc378f029b94fa35cb6c793
|
@ -61,15 +61,15 @@
|
||||
</AAFDebugger>
|
||||
<AsfFrameworkConfig>
|
||||
<framework-data xmlns="">
|
||||
<options />
|
||||
<configurations />
|
||||
<files />
|
||||
<documentation help="" />
|
||||
<offline-documentation help="" />
|
||||
<dependencies>
|
||||
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.46.0" />
|
||||
</dependencies>
|
||||
</framework-data>
|
||||
<options />
|
||||
<configurations />
|
||||
<files />
|
||||
<documentation help="" />
|
||||
<offline-documentation help="" />
|
||||
<dependencies>
|
||||
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.46.0" />
|
||||
</dependencies>
|
||||
</framework-data>
|
||||
</AsfFrameworkConfig>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
@ -211,7 +211,7 @@
|
||||
<Compile Include="uart\hardware1.hpp">
|
||||
<SubType>compile</SubType>
|
||||
</Compile>
|
||||
<Compile Include="uart\settings.hpp">
|
||||
<Compile Include="uart\config.hpp">
|
||||
<SubType>compile</SubType>
|
||||
</Compile>
|
||||
<Compile Include="uart\software.hpp">
|
||||
|
Loading…
Reference in New Issue
Block a user