• Navigation überspringen
  • Zur Navigation
  • Zum Seitenende
Organisationsmenü öffnen Organisationsmenü schließen
Friedrich-Alexander-Universität Lehrstuhl für Informatik 4 (Systemsoftware)
  • FAUZur zentralen FAU Website
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik
Suche öffnen
  • English
  • Campo
  • StudOn
  • FAUdir
  • Stellenangebote
  • Lageplan
  • Hilfe im Notfall
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik
Friedrich-Alexander-Universität Lehrstuhl für Informatik 4 (Systemsoftware)
Menu Menu schließen
  • Lehrstuhl
    • Team
    • Aktuelles
    • Kontakt und Anfahrt
    • Leitbild
    • 50-jähriges Jubiläum
    Portal Lehrstuhl
  • Forschung
    • Forschungsbereiche
      • Betriebssysteme
      • Confidential Computing
      • Eingebettete Systemsoftware
      • Verteilte Systeme
    • Projekte
      • AIMBOS
      • BALu
      • BFT2Chain
      • DOSS
      • Mirador
      • NEON
      • PAVE
      • ResPECT
      • Watwa
    • Projektkampagnen
      • maRE
    • Seminar
      • Systemsoftware
    Portal Forschung
  • Publikationen
  • Lehre
    • Sommersemester 2025
      • Applied Software Architecture
      • Ausgewählte Kapitel der Systemsoftware
      • Betriebssystemtechnik
      • Projekt angewandte Systemsoftwaretechnik
      • System-Level Programming
      • Systemnahe Programmierung in C
      • Systemprogrammierung 1
      • Verteilte Systeme
    • Wintersemester 2024/25
      • Betriebssysteme
      • Middleware – Cloud Computing
      • Systemprogrammierung 2
      • Verlässliche Echtzeitsysteme
      • Virtuelle Maschinen
      • Web-basierte Systeme
    Portal Lehre
  • Examensarbeiten
  1. Startseite
  2. Extern

Extern

