DEENESPTFRRUARHIKOZHNL

PWM Driver (Pwm)

ModulPwm (PWM Driver)
BSW-Modul-ID121
Standard-Header#include "Pwm.h"
SWS-SpezifikationAUTOSAR_SWS_PWMDriver.pdf
ClusterMicrocontroller Abstraction (MCAL)

Modul-GuideKI-GENERIERT

Steuert pulsweitenmodulierte Ausgänge der Mikrocontroller-Hardware kanalweise über Periode und Tastgrad.
KI-GENERIERT ungeprüft Modell: claude-opus-5-5 · Aufwand: high · Temperatur: nicht steuerbar · Prompt: 346ede702b24 Herkunft Offene Fragen (1)
Kausaler Anker: R20-11 Gültig ab R20-11 Neu synthetisiert für diesen Spezifikationsstand.
KI-generiertclaude-opus-5-5 · 2026-10-13

Steuert pulsweitenmodulierte Ausgänge der Mikrocontroller-Hardware kanalweise über Periode und Tastgrad.

Der PWM-Treiber steuert als MCAL-Modul die pulsweitenmodulierten Ausgänge des Mikrocontrollers kanalweise und greift dafür direkt auf dessen Register zu. Nach Pwm_Init setzen Pwm User Tastgrad und, bei Kanälen mit variabler Periode, auch die Periode. Sie können Ausgänge in den Idle-Zustand schalten und Flankenbenachrichtigungen ein- oder ausschalten [SWS_Pwm_91000]. Optional verwaltet der Treiber zweiphasige Wechsel des Leistungszustands über Vorbereiten und Setzen. Fehler wie fehlende Initialisierung oder ungültige Kanäle meldet er bei aktiver Fehlererkennung und führt dann nichts aus [SWS_Pwm_00201].

Der PWM-Treiber ist ein MCAL-Modul und steuert die pulsweitenmodulierten Ausgänge des Mikrocontrollers über dessen Register. Schnittstellen tieferer Module braucht er deshalb nicht (SWS PWM Driver S. 44). Initialisiert wird er synchron mit Pwm_Init und einem Zeiger auf das Konfigurationsset [SWS_Pwm_00095], das der ECU State Manager als optionale Initialisierungsschnittstelle aufruft (SWS EcuM S. 152). Genutzt wird er typischerweise von der IoHwAb, etwa durch einen Power-Stage-Treiber (SWS IoHwAb S. 37).

kontext EcuM EcuM (Startup) Pwm Pwm (MCAL-Treiber) EcuM->Pwm Pwm_Init User Pwm User (z. B. IoHwAb / Power-Stage-Treiber) User->Pwm Pwm_SetDutyCycle, Pwm_SetPeriodAndDuty, Pwm_SetOutputToIdle, Pwm_GetOutputState, Pwm_EnableNotification / Pwm_DisableNotification, Power-State-APIs SchM SchM (BSW-Scheduler) SchM->Pwm Pwm_Main_PowerTransitionManager (zyklisch) Pwm->User Pwm_Notification_<#Channel> IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> Det DET Pwm->Det Det_ReportError (optional) HW PWM-Einheit (Mikrocontroller) Pwm->HW direkter Registerzugriff Port Port-Logik / PWM-Pin HW->Port PWM-Signal (Lesepunkt von Pwm_GetOutputState vor der Port-Logik)

Kontextdiagramm: EcuM initialisiert den Treiber, der Pwm User bedient ihn, und der Treiber meldet Benachrichtigungen und Fehler zurück. Quellen: [SWS_Pwm_00105], [SWS_Pwm_00198], [SWS_Pwm_00104]

Gesteuert wird über einen 16-Bit-Tastgrad, bei dem 0x8000 für 100 % steht (SWS PWM Driver S. 18). Die wichtigsten Dienste:

  • Pwm_SetDutyCycle ändert den Tastgrad [SWS_Pwm_91000]. Bei 0 % und 100 % setzt es abhängig von der Polarität einen statischen Pegel.
  • Pwm_SetPeriodAndDuty ändert zusätzlich die Periode, aber nur bei Kanälen der Klasse PWM_VARIABLE_PERIOD [SWS_Pwm_00110].
  • Pwm_SetOutputToIdle schaltet sofort auf den Idle-Pegel [SWS_Pwm_91002].
  • Pwm_GetOutputState liest den internen Pegel [SWS_Pwm_00100].
kanal init nach Pwm_Init (konfigurierter Startzustand) mod Modulation (0 % < Tastgrad < 100 %) init->mod Konfiguration: Modulation stat statischer Pegel (0 %: invers zur Polarität, 100 %: gleich der Polarität) init->stat Konfiguration: Low oder High mod->mod Pwm_SetPeriodAndDuty (nur PWM_VARIABLE_PERIOD) mod->stat Pwm_SetDutyCycle(0x0000 | 0x8000) idle Idle-Zustand (konfigurierter Idle-Pegel) mod->idle Pwm_SetOutputToIdle / Pwm_DeInit stat->mod Pwm_SetDutyCycle(> 0 %, < 100 %) stat->idle Pwm_SetOutputToIdle / Pwm_DeInit idle->mod Pwm_SetPeriodAndDuty (Reaktivierung bei variabler Periode)

Zustandsdiagramm: Ein Kanal wechselt per API zwischen Modulation, statischem Pegel und Idle-Zustand. Quellen: [SWS_Pwm_91000], [SWS_Pwm_91001], SWS PWM Driver S. 31

Flankenbenachrichtigungen werden je Kanal mit Pwm_EnableNotification eingeschaltet [SWS_Pwm_91004] und kommen als Pwm_Notification_<#Channel> beim Pwm User an [SWS_Pwm_00105]. Optional verwaltet der Treiber auch Leistungszustände in zwei Phasen. Pwm_PreparePowerState startet die Vorbereitung [SWS_Pwm_00183], die der zyklische Pwm_Main_PowerTransitionManager abschließt [SWS_Pwm_00189]. Danach setzt Pwm_SetPowerState den Zustand [SWS_Pwm_00166].

Bei aktiver Fehlererkennung melden die Funktionen Fehler wie PWM_E_UNINIT, PWM_E_PARAM_CHANNEL oder PWM_E_PERIOD_UNCHANGEABLE [SWS_Pwm_00201] und kehren ohne Wirkung zurück (SWS PWM Driver S. 44). Pwm_GetOutputState liefert in diesen Fällen PWM_LOW [SWS_Pwm_30051]. Wird Pwm_SetPowerState aufgerufen, solange der Treiber noch in Gebrauch ist, entsteht der Laufzeitfehler PWM_E_NOT_DISENGAGED [SWS_Pwm_00202].

Rolle im MCAL: Treiber zwischen PWM-Einheit und Pwm User

Der PWM-Treiber kapselt die pulsweitenmodulierten Ausgänge des Mikrocontrollers. Als Modul der MCAL-Schicht greift er direkt auf die Register des Mikrocontrollers zu und benötigt deshalb keine Schnittstellen tieferliegender Module (SWS PWM Driver S. 44). Aus demselben Grund stellt er keine Callbacks für untere Schichten bereit (SWS PWM Driver S. 40) und bietet auch keine Service-Interfaces an (SWS PWM Driver S. 44). Seine Dienste sind über Pwm.h verfügbar, etwa Pwm_Init [SWS_Pwm_00095], Pwm_SetDutyCycle [SWS_Pwm_91000] und Pwm_GetOutputState [SWS_Pwm_00100]. Die Standardtypen Std_ReturnType und Std_VersionInfoType importiert er aus Std_Types.h [SWS_Pwm_00094].

Der ECU State Manager führt Pwm_Init unter seinen optionalen Initialisierungsschnittstellen (SWS EcuM S. 152). Im Anwendungsfall einer Leistungsendstufe ruft ein Power-Stage-Treiber der IoHwAb Dienste von PWM, DIO und SPI auf und stellt damit unter anderem Spannungen und Frequenzen ein (SWS IoHwAb S. 37). In Gegenrichtung ruft der Treiber zwei Arten von Funktionen auf: die kanalspezifischen Benachrichtigungen Pwm_Notification_<#Channel> [SWS_Pwm_00105] und, im Leistungsmanagement, IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> [SWS_Pwm_00198]. Entwicklungsfehler meldet er optional über Det_ReportError [SWS_Pwm_00104]. Bietet die Hardware für verschiedene Kanäle unterschiedliche Mechanismen, wird das nicht über herstellerspezifische API-Infixe abstrahiert, sondern über die Kanalnummer (TPS BSWMDT S. 122).

kontext EcuM EcuM (Startup) Pwm Pwm (MCAL-Treiber) EcuM->Pwm Pwm_Init User Pwm User (z. B. IoHwAb / Power-Stage-Treiber) User->Pwm Pwm_SetDutyCycle, Pwm_SetPeriodAndDuty, Pwm_SetOutputToIdle, Pwm_GetOutputState, Pwm_EnableNotification / Pwm_DisableNotification, Power-State-APIs SchM SchM (BSW-Scheduler) SchM->Pwm Pwm_Main_PowerTransitionManager (zyklisch) Pwm->User Pwm_Notification_<#Channel> IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> Det DET Pwm->Det Det_ReportError (optional) HW PWM-Einheit (Mikrocontroller) Pwm->HW direkter Registerzugriff Port Port-Logik / PWM-Pin HW->Port PWM-Signal (Lesepunkt von Pwm_GetOutputState vor der Port-Logik)

Kontextdiagramm: Der Pwm-Treiber wird von EcuM initialisiert und vom Pwm User bedient. Er wird vom Scheduler zyklisch aufgerufen, meldet Benachrichtigungen an den Pwm User und Fehler an DET und steuert die PWM-Einheit über ihre Register. Quellen: [SWS_Pwm_00104], [SWS_Pwm_00105], [SWS_Pwm_00189], [SWS_Pwm_00198], SWS EcuM S. 152, SWS IoHwAb S. 37, RS PWM Driver S. 14

Signalmodell: Periode, Tastgrad, Polarität und Kanalklassen

Ein Kanal wird über den numerischen Bezeichner Pwm_ChannelType angesprochen [SWS_Pwm_00106]. Die Periode ist vom Typ Pwm_PeriodType, einem implementierungsspezifischen Typ mit 8 bis 32 Bit [SWS_Pwm_00107]. Drei Begriffe bestimmen das Signal (SWS PWM Driver S. 9):

  • Die Polarität legt den Startpegel jeder Periode fest.
  • Der Tastgrad gibt den Anteil dieses Startpegels an der Periode an.
  • Der Idle-Zustand ist der Ausgangszustand nach Pwm_SetOutputToIdle oder Pwm_DeInit.

Das Schaubild zur Signalbeschreibung stellt beide Polaritäten PWM_HIGH und PWM_LOW gegenüber (SWS PWM Driver S. 7).

Der Tastgrad ist ein 16-Bit-Wert. 0x0000 steht für 0 % und 0x8000 für 100 %. Als Umsetzungshilfe nennt die Spezifikation AbsoluteDutyCycle = ((uint32)AbsolutePeriodTime * RelativeDutyCycle) >> 15; (SWS PWM Driver S. 18). Entsprechend begrenzen Pwm_SetDutyCycle und Pwm_SetPeriodAndDuty den Parameter DutyCycle auf Min=0x0000 und Max=0x8000 [SWS_Pwm_91000] [SWS_Pwm_91001].

Die Kanalklasse Pwm_ChannelClassType legt fest, was ein Kanal zur Laufzeit ändern darf [SWS_Pwm_00110]:

  • PWM_VARIABLE_PERIOD: Periode und Tastgrad sind änderbar.
  • PWM_FIXED_PERIOD: Nur der Tastgrad ist änderbar.
  • PWM_FIXED_PERIOD_SHIFTED: Feste, verschobene Periode, die nicht geändert werden kann; nur verfügbar, wenn die Hardware das unterstützt.

Das Schaubild zur verschobenen Periode zeigt Kanäle mit gleicher Periode, deren Periodenbeginn jeweils um eine feste Zeit versetzt ist (SWS PWM Driver S. 23).

Lebenszyklus und Signalsteuerung: von Pwm_Init bis zum Idle-Zustand

Pwm_Init ist synchron und nicht reentrant. Die Funktion erhält mit ConfigPtr einen Zeiger auf das Konfigurationsset [SWS_Pwm_00095]. Dessen Typ Pwm_ConfigType hat hardwarespezifischen Inhalt [SWS_Pwm_00111]. Laut Schaubild zur Initialisierung stehen die Ausgänge danach je nach Konfiguration auf Low, auf High oder im Modulationszustand. Benachrichtigungen treten erst nach dem ersten Aufruf von Pwm_EnableNotification auf (SWS PWM Driver S. 46). Wird Pwm_Init auf einem bereits initialisierten Treiber erneut aufgerufen, ist der Entwicklungsfehler PWM_E_ALREADY_INITIALIZED zu melden [SWS_Pwm_50002].

Pwm_DeInit ist ebenfalls synchron und nicht reentrant [SWS_Pwm_00096]. Die Funktion de-initialisiert das Modul, setzt die Ausgänge in den Idle-Zustand und schaltet PWM-Interrupts sowie Flankenbenachrichtigungen ab. Über PwmDeInitApi lässt sie sich ein- und ausschalten (SWS PWM Driver S. 27). Interpretation: Danach dürfte das Modul wieder als nicht initialisiert gelten, sodass ein erneuter Aufruf von Pwm_Init zulässig ist. Frage Q-a892974ddbe644e0 (offen)

lebenszyklus start Start uninit nicht initialisiert start->uninit uninit->uninit andere API → PWM_E_UNINIT (Pwm_GetOutputState liefert PWM_LOW) init initialisiert (Kanäle gemäß Konfiguration: Low, High oder Modulation) uninit->init Pwm_Init(ConfigPtr) init->uninit Pwm_DeInit (Ausgänge Idle, Interrupts und Benachrichtigungen aus) Interpretation: Folgezustand init->init Pwm_Init → PWM_E_ALREADY_INITIALIZED

Zustandsdiagramm: Lebenszyklus des Moduls mit Initialisierung, De-Initialisierung und den Fehlern bei falscher Aufrufreihenfolge. Die Rückkehr in den Zustand „nicht initialisiert“ nach Pwm_DeInit ist eine Interpretation. Quellen: [SWS_Pwm_00095], [SWS_Pwm_00096], [SWS_Pwm_50002], [SWS_Pwm_20002], [SWS_Pwm_30051], SWS PWM Driver S. 27

Im Betrieb setzt Pwm_SetDutyCycle den Tastgrad eines Kanals [SWS_Pwm_91000]. Bei 0 % und 100 % wird der Ausgang statisch gesetzt (SWS PWM Driver S. 28):

  • Bei 0 % ist der Pegel invers zur konfigurierten Polarität.
  • Bei 100 % entspricht der Pegel der Polarität.
  • Bei Werten dazwischen wird gemäß Periode, Tastgrad und Polarität moduliert.

Laut Schaubild übernimmt der Treiber den neuen Tastgrad am Ende der laufenden Periode, sofern die Implementierung das unterstützt, sonst sofort (SWS PWM Driver S. 37).

Pwm_SetPeriodAndDuty setzt Periode und Tastgrad gemeinsam [SWS_Pwm_91001]. Dabei gelten drei Regeln (SWS PWM Driver S. 30):

  • Die Periode wird am Periodenende aktualisiert, wenn die Implementierung das unterstützt und es über PwmPeriodUpdatedEndperiod konfiguriert ist.
  • Störspitzen am Ausgang sind zu unterdrücken.
  • Der Tastgrad wird mitgegeben, damit Frequenz und Tastgrad zueinander passen.
tastgrad a Aufruf Pwm_SetDutyCycle oder Pwm_SetPeriodAndDuty (allgemeine Prüfungen bestanden) k Pwm_SetPeriodAndDuty? a->k c Kanalklasse = PWM_VARIABLE_PERIOD? k->c ja d angeforderter Tastgrad? k->d nein (Pwm_SetDutyCycle) e PWM_E_PERIOD_UNCHANGEABLE melden, Funktion ohne Aktion verlassen c->e nein (bei aktiver Fehlererkennung) p Periode und Tastgrad setzen (Periode am Periodenende, falls PwmPeriodUpdatedEndperiod; Störspitzen unterdrücken) c->p ja z Ausgang statisch: invers zur Polarität d->z 0x0000 (0 %) h Ausgang statisch: gleich der Polarität d->h 0x8000 (100 %) m Modulation gemäß Periode, Tastgrad und Polarität d->m dazwischen

Aktivitätsdiagramm: Verarbeitung von Pwm_SetDutyCycle und Pwm_SetPeriodAndDuty mit Prüfung der Kanalklasse und Sonderbehandlung von 0 % und 100 %. Quellen: [SWS_Pwm_40002], SWS PWM Driver S. 28, SWS PWM Driver S. 30, SWS PWM Driver S. 44

Pwm_SetOutputToIdle setzt den Ausgang sofort auf den konfigurierten Idle-Zustand [SWS_Pwm_91002]. Kanäle mit variabler Periode werden anschließend über Pwm_SetPeriodAndDuty wieder aktiviert (SWS PWM Driver S. 31). Das Schaubild „Setting Pwm output to idle“ zeigt genau diese Folge (SWS PWM Driver S. 50). Pwm_GetOutputState liest den internen Ausgangszustand synchron als PWM_HIGH oder PWM_LOW [SWS_Pwm_00100] [SWS_Pwm_00108]. Ein Schaubild der Anforderungsspezifikation verortet den gelesenen Wert am Ausgang der PWM-Einheit, also vor der Port-Logik und nicht am physischen Pin (RS PWM Driver S. 14).

kanal init nach Pwm_Init (konfigurierter Startzustand) mod Modulation (0 % < Tastgrad < 100 %) init->mod Konfiguration: Modulation stat statischer Pegel (0 %: invers zur Polarität, 100 %: gleich der Polarität) init->stat Konfiguration: Low oder High mod->mod Pwm_SetPeriodAndDuty (nur PWM_VARIABLE_PERIOD) mod->stat Pwm_SetDutyCycle(0x0000 | 0x8000) idle Idle-Zustand (konfigurierter Idle-Pegel) mod->idle Pwm_SetOutputToIdle / Pwm_DeInit stat->mod Pwm_SetDutyCycle(> 0 %, < 100 %) stat->idle Pwm_SetOutputToIdle / Pwm_DeInit idle->mod Pwm_SetPeriodAndDuty (Reaktivierung bei variabler Periode)

Zustandsdiagramm: Ausgangszustände eines Kanals (Modulation, statischer Pegel, Idle) und die APIs, die zwischen ihnen wechseln. Quellen: [SWS_Pwm_91000], [SWS_Pwm_91001], [SWS_Pwm_91002], SWS PWM Driver S. 28, SWS PWM Driver S. 31, SWS PWM Driver S. 46

Flankenbenachrichtigungen je Kanal

Mit Pwm_EnableNotification schaltet der Pwm User die Benachrichtigung für einen Kanal ein. Der Parameter vom Typ Pwm_EdgeNotificationType wählt PWM_RISING_EDGE, PWM_FALLING_EDGE oder PWM_BOTH_EDGES [SWS_Pwm_91004] [SWS_Pwm_00109]. Die Funktion verwirft anstehende Interrupts (SWS PWM Driver S. 35). Sie existiert ebenso wie Pwm_DisableNotification [SWS_Pwm_91003] nur, wenn PwmNotificationSupported eingeschaltet ist (SWS PWM Driver S. 34).

Der Treiber ruft die konfigurierte Funktion Pwm_Notification_<#Channel> entsprechend dem letzten Aufruf von Pwm_EnableNotification bzw. Pwm_DisableNotification auf. Dabei setzt er das zugehörige Interrupt-Flag zurück (SWS PWM Driver S. 42). Der Callback hat keine Parameter und wird über Pwm_Externals.h bekannt gemacht. Ob er reentrant ist, hängt von der Implementierung des Pwm User ab [SWS_Pwm_00105].

Flankenbenachrichtigung eines PWM-KanalsPwm UserPwmPwm_Init(const Pwm_ConfigType*)Pwm_Init()Keine Benachrichtigung bis zumersten Pwm_EnableNotificationPwm_EnableNotification(ChannelNumber,PWM_RISING_EDGE | PWM_FALLING_EDGE | PWM_BOTH_EDGES)anstehende Interrupts verwerfenPwm_EnableNotification()loopbei jeder gewählten FlankeInterrupt-Flag zurücksetzenPwm_Notification_<#Channel>()Pwm_DisableNotification(ChannelNumber)Pwm_DisableNotification()Keine weiteren Benachrichtigungen

Sequenzdiagramm: Ablauf von der Initialisierung über das Ein- und Ausschalten der Flankenbenachrichtigung bis zum Ausbleiben weiterer Callbacks. Quellen: [SWS_Pwm_91004], [SWS_Pwm_91003], [SWS_Pwm_00105], SWS PWM Driver S. 52, SWS PWM Driver S. 42

Leistungszustände der PWM-Peripherie

Die Steuerung von Leistungszuständen ist eine optionale Funktion. Sie beschränkt sich auf die PWM-Peripherie und setzt voraus, dass Anwendung, Modusverwaltung und IoHwAb die übergeordneten Randbedingungen bereits erfüllen (SWS PWM Driver S. 17). Ist PwmLowPowerStatesSupport aktiv, werden die vier Power-State-APIs erzeugt (SWS PWM Driver S. 16). Pwm_PowerStateType kennt PWM_FULL_POWER (0x00) sowie den Bereich 1..255 für Zustände mit abnehmendem Verbrauch. In R20-11 ist der Typ als Aufzählung definiert [SWS_Pwm_00197]. Eine spätere Fassung führt ihn dagegen als von uint8 abgeleiteten Typ (SWS PWM Driver S. 25).

Der Wechsel des Leistungszustands läuft in zwei Phasen ab:

  1. Pwm_PreparePowerState startet die Vorbereitung und liefert im Ergebnisparameter PWM_SERVICE_ACCEPTED oder einen Ablehnungsgrund [SWS_Pwm_00183] [SWS_Pwm_00165]. Was sich nicht sofort abschließen lässt, erledigt die zyklisch aufgerufene Pwm_Main_PowerTransitionManager [SWS_Pwm_00189] [SWS_Pwm_00190]. Ihre Aufrufrate ist variabel, und Callbacks verschickt sie nur im asynchronen Modus (SWS PWM Driver S. 41). Die abgeschlossene Vorbereitung meldet der Treiber mit IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> [SWS_Pwm_00198].
  2. Pwm_SetPowerState versetzt die Hardware in den vorbereiteten Zustand [SWS_Pwm_00166]. Vorleistungen wie das Setzen aller Kanäle auf IDLE und das Abmelden aller Benachrichtigungen müssen die verantwortlichen SWCs, etwa die IoHwAb, bereits erbracht haben. Implizite Zwischenzustände führt die Funktion nicht aus (SWS PWM Driver S. 36).
powerzustand uninit nicht initialisiert (Ergebnis PWM_NOT_INIT) stabil stabil (aktueller = Zielzustand) uninit->stabil Pwm_Init stabil->stabil Pwm_SetPowerState ohne Vorbereitung oder Prepare mit aktuellem Zustand → PWM_SEQUENCE_ERROR stabil->stabil nicht unterstützt / nicht direkt erreichbar → PWM_POWER_STATE_NOT_SUPP / PWM_TRANS_NOT_POSSIBLE vorb Vorbereitung läuft (Ziel ≠ aktueller Zustand) stabil->vorb Pwm_PreparePowerState(PowerState) E_OK / PWM_SERVICE_ACCEPTED (asynchroner Modus) bereit Vorbereitung abgeschlossen stabil->bereit Pwm_PreparePowerState (synchroner Modus) vorb->bereit Pwm_Main_PowerTransitionManager → IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> bereit->stabil Pwm_SetPowerState E_OK (neuer Zustand aktiv)

Zustandsdiagramm: Zweiphasiger Wechsel des Leistungszustands mit Vorbereitung, Abschluss und Setzen sowie den Sequenzfehlern. Quellen: [SWS_Pwm_00183], [SWS_Pwm_00166], [SWS_Pwm_00165], [SWS_Pwm_00190], SWS PWM Driver S. 39, SWS IoHwAb S. 61

Pwm_GetCurrentPowerState [SWS_Pwm_00177] liefert den aktuellen Zustand, Pwm_GetTargetPowerState [SWS_Pwm_00180] den angeforderten. Solange kein Übergang läuft, stimmen beide überein (SWS PWM Driver S. 38). Die IoHwAb-Spezifikation zeigt das Zusammenspiel von BswM, RTE/SchM, IoHwAb, ADC und PWM für den asynchronen Fall (SWS IoHwAb S. 60). Im synchronen Fall ist die Vorbereitung bereits abgeschlossen, wenn die Vorbereitungs-API zurückkehrt (SWS IoHwAb S. 61).

Asynchroner Wechsel in einen Niedrigenergiezustand (vereinfacht)BswMRte / SchMIoHwAbPwmUse Case: Phase 1: VorbereitungRTE/SchMSwitch(...)OnEntryRunnable_LowPowerModeA()IoHwAb_PreparePowerState_LowPowerModeA()Pwm_PreparePowerState(PwrSts_3)E_OK / PWM_SERVICE_ACCEPTEDVorbereitung läuft im Hintergrund weiterUse Case: Phase 2: Hintergrundverarbeitungloopbis Vorbereitung abgeschlossenPwm_Main_PowerTransitionManager()IoHwAb_Pwm_NotifyReadyForPowerStateLowPowerModeA()IoHwAb_PollForResults()UpdateModePorts()Use Case: Phase 3: Zustand setzenRTE/SchMSwitch(LowPowerModeA_Transition_End)IoHwAb_EnterPowerStateLP1()Vorleistung: alle Kanäle IDLE,Benachrichtigungen abgemeldetPwm_SetPowerState(&Result)E_OK / PWM_SERVICE_ACCEPTEDPwm_GetCurrentPowerState(...)E_OK, CurrentPowerState

Sequenzdiagramm: Asynchroner Wechsel in einen Niedrigenergiezustand, gesteuert von der IoHwAb. Der Ablauf ist vereinfacht und ADC wurde weggelassen. Quellen: [SWS_Pwm_00183], [SWS_Pwm_00189], [SWS_Pwm_00198], [SWS_Pwm_00166], SWS IoHwAb S. 57, SWS IoHwAb S. 60

Konfiguration, Kanalcontainer und Nebenläufigkeit

Pflichtparameter eines Kanals sind der zugeordnete Hardwarekanal, Vorgabewerte für Periode und Tastgrad, Polarität, Idle-Pegel und Kanalklasse. Phasenverschiebung, Referenzkanal und mikrocontrollerspezifische Eigenschaften sind optional, soweit die Hardware sie bietet (SWS PWM Driver S. 25). Im Konfigurationsmodell enthält PwmChannelConfigSet mindestens einen PwmChannel, und PwmDutycycleDefault ist auf 0 bis 0x8000 begrenzt (ECUC-Parameter S. 545). PwmChannelClass wird auf Pwm_ChannelClassType abgebildet. PwmChannelId wird dem symbolischen Namen des Kanal-Containers zugewiesen (SWS PWM Driver S. 57).

Optionale Dienste werden per Konfiguration ein- und ausgeschaltet: PwmSetOutputToIdle (SWS PWM Driver S. 31), PwmGetOutputState (SWS PWM Driver S. 33) sowie die oben genannten PwmDeInitApi und PwmNotificationSupported.

Für die Nebenläufigkeit gilt:

  • Kanaldienste wie Pwm_SetDutyCycle sind reentrant für unterschiedliche Kanalnummern [SWS_Pwm_91000].
  • Die Leistungszustands-APIs sind nicht reentrant [SWS_Pwm_00183].
  • Konfigurationen mit Partitionszuordnungen, die die Implementierung nicht unterstützt, muss das Modul zurückweisen [SWS_Pwm_00203].

Die Reentranzstufen bis hin zu „multi-core reentrant“ erläutert der BSW-Distribution-Guide (BSW Distribution Guide S. 18).

Verhalten im Fehlerfall

Ist die Entwicklungsfehlererkennung aktiv, melden die Funktionen erkannte Fehler an den Default Error Tracer. Anschließend überspringen sie die angeforderte Funktion, damit weder Daten noch Hardwareregister verfälscht werden (SWS PWM Driver S. 44). Die Fehlercodes sind [SWS_Pwm_00201]:

  • PWM_E_INIT_FAILED (0x10)
  • PWM_E_UNINIT (0x11) für Aufrufe vor der Initialisierung [SWS_Pwm_20002]
  • PWM_E_PARAM_CHANNEL (0x12) für ungültige Kanäle [SWS_Pwm_30002]
  • PWM_E_PERIOD_UNCHANGEABLE (0x13) für Periodenänderungen an Kanälen mit fester Periode [SWS_Pwm_40002]
  • PWM_E_ALREADY_INITIALIZED (0x14)
  • PWM_E_PARAM_POINTER (0x15) für einen NULL-Parameter an Pwm_GetVersionInfo

Pwm_GetOutputState muss immer einen Wert zurückgeben. Vor der Initialisierung oder bei ungültigem Kanal ist das PWM_LOW [SWS_Pwm_30051].

pruefung a Aufruf einer Kanal-API det Entwicklungsfehlererkennung aktiv? a->det ini Modul initialisiert? det->ini ja ok Dienst ausführen det->ok nein ch ChannelNumber gültig? ini->ch ja u PWM_E_UNINIT an DET melden ini->u nein pc PWM_E_PARAM_CHANNEL an DET melden ch->pc nein ch->ok ja skip Funktion ohne Aktion verlassen (Pwm_GetOutputState liefert PWM_LOW) u->skip pc->skip

Aktivitätsdiagramm: Allgemeine Prüfungen der Kanal-APIs bei aktiver Entwicklungsfehlererkennung, mit Abbruch ohne Wirkung. Quellen: [SWS_Pwm_20002], [SWS_Pwm_30002], [SWS_Pwm_30051], SWS PWM Driver S. 44

Die Leistungszustands-APIs melden Fehler zusätzlich über Std_ReturnType und den Ergebnistyp Pwm_PowerStateRequestResultType. Mögliche Werte sind PWM_NOT_INIT, PWM_SEQUENCE_ERROR, PWM_HW_FAILURE, PWM_POWER_STATE_NOT_SUPP und PWM_TRANS_NOT_POSSIBLE [SWS_Pwm_00165]. Für einen nicht unterstützten Zustand ist zudem PWM_E_POWER_STATE_NOT_SUPPORTED festgelegt [SWS_Pwm_00174], für einen nicht direkt erreichbaren Zustand PWM_E_TRANSITION_NOT_POSSIBLE [SWS_Pwm_00175].

Wird Pwm_SetPowerState aufgerufen, obwohl noch Kanäle außerhalb von IDLE stehen oder Benachrichtigungen registriert sind, entsteht der Laufzeitfehler PWM_E_NOT_DISENGAGED (0x16) [SWS_Pwm_00202] (SWS PWM Driver S. 20). Pwm_Main_PowerTransitionManager kehrt ohne Initialisierung einfach zurück und meldet dabei bewusst keinen Entwicklungsfehler. Der Grund: Zyklische Tasks können schon vor dem Ende der Initialisierung laufen (SWS PWM Driver S. 41).

Weiterführende Detailbelege

KI-generierter Leitfaden auf Basis der im Payload bereitgestellten Requirements und Dokumentstellen für AUTOSAR Classic R20-11. Verbindlich ist allein die Spezifikation.

PWM Driver (Pwm)

Generates pulse-width-modulated signals with configurable duty cycle and period.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

function Pwm_Init [SWS_Pwm_00095] 📄 PDF

void Pwm_Init (const Pwm_ConfigType* ConfigPtr);

Service for PWM initialization.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 0770524664d2 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die synchrone Funktion Pwm_Init dient als zentraler Dienst zur Initialisierung des gesamten PWM-Treibers ([SWS_Pwm_00095]). Sie wird über die Header-Datei Pwm.h bereitgestellt und besitzt die hexadezimale Service-ID 0x00 ([SWS_Pwm_00095]). Als einziger Eingangsparameter wird ConfigPtr übergeben, der als Zeiger auf den treiberspezifischen Konfigurationssatz vom Typ Pwm_ConfigType fungiert ([SWS_Pwm_00095]). Die Schnittstelle besitzt keinen Rückgabewert und verwendet weder Ausgabeparameter noch Ein-/Ausgabeparameter ([SWS_Pwm_00095]).

In Bezug auf das Laufzeitverhalten ist Pwm_Init synchron und als nicht reentrant (Non Reentrant) spezifiziert ([SWS_Pwm_00095]). Ein gleichzeitiger oder unterbrechender Aufruf dieser Funktion aus mehreren Threads, Tasks oder Unterbrechungsroutinen ist daher strikt unzulässig. Die Ausführung dürfte typischerweise einmalig während des Systemstarts in der Initialisierungsphase des Steuergeräts vor der weiteren Nutzung der PWM-Kanäle erfolgen. Frage Q-ff3f1cf769dfed70 (offen)

Zur Absicherung der zulässigen Aufrufreihenfolge überwacht das Modul seinen Zustand: Wird der Dienst Pwm_Init aufgerufen, wenn der PWM-Treiber bereits initialisiert ist, meldet das Modul den Entwicklungsfehler PWM_E_ALREADY_INITIALIZED mit der Kennung 0x14 ([SWS_Pwm_50002]). Eine wiederholte Initialisierung wird somit als Fehler gewertet.

Dieser Text wurde von einer KI erstellt. AUTOSAR-Spezifikationen sind maßgeblich.

Implementer's Guide folgt (Komplexität I1)

function Pwm_DeInit [SWS_Pwm_00096] 📄 PDF

void Pwm_DeInit (void);

Service for PWM De - Initialization.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: e8e4048754f1 Herkunft Offene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung und Signatur

Die Funktion Pwm_DeInit dient als Service zur Deinitialisierung des PWM-Treibers ([SWS_Pwm_00096]). Sie wird über die Header-Datei Pwm.h bereitgestellt und führt die Service-ID 0x01 ([SWS_Pwm_00096]). Die Schnittstelle besitzt die Signatur void Pwm_DeInit(void), nimmt weder Eingangs- noch Ausgangsparameter entgegen und liefert keinen Rückgabewert an den Aufrufer ([SWS_Pwm_00096]).

Der Aufruf von Pwm_DeInit wird synchron ausgeführt ([SWS_Pwm_00096]). Der aufrufende Kontrollfluss verbleibt somit in der Funktion, bis die Deinitialisierungsschritte des PWM-Moduls abgeschlossen sind.

Nebenläufigkeit und Einschränkungen

Für die Ausführung gelten folgende Randbedingungen bezüglich Nebenläufigkeit:

  • Nicht reentrant: Der Dienst ist als nicht reentrant spezifiziert ([SWS_Pwm_00096]). Ein gleichzeitiger oder unterbrechender Aufruf aus mehreren Threads, Tasks oder ISRs ist unzulässig.
  • Aufrufkontext: Aufgrund der synchronen Semantik und der fehlenden Reentranz dürfte der Aufruf typischerweise im Rahmen einer kontrollierten Shutdown-Phase auf Task-Ebene erfolgen. Frage Q-f1afc58637cba5cf (offen)

Fehlerbehandlung

In der Spezifikation von Pwm_DeInit sind weder Rückgabewerte noch spezifische Fehlercodes definiert ([SWS_Pwm_00096]). Etwaige Laufzeit- oder Zustandsfehler dürften vermutlich über modulinterne Überwachungsmechanismen wie die Entwicklungsschnittstelle (DET) protokolliert oder abgefangen werden, da eine direkte Fehlerrückmeldung über die Funktionsschnittstelle nicht vorgesehen ist. Frage (offen)

Dieser Text wurde automatisch anhand der Spezifikation AUTOSAR Classic R20-11 generiert.

function Pwm_DisableNotification [SWS_Pwm_91003] 📄 PDF

void Pwm_DisableNotification (Pwm_ChannelType ChannelNumber);

Service to disable the PWM signal edge notification.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 2d97fc6435bd Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Funktion Pwm_DisableNotification dient dem Deaktivieren der Flankenbenachrichtigung (Signal Edge Notification) eines bestimmten PWM-Kanals [SWS_Pwm_91003]. Die Funktionsdeklaration und zugehörigen Typdefinitionen werden über die Header-Datei Pwm.h zur Verfügung gestellt [SWS_Pwm_91003].

Parameter und Rückgabewert

Die Schnittstelle besitzt die Service-ID 0x06 und weist folgende Signaturmerkmale auf [SWS_Pwm_91003]:

  • ChannelNumber (in): Numerischer Bezeichner des zu konfigurierenden PWM-Kanals vom Typ Pwm_ChannelType [SWS_Pwm_91003].

Es existieren weder Ein-/Ausgabeparameter (inout) noch reine Ausgabeparameter (out) [SWS_Pwm_91003]. Die Funktion liefert keinen Rückgabewert (void) an den Aufrufer zurück [SWS_Pwm_91003].

Synchronisationsverhalten und Nebenläufigkeit

Der Aufruf von Pwm_DisableNotification arbeitet asynchron [SWS_Pwm_91003]. In Bezug auf das Multithreading-Verhalten ist der Dienst reentrant, solange unterschiedliche Kanalnummern angesprochen werden [SWS_Pwm_91003].

Interpretation: Da die Reentranz explizit auf unterschiedliche Kanäle beschränkt ist, ist die Funktion für denselben PWM-Kanal vermutlich nicht reentrant [SWS_Pwm_91003]. Frage Q-005e97fd25679da7 (offen) Zeitgleiche Aufrufe für den identischen Kanal dürften daher auf Anruferseite gegeneinander synchronisiert werden müssen.

Kuratierte Nutzungshinweise auf Basis der Spezifikation AUTOSAR Classic R20-11.

function Pwm_EnableNotification [SWS_Pwm_91004] 📄 PDF

void Pwm_EnableNotification (Pwm_ChannelType ChannelNumber, Pwm_EdgeNotificationType Notification);

Service to enable the PWM signal edge notification according to notification pa rameter.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 0c9ffc1eca13 Herkunft Offene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung

Die Funktion Pwm_EnableNotification dient der Aktivierung von Signalflanken-Benachrichtigungen für einen bestimmten PWM-Kanal gemäß dem übergebenen Benachrichtigungsparameter [SWS_Pwm_91004]. Der Dienst wird über die Header-Datei Pwm.h bereitgestellt, besitzt die Service-ID 0x07 und liefert keinen Rückgabewert (void) an den Aufrufer zurück [SWS_Pwm_91004].

Beim Aufruf der Schnittstelle sind zwei obligatorische Eingangsparameter zu übergeben [SWS_Pwm_91004]:

  • ChannelNumber (vom Typ Pwm_ChannelType): Numerische Kennung des anzusprechenden PWM-Kanals [SWS_Pwm_91004].
  • Notification (vom Typ Pwm_EdgeNotificationType): Definiert die Art der Flanken-Benachrichtigung mit den zulässigen Werten PWM_RISING_EDGE, PWM_FALLING_EDGE oder PWM_BOTH_EDGES [SWS_Pwm_91004].

Semantik und Nebenläufigkeit

Die Ausführung des Dienstes ist als asynchron spezifiziert [SWS_Pwm_91004]. In Bezug auf Nebenläufigkeit ist Pwm_EnableNotification reentrant für unterschiedliche Kanalnummern ausgelegt [SWS_Pwm_91004]. Bei einem gleichzeitigen oder unterbrechenden Zugriff auf denselben PWM-Kanal ist der Dienst vermutlich nicht reentrant; ein solcher Aufruf muss daher aufruferseitig abgesichert werden. Frage Q-73309ed8589161a3 (offen)

Fehlerbehandlung und Randbedingungen

Der Spezifikationsauszug definiert für diese Funktion weder spezifische Rückgabewerte noch Fehlermeldungen für das Development Error Tracer (DET) oder das Diagnostic Event Manager (DEM) [SWS_Pwm_91004]. Ebenso fehlen Vorgaben zu zulässigen Aufrufkontexten oder taskbezogenen Reihenfolgen. Da keine Vorbedingungen genannt werden, dürfte der Funktionsaufruf erst nach einer erfolgreichen Initialisierung des PWM-Treibers zulässig sein. Frage Q-7f428f59a20175c2 (offen)

Dieser Nutzungshinweis wurde automatisiert auf Basis des Spezifikationsauszugs von AUTOSAR Classic R20-11 erstellt.

function Pwm_SetPowerState [SWS_Pwm_00166] 📄 PDF

Std_ReturnType Pwm_SetPowerState (Pwm_PowerStateRequestResultType* Result);

This API configures the Pwm module so that it enters the already prepared power st ate, chosen between a predefined set of configured ones.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: b7532b0354d7 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die synchrone Funktion Pwm_SetPowerState versetzt das PWM-Modul in einen zuvor vorbereiteten Zustand aus einer vorkonfigurierten Auswahl von Power-States [SWS_Pwm_00166]. Die Deklaration ist über den Header Pwm.h verfügbar [SWS_Pwm_00166].

Verwendung und Rückgabewerte

Die Funktion nimmt keine Eingabeparameter entgegen und übergibt das detaillierte Ergebnis über den Zeigerparameter Result vom Typ Pwm_PowerStateRequestResultType* [SWS_Pwm_00166]:

  • Konnte der Modus erfolgreich gewechselt werden, liefert die Funktion E_OK zurück und setzt Result auf PWM_SERVICE_ACCEPTED [SWS_Pwm_00166].
  • Wird die Anforderung zurückgewiesen, gibt der Aufruf E_NOT_OK zurück [SWS_Pwm_00166].

Fehlerbehandlung

Im Fehlerfall (Rückgabewert E_NOT_OK) spezifiziert Result die Ursache des Scheiterns [SWS_Pwm_00166]:

  • PWM_NOT_INIT: Das PWM-Modul ist nicht initialisiert [SWS_Pwm_00166].
  • PWM_SEQUENCE_ERROR: Es liegt eine unzulässige API-Aufrufsequenz vor [SWS_Pwm_00166].
  • PWM_HW_FAILURE: Ein Fehler im Hardwaremodul verhindert den Eintritt in den angeforderten Power-State [SWS_Pwm_00166].

Nebenläufigkeit und Randbedingungen

Pwm_SetPowerState ist nicht reentrant (Non Reentrant) und erfordert zur Vermeidung eines Sequenzfehlers, dass der Zielzustand vor dem Aufruf vorbereitet wurde [SWS_Pwm_00166].

Dieser Text wurde von einer KI auf Basis der AUTOSAR-Spezifikation erstellt.

Implementer's Guide folgt (Komplexität I1)

function Pwm_GetCurrentPowerState [SWS_Pwm_00177] 📄 PDF

Std_ReturnType Pwm_GetCurrentPowerState (Pwm_PowerStateType* CurrentPowerState, Pwm_PowerStateRequestResultType* Result);

This API returns the current power state of the PWM HW unit. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

function Pwm_PreparePowerState [SWS_Pwm_00183] 📄 PDF

Std_ReturnType Pwm_PreparePowerState (Pwm_PowerStateType PowerState, Pwm_PowerStateRequestResultType* Result);

This API starts the needed process to allow the PWM HW module to enter the requested power state. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 50b7f8a853d8 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung

Die synchrone Funktion Pwm_PreparePowerState leitet den erforderlichen Vorbereitungsprozess ein, damit das PWM-Hardwaremodul in einen angeforderten Energiezustand wechseln kann [SWS_Pwm_00183]. Der gewünschte Zielzustand wird über den Parameter PowerState übergeben, während das detaillierte Ergebnis über den Ausgabepointer Result bereitgestellt wird [SWS_Pwm_00183]. Wurde die Vorbereitung erfolgreich angestoßen, gibt die Funktion E_OK zurück und setzt Result auf PWM_SERVICE_ACCEPTED [SWS_Pwm_00183].

Fehlerbehandlung

Wird der Dienst abgewiesen, liefert die Funktion E_NOT_OK und meldet die spezifische Ursache über Result [SWS_Pwm_00183]:

  • PWM_NOT_INIT: Das PWM-Modul ist nicht initialisiert [SWS_Pwm_00183].
  • PWM_SEQUENCE_ERROR: Unzulässige Aufrufsequenz, da der aktuelle Energiezustand bereits dem Zielzustand entspricht [SWS_Pwm_00183].
  • PWM_POWER_STATE_NOT_SUPP: Das Modul unterstützt den angeforderten Energiezustand nicht [SWS_Pwm_00183].
  • PWM_TRANS_NOT_POSSIBLE: Ein direkter Übergang ist nicht möglich oder die Hardware-Peripherie ist noch beschäftigt [SWS_Pwm_00183].

Nebenläufigkeit und Zusammenspiel

Die Funktion ist nicht reentrant (Non Reentrant) und darf daher für dasselbe Modul nicht nebenläufig aufgerufen werden [SWS_Pwm_00183]. Nach erfolgreicher Vorbereitung durch Pwm_PreparePowerState müssen nachgelagerte, nicht unmittelbar wirksame Aktionen ausgeführt werden, um den Energiezustandsübergang final abzuschließen [SWS_Pwm_00190].

Dieser Nutzungshinweis wurde automatisch auf Basis der Spezifikation R20-11 generiert.

Implementer's Guide folgt (Komplexität I1)

function Pwm_Main_PowerTransitionManager [SWS_Pwm_00189] 📄 PDF

void Pwm_Main_PowerTransitionManager (void);

This API is cyclically called and supervises the power state transitions, checking for the readiness of the module and issuing the callbacks Io Hw Ab_ Pwm_ Notify Ready For Power State (see Pwm Power State Ready Cb k Ref configuration parameter). AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 879296577e8e Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Schnittstelle Pwm_Main_PowerTransitionManager dient der zyklischen Überwachung von Energiezustandsübergängen (Power State Transitions) des PWM-Treibers gemäß [SWS_Pwm_00189]. Sie besitzt die Service-ID 0x0d, nimmt keine Übergabeparameter entgegen und liefert keinen Rückgabewert (Signatur void Pwm_Main_PowerTransitionManager(void)).

Im Rahmen ihrer zyklischen Ausführung überprüft die Funktion die Betriebsbereitschaft des Moduls für den jeweiligen Energiezustand. Sobald die Bereitschaft vorliegt, löst sie die Benachrichtigungs-Callbacks IoHwAb_Pwm_NotifyReadyForPowerState<Mode> aus, welche über den Konfigurationsparameter PwmPowerStateReadyCbkRef referenziert werden [SWS_Pwm_00189].

Die Funktion ist für einen zyklischen Aufrufkontext vorgesehen und wird über die Header-Datei SchM_Pwm.h bereitgestellt. Infolgedessen dürfte der periodische Aufruf typischerweise im Kontext des BSW-Schedulers (Schedule Manager) erfolgen [SWS_Pwm_00189]. Frage Q-b9b0431e7ccbca88 (offen) Spezifische Fehlercodes, Mechanismen zur Fehlerbehandlung über DET oder DEM sowie besondere Reentranz-Bedingungen sind in der Modulspezifikation für diesen Service nicht definiert.

Dieser Text wurde von einer KI auf Basis der AUTOSAR-Spezifikation R20-11 generiert.

Implementer's Guide folgt (Komplexität I1)

function Pwm_ [SWS_Pwm_00105] 📄 PDF

void Pwm_Notification_<#Channel> (void);

The Pwm module shall call the function Pwm_ Notification_<#Channel> accordingly to the last call of Pwm_ Enable Notification for channel <#Channel>.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 6eff8686a5f4 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die kanalbezogene Benachrichtigungsfunktion Pwm_Notification_<#Channel> wird vom PWM-Modul synchron aufgerufen, sobald das für den jeweiligen Kanal konfigurierte Flankenereignis eintritt [SWS_Pwm_00105]. Die Funktion besitzt die Signatur void Pwm_Notification_<#Channel>(void), nimmt keine Übergabeparameter entgegen und liefert keinen Rückgabewert [SWS_Pwm_00105]. Sie ist in der Datei Pwm_Externals.h deklariert und muss vom Anwender bereitgestellt werden [SWS_Pwm_00105].

Der Aufruf erfolgt in Abhängigkeit vom letzten Aufruf von Pwm_EnableNotification für den betreffenden Kanal [SWS_Pwm_00105]. Die auslösenden Ereignisse orientieren sich an den Werten von Pwm_EdgeNotificationType, welcher steigende (PWM_RISING_EDGE), fallende (PWM_FALLING_EDGE) oder beide Signalflanken (PWM_BOTH_EDGES) unterscheidet [SWS_Pwm_00109]. Vor der Signalerzeugung und Ereignisbenachrichtigung muss das PWM-Modul über Pwm_Init mit einer hardwareabhängigen Pwm_ConfigType-Struktur initialisiert worden sein [SWS_Pwm_00095], [SWS_Pwm_00111].

Hinsichtlich der Nebenläufigkeit ist die Reentranz der Callback-Funktion explizit als anwenderabhängig definiert (PWM user implementation dependant) [SWS_Pwm_00105]. Der genaue Ausführungskontext (etwa ob der Aufruf direkt in einer Interrupt-Service-Routine oder im Task-Kontext erfolgt) dürfte von der zugrunde liegenden Treiberimplementierung abhängen (Interpretation). Frage Q-327872e0e8fecb37 (offen) Spezifische Fehlercodes, Rückgabewerte oder standardisierte DET- bzw. DEM-Meldungen existieren für diese Benachrichtigungsschnittstelle nicht [SWS_Pwm_00105].

Dieser Text wurde von einer KI erstellt und basiert auf der Spezifikation AUTOSAR Classic Release R20-11.

function IoHwAb_Pwm_NotifyReadyForPower [SWS_Pwm_00198] 📄 PDF

void IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> (void);

The API shall be invoked by the PWM Driver when the requested power state preparation for mode <#Mode> is completed.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 23b0f44b508d Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Funktion IoHwAb_Pwm_NotifyReadyForPower (in der Syntax als IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> deklariert) wird über den Header IoHwAb_Pwm.h bereitgestellt und dient als Callback-Schnittstelle im AUTOSAR-Powermanagement [SWS_Pwm_00198].

Hinsichtlich Verwendung, Schnittstelleneigenschaften und Systemzusammenspiel gelten die folgenden verbindlichen Vorgaben:

  • Verwendung und Aufrufkontext: Die Schnittstelle besitzt die Service-ID 0x60 und wird synchron ausgeführt [SWS_Pwm_00198]. Sie ist zwingend vom PWM-Treiber aufzurufen, sobald die geräteseitige Vorbereitung für einen angeforderten Leistungszustand (Power State) eines Modus erfolgreich abgeschlossen wurde [SWS_Pwm_00198].
  • Parameter und Rückgabewerte: Die Funktionssignatur definiert weder Eingangs-, Ein-/Ausgangs- noch Ausgangsparameter und besitzt keinen Rückgabewert (void) [SWS_Pwm_00198]. Interpretation: Die Zuordnung zum jeweiligen Leistungsmodus dürfte sich unmittelbar aus dem modusspezifischen Funktionsnamen im Quellcode ableiten. Frage Q-ab761160ed91de78 (offen)
  • Nebenläufigkeit und Einschränkungen: Die Funktion ist als nicht-reentrant (Non Reentrant) spezifiziert [SWS_Pwm_00198]. Aufrufe dürfen folglich nicht parallel oder verschachtelt innerhalb desselben Treiberkontexts erfolgen.
  • Zusammenspiel: Im modulübergreifenden Ablauf signalisiert der Aufruf der übergeordneten I/O-Hardware-Abstraktion, dass die Treiberstufe bereit für den Wechsel in den gewünschten Betriebszustand ist [SWS_Pwm_00198].

In den Spezifikationsquellen sind für diese Funktion keine spezifischen Fehlercodes sowie keine Meldungen an DET oder DEM vorgesehen [SWS_Pwm_00198].

Dieser Text wurde von einer KI erstellt; alle Aussagen stützen sich ausschließlich auf die AUTOSAR-Spezifikation.

Implementer's Guide folgt (Komplexität I1)

type Pwm_OutputStateType [SWS_Pwm_00108] 📄 PDF

Output state of a PWM channel.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 4d670762d069 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Der Enumerationstyp Pwm_OutputStateType definiert den Ausgangszustand eines PWM-Kanals innerhalb des Classic-AUTOSAR-Treibers Pwm [SWS_Pwm_00108]. Die Typdefinition wird über die Header-Datei Pwm.h für aufrufende Softwareeinheiten und Treiberanwendungen bereitgestellt [SWS_Pwm_00108].

Der Wertebereich dieser Enumeration unterscheidet zwei eindeutig festgelegte Zustände des Kanals [SWS_Pwm_00108]:

  • PWM_HIGH (numerischer Wert 0x00): Kennzeichnet, dass sich der betreffende PWM-Kanal im High-Zustand befindet [SWS_Pwm_00108].
  • PWM_LOW (numerischer Wert 0x01): Kennzeichnet, dass sich der betreffende PWM-Kanal im Low-Zustand befindet [SWS_Pwm_00108].

In Bezug auf Aufrufkontext und Verwendungszweck definiert das Element selbst als Typ keine Schnittstellenfunktionen [SWS_Pwm_00108]. Interpretation: Die Werte dürften typischerweise als Parameter oder Rückgabewerte bei API-Funktionen des Moduls dienen, um den aktuellen oder gewünschten logischen Pegelzustand eines Kanals zu signalisieren. Frage Q-9c142d658ab7fcfd (offen)

Da es sich um eine elementare Typdefinition handelt, existieren keine spezifischen Fehlerbehandlungen bezüglich DET oder DEM sowie keine Anforderungen an Reentranz oder synchrone Ausführung im Spezifikationsumfang [SWS_Pwm_00108].

Dieser Text wurde von einer KI auf Basis der Spezifikation AUTOSAR Classic R20-11 generiert.

Implementer's Guide folgt (Komplexität I1)

type Pwm_EdgeNotificationType [SWS_Pwm_00109] 📄 PDF

Definition of the type of edge notification of a PWM channel.

type Pwm_ConfigType [SWS_Pwm_00111] 📄 PDF

This is the type of data structure containing the initialization data for the PWM driver.

type Pwm_PowerStateRequestResultType [SWS_Pwm_00165] 📄 PDF

Result of the requests related to power state transitions.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 615a415d7a52 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Der Enumerationstyp Pwm_PowerStateRequestResultType liefert das Ergebnis von Anforderungen zur Zustandsänderung des Energieverwaltungsmodus (Power State Transitions) im PWM-Treiber gemäß [SWS_Pwm_00165]. Die Typdefinition steht über den Header Pwm.h zur Verfügung [SWS_Pwm_00165].

Der Typ bildet sowohl den erfolgreichen Übergang als auch spezifische Fehlerbedingungen ab [SWS_Pwm_00165]:

  • PWM_SERVICE_ACCEPTED (0x00): Der angeforderte Wechsel des Power-States wurde erfolgreich ausgeführt [SWS_Pwm_00165].
  • PWM_NOT_INIT (0x01): Das PWM-Modul ist noch nicht initialisiert [SWS_Pwm_00165].
  • PWM_SEQUENCE_ERROR (0x02): Die Aufrufsequenz der API ist unzulässig [SWS_Pwm_00165].
  • PWM_HW_FAILURE (0x03): Ein Hardwarefehler verhindert das Einnehmen des geforderten Energiezustands [SWS_Pwm_00165].
  • PWM_POWER_STATE_NOT_SUPP (0x04): Der angeforderte Zustand wird vom Modul nicht unterstützt [SWS_Pwm_00165].
  • PWM_TRANS_NOT_POSSIBLE (0x05): Ein direkter Zustandsübergang ist nicht möglich oder die Hardware-Peripherie ist noch beschäftigt [SWS_Pwm_00165].

Aufrufer müssen das Resultat auswerten, um festzustellen, ob ein Zustandswechsel unmittelbar wirksam wurde. Interpretation: Der Typ dürfte typischerweise als Rückgabewert oder Ausgabeparameter entsprechender Power-Management-Funktionen fungieren, um übergeordnete Module über Übergangskonflikte oder Hardware-Blockaden zu informieren. Frage Q-fd06829e5c030906 (offen)

Dieser Text wurde von einer KI generiert und dient als Orientierungshilfe. Maßgeblich ist die AUTOSAR-Spezifikation.

Implementer's Guide folgt (Komplexität I1)

type Pwm_PowerStateType [SWS_Pwm_00197] 📄 PDF

Power state currently active or set as target power state.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: b1411c45ba56 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Der Aufzählungstyp Pwm_PowerStateType dient im Modul PWM zur Beschreibung von Energiezuständen [SWS_Pwm_00197]. Er repräsentiert entweder den gegenwärtig aktiven Betriebszustand oder einen neu als Ziel vorgegebenen Leistungszustand des Treibers [SWS_Pwm_00197]. Bereitgestellt wird dieser Datentyp über die Header-Datei Pwm.h [SWS_Pwm_00197].

Die Spezifikation definiert für die Aufzählung folgende Werte und Wertebereiche [SWS_Pwm_00197]:

  • PWM_FULL_POWER (Wert 0x00): Kennzeichnet den Zustand voller Leistung („Full Power“) [SWS_Pwm_00197].
  • Wertebereich 1..255: Definiert abgestufte Leistungsmodi mit schrittweise abnehmendem Energieverbrauch („power modes with decreasing power consumptions“) [SWS_Pwm_00197].

Hinsichtlich des Verwendungskontexts dürfte der Typ als Übergabeparameter bei der Anforderung eines Energiesparmodus sowie als Rückgabewert bei Statusabfragen fungieren, da der Typ sowohl aktive als auch Ziel-Zustände abbildet [SWS_Pwm_00197]. Frage Q-f0423f8b958d7e91 (offen) Konkrete API-Funktionen, Fehlerbehandlungen (DET/DEM) sowie Nebenläufigkeitseinschränkungen sind für diesen Datentyp im vorliegenden Spezifikationsauszug nicht enthalten und daher weggelassen [SWS_Pwm_00197].

Dieser Text wurde von einer KI auf Basis der AUTOSAR-Spezifikation R20-11 generiert.

Implementer's Guide folgt (Komplexität I1)

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_Pwm
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_Pwm@rel:R20-11#7b411291
Content hash
7b411291
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_PWMDriver.pdf#nameddest=SWS_Pwm_00095

Initialisierung und Status

Pwm_DeInit function

Service for PWM De - Initialization.

void Pwm_DeInit (void);

Service returns the version information of this module.

void Pwm_GetVersionInfo (Std_VersionInfoType* versioninfo);
Pwm_Init function

Service for PWM initialization.

void Pwm_Init (const Pwm_ConfigType* ConfigPtr);

Dienste · Set…

Service sets the duty cycle of the PWM channel.

void Pwm_SetDutyCycle (Pwm_ChannelType ChannelNumber, uint16 DutyCycle);

Service sets the PWM output to the configured Idle state.

void Pwm_SetOutputToIdle (Pwm_ChannelType ChannelNumber);

Service sets the period and the duty cycle of a PWM channel

void Pwm_SetPeriodAndDuty (Pwm_ChannelType ChannelNumber, Pwm_PeriodType Period, uint16 DutyCycle);

This API configures the Pwm module so that it enters the already prepared power st ate, chosen between a predefined set of configured ones.

Std_ReturnType Pwm_SetPowerState (Pwm_PowerStateRequestResultType* Result);

Dienste · Get…

This API returns the current power state of the PWM HW unit. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

Std_ReturnType Pwm_GetCurrentPowerState (Pwm_PowerStateType* CurrentPowerState, Pwm_PowerStateRequestResultType* Result);

Service to read the internal state of the PWM out put signal.

Pwm_OutputStateType Pwm_GetOutputState (Pwm_ChannelType ChannelNumber);

This API returns the Target power state of the PWM HW unit.

Std_ReturnType Pwm_GetTargetPowerState (Pwm_PowerStateType* TargetPowerState, Pwm_PowerStateRequestResultType* Result);

Dienste · Weitere

The API shall be invoked by the PWM Driver when the requested power state preparation for mode <#Mode> is completed.

void IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> (void);

Service to disable the PWM signal edge notification.

void Pwm_DisableNotification (Pwm_ChannelType ChannelNumber);

Service to enable the PWM signal edge notification according to notification pa rameter.

void Pwm_EnableNotification (Pwm_ChannelType ChannelNumber, Pwm_EdgeNotificationType Notification);

This API is cyclically called and supervises the power state transitions, checking for the readiness of the module and issuing the callbacks Io Hw Ab_ Pwm_ Notify Ready For Power State (see Pwm Power State Ready Cb k Ref configuration parameter). AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

void Pwm_Main_PowerTransitionManager (void);

The Pwm module shall call the function Pwm_ Notification_<#Channel> accordingly to the last call of Pwm_ Enable Notification for channel <#Channel>.

void Pwm_Notification_<#Channel> (void);

This API starts the needed process to allow the PWM HW module to enter the requested power state. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

Std_ReturnType Pwm_PreparePowerState (Pwm_PowerStateType PowerState, Pwm_PowerStateRequestResultType* Result);

Typen

Defines the class of a PWM channel

Nume ric identifier of a PWM channel.

This is the type of data structure containing the initialization data for the PWM driver.

Definition of the type of edge notification of a PWM channel.

Output state of a PWM channel.

Definition of the period of a PWM channel.

Result of the requests related to power state transitions.

Power state currently active or set as target power state.