Устройство КС-017А-1 на перфоленте

61732
Offline
Зарегистрирован: 11.10.2020

Второе раскомментировано.

nik182
Offline
Зарегистрирован: 04.05.2015

Если второй раскомментировано, то сегодня нет наводки на СД. 

nik182
Offline
Зарегистрирован: 04.05.2015

На раскомментированной версии все контакты есть. Наводки на СД нет. Собственно всё уже сделано. Осталось понять, почему не сработала программа при третьем прерывании по УПР. Отсюда я не могу ничего отследить.  стрелки показывают фронты УПР первый и третий, по которым согласно строки 79 программы мы должны выставить СД (маленькая левая стрелка) и отбомбиться единицами. Первый раз всё проходит штатно переменная nu инкриминируется. Второй раз (nu=1) тоже штатно. А вот третье прерывание (nu=2) не срабатывает как должно. В этом проблема. На картинке логера после третьего восходящего фронта УПР все сигналы должны быть как и после первого восходящего. Можете ли Вы самостоятельно разобраться с этой проблемой? Добавляя в программу вывод в консоль значение переменных nu и других в нужных местах?   

nik182
Offline
Зарегистрирован: 04.05.2015

Нашёл ошибку. Поменяйте строки 88 и 89 местами. И прогоните раскомментированный вариант.

61732
Offline
Зарегистрирован: 11.10.2020
nik182
Offline
Зарегистрирован: 04.05.2015

Наводка на СД. Закомментируйте чтение и один канал логера переставьте на СД ногу УНЫ. Идеально, если ногу СД (D2) уны подключить через НЧ фильтр - 50 Ом на шину СД и 100 пФ между землёй УНЫ и D2. Это для раскомментированной версии.  

61732
Offline
Зарегистрирован: 11.10.2020
nik182
Offline
Зарегистрирован: 04.05.2015

А написать что это сил нет? Я должен догадываться при каких условиях был снят лог? Вы можете ответить, у Вас есть хоть какое-нибудь понимание, что происходит? Я уже писал, что я не могу ничего делать руками у Вас. Вам необходимо добиться, что бы программа сработала как магнитофон. Сейчас она написана так, что заменяет магнитофон полностью, от начала до конца. Даже данные вливает и обеспечивает хвост - конец обмена и останов. Проблема только в соединении УНЫ и системы. На логах хорошо видны наводки на разных линиях - например на последнем логе четвёртый импульс на НГП длиной 49 нс (!), который срывает УПР и всю остальную логику обмена. Не вижу смысла делать что то ещё, пока всё не вернётся хотя бы к виду файла "24 MHz, 1 B Samples [5](2).logicdata". Если сможете повторить такую же осциллограмму с переставленными строками 88,89 (89 - должна быть nu++;) то пишите. Раньше не стоит.    

61732
Offline
Зарегистрирован: 11.10.2020

Понял виноват! Как сделаю отпишусь.

61732
Offline
Зарегистрирован: 11.10.2020

Просто заново перебрал провода, поменял ардуину, залил скетч и забыл переставить строки. Завтра все исправлю.

nik182
Offline
Зарегистрирован: 04.05.2015

Вам надо взять какой нибудь разьём - папу-маму как минимум с 30 пинами и сделать выход с шин ЦВМ шлейфом так, чтобы на каждую сигнальную линию приходился как минимум один пин земли. Если нет шлейфа, то можно использовать витые пары из нитернет кабеля. И собирать соответственно - каждый второй пин разъёма должен быть земля, что бы экранировать провода с сигналами друг от друга. И собирать в одну точку все земли шлейфа надо на какой то точке ЦВМ, где есть большой болт на металлический каркас и к которому подводится толстым проводом земля из цифровой схемы. После сборки намертво закрепить разъём и втыкать в него провод от ардуины. Со стороны  ардуины земли должны быть соединены в точке, куда приходит питание. Это даст хоть какую то надежду, что наводки будут не сильно мешать. Все провода должны быть паяные. Никаких скруток, дюпонов и прочих соединителей. Это и для будущего будет полезно. Для конечного изделия. Сейчас я с прискорбием вижу, что главной проблемой являются контакты и неправильный монтаж.  

Так же пора определиться, что Вы хотите иметь со стороны ардуины - нужен ли экранчик, кнопки, гнездо для СД карты с программами ЦВМ, или просто ардуина подключена а компьютеру как адаптер замены магнитофона. Если последнее, то на каком расстоянии ардуина и комп, по какому протоколу будет общение. 

61732
Offline
Зарегистрирован: 11.10.2020

СЦВМ выдаёт пока постоянно  ошибку, какой-то глюк пока разбираюсь, ну и конечно  проводами занимаюсь. 

Когда работаем без магнитофона, а с ардуино загорается красная кнопка на СЦВМ  "Неисправность " - это понятно. Но чтобы сбросить ошибку нужно подключить магнитофон, по другому она не сбрасывается. Поэтому каждый раз приходится дергать эти провода чтобы отсоединить или присоединить к магнитофону, поэтому  каждый раз что то разное, нет покоя проводам.

nik182
Offline
Зарегистрирован: 04.05.2015

Я ж предложил подпаять отдельный разъём для платы. Потраченное время с лихвой окупится. От магнитофона достаточно будет отключать только разъем с НГП НПД УПР СД. Питание ардуины надо бы по хорошему от трансформаторного блока питания мощностью не менее 50 Вт с выходом 9 вольт на Vin. Это избавит от кучи проблем, в том числе и с наводками.

Если Вы опишите как снимаете ошибку и снимите логером процесс снятия ошибки, то не вижу проблем написать кусок кода, который будет отрабатываться, например при замкнутых кнопкой или ждампером ног А3 А4, и снимать ошибку без переключений. Но мне казалось, что нажать ресет или передёрнуть питание ЦВМ  проще. Или это трудно и опасно для ЦВМ?     

61732
Offline
Зарегистрирован: 11.10.2020

Если отключить питание  СЦВМ для обнуления ошибки, когда  отключен магнитофон, ошибка  при включении остаётся и никаким способом не сбрасывается.

Если, когда горит ошибка подключить магнитофон и нажать  кнопку исходное положение, ошибка  сбрасывается.

Вот, что показал логер по второму варианту:

https://cloud.mail.ru/public/jZnp/s4ZMthp8B

 

 

 

 

nik182
Offline
Зарегистрирован: 04.05.2015

Сделать сброс ошибки очень просто. Нужно только точно послать ту цифру, которую  посылает магнитофон - от посылает только одну. Её надо снять логером с шины данных ЛД0-ЛД7. Можно параллельно УНОЙ программой #180, поставив в строке 57  nc>0. И скажите как вам удобнее кнопку сброс - с А3 на А4 или с А3 на землю?   

nik182
Offline
Зарегистрирован: 04.05.2015

Поправленная программа со сбросом ошибки. Кнопка с А3 на землю или А4, что удобнее. Срабатывает при отпускании кнопки. Можно проверить логером на соответствие магнитофону.

/***********************************************************
  Подключение:
  СД  - 2
  НПД - A0
  НГП - A1
  УПР - 3
  KнП - 4
  ЛД0 - 7
  ЛД1 - 6
  ЛД2 - 13
  ЛД3 - 12
  ЛД4 - 11
  ЛД5 - 10
  ЛД6 - 9
  ЛД7 - 8
***********************************************************/
const byte INT_SD = 0; // Номер прерывания синхроимпульсов.
const byte INT_UPR = 1; // Номер прерывания УПР.
const byte NPD = 14; // Пин НПД A0.
const byte NGP = 15; // Пин НГП A1.
const byte SD = 2; //  Пин Данные действительны.
const byte UPR = 3; // Пин для сигнала УПР.
const byte KnP = 4; //  Пин Данные действительны.

const byte nz=8; // Количество запросов магнитофона.

const unsigned char MASK = 0b11000000; // Маска для формирования байта.

volatile bool flStart = false, i0 = false, i1 = false;
volatile unsigned char Ch = 0, nc, nn = 0, stat = 0, nu = 0;
volatile boolean flBuf = false, flUPR = false, flCh = false;
volatile uint32_t tm, tmo, dt, tmd;
char buf[32];
uint32_t tb[150];
uint8_t bb[150], cb[150], nhex;
uint8_t ib[] = {0xFD, 0xFB, 0x83, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFB, 0xFD, 0xFB, 0x83, 0x01,
                0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFB, 0xFD,
                0xFB, 0x85, 0x010, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0xF1,
                0xF1, 0x01, 0x01, 0x01, 0x19, 0x01, 0xFD, 0x19, 0x83, 0x01, 0x98, 0xFB, 0x45, 0x40, 0xFD, 0x43, 0x00
               };
uint8_t ic[] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
                1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0
               };

void setup()
{
  PORTB = 0;
  PORTC = 0;
  PORTD = 0;
  DDRB = 0x0;
  DDRC = 0x0;
  DDRD = 0x0;
  
  if (!i0) { EIFR = bit (INTF0); attachInterrupt(0, input_char, FALLING); i0=true;};
  if (!i1) { EIFR = bit (INTF1); attachInterrupt(1, i_UPR, RISING); i1=true;};

  Serial.begin(115200);
  Serial.println(" ");
  Serial.println("Start test:");

  pinMode( A4, OUTPUT );   
  digitalWrite(A4, LOW );
}

void input_char ()
{
  bitSet(DDRC, 1); //НГП
  delayMicroseconds(1);
  Ch = ~((PINB & ~MASK) | (PIND & MASK));
  bitSet(DDRC, 0); //НПД
  delayMicroseconds(1);
  bitClear(DDRC, 0); //НПД
  bb[nn]=Ch;
  cb[nn]=(PIND & 0x8);
  nn++; if (nn>149) nn=148;
  flCh = true; 
  bitClear(DDRC, 1); //НГП
}

void i_UPR ()
{
  if (nu==0 || nu==2) 
  {
  bitSet(DDRD, 7); // ЛД7 = 1
  if (i0) {detachInterrupt(0); i0=false;};
  bitSet(DDRD, SD);
  delayMicroseconds(1);
  while ((bitRead(PINC, 0) == 0 ) && (nc < 250)) nc++; //Пока HПД_0 == 0 ждём или таймаут  
  bitClear(DDRD, SD);
  flUPR = true;
  }
  nu++;
}


void send_dc(byte d)
{
  byte nc;
  if ((d & 0x1) != 0) DDRD |= 0x80;
  if ((d & 0x2) != 0) DDRD |= 0x40;
  if ((d & 0x4) != 0) DDRB |= 0x20;
  if ((d & 0x8) != 0) DDRB |= 0x10;
  if ((d & 0x10) != 0) DDRB |= 0x8;
  if ((d & 0x20) != 0) DDRB |= 0x4;
  if ((d & 0x40) != 0) DDRB |= 0x2;
  if ((d & 0x80) != 0) DDRB |= 0x1;
  nc=0;
  bitSet(DDRD, SD);
  delayMicroseconds(1);
  while ((bitRead(PINC, 0) == 0 ) && (nc < 250)) nc++; //Пока HПД_0 == 0 ждём или таймаут  
  bitClear(DDRD, SD);
  DDRD |= 0xC0;
  DDRB |= 0x3F;
}
void loop()
{
    if (flUPR)
    {
    PORTB = 0;
    PORTC = 0;
    PORTD = 0;  
    while (((PIND & 0x8)!=0) && ((PIND & 0x10)!=0)) // Пока нет УПР или КнП посылаем 0х1 
    {
        byte nc=0; 
        while ((bitRead(PINC, 1) == 0) && (nc < 250)) nc++; //Пока HГП_1 == 0 ждём или таймаут  
        send_dc(1);  delayMicroseconds(3);
    };
    if (!i0) { EIFR = bit (INTF0); attachInterrupt(0, input_char, FALLING); i0=true;};
    flUPR = false;
    if (!flStart) {cli();tmo=millis();sei(); flStart=true;};
    };
  if (nu==9)
  { 
   if (i0) {detachInterrupt(0); i0=false;};
   if (i1) {detachInterrupt(1); i1=false;};
   for ( int i = 0; i < 1000; i++) {  delayMicroseconds(25);send_dc(0);};
   delayMicroseconds(20);
   bitSet(DDRD, UPR);
   send_dc(0x43);
   delayMicroseconds(120);
   bitClear(DDRD, UPR);
   delayMicroseconds(120);
   bitSet(DDRD, UPR);
   send_dc(0x43);
   delayMicroseconds(120);
   bitClear(DDRD, UPR);
   if (!i0) { EIFR = bit (INTF0); attachInterrupt(0, input_char, FALLING); i0=true;};
   delayMicroseconds(800);
   if (nn>0) for ( byte i = 0; i < nn; i++)     
    {
      if (i0) {detachInterrupt(0); i0=false;};
      sprintf(buf, "%d %c %X", i,((cb[i] != 0 ) ? 'd' : 'c' ), bb[i]);
      Serial.println(buf);
    }
     else Serial.println("No data");
     Serial.println("Stop");
     if (i0) {detachInterrupt(0); i0=false;};
     DDRD = 0x0;
     DDRB = 0x0;
     DDRC = 0x0;
     
     while(1);
  }
  if (flStart)
  { 
    cli();
    tm=millis();
    sei();
    if (( tm -tmo ) > 5000L)
    {
      if (nn>0) for ( byte i = 0; i < nn; i++)     
      {
        sprintf(buf, "%d %c %X", i,((cb[i] != 0 ) ? 'd' : 'c' ), bb[i]);
        Serial.println(buf);
      }
      else Serial.println("No data");
     Serial.println("Stop");
     DDRD = 0x0;
     DDRB = 0x0;
     DDRC = 0x0;
     if (i0) {detachInterrupt(0); i0=false;};
     if (i1) {detachInterrupt(1); i1=false;};
     while(1);
    }
  }
  if (digitalRead(A3) == LOW) // Cброс ошибки при отпускании кнопки 
  {
    delay(50);
    if (digitalRead(A3) == LOW) 
    { 
     if (i0) {detachInterrupt(0); i0=false;};
     if (i1) {detachInterrupt(1); i1=false;};
      Serial.print("Reset Error... ");
      while (digitalRead(A3) == LOW); 
      bitSet(DDRD, UPR); 
      send_dc(0x01); 
      delayMicroseconds(1);
      bitClear(DDRD, UPR);
      DDRD = 0x0;
      DDRB = 0x0;
      DDRC = 0x0;
      if (!i0) { EIFR = bit (INTF0); attachInterrupt(0, input_char, FALLING); i0=true;};
      if (!i1) { EIFR = bit (INTF1); attachInterrupt(1, i_UPR, RISING); i1=true;};
      Serial.print("Done ");
  }
  }
}

 

61732
Offline
Зарегистрирован: 11.10.2020

Завтра попробую, отпишусь.

Спасибо.

nik182
Offline
Зарегистрирован: 04.05.2015

Подправил чуть - чуть. После сброса ошибки программа себя тоже обнуляет всё и ждёт сигнала от ЦВМ. Если сигнал пришёл, но что то пошло не так - максимальное время работы 1 минута и останов с выдачей полученных результатов.

/***********************************************************
  Подключение:
  СД  - 2
  НПД - A0
  НГП - A1
  УПР - 3
  KнП - 4
  ЛД0 - 7
  ЛД1 - 6
  ЛД2 - 13
  ЛД3 - 12
  ЛД4 - 11
  ЛД5 - 10
  ЛД6 - 9
  ЛД7 - 8
***********************************************************/
const byte INT_SD = 0; // Номер прерывания синхроимпульсов.
const byte INT_UPR = 1; // Номер прерывания УПР.
const byte NPD = 14; // Пин НПД A0.
const byte NGP = 15; // Пин НГП A1.
const byte SD = 2; //  Пин Данные действительны.
const byte UPR = 3; // Пин для сигнала УПР.
const byte KnP = 4; //  Пин Данные действительны.

const byte nz=8; // Количество запросов магнитофона.

const unsigned char MASK = 0b11000000; // Маска для формирования байта.

volatile bool flStart = false, i0 = false, i1 = false;
volatile unsigned char Ch = 0, nc, nn = 0, stat = 0, nu = 0;
volatile boolean flBuf = false, flUPR = false, flCh = false;
volatile uint32_t tm, tmo, dt, tmd;
char buf[32];
uint32_t tb[150];
uint8_t bb[150], cb[150], nhex;
uint8_t ib[] = {0xFD, 0xFB, 0x83, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFB, 0xFD, 0xFB, 0x83, 0x01,
                0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFB, 0xFD,
                0xFB, 0x85, 0x010, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0xF1,
                0xF1, 0x01, 0x01, 0x01, 0x19, 0x01, 0xFD, 0x19, 0x83, 0x01, 0x98, 0xFB, 0x45, 0x40, 0xFD, 0x43, 0x00
               };
uint8_t ic[] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
                1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0
               };

void setup()
{
  PORTB = 0;
  PORTC = 0;
  PORTD = 0;
  DDRB = 0x0;
  DDRC = 0x0;
  DDRD = 0x0;
  
  if (!i0) { EIFR = bit (INTF0); attachInterrupt(0, input_char, FALLING); i0=true;};
  if (!i1) { EIFR = bit (INTF1); attachInterrupt(1, i_UPR, RISING); i1=true;};

  Serial.begin(115200);
  Serial.println(" ");
  Serial.println("Start test:");

  pinMode( A4, OUTPUT );   
  digitalWrite(A4, LOW );
}

void input_char ()
{
  bitSet(DDRC, 1); //НГП
  delayMicroseconds(1);
  Ch = ~((PINB & ~MASK) | (PIND & MASK));
  bitSet(DDRC, 0); //НПД
  delayMicroseconds(1);
  bitClear(DDRC, 0); //НПД
  bb[nn]=Ch;
  cb[nn]=(PIND & 0x8);
  nn++; if (nn>149) nn=148;
  flCh = true; 
  bitClear(DDRC, 1); //НГП
}

void i_UPR ()
{
  if (nu==0 || nu==2) 
  {
  bitSet(DDRD, 7); // ЛД7 = 1
  if (i0) {detachInterrupt(0); i0=false;};
  bitSet(DDRD, SD);
  delayMicroseconds(1);
  while ((bitRead(PINC, 0) == 0 ) && (nc < 250)) nc++; //Пока HПД_0 == 0 ждём или таймаут  
  bitClear(DDRD, SD);
  flUPR = true;
  }
  nu++;
}


void send_dc(byte d)
{
  byte nc;
  if ((d & 0x1) != 0) DDRD |= 0x80;
  if ((d & 0x2) != 0) DDRD |= 0x40;
  if ((d & 0x4) != 0) DDRB |= 0x20;
  if ((d & 0x8) != 0) DDRB |= 0x10;
  if ((d & 0x10) != 0) DDRB |= 0x8;
  if ((d & 0x20) != 0) DDRB |= 0x4;
  if ((d & 0x40) != 0) DDRB |= 0x2;
  if ((d & 0x80) != 0) DDRB |= 0x1;
  nc=0;
  bitSet(DDRD, SD);
  delayMicroseconds(1);
  while ((bitRead(PINC, 0) == 0 ) && (nc < 250)) nc++; //Пока HПД_0 == 0 ждём или таймаут  
  bitClear(DDRD, SD);
  DDRD |= 0xC0;
  DDRB |= 0x3F;
}
void loop()
{
    if (flUPR)
    {
    PORTB = 0;
    PORTC = 0;
    PORTD = 0;  
    while (((PIND & 0x8)!=0) && ((PIND & 0x10)!=0)) // Пока нет УПР или КнП посылаем 0х1 
    {
        byte nc=0; 
        while ((bitRead(PINC, 1) == 0) && (nc < 250)) nc++; //Пока HГП_1 == 0 ждём или таймаут  
        send_dc(1);  delayMicroseconds(3);
    };
    if (!i0) { EIFR = bit (INTF0); attachInterrupt(0, input_char, FALLING); i0=true;};
    flUPR = false;
    if (!flStart) {cli();tmo=millis();sei(); flStart=true;};
    };
  if (nu==9)
  { 
   if (i0) {detachInterrupt(0); i0=false;};
   if (i1) {detachInterrupt(1); i1=false;};
   for ( int i = 0; i < 1000; i++) {  delayMicroseconds(25);send_dc(0);};
   delayMicroseconds(20);
   bitSet(DDRD, UPR);
   send_dc(0x43);
   delayMicroseconds(120);
   bitClear(DDRD, UPR);
   delayMicroseconds(120);
   bitSet(DDRD, UPR);
   send_dc(0x43);
   delayMicroseconds(120);
   bitClear(DDRD, UPR);
   if (!i0) { EIFR = bit (INTF0); attachInterrupt(0, input_char, FALLING); i0=true;};
   delayMicroseconds(800);
   if (nn>0) for ( byte i = 0; i < nn; i++)     
    {
      if (i0) {detachInterrupt(0); i0=false;};
      sprintf(buf, "%d %c %X", i,((cb[i] != 0 ) ? 'd' : 'c' ), bb[i]);
      Serial.println(buf);
    }
     else Serial.println("No data");
     Serial.println("Stop");
     if (i0) {detachInterrupt(0); i0=false;};
     DDRD = 0x0;
     DDRB = 0x0;
     DDRC = 0x0;
     
     while(1);
  }
  if (flStart)
  { 
    cli();
    tm=millis();
    sei();
    if (( tm -tmo ) > 60000L)
    {
      if (nn>0) for ( byte i = 0; i < nn; i++)     
      {
        sprintf(buf, "%d %c %X", i,((cb[i] != 0 ) ? 'd' : 'c' ), bb[i]);
        Serial.println(buf);
      }
      else Serial.println("No data");
     Serial.println("Stop");
     DDRD = 0x0;
     DDRB = 0x0;
     DDRC = 0x0;
     if (i0) {detachInterrupt(0); i0=false;};
     if (i1) {detachInterrupt(1); i1=false;};
     while(1);
    }
  }
  if (digitalRead(A3) == LOW) // Cброс ошибки при отпускании кнопки 
  {
    delay(50);
    if (digitalRead(A3) == LOW) 
    { 
     if (i0) {detachInterrupt(0); i0=false;};
     if (i1) {detachInterrupt(1); i1=false;};
      Serial.print("Reset Error...Free Button! ");
      while (digitalRead(A3) == LOW); 
      bitSet(DDRD, UPR); 
      send_dc(0x01); 
      delayMicroseconds(1);
      bitClear(DDRD, UPR);
      DDRD = 0x0;
      DDRB = 0x0;
      DDRC = 0x0;
      if (!i0) { EIFR = bit (INTF0); attachInterrupt(0, input_char, FALLING); i0=true;};
      if (!i1) { EIFR = bit (INTF1); attachInterrupt(1, i_UPR, RISING); i1=true;};
      flStart = false; flUPR = false; flCh = false;
      nu=0;
      Serial.print("Done ");
  }
  }
}

 

61732
Offline
Зарегистрирован: 11.10.2020

Сегодня ничего не получилось,  Проверка на работу приезжала, так немного только провода подпаял.

61732
Offline
Зарегистрирован: 11.10.2020

Провода укоротил до минимума, подключался к разъему, который идёт на магнитофон. Использовал новый шлейф из зипа.

При включении ардуино на мониторе сразу появилось:

При нажатии на кнопку на пульте для загрузки программы:

Неисправность осталась гореть, кнопка не реагирует во время нажатия, логанализатор ничего не показал.

61732
Offline
Зарегистрирован: 11.10.2020

Скетч из #298 закоментированный:

nik182
Offline
Зарегистрирован: 04.05.2015

A3 должен быть подтянут к через резистор в несколько килоом к +5. Можно добавить   pinMode( A3, INPUT_PULLUP );  в сетап, но боюсь в будущем с этим могут возникнуть проблемы из за частых переопределений регистров.  

Наводка на СД присутствует. Подключите ногу СД УНЫ  через фильтр - резистор 50 Ом на шину и конденсатор 200 - 500 пикофарад от ноги СД уны на землю. 

З.Ы. НГП должен быть чистым - сколько СД - столько НГП. Если вылазят лишние НГП - это видно в начале последнего рисунки, значит прилетели наводки на ногу СД УНЫ. Повторяю ещё раз. Эта хрень происходит, когда УПР имеет низкий уровень. Надо копать где то там. 

nik182
Offline
Зарегистрирован: 04.05.2015

Такие наводки чаще всего возникают при не правильной разводке земляных проводов. Все элементы схемы должны быть заземлены в одной точке - физически связанной с настоящей землёй, которая идёт к заземлителю. Если такое соединение невозможно, то надо выбрать точку с максимальной массой земли, объявить её землёй и тянуть все провода массы к ней. Особенно корпус компьютера к которому подключена УНА и логер. Корпус компьютера под винт около блока питания соединяется с толстым проводом, а второй конец провода соединяется с массой ЦВМ не далеко от точки, от которой отходят шлейфы шины. Если это не поможет, остаётся только батарейное питание УНЫ. От ноутбука, который не соединён с сетью, ни силовой ни информационной. И логер тоже должен быть подключён к этому ноуту.  

61732
Offline
Зарегистрирован: 11.10.2020

Я пытаюсь уже любыми способами. Завтра на контур цеха напрямую землю кину. С кнопкой сегодня ничего не получилось резистор на 2 кОм подтянутый на +5. Логанализатор не увидел сигнала. 

nik182
Offline
Зарегистрирован: 04.05.2015

Контур это в самую последнюю очередь. Первое, надо корпус компьютера соединить с землёй ЦВМ. Если возможно, попробовать ноутбук только от батареи. Фильтр на СД поставить. Плату поменять на вторую. Попробовать без подключения логера. После Остановки программы в выводе не должно быть нулей, которые присутствуют в #297. Если не будет, то значит логер что то даёт. Его входы можно попробовать подключить через резисторы 1к, предварительно проверить не вредит ли он при подключении только одной земли. Как видите есть много вариантов исправления проблемы.

Про  кнопку не понял. На А3 должно быть +5 в нормальном состоянии и 0 при нажатии кнопки. При отпускании кнопки логер долен зафиксировать осциллограмму как с магнитофоном при сбросе ошибки.  

nik182
Offline
Зарегистрирован: 04.05.2015

Есть какие-нибудь новости? Может совет какой дать? Пока одна идея. При подключенном магнитофоне проблем нет. Надо подключить магнитофон и обрезать у него провод с сигналом УПР и подключить УПР магнитофона к +3.3 вольта через резистор 1к. Магнитофон не будет реагировать на команды, а  остальная шина будет нагружена. Возможно это причина - не хватает нагрузки шины и по ней летает что то. 

61732
Offline
Зарегистрирован: 11.10.2020

Спасибо. Завтра попробую отпишусь.

61732
Offline
Зарегистрирован: 11.10.2020

Так управление вообще не хочет срабатывать.

nik182
Offline
Зарегистрирован: 04.05.2015

Ну вот. УПР идёт от ЦВМ. Подключать уну и логер надо до обрыва к магнитофону. Сейчас наводок на СД нет. Уже хорошо.
P.S. а может и не хорошо. Наводки были когда УПР был равен нулю. Так что посмотрим что получится.

61732
Offline
Зарегистрирован: 11.10.2020

Добрый день! Нам снова пришлось заняться магнитофоном, у нас новый штат и нам дали этот аккаунт для изучения всего, что было сделано, может быть вы нам поможете вникнуть и разобраться, спасибо!
Если вы можете нам помочь,что нам нужно сделать на данном этапе?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Старый штат, видима, расстреляли за ненадобностью. Страшная у вас контора. 

61732
Offline
Зарегистрирован: 11.10.2020

Так и есть, поэтому нужна помощь

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

Старый штат, видима, расстреляли за ненадобностью. Страшная у вас контора. 

да ну, на пенсию отправили, а это пришли новые эффективные менеджеры )))

SAB
Offline
Зарегистрирован: 27.12.2016

Помню,помню, когда в Новороссийском порту встали краны, потому что эффективный менеджеры продали запасные кабели питания (что предыдущее поколение берегло их как зеницу ока, потому что знали последствия). А эти сынки посчитали, а нафига громадные деньги лежат без дела, а давай толкнём. Вот и толкнули по дешевке, a при аварии потом порт  встал на пару дней, с миллионными убытками. Рейд тогда был до "горизонта" забит контейнеровозами.

nik182
Offline
Зарегистрирован: 04.05.2015

Про какую помощь идёт речь? Вроде ж добили практически до конца. Финальную точку только не поставили. Новый персонал что может руками делать? Осциллограф или анализатор подключить и снять показания в состоянии? 

61732
Offline
Зарегистрирован: 11.10.2020

nik182 пишет:

Про какую помощь идёт речь? Вроде ж добили практически до конца. Финальную точку только не поставили. Новый персонал что может руками делать? Осциллограф или анализатор подключить и снять показания в состоянии? 

Снять сигнал в ближайшее время анализатором вряд ли получится, т.к. СЦВМ в данный момент находится в состоянии активной работы. Есть старые сигналы, но в голове полнейшая каша, ибо поток информации вылился очень резко. Какие именно сигналы надо сейчас снять, на имеющийся рабочий скетч?

nik182
Offline
Зарегистрирован: 04.05.2015

Ну так приводите голову в порядок. А потом надо снять анализатором последние из темы сигналы, что бы убедиться, что всё в том же состоянии на котором остановились.    

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

61732 пишет:
Есть старые сигналы, но в голове полнейшая каша, ибо поток информации вылился очень резко.

Бегите, глупцы... 

61732
Offline
Зарегистрирован: 11.10.2020

nik182 пишет:

Ну так приводите голову в порядок. А потом надо снять анализатором последние из темы сигналы, что бы убедиться, что всё в том же состоянии на котором остановились.    

Хорошо, постараемся снять все в ближайшее время и отписать. Спасибо за отзывчивость и активность.