Bereichsnavigation: Lehre
  • Systemnahe Programmierung in C
    • Vorlesung
      • Übung
        • Folien
        • Aufgaben
        • SPiCboard
          • Bauanleitung
            • Programmieren im CIP
              • Programmieren von zu Hause
                • libspicboard-Doku
                  • SPiC-IDE
                    • SPiCsim
                      • FAQ
                        • Projekte
                        • Linux libc-Doku
                        • Prüfung
                          • Evaluation
                            • Intern

                            libspicboard-Doku

                            • libspicboard
                            timer.h
                            Go to the documentation of this file.
                            1 #ifndef TIMER_H
                            2 #define TIMER_H
                            3 
                            4 #include <stdint.h>
                            5 #include "check.h"
                            6 
                            7 /**
                            8  * \addtogroup Timer Timer module
                            9  *
                            10  * \brief The timer module provides an event interface to the hardware timers
                            11  *
                            12  * The module uses the 16-bit <b>timer 1</b> of the ATmega32. The timer is dynamically
                            13  * configured as needed by the registered alarms and should always be clocked
                            14  * as slow as possible to keep the interrupt load low. When no alarms are
                            15  * registered, the timer clock is disabled.
                            16  *
                            17  * \note The timer module uses dynamic memory management (malloc()/free()) for the allocation
                            18  * of the ALARM types. This is also done from within ISRs. Thus care must be taken when
                            19  * calling malloc()/free() with interrupts enabled.
                            20  *
                            21  * \note Interrupts must be enabled for the timer to work.
                            22  *
                            23  * @{
                            24  * \file timer.h
                            25  * \version \$Rev: 7715 $
                            26  */
                            27 
                            28 /**
                            29  * \brief ALARM type
                            30  *
                            31  * This is type of a struct containing information about an alarm.
                            32  */
                            33 typedef struct ALARM ALARM;
                            34 
                            35 /**
                            36  * \brief Type for alarm callback functions
                            37  *
                            38  * Alarm callback functions are invoked on the interrupt
                            39  * level whenever the associated alarm expires. The
                            40  * programming model for callback functions is similar
                            41  * to that of interrupt service routines.
                            42  */
                            43 typedef void (*ALARMCALLBACK) (void);
                            44 
                            45 /**
                            46  * \brief Cancel an alarm
                            47  *
                            48  * \param alrm identifier of the alarm that should be canceled
                            49  *
                            50  * \retval 0 success
                            51  * \retval -1 an error occurred
                            52  *
                            53  * \sa sb_timer_setAlarm
                            54  *
                            55  * \note Alarms must not be canceled twice
                            56  */
                            57 int8_t sb_timer_cancelAlarm(ALARM *alrm);
                            58 
                            59 /**
                            60  * \brief Create a new alarm
                            61  *
                            62  * This function can be used to set single shot, as well as repeating timers.
                            63  *
                            64  * - <b>Single shot:</b> Set cycle to 0. This alarm <b>must not</b> be canceled after being fired.
                            65  * - <b>Repetitive:</b> The first shot can be adjusted be setting alarmtime > 0. Otherwise cycle is used.
                            66  *
                            67  * \note The callback function is called from within the ISR-context.
                            68  *
                            69  * \param callback callback function that will be invoked whenever the alarm expires
                            70  * \param alarmtime time in ms relative to the current time when the alarm shall expire the first time.
                            71  * If set to 0 cycle time will be used.
                            72  * \param cycle time in ms for alarms that periodically expire after the first regular expiry.
                            73  * Set to 0 for single shot timers.
                            74  *
                            75  * \return the identifier of the alarm, or NULL if creating the alarm failed.
                            76  *
                            77  * \warning Canceling a timer twice or canceling a single shot timer after its expiry may
                            78  * cause unexpected results.
                            79  *
                            80  * \sa sb_timer_cancelAlarm
                            81  */
                            82 ALARM *sb_timer_setAlarm(ALARMCALLBACK callback, uint16_t alarmtime, uint16_t cycle);
                            83 
                            84 /**
                            85  * \brief Waits for a specific number of ms
                            86  *
                            87  * This function must not be invoked with interrupts disabled, i.e. from an interrupt
                            88  * handler (or generally, from the ISR level) or a critical section of the application.
                            89  *
                            90  * The CPU is set in sleep mode while waiting.
                            91  *
                            92  * \param waittime wait time in ms
                            93  *
                            94  * \retval 0 success
                            95  * \retval -1 alarm could not be activated
                            96  * \retval -2 sb_timer_delay invoked while interrupts disabled
                            97  *
                            98  * \sa sb_timer_abortDelay
                            99  */
                            100 int8_t sb_timer_delay(uint16_t waittime);
                            101 
                            102 /**
                            103  * \brief Aborts an active sb_timer_delay
                            104  *
                            105  * This function must be invoked on the ISR level.
                            106  *
                            107  * \sa sb_timer_delay
                            108  */
                            109 void sb_timer_abortDelay();
                            110 
                            111 /** @}*/
                            112 
                            113 #endif
                            114 
                            check.h
                            sb_timer_abortDelay
                            void sb_timer_abortDelay()
                            Aborts an active sb_timer_delay.
                            sb_timer_setAlarm
                            ALARM * sb_timer_setAlarm(ALARMCALLBACK callback, uint16_t alarmtime, uint16_t cycle)
                            Create a new alarm.
                            ALARMCALLBACK
                            void(* ALARMCALLBACK)(void)
                            Type for alarm callback functions.
                            Definition: timer.h:43
                            sb_timer_cancelAlarm
                            int8_t sb_timer_cancelAlarm(ALARM *alrm)
                            Cancel an alarm.
                            ALARM
                            struct ALARM ALARM
                            ALARM type.
                            Definition: timer.h:33
                            sb_timer_delay
                            int8_t sb_timer_delay(uint16_t waittime)
                            Waits for a specific number of ms.
                            Friedrich-Alexander-Universität
                            Erlangen-Nürnberg

                            Schlossplatz 4
                            91054 Erlangen
                            • Impressum
                            • Datenschutz
                            • Barrierefreiheit
                            • Facebook
                            • RSS Feed
                            • Xing
                            Nach oben