Иногда бессистемно отваливается serialEvent, чтобы это могло бы быть ?

Нет ответов
vlkam
Offline
Зарегистрирован: 17.02.2013

 К Ардуино Меге прикручен GSM модем. Прикручен через согласователь уровней  MAX232 и подключен к Serial2

Ардуинка ждет звонков ожидая вызова функции  serialEvent2

#define GSMSerial Serial2				// Серийный порт к которому подключен GSM модем
#define GSMSerialEvent serialEvent2		// функция события GSM модема

#define GSM_BUFFER_SIZE		250
char GSMbuffer[GSM_BUFFER_SIZE];
int  GSMBufer_curpoz = 0;

void GSMSerialEvent(){
	
	while(GSMSerial.available()){
		char inChar = (char)GSMSerial.read();
		if(inChar == '\n'){
			continue;
		}
		if(inChar == 0){
			continue;
		}
		if ( (inChar == '\r') || (GSMBufer_curpoz == (GSM_BUFFER_SIZE - 2))) {
			if(GSMBufer_curpoz == 0){
				continue;
			}
			GSMbuffer[GSMBufer_curpoz] = 0;
			if(GSMBufer_curpoz == (GSM_BUFFER_SIZE - 2)){
				Log("GSMbuffer is overflow");
			}
			GSMEvent();
			GSMBufer_curpoz = 0;
			continue;
		}
		GSMbuffer[GSMBufer_curpoz] = inChar;
		GSMBufer_curpoz ++;
	}
}

И чаще всего эта функция вызывается. Но иногда, когда у неё плохое настроение, она перестается вызываться, хотя диод передачи данных от модема мигает

чтобы это могло бы быть ?