Проверка кода.

Wyxapt
Offline
Зарегистрирован: 18.08.2016

Добрый день.
Возникла ситуация. Необходимо передать данные в ком порт устройства, после задержки на инициализацию.
Была написанна программа, но что-то не заладилось.
Требуется 6 раз отослать по 2 пакета ( pas, pas1), потом 1 раз отослать ok,ok1. Если потребуется то отсылается и пакет skip.
Все пакеты по отдельности отправляются нормально, но вместе программа отрабатывает только первый цикл. почему-то отсылает 2 раза заголовок пакетов (0хАА) и стопится.
Где может быть косяк?
АТмега8А, внутренний 8МГц.

void setup() {
  Serial.begin(115200);
}
void loop() {
char pas[]={0xAA,0x73,0x01,0x92,0x01,0x6C,0xCC,0x33,0xC3,0x3C,'\0'};                                            // Первый пакет данных 0
char pas1[]={0xAA,0x72,0x01,0x92,0x01,0x6C,0xCC,0x33,0xC3,0x3C,'\0'};                                           // Второй пакет данных 0
char ok[]={0xAA,0x73,0x01,0xE5,0x01,0xAF,0xCC,0x33,0xC3,0x3C,'\0'};                                          // Первый пакет данных 1
char ok1[]={0xAA,0x72,0x01,0xE5,0x01,0xAF,0xCC,0x33,0xC3,0x3C,'\0'};                                            // Второй пакет данных 1
char skip[]={0xAA,0x70,0x0F,0xCC,0x33,0xC3,0x3C,'\0'};
int i=0, j=0;
 delay (13500);
 for (int i=0; i<6; i++){                              // отправка пакета 0 , 6 раз
 for (int j=0; j<10; j++){                      // побайтная отправка первого пакета 0
  Serial.write(pas[j]);
 }
 delay(150);                                     //задержка 150 мс
 for (int j=0; j<10; j++){                      // побайтная отправка второго пакета 0
  Serial.write(pas1[j]);  
 }
 Serial.flush();
 }
 delay(100);
 for (int i=0; i<1; i++){
 for (int j=0; j<10; j++);{
  Serial.write(ok[j]);                 // побайтная отправка 1 пакета 1
 }
 delay(100);
 
 for (int j=0; j<10; j++);{
 Serial.write(ok1[j]);                // побайтная отправка 2 пакета 1
 }
 }
 delay(100); 
 //for (int i =0; i<7; i++){
 // Serial.write(skip[i]); 
// }
 while(1);
}

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Это, как я понимаю кусочек программы? Или она работает у Вас именно в таком виде? Т.е. кратинка с результатами точно от этой программы безо всяких изменений?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Строки 24 и 29 - чушь. Там точка с запятой ненужная. Это как минимум, чего заметил.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DIYMan пишет:

Строки 24 и 29 - чушь. Там точка с запятой ненужная. Это как минимум, чего заметил.

А, так потому такая хрень и происходит - как раз два байта (первые) передаются, и больше ничего. Отлично! А я не заметил этого.