Hej, Mam 8051EVB rev3.1 (8051RD2+TCP/IP+RS232). Mam problem z odbiorem bajtów z portu szeregowego. Odczytuje pierwszy bajt, potem gubi kilka bajtów, i reszta do konca juz dobrze. Zmniejszyłem prędkość z 2400 do 300 i nadal gubi bajty. Może czekanie na bajt 16h lub e5 powoduje takie opóźnienie? Może ktoś coś mi doradzić?
T89c51rd2 pracuje w trybie X2, Timer2 prędkość 300b, transmisja 9bit, asyn. void InitSerialT2_300(void) //x2 300b { SCON = 0xD2; ES = 0; RI=0; TI=0; T2CON=0x34; RCAP2H=TH2=0xf2; RCAP2L=TL2=0xfb; }
BYTE xdata odp[256]; //bufor odbioru ramki
Wysyłam bajty, for (j = 0; j < len; j++) PutByte(data_buf[j]);
urządzenie zewn. odbiera i "natychmiast" odpowiada
for( k1 = 0 ; k1 < 250 ; k1++) //oczekiwanie na dane okolo 2s { if(IsPressedKey() == 1) { do { while( !RI ); RI = 0; odp[ilosc] = SBUF; }//kończy się bajtem 16h lub E5h while((odp[ilosc] != 0x16) && (odp[ilosc++] != 0xE5)); break; } wait_1us(1000); //1ms }//for //Nastepnie wpisuje odebrane bajty do pamieci w3100 i wysłam przez tcp/ip for (k2 = 0; k2 <= ilosc; k2++) { LCDPutHTOA(odp[k2]); data_buf[k2] = odp[k2]; } send(i, data_buf, j);