Replaced legacy io library with new templated io library
This commit is contained in:
parent
aa78ced242
commit
d28cfc2929
52
spi.hpp
52
spi.hpp
@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../inout/inout.h"
|
#include "../io/io.hpp"
|
||||||
|
|
||||||
#include <avr/io.h>
|
#include <avr/io.h>
|
||||||
|
|
||||||
@ -26,15 +26,10 @@ class Spi {
|
|||||||
static void setCPOL(bool bCPOL);
|
static void setCPOL(bool bCPOL);
|
||||||
static void setCPHA(bool bCPHA);
|
static void setCPHA(bool bCPHA);
|
||||||
|
|
||||||
static constexpr InOut::Pin sm_enmSCK = InOut::Pin::P_B5;
|
static io::Pin<io::P::B5> sm_cSCK;
|
||||||
static constexpr InOut::Pin sm_enmMISO = InOut::Pin::P_B4;
|
static io::Pin<io::P::B4> sm_cMISO;
|
||||||
static constexpr InOut::Pin sm_enmMOSI = InOut::Pin::P_B3;
|
static io::Pin<io::P::B3> sm_cMOSI;
|
||||||
static constexpr InOut::Pin sm_enmSS = InOut::Pin::P_B2;
|
static io::Pin<io::P::B2> sm_cSS;
|
||||||
|
|
||||||
static InOutPin sm_cSCK;
|
|
||||||
static InOutPin sm_cMISO;
|
|
||||||
static InOutPin sm_cMOSI;
|
|
||||||
static InOutPin sm_cSS;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void init(ClockDiv enmClockDiv = ClockDiv::CLKDIV_128, Mode enmMode = Mode::MODE_0, bool bMaster = true,
|
static void init(ClockDiv enmClockDiv = ClockDiv::CLKDIV_128, Mode enmMode = Mode::MODE_0, bool bMaster = true,
|
||||||
@ -50,12 +45,6 @@ class Spi {
|
|||||||
static void select(bool bSelect);
|
static void select(bool bSelect);
|
||||||
};
|
};
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
InOutPin Spi::sm_cSCK;
|
|
||||||
InOutPin Spi::sm_cMISO;
|
|
||||||
InOutPin Spi::sm_cMOSI;
|
|
||||||
InOutPin Spi::sm_cSS;
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
void Spi::setCPOL(bool bCPOL)
|
void Spi::setCPOL(bool bCPOL)
|
||||||
{
|
{
|
||||||
@ -80,23 +69,20 @@ void Spi::setCPHA(bool bCPHA)
|
|||||||
void Spi::init(ClockDiv enmClockDiv /* = ClockDiv::CLKDIV_128 */, Mode enmMode /* = Mode::MODE_0 */,
|
void Spi::init(ClockDiv enmClockDiv /* = ClockDiv::CLKDIV_128 */, Mode enmMode /* = Mode::MODE_0 */,
|
||||||
bool bMaster /* = true */, bool bLSBFirst /* = false */, bool bMISOPullup /* = false */)
|
bool bMaster /* = true */, bool bLSBFirst /* = false */, bool bMISOPullup /* = false */)
|
||||||
{
|
{
|
||||||
sm_cSCK.setPin(sm_enmSCK);
|
|
||||||
sm_cMISO.setPin(sm_enmMISO);
|
|
||||||
sm_cMOSI.setPin(sm_enmMOSI);
|
|
||||||
sm_cSS.setPin(sm_enmSS);
|
|
||||||
|
|
||||||
if (bMaster) {
|
if (bMaster) {
|
||||||
sm_cSS.write(true);
|
sm_cSS.write(true);
|
||||||
|
|
||||||
sm_cSCK.setDirection(InOut::Dir::D_OUT, false);
|
sm_cSCK.dir(io::Dir::OUT);
|
||||||
sm_cMISO.setDirection(InOut::Dir::D_IN, bMISOPullup);
|
sm_cMISO.dir(io::Dir::IN);
|
||||||
sm_cMOSI.setDirection(InOut::Dir::D_OUT, false);
|
sm_cMISO.pullup(bMISOPullup);
|
||||||
sm_cSS.setDirection(InOut::Dir::D_OUT, false);
|
sm_cMOSI.dir(io::Dir::OUT);
|
||||||
|
sm_cSS.dir(io::Dir::OUT);
|
||||||
} else {
|
} else {
|
||||||
sm_cSCK.setDirection(InOut::Dir::D_IN, false);
|
sm_cSCK.dir(io::Dir::IN);
|
||||||
sm_cMISO.setDirection(InOut::Dir::D_OUT, false);
|
sm_cMISO.dir(io::Dir::OUT);
|
||||||
sm_cMOSI.setDirection(InOut::Dir::D_IN, false);
|
sm_cMOSI.dir(io::Dir::IN);
|
||||||
sm_cSS.setDirection(InOut::Dir::D_IN, true);
|
sm_cSS.dir(io::Dir::IN);
|
||||||
|
sm_cSS.pullup(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
setClockDiv(enmClockDiv);
|
setClockDiv(enmClockDiv);
|
||||||
@ -112,10 +98,10 @@ void Spi::deinit()
|
|||||||
{
|
{
|
||||||
SPCR = 0;
|
SPCR = 0;
|
||||||
|
|
||||||
sm_cSCK.setDirection(InOut::Dir::D_IN, false);
|
sm_cSCK.dir(io::Dir::IN);
|
||||||
sm_cMISO.setDirection(InOut::Dir::D_IN, false);
|
sm_cMISO.dir(io::Dir::IN);
|
||||||
sm_cMOSI.setDirection(InOut::Dir::D_IN, false);
|
sm_cMOSI.dir(io::Dir::IN);
|
||||||
sm_cSS.setDirection(InOut::Dir::D_IN, false);
|
sm_cSS.dir(io::Dir::IN);
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user