- Labornetzteil AliExpress         
Seite 6 von 6 ErsteErste ... 456
Ergebnis 51 bis 53 von 53

Thema: Assembler lernen

  1. #51
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Anzeige

    E-Bike
    Zitat Zitat von oberallgeier
    Du verwendest den Sekundentimer SCNT offenbar für mehrere Routinen, kann da ein/der Fehler liegen?
    ja, ich verwende den SCNT für mehrere routinen - aber immer nur in EINER aktiv.
    zb. OPNDOOR: hier wird TSEC auf 5 sekunden timeout gesetzt. wenn nun der timeout tatsächlich eintritt (oder auch nicht) wird der timer wieder gestoppt, bevor DOORIMP und damit WAIT (mit str und stptmr) aufgerufen wird.
    somit sehe ich keine möglichkeit von "nested interrupts" und auch keine doppelverwendung des registers von 2 routinen gleichzeitig.

    Zitat Zitat von oberallgeier
    Ausserdem wird SCNT im WAIT mit TSEC verglichen, und TSEC kann sowohl den Wert 5 haben - in CLSLATCH und OPNDOOR - als auch den Wert 1 - in DOORIMP.
    richtig, aber diese routinen laufen NACHEINANDER ab.
    die WAIT routine wird nur über die routine DOORIMP aufgerufen. sonst nirgendwo. also auch nichts "nested".

    Zitat Zitat von oberallgeier
    Mögliche Abhilfe:
    In der ISR vor dem rcall wait ein push tsec machen und vor dem reti ein pop tsec ? ?
    in welcher ISR meinst du? es gibt deren nur 2: IMPULS und TMROVF
    und beide haben kein rcall WAIT.
    alle timerfunktionen, ob 1 oder 5 sekunden werden abgeschlossen und auch der timer gestoppt, bevor die nächste aufgerufen wird.

    Zitat Zitat von oberallgeier
    Aber bestimmt unschön ist es in STRTMR den Interrupt generell zu erlauben - "sei".
    wenn du mir sagst, wie ich interrupts enablen kann OHNE den befehl SEI zu verwenden. soweit ich das datenblatt verstanden habe werden interrupts nur dann abgearbeitet, wenn das "I" bit (7, global interrupt enable) gesetzt ist, sonst wird zwar das interrupt bit des entsprechenden interrupts gesetzt, aber keine ISR ausgeführt. habe ich das falsch verstanden?

    halt, aber gerade jetzt fällt mir was ein/auf - ich stoppe zwar den timer aber mache kein CLI !!!
    da mag was drin liegen ...

    werde es am abend probieren.

    aber nochmal: brauche ich das "I" bit on oder nicht zum ausführen der ISR?

    noch eine frage ist aufgetaucht, die ich auf die schnelle dem datenblatt nicht zu entnehmen vermag:
    was passiert, wenn der timer gestoppt und wieder gestartet wird?
    werden seine internen register zurück gesetzt oder läuft er bei dem wert weiter, bei dem er gerade gestoppt wurde?
    meine register TIM1 + TIM2 werden ja wieder neu gesetzt - bis auf eines: TIM2 sehe ich gerade!
    werde das auch noch berichtigen und testen!!

  2. #52
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Nur wenn das I Bit gesetzt ist werden Interrupts ausgeführt, sonst werden nur die Flags gesetzt und die ISR nach dem Befehl nach dem SEI gestartet.

    Beim Neustart des Timers läuft der da weiter wo er aufgehört hat. Timer Stop heißt eigentlich nur Takt auf Null.

  3. #53
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    morgen!
    impulsproblem gelöst!
    lag nur an TIM2, das bei STRTMR nicht auf 0 gesetzt wurde.
    warum sich das allerdings nur in der routine OPNDOOR ausgewirkt hat?
    nun läuft alles wirklich astrein.
    erste lehrlingsprüfung bestanden

Seite 6 von 6 ErsteErste ... 456

Berechtigungen

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

Solar Speicher und Akkus Tests