Wysyłanie wygląda tak:
//************* Wysyłanie Danych *************
if(bit_is_set(flaga,0) && bit_is_set(flaga,1))
{
// ************* Wysyłanie Ciagu *************
while(!(UCSR1A&(1<<5)));
//_delay_us(400);
UDR1 = START_CIAG; //0b00000010
licz=0;
for (int k=0; k<80 ; k++)
{
ClrBit(PORTD,7);
Send_SPI();
licz++;
}
bubblesort(licz);
buforH_SPI = (tab_pom[40]>>8);
buforL_SPI = tab_pom[40];
while(!(UCSR1A&(1<<5)));
//_delay_us(400);
UDR1 = buforH_SPI;
while(!(UCSR1A&(1<<5)));
//_delay_us(400);
UDR1 = buforL_SPI;
while(!(UCSR1A&(1<<5)));
//_delay_us(400);
UDR1 = END_CIAG; //0b01000000
// ************* Koniec Ciag *************
// ************* Wysyłanie pradu *************
while(!(UCSR1A&(1<<5)));
//_delay_us(400);
UDR1 = START_PRAD; //0b00000100
licz=0;
for (int k=0; k<80 ; k++)
{
ClrBit(PORTE,7); //włączenie przetwornika U4
Send_SPI();
licz++;
}
bubblesort(licz);
buforH_SPI = (tab_pom[40]>>8);
buforL_SPI = tab_pom[40];
while(!(UCSR1A&(1<<5)));
//_delay_us(400);
UDR1 = buforH_SPI;
while(!(UCSR1A&(1<<5)));
//_delay_us(400);
UDR1 = buforL_SPI;
while(!(UCSR1A&(1<<5)));
//_delay_us(400);
UDR1 = END_PRAD; //0b00100000
// ************* Koniec Prad *************
// ************* Wysyłanie prdkosci obrotowej *************
while(!(UCSR1A&(1<<5)));
//_delay_us(400);
UDR1 = START_OBROTY; //0b00001000
obroty=(obroty*2)/3; //Obliczanie obr/sec dla 3 łopat
while(!(UCSR1A&(1<<5)));
//_delay_us(400);
UDR1 = obroty;
while(!(UCSR1A&(1<<5)));
//_delay_us(400);
UDR1 = END_OBROTY; //0b00010000
// ************* Koniec prdkosci obrotowej *************
}
// ************* Koniec Danych *************
dosyć szybko i dosyć sporo ;). Bray terminal dostaje dobre dane które od razu są wyświetlane dobrze. Mój program odświeża dane po jakiś 5 sekundach albo dłużej. (nie zawsze taki sam czas).