- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: PollSwitch() + Geradeausfahren

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    Anzeige

    Powerstation Test
    wenn du StartWitch aufrufst, wird die interruptroutine automatisch ausgeführt, wenn ein taster gedrückt ist. da musst du keine if abfrage mehr schreiben.

    nach der abarbeitung der interruptroutine wird mit der main funktion weitergemacht, als ob nichts gewesen wäre. deshalb solltest du ihn vielicht in der interruptroutine mit while(1) gefangen halten.
    ...

  2. #12
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.066
    also du hast 2 möglichkeiten.

    entweder: du benutzt am beginn des programms StartSwitch(). dann brauchst du nur abzufragen ob die variable switched = 1 ist. diese wird dann 1, wenn ein taster gedrückt wurde (und muss von hand auf 0 zurückgesetzt werden).


    oder

    du änderst in der asuro.c SIGNAL (SIG_INTERRUPT1) um. dann wird das, was hier drin steht, sofort ausgeführt, wenn ein taster gedrückt wurde. (um den originalzustand widerherstellen zu können, empfehle ich den originalen code nur auszukommentieren und nicht zu entfernen). dann brauchst du KEIN switched als variable, und auch KEIN StartSwitch. es wird einfach, sowie ein aster gedrückt wurde, das ausgeführt was in der schleife steht.
    wichtig hierbei: mit sei(); werden alle interrupts aktiviert; und mit cli(); werden alle interrupts deaktiviert (für gewisse phasen des programmes in denen eine unterbrechung ungünstig wäre).

    Hier ein beispielprogramm:

    Code:
    #include "asuro.h"
    
    int main(void)
    {
    Init();
    sei();
    
    while(1){
    StatusLED(GREEN);
    };
    
    return 0;
    
    }
    
    
    ANPASSUNG DER ASURO.C:
    
    SIGNAL (SIG_INTERRUPT1){
    StatusLED(RED);
    }
    im programm wird die led nur immer wieder auf grün gesetzt. wird eine taste gedrückt, wird durch die interruptroutine die led rot gemacht.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    24.11.2006
    Beiträge
    40
    Super! Vielen Dank für die Hilfe!

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    24.11.2006
    Beiträge
    40
    OK, habe das gestern mal ausprobiert, dein code damaltor funktioniert nur wenn man vor der while-schleife StartSwitch() aufruft, dann aber einwandfrei:

    Code:
    #include "asuro.h"
    
    int main(void)
    {
    Init();
    sei();
    StartSwitch();
    
    while(1){
    StatusLED(GREEN);
    };
    
    return 0;
    
    }
    
    
    ANPASSUNG DER ASURO.C:
    
    SIGNAL (SIG_INTERRUPT1){
    StatusLED(RED);
    }
    vielen dank nochmal!

  5. #15
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.066
    hmm... ich dachte eigentlich das hätte sich hiermit erledigt mit dem startswitch... egal. auf jeden fall ist das evtl ne anregung wie du das problem umgehen kannst welches du am anfang hattest. lass ihn geradeausfahren in der mainfunktion, und interruptgesteuert zurückweichen, wenn er irgendwo anditscht.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    24.11.2006
    Beiträge
    40
    jawoll, klappt wunderbar

  7. #17
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.066
    na herzlichen glückwunsch! dann weiter so... pass auf dass deine interruptroutine nicht zu lange dauert (gerade mit sleep ist sehr vorsichtig umzugehen). in dieser zeit kann der asuro nämlich NICHTS anderes machen, als das was in der routine steht. viel spaß =)
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

LiFePO4 Speicher Test