Files
MarklinController/softspim.h

31 lines
701 B
C++

#pragma once
#include <avr/io.h>
#include <stdint.h>
class SpiMaster
{
private:
static constexpr uint8_t CLOCK_POLARITY = 0;
static constexpr uint8_t CLOCK_PHASE = 2;
static constexpr uint8_t BIT_ORDER = 1;
volatile uint8_t * const _port = &PORTB;
volatile uint8_t * const _pinReg = &PINB;
static constexpr uint8_t _pinIn = PB2;
static constexpr uint8_t _pinOut = PB4;
static constexpr uint8_t _pinClock = PB3;
static constexpr uint8_t DELAY_TIME_US = 0;
public:
SpiMaster();
void readWrite(uint8_t length, uint8_t* bufferIn, uint8_t* bufferOut);
uint8_t readWrite(uint8_t in = 0);
void prepare();
uint8_t read();
void write(uint8_t in);
};