Easyelectronics.ru • Просмотр темы - Прошу помощи - тестовый стенд CashCode MVU

Easyelectronics.ru

Электроника для всех
Текущее время: 18 авг 2018, 11:08

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 24 окт 2016, 21:19 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 03 фев 2010, 06:59
Сообщения: 80
Откуда: Иркутск
Есть такой купюроприемник - CashCode MVU, у него есть родственник - CashCode SM и MFL.
Работаю в сервисном центре, у них часто летят платы оптических датчиков. Купюрник в этом случае просто выдает Optic channel failure без всякой расшифровки. Платы ремонтировать очень сложно, хотя схемотехнически они очень простые. Дело в том, что там используются ацп на компараторах, и пока не сэмулируешь ситуацию, как ее видит купюрник – дело полный швах. Решил сделать прошивку для купюрника, немного отреверсить работу и замутить стенд. Рабочий процессор – msp430f149. Идея была такова – подавать импульсы в статическом режиме на светодиоды и снимать показания, как снимает купюрник. Но недостаточные знания в АЦП из компаратора и архитектуры msp430 вынудили обратиться к вашей помощи.
Вот схема системной платы:


Вложения:
1.gif
1.gif [ 248.1 Кб | Просмотров: 4805 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 24 окт 2016, 21:20 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 03 фев 2010, 06:59
Сообщения: 80
Откуда: Иркутск
Шина T1 – T3 универсальная, по ней идут данные с датчиков, она имеет подтяжку R36-R38.
LD0-LD5 как раз и управляет светодиодами на верхней и нижней плате, как я понял они работают на просвет и светодиоды с верхней платы светят на нижние датчики и наоборот.
Сигналы EXP_M и EXP_O подают опорное напряжение на компараторы верхней и нижней платы через ключи. Но почему то если отключить один сигнал, и управлять другим, то компараторы будто прижаты к земле, сигналов на выходе НЕТ. Всегда должны быть включены оба сигнала и управлятся отрицательными уровнями??? Длинна отрицательных импульсов – 200мкс. Блин, но в этом случае свои же светодиоды на одной плате будут засвечиваться своими же светодиодами??
Схема верхней платы:


Вложения:
2.gif
2.gif [ 171.52 Кб | Просмотров: 4803 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 24 окт 2016, 21:21 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 03 фев 2010, 06:59
Сообщения: 80
Откуда: Иркутск
И нижней:


Вложения:
3.gif
3.gif [ 236.75 Кб | Просмотров: 4803 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 24 окт 2016, 21:22 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 03 фев 2010, 06:59
Сообщения: 80
Откуда: Иркутск
Короче у меня тупак.
По режиму захвата таймера у MSP430 очень мало информации. Нарулил код:

Код:
#define TIMER_PERIOD 64000
#define TIMER_A_START (TA0CTL = TASSEL_1 + ID_0 + MC_1+ TACLR)
#define TIMER_A_STOP  (TA0CTL = TASSEL_1 + ID_0 + MC_0+ TACLR)

void Led_Check (uint8_t pin_out, uint8_t exp_on, uint8_t exp_off){
    t1=0;
    t2=0;
    t3=0;
  flag_end = 0;
 
  P6OUT |= exp_off;
  P5OUT |= pin_out; // Включаем LED
  //DELAY_US(200)

  P6OUT |= exp_on;  // Включаем EXP
  DELAY_US(200);
  P6OUT &= ~ exp_on;  // Ввыключаем EXP
  TACCTL1 &= ~CCIFG;
  TIMER_A_START;
  while (flag_end == 0){};
  P5OUT &= ~ pin_out;  // Выключаем LED
}

//Инициализация Таймера по возрастанию
void TA_init(void) {
    // Configure Timer A0 Compare interrupts
    TIMER_A_STOP;
    //TACTL  = TASSEL_1 + ID_0 + MC_0 + TACTL;// Регистр захвата. Тактируется от SMCLK, делитель не включен, считаем до CCR0, с223------------------------   
    //TIMER_A_STOP;
    TAR=0;
    TACCR0  = TIMER_PERIOD;           //  Присваеваем значение первому регистру - если датчик неисправен, вылетаем с нолем
    TACCTL0 =  CCIE;                       // Включаем препрывание
    //TACCR1 = 0;                            //  Присваеваем значение второму регистру
    TACCTL1 = CCIS_0 + CM_2 + CAP + SCS + CCIE;   // enable CC1 interrupt - включаем прерывание TACCTLx, Capture/Compare регистра     
    P1SEL = BIT1 + BIT2 + BIT3;  //выводы под таймер
   
   
}

#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A0_CC0(void)
{
    TIMER_A_STOP;
    flag_end=1; // конец измерений
    TACCTL0 &= ~CCIFG; // Reset CC interrupt flag
}


#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A1_CC1(void)
{
   if((t1==0)&&(P1IN & BIT1)==0){t1=TACCR1;} // Если ноль переменной и фронт упал, присваиваем значение  TACCR1
   if((t2==0)&&(P1IN & BIT2)==0){t2=TACCR1;}
   if((t3==0)&&(P1IN & BIT3)==0){t3=TACCR1;}
    TACCTL1 &= ~CCIFG;  // Reset CC interrupt flag
}




Код работает криво. Значения на каждый канал одинаковые , между каналами разница есть, но показывает на мой взгляд всякую чушь.., на свет реагирует, но не так, как я ожидаю, значения таймера не превышают 300 попугаев.
Так пока вопросов всего три.
• Каков правильный алгоритм захват значения на датчиков с компараторов?
• Почему выходы компараторов в дауне, когда откоючена одна из секций? Ведь на входе измеряемого канала есть опорное напряжение и измеряемый сигнал ниже его, на выходе должен быть высокий уровень..
• Как правильно сделать захват и измерить длину импульса на входе таймера А?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 24 окт 2016, 23:35 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1165
Компараторы с открытым коллектором, выходы соединены попарно, стоит только одному из пары быть в нуле - выход пары будет в нуле.
Зачем с программой маяться, выходы на разъёмах, не проще каким-то внешним анализатором диаграмму снять?

_________________
less is more


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 25 окт 2016, 06:08 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 03 фев 2010, 06:59
Сообщения: 80
Откуда: Иркутск
Да, да, я уже вспомнил про открытый коллектор, все верно. Второй вопрос прояснился. Анализатор не вариант. Как ты это представляешь? На рабочем аппарате очень трудно это сделать - очень короткие аналоговые импульсы, фиг что рассмотришь.

Как все-таки правильно делать захват таймером в MSP430?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 29 ноя 2016, 00:39 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 24 июл 2010, 20:40
Сообщения: 54
Откуда: Москва
Платы оптических датчиков ремонтируются просто, за исключением особых случаев..
При помощи лог. анализатора не проблема посмотреть как он видит кэш.

Выложи полную схему.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 13 дек 2016, 14:13 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 03 фев 2010, 06:59
Сообщения: 80
Откуда: Иркутск
Дело в том, что ошибка оптических датчиков - не самое страшное. Самое страшное - это Inhibit. Возинкает черт знает из за чего - куча причин. Несколько я знаю, но далеко не все. Сейчас лежит один SM, эта ошибка возникает из за платы магнитных датчиков, чего ему надо - непонятно.

Упращу задачу. Нужен код - таймер А в режиме захвата. Зазват с пинов 1.1, 1.2 и 1.3. Как не бился - не входит в прерывание и все. Прерывание должно быть по спаду фронта на соответсвующих пинах. То есть, запускаем таймер и ждем, когда фронт упадет на пине, считваем значение TAR или куда он там записываетя в режиме захвата. Микроконтроллер MSP480F149. Все работает, а захват - нет, мало опыта в этих контроллерах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 13 дек 2016, 14:20 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 03 фев 2010, 06:59
Сообщения: 80
Откуда: Иркутск
Полный альбом схем не влазит на форум, лень резать, там одни моторы и входная платка, но если сильно надо, порежу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 15 дек 2016, 13:10 
Заглядывает иногда

Зарегистрирован: 31 янв 2010, 16:53
Сообщения: 197
Откуда: Ижевск
Когда-то работал с MSP430F133. Посмотрите выжимку из программы частотомера на захвате.


Вложения:
Комментарий к файлу: ASM F133 частотомер на захвате
TEST_freq2000.txt [7.14 Кб]
Скачиваний: 88
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 15 дек 2016, 14:25 
Старожил

Зарегистрирован: 19 мар 2011, 05:05
Сообщения: 2418
о, а правда можно склеивать купюры, и приёмник их скушает? я бы, наверное, ещё и такой стенд сваял.. :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 16 дек 2016, 08:52 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 03 фев 2010, 06:59
Сообщения: 80
Откуда: Иркутск
Цитата:
Когда-то работал с MSP430F133. Посмотрите выжимку из программы частотомера на захвате.


На асме, как жалко, я только с Си дружу, Попробую разобратся...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 16 дек 2016, 21:30 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 24 июл 2010, 20:40
Сообщения: 54
Откуда: Москва
Плата магнитных датчиков никакого отношения к Inhibit'у не имеет, эту ошибку вызывает входная или процессорная плата, часто достаточно передернуть
шлейф входной платы для того что бы она пропала.

Схема для CashCode MSM у тебя есть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 20 дек 2016, 08:28 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 03 фев 2010, 06:59
Сообщения: 80
Откуда: Иркутск
westbam писал(а):
Плата магнитных датчиков никакого отношения к Inhibit'у не имеет, эту ошибку вызывает входная или процессорная плата, часто достаточно передернуть
шлейф входной платы для того что бы она пропала.

Схема для CashCode MSM у тебя есть?



Тем не менее, когда меняем плату магнитных датчиков на новую - все отлично работает.

Для MSM схем нет, таких аппаратов не попадалось, но эти аппараты очень похожи на SM, для них схемы есть, схемотехника та же как и MVU, только узела изменения ширины банкноты нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 20 дек 2016, 12:18 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 03 фев 2010, 06:59
Сообщения: 80
Откуда: Иркутск
Вот такой код получился. Вроде работает, но не могу понять, почему на первом пине захвата прерывание срабатывает а TAIV равен нулю??? На втором и третем 2 и 4 соответственно. Странно как-то может кто объяснит а то спать не могу спокойно. Обратотчик первый соответственно обрабатывает перый пин а второй - следующие два. Ничего не понимаю. В прерывания входит отлично, тестовые сообщения отправляются.

Код:
// Led_Check (Пин леда,  Пин exp, Пин прерывания таймера в режиме захвата);
uint16_t Led_Check (uint8_t pin_out,  uint8_t pin_exp, uint8_t port_interrupt){
 
  P5OUT |= pin_out; // Включаем LED
  flag_end = 0;
  P1SEL |= port_interrupt;  // конфигуроим входной пин
 
  switch (port_interrupt){ // Настраиваем прерывания, режим захвата таймера
    case BIT1: TACCTL0 = CM_2 + CCIS_0 + SCS + CAP + CCIE; TACCR0=0;
    case BIT2: TACCTL1 = CM_2 + CCIS_0 + SCS + CAP + CCIE; TACCR1=0;
    case BIT3: TACCTL2 = CM_2 + CCIS_0 + SCS + CAP + CCIE; TACCR2=0;
  }
 
  __enable_interrupt(); // Вклюсаем прерывания
  Delay_Long(100); //Чутка потупим

    TIMER_A_START;  //  Включаем таймер
    P6OUT &= ~ pin_exp;  // Выключаем EXP - начало экспозиции
 
    while (flag_end==0){}; // ждем пока не сработает прерывание
   
    // Возвращаем все в исходное состояние
   TIMER_A_STOP;
  __disable_interrupt();
   switch (port_interrupt){
    case BIT1: TACCTL0 &= ~ CCIE;
    case BIT2: TACCTL1 &= ~ CCIE;
    case BIT3: TACCTL2 &= ~ CCIE;
  }
  P1SEL &=~ port_interrupt;
  P6OUT |= pin_exp; //Включаем EXP
  P5OUT &= ~ pin_out; // Выключаем LED
  return t_all;  // значение меняется в прерываниях таймера
}




// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0 (void)
{
  t_all=TAIV; //Считываем TAIV заодно сбрасываем его, блин 0 всегда
  t_all=TACCR0;
  flag_end = 1;
  //SendStr ("INT_0");
}

// Timer A0 interrupt service routine
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1 (void)
{
    t_all=TAIV; //Считываем TAIV заодно сбрасываем его, в зависимости от пина 2 или 4
    if (t_all==2) t_all=TACCR1;
    if (t_all==4) t_all=TACCR2;
    flag_end = 1;
     //SendStr ("INT_1");
}



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 22 дек 2016, 00:48 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 24 июл 2010, 20:40
Сообщения: 54
Откуда: Москва
Omul писал(а):
westbam писал(а):
Плата магнитных датчиков никакого отношения к Inhibit'у не имеет, эту ошибку вызывает входная или процессорная плата, часто достаточно передернуть
шлейф входной платы для того что бы она пропала.

Схема для CashCode MSM у тебя есть?



Тем не менее, когда меняем плату магнитных датчиков на новую - все отлично работает.

Для MSM схем нет, таких аппаратов не попадалось, но эти аппараты очень похожи на SM, для них схемы есть, схемотехника та же как и MVU, только узела изменения ширины банкноты нет.


Проверь емкостной датчик.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 10 фев 2017, 07:58 
Здравствуйте!

Зарегистрирован: 09 фев 2017, 06:33
Сообщения: 1
на какой стадии проэкт ? интересно каким образом будете анализировать полученные с компараторов данные, ведь выходы компараторов верхней и нижней платы оптических датчиков запараллелены


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 22 фев 2017, 12:05 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 03 фев 2010, 06:59
Сообщения: 80
Откуда: Иркутск
Пока вроде все работает, платы нужные мне отремонтировал, подзаморозил проект. Анализ данных был по сравнению с исправными платами. Выходы запаралелены, да, но они подтянуты к плюсу, а выход компараторов - открытый коллектор и замер включатеся через ключи на каждом канале, все отлично развязывается и читается. Была идея полключить на кабель мордочки кэшкода дисплеей от нокии, и клавиатуру, чтобы автономно стенд работал,но пинов мало, пока думаю что делать. Заказал у китайцев отладочную плату под проц как в кешкоде, эксперрементирую, MSP мне стали нравится...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB