Считать импульс поступающего из коленчатового вала

Тема в разделе "Микроконтроллеры AVR", создана пользователем Yerabdi, 8 мар 2023.

  1. Рокки1945

    Рокки1945 Гуру

    Классно - а можно весь код - для ознакомления
     
  2. parovoZZ

    parovoZZ Гуру

    А зачем, если можно обнулить счётчик таймера?
     
  3. Yerabdi

    Yerabdi Гик

    А как можете подсказать
     
  4. parovoZZ

    parovoZZ Гуру

    ICRn = 0;
     
  5. Yerabdi

    Yerabdi Гик

    Код (C++):
    ISR (INT1_vect)
    {
        result_t3=TCNT3;
        result_t3<<=2;
        rpmcount=result_t3-pred_rpmcount;
        pred_rpmcount=result_t3;
    }
    //extern interrupt*******
        EIFR |=(1<<INTF1);
        EIMSK |=(1<<INT1);
        EICRA |=(1<<ISC11)|(0<<ISC10);
    //timer3****
         TCCR3B |= (1<<CS31)|(1<<CS30);// CLK/64,4mks
         TCNT3=0;
     
    Рокки1945 нравится это.
  6. Рокки1945

    Рокки1945 Гуру

    спасибо
    upload_2023-3-9_20-46-3.png
     
  7. Yerabdi

    Yerabdi Гик

    теперь чтобы найти отсутствие двух зубов, сделал такую логику rpmcount это период каждого импульса
    его каждый раз сохраняю.Текущий период импульса делю на 2 и сравниваю с прошлом периодом импульса так и находим отсутствие двух зубов.
    Для симмулятора датчика коленвала на ардуино написал код который дает такой же сигнал отсутствием двух зубов
     
    Рокки1945 нравится это.