Чт авг 26, 2021 16:13:29
unsigned char SPI0_exchangeData(unsigned char data)
{
SPI0.DATA = data;
while (!(SPI0.INTFLAGS & SPI_IF_bm)) /* waits until data is exchanged*/
{ ;}
return SPI0.DATA;
}
void SPI_Init()
{
SPI0.CTRLA = SPI_DORD_bm /* LSB is transmitted first */
| SPI_ENABLE_bm /* Enable module */
| SPI_CLK2X_bm /* double-speed on*/
| SPI_MASTER_bm /* SPI module in Master mode */
| SPI_PRESC_DIV64_gc; /* System Clock divided by 64 */ //надо f SCLK ~0.5МГц < 1Mhz 20Мгц/64*2 = 0,312МГц *2 = 0,625МГц
SPI0.CTRLB = SPI_MODE1_bm |SPI_SSD_bm |SPI_BUFEN_bm;
}
void drow_line(unsigned char numline, unsigned char line[23])
{
unsigned char i;
retdata = SPI0_exchangeData(numline);
for (i=0; i<23; i++)
SPI0_exchangeData(line[i]);
retdata = SPI0_exchangeData(0x00); //dummy data
retdata = SPI0_exchangeData(0x00);
}
void main()
{
unsigned char line[23], i;
...
SPI_Init();
while(1)
{
for (i=0;i<23;i++)
line [i] = 0x00; //Black;
// line [i] = 0xFF;// White;
SS_ON;//SS_OFF;
retdata = SPI0_exchangeData(UpdateMode);
for (i=1; i<=15; i++)
drow_line (i, line);
retdata = SPI0_exchangeData(0x00); //dummy data
WaitIniDisp = 1;
while(WaitIniDisp); //ждем 1мс
SS_OFF;//SS_ON;
}
}
Чт авг 26, 2021 17:23:45
Lilia писал(а):Возможно ли сделать посылку байт по SPI без пауз?
Чт авг 26, 2021 17:28:06
Чт авг 26, 2021 17:32:12
Чт авг 26, 2021 17:36:23
Чт авг 26, 2021 18:27:31
Reflector писал(а):на новых AVR SPI с буферизацией.
Чт авг 26, 2021 19:04:46
Пт авг 27, 2021 14:21:53
Пт авг 27, 2021 16:34:20
Пт авг 27, 2021 17:31:13
Пт авг 27, 2021 17:52:03
Пт авг 27, 2021 18:03:11
Пт авг 27, 2021 19:56:17