- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 20

Thema: 250µs-Timer für Arduino Due

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #13
    HaWe
    Gast
    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:

    Code:
    #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...
    	}
    	
    }
    Hier wird dann ja wohl Timer 3 verwendet, bei mir oben war es glaube ich Timer 1 und alle 250µs, dann also
    Timer1.attachInterrupt(myHandler);
    Timer1.start(250); // Calls every 250µs

    in myHandler dann meine ISR arrays
    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]];           //
    
    }
    - müsste dann doch so funktionieren...? Werde ich gleich am Wochenende austesten!

    Ein ganz herzliches Dankeschön! 8-)
    Geändert von HaWe (21.11.2014 um 16:52 Uhr)

Ähnliche Themen

  1. G-Code Interpreter Arduino Due, CNC-Fräse
    Von stevie3354 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 9
    Letzter Beitrag: 26.12.2014, 15:36
  2. [ERLEDIGT] I2C Problem mit dem Arduino DUE
    Von jok3r im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 2
    Letzter Beitrag: 22.03.2014, 12:21
  3. Arduino Due + Treiber + Schrittmotor PROBLEM
    Von stevie3354 im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 30.01.2014, 23:11
  4. Arduino Due HSMCI - SD/SDIO/MMC
    Von Superhirn im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 0
    Letzter Beitrag: 25.01.2013, 10:57
  5. Arduino Due erschienen
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 24.10.2012, 22:20

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test