Hirdetés

Új hozzászólás Aktív témák

  • ecaddsell

    aktív tag

    válasz ecaddsell #9932 üzenetére

    Szóval ha fix szélességű impulzusokat ad akkor valami ilyesmi kellene (tudni kellene, hogy HIGH, vagy LOW a pulzus értéke):
    #define MINPLENGTH 15000
    void szamlalo(){
    volatile static uint32_t thi = 0, tlo=0, tm = 0;
    uint32_t td, ctm = micros();

    td = ctm - tm;
    tm = ctm;
    if (digitalRead(PULSE_ENC)) tlo += td;
    else thi += td;

    if(thi > MINPLENGTH){
    thi = tlo = 0;
    currentpulse++;
    }
    else if (tlo > MINPLENGTH) thi = tlo = 0;
    }

    Ha nem, akkor a túl gyors változásokat figyelmen kívül kellene hagyni (olyan kód kellene).
    Szóval látszik jó lenne tudni milyen annak a jeladónak a jele, kisebb meg nagyobb forgási sebességnél.
    De innen már vsz. te is meg tudod oldani.
    Arra figyelni kell a kódolásnál, hogy ha LOW értéket olvasunk a megszakításban akkor az előző időszak HIGH volt...

Új hozzászólás Aktív témák