32 #ifdef SSD1306_AVR_SPI_SUPPORTED 36 #define PORT_SPI PORTB 42 #define SPI_CLOCK_MASK 0x03 43 #define SPI_2XCLOCK_MASK 0x01 47 static void ssd1306_spiConfigure_avr()
50 uint32_t clockSetting = F_CPU / 2;
66 DDR_SPI &= ~((1<<DD_SCK)|(1<<DD_SS)|(1<<DD_MOSI));
67 PORT_SPI |= (1<<DD_SS);
69 DDR_SPI |= ((1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS));
70 PORT_SPI |= (1<<DD_SS);
72 SPCR = (1<<SPE)|(1<<MSTR)|(0<<CPOL)|(0<<CPHA)|
73 ((clockDiv >> 1) & SPI_CLOCK_MASK);
74 SPSR = clockDiv & SPI_2XCLOCK_MASK;
79 static void ssd1306_spiClose_avr()
83 static void ssd1306_spiStart_avr()
91 static void ssd1306_spiSendByte_avr(uint8_t data)
95 while((SPSR & (1<<SPIF))==0);
98 static void ssd1306_spiSendBytes_avr(
const uint8_t * buffer, uint16_t size)
100 const uint8_t *p = buffer;
105 while((SPSR & (1<<SPIF))==0);
111 static void ssd1306_spiStop_avr()
116 ssd1306_spiSendByte_avr( 0x00 );
125 void ssd1306_spiInit_avr(int8_t cesPin, int8_t dcPin)
127 if (cesPin >=0) pinMode(cesPin, OUTPUT);
128 if (dcPin >= 0) pinMode(dcPin, OUTPUT);
132 ssd1306_spiConfigure_avr();
void(* send)(uint8_t data)
uint32_t s_ssd1306_spi_clock
void(* close)(void)
deinitializes internal resources, allocated for interface.
ssd1306_lcd_t ssd1306_lcd
ssd1306_interface_t ssd1306_intf
void(* send_buffer)(const uint8_t *buffer, uint16_t size)
Sends bytes to SSD1306 device.