- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 45

Thema: Der Teensy 4.0 ist fertig

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #31
    HaWe
    Gast
    Zitat Zitat von Holomino Beitrag anzeigen
    Ja, dann trau Dich.
    Du musst doch nur den Code kopieren und etwas abändern.
    poste am besten den vollständigen fertigen Code, dann kann ich sehen was man daraus machen kann.

    edit:
    ich sehe in dem Link nur die if-Abfrage in einer main() loop, ohne weitere zusätzliche Funktionsaufrufe (Rechenfunktionen, GPIO r/w, ...).
    Zusätzliche Funktionsaufrufe brauchen aber Rechenzeit, die dann nach if() auf diese weiteren Funktionen verteilt werden kann, bevor die if() Abfrage sich wiederholt.
    Wieviel Gesamt-Rechenzeit haben denn die anderen Funktionen zur Verfügung, zwischen 2 if() in aufeinanderfolgenden main() loops?
    Hier müsstest du ja dann auch fibonacci, GPIO r/w, sort, Blink und die alte 500ms-delay main loop bei dir mit rein kriegen.
    Bei MT müsste dann deine Timerfunktion diese dazwischenliegende Zeit reservieren - ich muss also wissen, wieviel.
    ggf 100us?
    Das könnte ich probieren...



    - - - Aktualisiert - - -

    deine Abfrage in loop() würde ich dann ZUSÄTZLICH zu meinen 5 Threads so formulieren:


    Code:
    volatile static int interruptCounter;
    volatile static int totalInterruptCounter;
     
    hw_timer_t * timer = NULL;
    portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;
     
    void IRAM_ATTR onTimer() {
      portENTER_CRITICAL_ISR(&timerMux);
      interruptCounter++;
      portEXIT_CRITICAL_ISR(&timerMux);
     
    }
    
    std::thread *thread_1;
    std::thread *thread_2;
    std::thread *thread_3;
    std::thread *thread_4;
    std::thread *thread_5;
    
    
    // meine threads und Hilfsfunktionen 1-4 wie bisher
    
    
    void timer_loop() {
         
      vTaskPrioritySet(NULL,4);//set Priority
      Serial.println((String)"\ntimer_loop Current priority :" + uxTaskPriorityGet(NULL)+"\n");
    
      while(true) {
     
         if (interruptCounter > 0) {
        
           portENTER_CRITICAL(&timerMux);
           interruptCounter--;
           portEXIT_CRITICAL(&timerMux);
        
           totalInterruptCounter++;
        
           Serial.println( (String)"\nAn interrupt as occurred. Total number: " + totalInterruptCounter +"\n");
        
         }
    
         std::this_thread::sleep_for(std::chrono::microseconds(100));
    
      }
    
    }
    
    void setup() {
       Serial.begin(115200);
       delay(1000);
    
       timer = timerBegin(0, 80, true);
       timerAttachInterrupt(timer, &onTimer, true);
       timerAlarmWrite(timer, 1000000, true);
       timerAlarmEnable(timer);
      
       thread_1 = new std::thread(blinker_loop);
       thread_2 = new std::thread(fibonacci_loop);
       thread_3 = new std::thread(sort_loop);
       thread_4 = new std::thread(GPIO_loop);
       thread_5 = new std::thread(timer_loop);
    
    }
    
    
    void loop() {
       // meine void loop wie bisher
    }
    Ich habe allerdings überhaupt keine Idee, was
    void IRAM_ATTR onTimer() {},
    hw_timer_t * timer = NULL;
    portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;
    machen und wie sie funktionieren, genausowenig, was die settings in setup dafür bedeuten - wie gesagt, IRQs habe ich bisher nie benutzt, kann sie also nur 1:1 übernehmen.


    Und wie sähe aber dann DEIN Gesamt-Programm aus, in dem du alle Funktionen (meine 5 threads + deinen Timer) gemeinsam unterbringst? Würdest du das überhaupt schaffen?
    Geändert von HaWe (11.08.2019 um 20:11 Uhr)

Ähnliche Themen

  1. STM32 contra ARM Cortex M3 (Arduino Due, Teensy): Performance per Arduino vs. nativ C
    Von HaWe im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 14
    Letzter Beitrag: 22.11.2017, 11:53
  2. Platinenlayout Problem mit Platinenlayout - Adapterplatine für den Teensy 3.1
    Von robonooby im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 9
    Letzter Beitrag: 29.06.2014, 15:09
  3. AU.ROB No2 ist fertig
    Von arnoa im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 01.01.2012, 18:35
  4. Hexapod aus Alu [fertig]
    Von yaro im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 20
    Letzter Beitrag: 15.07.2010, 00:03
  5. Fertig machen oder fertig kaufen ?
    Von iBot im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 11
    Letzter Beitrag: 23.05.2008, 12:25

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress