- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: multitasking für asuro?

  1. #11
    Erfahrener Benutzer Roboter Genie Avatar von BurningBen
    Registriert seit
    02.09.2008
    Ort
    Darmstadt
    Alter
    33
    Beiträge
    842
    Anzeige

    LiFePo4 Akku selber bauen - Video
    warum kannst du während der motorfahrt denn die Taster nicht abfragen?
    Benutzt du Sleep um die 15 Sekunden zu "verbraten"?

    Du könntest mit nem Timer am Anfang die Motoren starten, und dann nach 15sek. wieder ausschalten. Dazwischen kann doch dein Programm machen was es/du will(st)

  2. #12
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo BurningBen!

    Ich kenne den Asuro gar nicht, aber wie kann im schlafendem µC Programm laufen?

    MfG

  3. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Nein, er meint das anders.
    Dass der Bot fährt, entscheidet ja letztendlich nur ein Bit in einem Port. D.h. Ich setze das Bit und programmiere einen Timer so, dass er das Bit nach 15 Sekunden wieder löscht. (Der Timer macht das im Hintergrund mithilfe von Interrupts.)
    Danach kann ich also ins Hauptprogramm gehen und machen, was ich möchte:
    - Taster abfragen
    - ne Melodie spielen
    - Pi berechnen
    - etc.

    Die Taster könnte man darüberhinaus auch komplett auf Interrupts auslagern, so dass ein Timer sich um das fahren kümmert, ein Interrupt um die Tasten und mein Hauptprogramm dreht Däumchen. Und schon haben wir drei "Tasks". Während der Timer und der Interrupt kooperativ laufen, läuft das Hauptprogramm preemptiv.

  4. #14
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Ja das geht, aber für mich ist deine Beschreibung nicht ganz klar. Angenommen wir haben nur ein Timer der in regelmässigen Abständen beim Überlauf ein Interrupt auslöst.

    Vor dem Starten des Timers wird der Portbit für die Motoren gesetzt. Dann kann man bei jedem Interrupt in ISR die Tasten abfragen und die Interrupts zählen. Wenn bestimmte Anzahl von interrupts gezählt wurde, wird der Portbit für Motoren gelöscht. Das Programm wird nur für Ausfürungszeit der ISR unterbrochen. So habe ich das (hoffentlich richtig) verstanden.

    MfG

  5. #15
    Erfahrener Benutzer Begeisterter Techniker Avatar von Osser
    Registriert seit
    31.10.2006
    Ort
    Köln
    Alter
    54
    Beiträge
    396
    Hi @All,

    ja natürlitsch, logitsch!

    Matze 3 hat halt gefragt ob da was mit MT geht und dementsprechend hab ich dann geantwortet. State Machines, Timer udgl. geht natürlich auch immer, kann aber sehr unübersichtlich werden bei komplexen Aufgaben.


    O.

  6. #16
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.687
    Zitat Zitat von PICture
    ... Paralell zum Programm können in einem µC nur Timer laufen ...
    Hmmm, und was ist mit dem ADC? Der wandelt bei mir Daten - während einiges andere "im Programm" abläuft. Oder sehe ich das falsch? Parallel dazu "wartet" der PCI und der extINT (bei mir) ob sich in der Welt draussen was tut . . . . und die kann ich doch, mal etwas pingelig gesprochen, doch auch nicht als Timer ansehen. Oder sehe ich das falsch?
    Ciao sagt der JoeamBerg

  7. #17
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo oberallgeier!

    Natürlich kann auch der ADC, wie ein Timer, paralell zum Programm laufen. Und der "interrupt on change" kann sogar den Prozessor vom Schlaf aufwecken. Ich habe aber leider nicht an alles gedacht, wenn ich schnell die Antwort geschrieben habe.

    MfG

  8. #18
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Das siehst Du richtig.

    Alle Hardware-Aufgaben laufen parallel zum µC. Sprich Timer/PWM/RTC, Interrupts, ADC, TWI/I2C/USI, JTAG, UART/USART/RS232, SPI, Watchdog, EEPROM...

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    02.03.2009
    Ort
    Merseburg
    Alter
    37
    Beiträge
    14
    Ich unterbrech euch nur ungern bei den ganzen Interrupts.. Aber kann mir einer sagen wie ich den internen Timer vom Atmega auslesen kann? Wisst ihr was ich meine? Die C-Control Dinger haben so ne schöne Timer Variable die ich nutzen kann um mir halt nen eigenen Sekunden Timer zu basteln und mein Programm weiter laufen zu lassen.. da der interne timer vom controller ja eh immer läuft..
    so zb in Basic
    Code:
    DEFINE Zeit Word
    
    Zeit = Timer
    ...
    ...Schleife...
    IF (Timer - Zeit) >= 50 THEN GOSUB Ausgabe
    ...
    ..
    
    #Ausgabe
       Zeit = Timer
       PRINT..
    RETURN
    brauch halt die den Timer vom Atmega und vllt ne kleine angabe dazu.. 36 war 1ms oder?

    mfg

  10. #20
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Um einen Sekundentimer zu basteln, nimmst Du einen Timer, stellst ihn auf einen Wert ein, der ein Teiler von einer Sekunde ist und zählst in dem Timer eine Variable hoch. Sobald die Variable den Wert erreicht hat, der eine Sekunde ergibt, kannst Du irgendwas auslösen, eine Variable setzen, wie Du eben willst.

    Ein wunderbares Beispiel dazu ist im Wiki. Unter "LED blinken lassen" oder so.

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests