- LiFePO4 Speicher Test         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 28

Thema: Interrupt probleme!!

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    31.01.2007
    Ort
    kerken
    Alter
    31
    Beiträge
    69
    Anzeige

    E-Bike
    das geht doch nich, oder? man kann doch in einer isr nicht noch ein interrupt auslösen

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    man kann doch in einer isr nicht noch ein interrupt auslösen
    Wozu braucht man einen Interrupt, wenn man den Asuro im Kreis fahrenlassen will ?
    Software is like s e x: its better when its free.
    Linus Torvald

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    31.01.2007
    Ort
    kerken
    Alter
    31
    Beiträge
    69
    ich meinte, dass man sleep() nicht benutzenkann, da man ja kein interruot in einer isr auslösen kann. im Kreis fahren geht zwar, aber nicht eine bestimmte zeit lang, oder?

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Klar geht das, hat doch damaltor oben geschrieben.
    Oder willst Du, daß er erst nach einem Tastendruck in Verbundung mit INT1 losfährt ?
    Das kannst Du z.B. so lösen:
    Code:
    ...
    ...
    volatile uint8_t fahrlos = 0;
    SIGNAL(SIG_INTERRUPT1){
    fahrlos = 1;
    }
    
    int main(void) {
    for(;;){
       while(!fahrlos);
       fahre();
       sleep(250);
       haltan();
       fahrlos = 0;
     }
    return 0;
    }
    fahre() und haltan() mußt Du entsprechend ändern

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  5. #15
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    du benötigst überhaupt keine interrupts zum kreise fahren... nicht im allergeringsten. für die ersten 50-60 auch komplexen prorgamme wirst du dich mit den interrupts nicht beschäftigen müssen.

    --- du schaltest die motoren ein. mit motordir und motorspeed.
    --- du machst eine dreisekündige warteschleife. mit sleep oder msleep.
    --- du hältst die motoren wieder an. mit motordir und motorspeed.

    das wars. beispiel:
    Code:
    MotorDir(FWD,FWD);
    MotorSpeed(255,150);
    Msleep(3000);
    MotorDir(BREAK,BREAK);
    MotorSpeed(0,0);
    ohne interrupts...
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    31.01.2007
    Ort
    kerken
    Alter
    31
    Beiträge
    69
    hi damaltor,

    Sleep funktioniert doch auch mit nem Interrupt, dem SIG_OUTPUT_COMPARE2, also doch wieder n Interrupt

  7. #17
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    naja aber um den musst du dich doch gar nicht kümmern... du musst nur den quelltext nutzen, die interrupts sind bereis eingestellt...
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  8. #18
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo zusammen,
    das hat ja mal Seltenheitswert. Alle haben Recht.
    izaseba erklärt die Prios von Interrupts und unterbrochene Funktionen.
    damaltor liefert Kreisprogramme für 3 Sekunden und weitere Erklärungen.
    asuroer stellt fest, das Sleep() in einem anderen Interrupt nicht sinnvoll ist, da es nicht geht.

    Warum das nicht geht liegt allerdings nicht am SIG_OUTPUT_COMPARE2, sondern am SIG_OVERFLOW2. In der dazu gehörenden Interrupt-Funktion wird ja die Variable count36kHz hochgezählt. Und wenn die Sleep()-Funktion diesen Wert nun innerhalb einer gerade laufenden Interruptfunktion abfragt, bleibt der Wert in count36kHz ja tatsächlich auf immer und ewig stehen, da eine begonnene Interruptfunktion ja nicht unterbrochen werden kann (ausser man will es wie izaseba schon sagte). Somit kann Sleep() also nie verlassen werden. Und damit steht das System.
    Lieber Asuro programieren als arbeiten gehen.

  9. #19
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo Sternthaler,
    das ist natürlich eine gute Möglichkeit den Programmierer davon abzuhalten Warteschleifen in der ISR zu machen
    Ein Hoch auf dei asurolib =D>

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  10. #20
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo izaseba,
    klar ist die Möglichkeit nicht schlecht. Genau das habe ich ja beabsichtigt.
    Warum also soll man asuroer nicht eine sinnvolle Erklärung zu seinem ja schon selbst gefundenen Sachverhalt geben? Man kann ja wohl recht zufrieden sein, dass ein 14-jähriger hier schon weiterdenkt und solche 'verzwickten' Dinge bemerkt. Und da er mit Nachdruck bzw. mit Traute auch ein 2.tes mal fragt, ob seine Vermutung nun stimmt oder nicht, hat er meiner Meinung nach auch eine Antwort verdient. (Ich gehe nicht davon aus, das dies der gesperrte Küchenbrett-User ist.)
    Natürlich ist die Asuro-LIB nicht das nonplusultra. Aber genau darum geht es ja, jeder darf sie nutzen und ändern, oder er läßt es eben.

    Gruß Sternthaler

    P.S.: Ich wäre total an deiner LIB interressiert. Wenn du Spaß daran hättest, würde ich die mal gegen meine tauschen wollen. Ich stehe auf interruptbetriebene Sensorabfragen. (Soll neugierig machen.) PN?
    Lieber Asuro programieren als arbeiten gehen.

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test