Easyelectronics.ru

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

Часовой пояс: 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 Кб | Просмотров: 5034 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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 Кб | Просмотров: 5032 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи - тестовый стенд CashCode MVU
СообщениеДобавлено: 24 окт 2016, 21:21 
Заглядывает иногда
Аватара пользователя

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


Вложения:
3.gif
3.gif [ 236.75 Кб | Просмотров: 5032 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 1331
Компараторы с открытым коллектором, выходы соединены попарно, стоит только одному из пары быть в нуле - выход пары будет в нуле.
Зачем с программой маяться, выходы на разъёмах, не проще каким-то внешним анализатором диаграмму снять?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 198
Откуда: Ижевск
Когда-то работал с MSP430F133. Посмотрите выжимку из программы частотомера на захвате.


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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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 часов


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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