Setzen ist 'becomes set (one)' und Löschen ist 'writing a logical one"

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Hans_L wrote:

      Ist "one" etwas anderes als "logical one"
      Nein, 'Gifr =128' löscht das Flag falls es gesetzt war, wenn nicht ändert sich nichts.
      Etwas gewöhnungsbedürftig, zumal der Simulator das ganz anders sieht. :(
      Normalerweise wird es vom Avr gelöscht wenn die Int1 Routine ausgeführt wird. Es manuell zu löschen ist nur selten nötig z.B. wenn es keine Int Routine gibt, es innerhalb der Routine einen weiteren Int gegen kann oder die Routine abgeschaltet wurde (um zu verhindern dass sie beim Einschalten sofort ausgeführt wird).
      PS Gifr = 0 bewirkt nichts (außer ein(ige) Takt)
    • Das auf "1" setzen bewirkt ein löschen des Flags (falls es gesetzt ist) es wird dadurch "0". Der Sinn ist dass eine Isr nicht ununterbrochen aufgerufen wird, sondern nur dann wenn es wieder (durch das Interrupt Ereignis) gesetzt wird.
      z.B. bei einer Timeranwendung:

      Source Code

      1. Do
      2. ....
      3. Loop Until Tifr.5 = 1 ' 14219
      4. Set Tifr.5
      5. Incr Z '125 ms
      6. If Z >=8 Then
      7. Z = 0
      8. Incr Rsec 'Unix
      Würde Zeile 4 fehlen rennt die Main ungehemmt durch und die Uhr würde 'Durchdrehen' a_217_27b18bee

      The post was edited 2 times, last by Pluto25 ().