hallo,
kennt jemand Beispiel-Sketche, wie man Timer auf dem Due programmiert?
Ich habe nur die alten Codes für die IRQs mit den völlig unleserlichen und uverständlichen AVR-Codes wie
plus zugehöriger ISRCode:// (in setup() noInterrupts(); TIMSK1 |= (1 << OCIE1A); TCCR1A = 0; TCCR1B = (1 << WGM12) | (1 << CS11); OCR1A = 511; interrupts();
Code:ISR(TIMER1_COMPA_vect) { // read encoder values ISRab [ 0] <<= 2; ISRab [ 0] &= B00001100; ISRab [ 0] |= (digitalRead(pinenc0A) << 1) | digitalRead(pinenc0B); motenc[ 0] += schrittTab[ISRab[0]]; // ISRab [ 1] <<= 2; ISRab [ 1] &= B00001100; ISRab [ 1] |= (digitalRead(pinenc1A) << 1) | digitalRead(pinenc1B); motenc[ 1] += schrittTab[ISRab[1]]; // ISRab [ 2] <<= 2; ISRab [ 2] &= B00001100; ISRab [ 2] |= (digitalRead(pinenc2A) << 1) | digitalRead(pinenc2B); motenc[ 2] += schrittTab[ISRab[2]]; // ISRab [ 3] <<= 2; ISRab [ 3] &= B00001100; ISRab [ 3] |= (digitalRead(pinenc3A) << 1) | digitalRead(pinenc3B); motenc[ 3] += schrittTab[ISRab[3]]; // ISRab [ 4] <<= 2; ISRab [ 4] &= B00001100; ISRab [ 4] |= (digitalRead(pinenc4A) << 1) | digitalRead(pinenc4B); motenc[ 4] += schrittTab[ISRab[4]]; // ISRab [ 5] <<= 2; ISRab [ 5] &= B00001100; ISRab [ 5] |= (digitalRead(pinenc5A) << 1) | digitalRead(pinenc5B); motenc[ 5] += schrittTab[ISRab[5]]; // }
Alles ziemlich verkorkst, aber funktioniert wenigstens.
Aber wie geht jetzt Auslesen von Quadratur-Encodern etc. in festen 200-250µs-Zeitabständen auf dem Due ?







Zitieren

Lesezeichen