Multitasking 5 2018-10-04

Multitasking - Kontrolle ist besser

  1. achim S.

    achim S. Mitglied

    Registriert seit:
    16. Januar 2010
    Beiträge:
    380
    Zustimmungen:
    6
    Punkte für Erfolge:
    18
    Sprachen:
    C
    achim S. hat eine neue Ressource erstellt:

    Multitasking 5 - Multitasking - Kontrolle ist besser

    Weitere Informationen zu dieser Ressource...
     
  2. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    2.979
    Zustimmungen:
    45
    Punkte für Erfolge:
    48
    Sprachen:
    BascomAVR, Assembler
    Zur ersten Variante:
    Du verwendest Timer0 im CTC, das Output Compare Modul bestimmt die Frequenz indem es beim Match den Timer zurücksetzt. Im allgemeinen(!) erreicht der Timer 255=MAX nie, das TOV-Flag wird nicht gesetzt.
    Folglich nutzt Du als Interrupt den des Output Compare Modules.
    Was geschieht?
    Einen Timertakt nach dem Match wird das "Timer/Counter0, Output Compare A Match Flag" gesetzt und der Timer selbst auf null. Da sowohl das "Timer/Counter0, Output Compare A Match Interrupt Enable"-Bit als auch das I in SREG gesetzt sind, wird nach Abarbeitung des laufenden Befehles der Program-Counter auf den Stack gepusht und 0x0020 in den ProgramCounter geladen. Bis hier vergehen mindestens vier Takte.
    In Adresse 0x0020 steht ein absoluter Sprung zur COMP-A-ISR. Dieser kostet weitere drei Takte. Das Return am Ende der ISR stellt Stack und Program-Counter wieder her, und kostet nochmal vier Takte.
    Also mindestens elf Takte zuzüglich zum Inhalt der ISR.

    Bei Variante eins könntest Du auf den Interrupt verzichten, und statt Deines flag_1ms direkt das OCFA-Flag pollen. TIFR0 ist direct bit accessible, es wird also kein Rechenregister für den Zugriff benötigt SBIS/SBIC zum prüfen sowie SBI zum löschen des Flags greifen. Inwiefern Du das ganze bei Klammercodinesisch nutzen kannst, mußt Du wissen.
     
  3. achim S.

    achim S. Mitglied

    Registriert seit:
    16. Januar 2010
    Beiträge:
    380
    Zustimmungen:
    6
    Punkte für Erfolge:
    18
    Sprachen:
    C
    Danke für deine Zeilen. Werde es genau ansehen. Das berücksichtigen der Takte habe ich nicht durchgeführt. Der Grund stammt von Falk Br. von einer anderen Seite. Die Klammern werden vorrangig verwendet um Taster zu lesen. Dadurch ist ein mehrfach Nutzung der Taster möglich, z.B. kurz - Taster ein, lang - Taster aus. Das stammt von Peter Dannergerrer. Verwende es in verschiedenen Programmen und auch beim Auslesen von Drehgebern mit Taster. Innerhalb eines Menue Programmes kann dadurch die Steuerung auf dem Display (hoch-runter) durch drehen erfolgen, Auswahl durch kurzes drücken und Reset durch langes drücken. Sicher ist im Programm einiges zu verbessern. Wahr eigentlich froh das es soweit funktioniert. Ist auch die Vorstufe zur Statemaschine. Das ist aber wieder ein ganz anderes Thema.
    achim
     
  • Über uns

    Unsere immer weiter wachsende Community beschäftigt sich mit Themenbereichen rund um Mikrocontroller- und Kleinstrechnersysteme. Neben den Themen Design von Schaltungen, Layout und Software, beschäftigen wir uns auch mit der herkömmlichen Elektrotechnik.

    Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  • Coffee Time

    Unser makerconnect-Team arbeitet hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und unser eigener makerconnekt-Server regelmäßig gewartet wird. Wir nehmen das Thema Datensicherung und Datenschutz sehr ernst und sind hier sehr aktiv, auch sorgen wir uns darum, dass alles Drumherum stimmt!

    Dir gefällt das Forum und die Arbeit unseres Teams und du möchtest es unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft, unser Team freut sich auch über eine Spende für die Kaffeekasse :-)
    Vielen Dank!
    Dein makerconnect-Team

    Spende uns! (Paypal)
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren und die Seite optimal für dich anzupassen. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden