Hirdetés

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

  • Teasüti

    nagyúr

    Uhm,
    Timer interupt-tal játszadozok épp és első nekifutásra semmi nem történik, mármint fel se éled az Uno az addig jól működő programmal az alábbi kód beillesztése után. :F
    1 kHz-es frissítése van az MPU6050-es gyorsulásérzékelőjének, ezt szeretném kiolvasni ugyanekkora frekvenciával és a loop()-ban a megfelelő pontban átlagot számolok és nullázom az értékeket.
    Vagyis ez volna az elképzelés...
    Vmi ötlet arra, hogy meg se nyikkan?
    Az első és utolsó életjel egy félig kiküldött Serial.print pár sorral a timer beállítása után.
    Próbáltam alá rakni a sei()-t ennek az egy Serial.print-nek, de meglepő módon még idáig se jut a program.

    Setup()-ban:
    cli();//stop interrupts

    //set timer2 interrupt at 1kHz
    TCCR2A = 0;// set entire TCCR2A register to 0
    TCCR2B = 0;// same for TCCR2B
    TCNT2 = 0;//initialize counter value to 0
    // set compare match register for 1khz increments
    OCR2A = 249;// = (16*10^6) / (1000*64) - 1 (must be <256)
    // turn on CTC mode
    TCCR2A |= (1 << WGM21);
    // Set CS22 bit for 64 prescaler
    TCCR2B |= (1 << CS22);
    // enable timer compare interrupt
    TIMSK2 |= (1 << OCIE2A);

    sei();//allow interrupts

    Setup()-on és Loop()-on kívül:
    ISR(TIMER2_COMPA_vect){
    Wire.beginTransmission(MPU_addr);
    Wire.write(0x3F); // starting with register 0x3B (ACCEL_XOUT_H)
    Wire.endTransmission(false);
    Wire.requestFrom(MPU_addr,2,true);
    AcZ += Wire.read()<<8|Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
    measures++;
    Serial.println("Yay");
    }

    Egyébként ilyenkor az analogWrite() egyáltalán nem fog működni, vagy csak azon a két lábon nem, amit a Timer2 vezérel?

    (#3061) fpeter84
    BT-s vezérlés Android-on adja magát, de mennyire profi megoldás lenne már egy beépített képernyő! :))

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