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

Thema: Sprung aus ISR?

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    16.11.2008
    Beiträge
    8
    Anzeige

    Praxistest und DIY Projekte
    Danke,

    wenn die Sache so ausfändig ist werd ich es über ein Flag realisieren. Hab nur gehofft dass es (über einen mir noch unbekannten Befehl) eleganter gehen würde.

    Robtec

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    24.01.2006
    Ort
    Kirchdorf a. Inn
    Alter
    53
    Beiträge
    81
    Hallo Robtec,

    ich kann zwar nicht zur Lösung beitragen. Trotzdem ein Tip.
    "Automatisches Regalsystem" hört sich nach gewerblicher Nutzung einer Anlage aus dem Maschinenbau an. Und da würde ich aus Erfahrung ganz genau die Vorschriften beachten. Not-Aus ist klar definiert bzw. wird nach SIL eingestuft und muss entsprechend realisiert werden.
    Vielleicht kannst du es in deiner Anwendung als "Anlagen-Aus" einstufen; dann wird das ganze technisch und rechtlich viel einfacher.

    Nicht falsch verstehen. Aber da bewegt man sich im Schadensfall mit einem Fuss im Kerker und der Staatsanwalt/TÜV zerfleischt dich.

    gruss,
    wassermann

  3. #13
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329
    Hallo Robtec,

    beim Thema Notaus würde ich keine Kompromisse machen. Ein Schütz sollte die Stromversorgung der Motoren trennen, außerdem kannst du den MCU auf Reset ziehen. Das würde auch Überraschungen beim wiedereinschalten vorbeugen, da ein definierter Zustand eintritt.

    Günter

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    16.11.2008
    Beiträge
    8
    Hi,

    Zur Info: Ich studiere Maschinenbau an der Uni Stuttgart und das System ist im Rahmen einer Studienarbeit entstanden. Es ist ein kleines System, an dem die Funktionweise von Sensoren und Aktoren gezeigt werden soll, sowie deren Verknüpfung zu einem mechatronischen System. Bei dem Notaus geht es rein um die Funktion dass ich im alles jederzeit anhalten kann. Sonst müsste ich noch ganz andere Sicherheitsvorschriften beachten. Evtl. kann dies eine Folgearbeit leisten.
    Ich finde aber wirklich gut wie eindringlich hier auch vor möglichen Folgen gewarnt wird, es gibt sicher den ein oder anderen der sich was zusammenschustert ohne die rechtliche Seite zu beachten.

    Gruß
    Robtec

  5. #15
    TurboBusen
    Gast
    Zitat Zitat von wassermann
    "Automatisches Regalsystem" hört sich nach gewerblicher Nutzung einer Anlage aus dem Maschinenbau an.
    War auch mein erster Gedanke.

    @Robotec: Poste uns doch bitte mal ein Bild von diesem Regalsystem, damit wir alle wissen womit wir es überhaupt hier zu tun haben.

    TurboBusen

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    34
    Beiträge
    607
    Wie schon gesagt wurde, ist es durchaus möglich während eines Interrupts einen weiteren Interrupt zu bedienen. Dafür muss das I-bit im SREG gesetzt werden. Zu Stack-Problemen sollte sowas eigentlich nicht führen, wenn dieser Not-Aus-Interrupt nicht sehr häufig hintereinander ausgeführt wird (=> Taste entprellen!!!).

    Gruß, Yaro

  7. #17
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Das RETI am Ende einer ISR ist eigentlich ein normales Return das zusätzlich noch das betreffende Interruptflag löscht. Und da ein Return nur den Programmcounter mit dem obersten Wert des Stacks lädt, würde es ausreichen, wenn man in der ISR die orginale Rücksprungadresse vom Stack entfernt und durch die Adresse des Befehls ersetzt, bei dem das Programm nach dem Return fortgesetzt werden soll. Die ISR sollte wohl am Besten mit NOSAVE aufgerufen werden...

    Wie man das umsetzt kann ich als Bascomlaie im Moment auch nicht sagen. Der Ansatz wird u.A. hier diskutiert:
    http://robotikportal.de/phpBB2/viewt...=425913#425913

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    34
    Beiträge
    607
    Das mit dem RETI ist glaub ich nicht ganz richtig....
    Soweit ich weiß, wird das Flag von der Hardware gelöscht, sobald die ISR ausgeführt wird.
    Das RETI unterscheidet sich von einem normalen RET dadurch, dass das I-bit im SREG gesetzt wird.
    Nichtsdestotrotz sollte das mit dem Austauschen der Rücksprungadresse theoretisch möglich sein. Die Frage ist nur, ob das mit dem Bascom Compiler so einfach funktioniert, denn es könnte sein, dass dann irgendwelche Daten, verloren gehen (z.B. die, die sich während des Aufrufs der ISR gerade in Arbeitsregistern befanden).... da müsste man sich eingehend mit dem Compiler beschäftigen und ggf. nötige Daten zwischenspeichern.
    Außerdem könnte sowas zu Problemen mit dem Speicher führen, weil Variablen, die auf dem Stack oder sonstwo vom normalen Programm zwischengespeichert wurden nicht wieder freigegeben werden, da das Programm an einer anderen Stelle weiterläuft, als geplant.

    Gruß, Yaro

  9. #19
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die Hardware löscht das Flag zum Signaliseren des Interrupts und das I.Flag im SREG damit kein weiterer Interrupt angesprungen wird.

    Ein Austauschen der Rücksprung adresse ist nicht gut. Dann kann man nicht mehr zurück zum Hauptprogramm und kann den rest des Stacks, was immer da noch von Unterprogrammen USW drauf ist nicht nutzen.
    Wenn man nicht zurück will, sollte man den Stack gleich ganz neu initialisieren, da sammelt sich nur Müll.

    Zum sprung nach der ISR könnte man die Sprungadresse auf den Stack tun und dann per RETI springen, oder man macht es übersichtlicher per SEI und eien normalen Sprung.

    Wenn man später noch zurück zu der Stelle will, wo der Interrupt auftrat, kann man das auch: dann bleibt aber die alte Rücksprungadresse auf dem Stack und wird dann, wenn man wietermachen will mit einem RET genutzt.

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Dann kann man nicht mehr zurück zum Hauptprogramm...
    Ist so nicht richtig, das ist möglich indem man sich die Adresse merkt, an der vom Interrupt unterbrochen wurde.

    Die Frage ist nur, ob das mit dem Bascom Compiler so einfach funktioniert, ...
    Mit einem bisserl ASM tut es das ohne Weiteres.

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress