ah - jetzt verstehe ich...
es ist ganz anders als die AVR-Variante. ich hatte nicht an so eine komplette lib gedacht.
Das Programm sieht ja ausgesprochen simpel aus, viel einfacher als das oben für den AVR:
Hier wird dann ja wohl Timer 3 verwendet, bei mir oben war es glaube ich Timer 1 und alle 250µs, dann alsoCode:#include <DueTimer.h> int myLed = 13; bool ledOn = false; void myHandler(){ ledOn = !ledOn; digitalWrite(myLed, ledOn); // Led on, off, on, off... } void setup(){ pinMode(myLed, OUTPUT); Timer3.attachInterrupt(myHandler); Timer3.start(500000); // Calls every 500ms } void loop(){ while(1){ // I'm stuck in here! help me... } }
Timer1.attachInterrupt(myHandler);
Timer1.start(250); // Calls every 250µs
in myHandler dann meine ISR arrays
- müsste dann doch so funktionieren...? Werde ich gleich am Wochenende austesten!Code:volatile long motenc[MAXMOTORS] = {0, 0, 0, 0, 0, 0}, oldenc[MAXMOTORS] = {0, 0, 0, 0, 0, 0}; int8_t schrittTab[16] = {0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 1, 0, 0, -1, 0}; volatile int8_t ISRab[MAXMOTORS] = {0, 0, 0, 0, 0, 0}; void myHandler() { // 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]]; // }
Ein ganz herzliches Dankeschön! 8-)







Zitieren

Lesezeichen