मैं अपने डेस्कटॉप पर एक प्रोग्राम के साथ एक माइक्रोकंट्रोलर संवाद करने की कोशिश कर रहा हूं। मैं दोनों सिरों पर एक्सबी रेडियो के साथ सीरियल पोर्ट कनेक्शन का उपयोग कर रहा हूं।8051 में वायरलेस सीरियल-पोर्ट के साथ मैं लगातार भेज और प्राप्त कैसे करूं?
जब मैं माइक्रोकंट्रोलर से डेस्कटॉप पर कुछ भेजता हूं और डेस्कटॉप पर प्रोग्राम भेजता है तो संचार ठीक काम करता है तो फिर माइक्रोकंट्रोलर को कुछ भेजता है।
हालांकि, जब मुझे नियंत्रक से डेस्कटॉप प्रोग्राम तक लगातार जानकारी प्राप्त करने की आवश्यकता होती है जब तक कि डेस्कटॉप प्रोग्राम एक विशेष उत्तर नहीं भेजता है, यह काम नहीं करता है।
यहाँ मैं किस बारे में बात कर रहा हूँ के लिए कोड है:
unsigned char ans = 'N';
unsigned int count = 0;
void main(void)
{
while(1)
{
if(count == 0)
{
Configure();
count = 1;
}
//there is some more code here but is irrelevant to the serial communication
}
}
void Configure()
{
//Repeat this until the user accepts the sent string as correct
while(ans == 'N')
{
BuildString();
Send();
Receive();
}
}
void Send()
{
unsigned int i;
TMOD = 0x20;
TH1 = 0xFD;
SCON = 0x50;
TR1 = 1;
for(i=0; i<4; i++)
{
SBUF = toSend[i];
while(TI == 0);
TI = 0;
}
}
void Receive()
{
unsigned int j;
TMOD = 0x20;
TH1 = 0xFD;
SCON = 0x50;
TR1 = 1;
for(j=0; j<2; j++)
{
while(RI == 0);
Received[j] = SBUF;
RI = 0;
}
if(count == 0)
ans = Received[1];
else
{
RunType = Received[0];
Move = Received[1];
}
}
BuildString() फ़ंक्शन बस कुछ सेंसर आदानों के आधार पर एक स्ट्रिंग निर्माण करती है। प्रेषण और प्राप्त कार्य आमतौर पर ठीक काम करते हैं, लेकिन जब मुझे लगातार भेजने और प्राप्त करने की आवश्यकता होती है, जैसे उपरोक्त कॉन्फ़िगर() फ़ंक्शन में, यह काम नहीं करता है।
कोई सुझाव? मैं वास्तव में उनकी सराहना करता हूं।
एक त्वरित और गंदे हैक है कि अपने कोड और अधिक विश्वसनीय बनाने के लिए सीमित करने के लिए समय की राशि है जो आप आरआई के लिए इंतजार करेंगे सही पर सेट किया जा रहा है। एक चर को 65535 और कमी पर सेट करें। यदि आप बाइट प्राप्त करने से पहले 0 तक पहुंचते हैं, तो छोड़ दें और फिर से भेजने का प्रयास करें। यदि आपको वास्तव में अपने कोड के एक इंटरप्ट आधारित संस्करण की आवश्यकता है, तो मैं आपके लिए दस्तक दे सकता हूं - आम तौर पर ये अधिक विश्वसनीय होते हैं। –