Embedded Systems Design – Mikrocontroller - eewiki

Embedded Systems Design – Mikrocontroller - eewiki (digikey.com)

Erstellt von Scott Schmit, zuletzt geändert von Robert Nelson, Principal Applications Engineer / Leitender Anwendungsingenieur am 05. Februar 2021

Der Zweck dieser Seite ist es, einige häufig gestellte Fragen zum Design eingebetteter Systeme zu beantworten. Einige der vorgestellten Fragen sind allgemeiner oder konzeptioneller Natur. Andere sind enger gefaßt und können sich auf eine einzelne Peripherie innerhalb eines Mikrocontrollers beziehen. Nachdem Sie die verschiedenen Themen durchgeblättert haben, nehmen Sie sich bitte einen Moment Zeit, um die verschiedenen Bereiche innerhalb unseres eewiki zu besuchen. Sie werden dort einige praktische Beispiele finden, die die unten besprochenen Themen beinhalten.

  • Was ist ein eingebettetes System?
  • Was ist ein Mikroprozessor?
  • Was ist ein Mikrocontroller?
  • Was ist der Unterschied zwischen paralleler und serieller Kommunikation?
  • Was ist der Unterschied zwischen synchroner und asynchroner Kommunikation?
  • Was ist I²C?
  • Was ist SPI?
  • Was ist ein UART?
  • Was ist ein USART?
  • Was ist ein ADC?
  • Was ist ein DAC?
  • Was ist Impulsbreitenmodulation?
  • Was ist DMA?

Was ist ein eingebettetes System?

Ein eingebettetes System besteht aus Hardware und Software mit einer bestimmten Funktion und ist Teil eines größeren Systems. Normalerweise enthält es einen oder mehrere Mikroprozessoren oder Mikrocontroller, die die Systemfunktionen überwachen. Ein eingebettetes System enthält eine Art von Software, die beim Einschalten automatisch startet. In vielen Fällen läuft die Software selbstständig. Es ist jedoch nicht ungewöhnlich, daß ein eingebettetes System eine Art Benutzeroberfläche zur externen Steuerung und Überwachung enthält (Tasten, Schalter, LEDs, LCDs usw.).

Was ist ein Mikroprozessor?

Ein Mikroprozessor führt alle Funktionen einer Zentraleinheit aus und ist in einer kleinen integrierten Schaltung untergebracht. Er interpretiert und führt Programmanweisungen aus und kann als “das Gehirn” eines eingebetteten Systems betrachtet werden. Sie enthält eine digitale Logik, die die Anweisungen in einer bestimmten Reihenfolge ausführt. Ein Haupttaktgeber wird verwendet, um die Ausführung von Befehlen in sequenzieller Reihenfolge fortzusetzen. Es ist nicht unüblich, daß der Master-Takt intern in einzelne Taktsignale aufgeteilt wird, die spezialisierte Hardwareabschnitte ansteuern.

Was ist ein Mikrocontroller?

Ein Mikrocontroller integriert eine CPU mit Speicher und Hardware-Peripherieschaltungen, die bestimmten Zwecken dienen.

Als Speicher enthält ein Mikrocontroller eine Art nichtflüchtigen, programmierbaren Speicher, der zur Laufzeit schreibgeschützt wird. In diesen Speicher programmiert der Anwender den Anwendungscode, der die Anweisungen in einer bestimmten Reihenfolge ausführt, um den Gesamtzweck des Systems zu erreichen. Ein Mikrocontroller hat normalerweise einen flüchtigen Direktzugriffsspeicher, der zur Laufzeit für die Manipulation von Variablen und die Speicherung von Ergebnissen verwendet werden kann. Manchmal enthält ein Mikrocontroller einen zusätzlichen nichtflüchtigen Speicher zur Speicherung von Informationen im ausgeschalteten Zustand.

Die dedizierte Hardware-Peripherie ist je nach Mikrocontroller unterschiedlich. Einige gängige Hardware-Peripheriegeräte sind z.B. Timer, serielle Kommunikationsblöcke, Analog-Digital-Wandler, Digital-Analog-Wandler, Analogkomparatoren und Allzweck-Eingangs- und Ausgangs-Pins.

Was ist der Unterschied zwischen paralleler und serieller Kommunikation?

Wenn zwei Geräte miteinander kommunizieren, bedeutet dies, daß sie Daten austauschen. Die Systemarchitektur bestimmt die Anzahl der Bits, aus denen jedes Datenwort besteht, aber 8-, 16-, 32- und 64-Bit-Datenwörter sind wahrscheinlich die gängigsten. Bei der parallelen Kommunikation wird für jedes Bit im Datenwort eine eigene Leitung verwendet. Bei der seriellen Kommunikation hingegen werden alle Bits in einer vordefinierten Reihenfolge auf eine einzige Datenleitung verschoben. Typischerweise wird bei der seriellen Kommunikation eine einzelne Datenleitung verwendet und jedes Bit in sequentieller Reihenfolge verschoben, entweder das höchstwertige Bit (msb) oder das niedrigstwertige Bit (lsb) zuerst. Einige serielle Protokolle ordnen die Bits jedoch in nicht-sequenzieller Reihenfolge an, um elektrische Effekte (DC-Offset, EMI usw.) auf den Rest des Systems abzuschwächen.

Der Hauptvorteil der parallelen Kommunikation besteht darin, daß weniger Taktzyklen für die Übertragung der gleichen Datenmenge benötigt werden als bei der seriellen Kommunikation. Wenn z.B. 8 einzelne Leitungen zur Übertragung eines 8-Bit-Datenworts verwendet werden, wird das gesamte Datenwort in einem einzigen Taktzyklus übertragen. Vergleichen Sie das mit einem seriellen Kommunikationsprotokoll, das eine einzige Datenleitung verwendet. Es würde 8 Taktzyklen benötigen, um das gleiche Datenwort zu übertragen.

Der Hauptvorteil der seriellen Kommunikation besteht darin, daß viel weniger Pins auf einem Gerät und weniger Platz auf der Platine für die Verlegung von Leiterbahnen benötigt werden. Dadurch können die Pins für andere Zwecke verwendet werden, und im Allgemeinen wird der benötigte Platz auf der Platine und/oder die Kabelgröße reduziert.

Es gibt auch hybride Kommunikationsprotokolle, die sich die Vorteile beider Verfahren zunutze machen. Zum Beispiel verwenden Dual- und Quad-I/O-SPI-Protokolle mehr als einen seriellen Datenpin, um die Gesamtbandbreite zu erhöhen. Letztendlich liegt es am Entwickler, die Kompromisse zu verstehen und zu bestimmen, was für eine bestimmte Anwendung erforderlich/akzeptabel ist.

Was ist der Unterschied zwischen synchroner und asynchroner Kommunikation?

Synchrone Kommunikation bedeutet, daß die beiden (oder mehr) Geräte, die Daten austauschen, eine gemeinsame Taktleitung nutzen. Ein Gerät (typischerweise als Master bezeichnet) treibt das Taktsignal als Ausgang, während das andere Gerät (typischerweise als Slave bezeichnet) das Taktsignal als Eingang liest. Wie der Name schon sagt, hält dies die Geräte synchronisiert und stellt sicher, daß die Daten zum richtigen Zeitpunkt aufgebaut und abgetastet werden. Der Hauptvorteil der synchronen Kommunikation ist, daß sie zuverlässig ist. Sie müssen sich nicht um das Einrichten von genauen Referenztakten auf jedem Gerät kümmern, um die richtige Baudrate zu erreichen, und die Temperatur hat wenig oder keinen Einfluß auf die Zuverlässigkeit der Daten. Der Nachteil ist, daß ein zusätzlicher Pin benötigt wird und im Allgemeinen der Platzbedarf auf der Platine bzw. die Kabelgröße erhöht wird. Das Führen eines Taktsignals auf einer Platine kann auch die EMI-Effekte erhöhen.

Asynchrone Kommunikation bedeutet, daß die beiden Geräte kein gemeinsames, dediziertes Taktsignal verwenden, sondern daß auf jedem Gerät ein eigener Takt vorhanden ist. Jedes Gerät muß im Voraus eine passende Bitrate und die Anzahl der zu erwartenden Bits für eine bestimmte Transaktion einstellen. Asynchrone Kommunikation ist vorteilhaft, weil sie einen Pin weniger benötigt, was Platz auf der Platine spart und dem Entwickler erlaubt, diesen Pin für andere Zwecke zu verwenden. Der Wegfall einer Taktleitung auf der Platine trägt auch zur Reduzierung der EMI bei. Der Nachteil der asynchronen Kommunikation ist, daß es schwieriger ist, eine zuverlässige Kommunikation zu erreichen. Die Referenztakte, die zur Erzeugung der Bitrate verwendet werden, müssen ziemlich genau und temperaturstabil sein, da sonst das Timing gestört werden kann. Ein Integer-Drop-Off kann ebenfalls zu Fehlern in der Baudrate führen. Dies tritt auf, wenn Sie versuchen, eine Baudrate zu erreichen, die kein exaktes ganzzahliges Vielfaches des Referenztaktes ist. Mit anderen Worten, selbst bei einem perfekten Referenztakt ist die gewünschte Baudrate möglicherweise nicht ohne einen gewissen Fehler zu erreichen. Der Fehlerbetrag kann akzeptabel sein oder auch nicht.

Was ist I²C?

Das Inter-Integrated Circuit (I²C)-Protokoll ist ein sehr beliebtes synchrones serielles Kommunikationsprotokoll in Embedded-Designs aufgrund der geringen Anzahl der benötigten Pins und der großen Anzahl von Geräten, die an einen einzigen Bus angeschlossen werden können. Eine einzelne Datenleitung (SDA) und eine einzelne Taktleitung (SCL) plus gemeinsame Masse sind die einzigen erforderlichen Verbindungen zwischen einem I²C-Master und -Slave. Die folgende Abbildung (entnommen von der I²C-Wikipedia-Seite: I²C wikipedia page) zeigt ein vereinfachtes Timing-Diagramm für I²C-Transaktionen. Der erste gelbe Kasten zeigt ein START-Signal an. Eine START-Bedingung ist das einzige Mal, daß die SDA-Leitung auf low übergeht, während die Taktleitung high ist. Während der Transaktion werden SDA-Übergänge gemacht, während SCL niedrig ist (blau) und SDA wird abgetastet, während SCL hoch ist (grün). Das zweite gelbe Kästchen zeigt ein STOP-Signal an. Ein STOP-Zustand ist das einzige Mal, daß die SDA-Leitung auf High übergeht, während die Taktleitung High ist. Open-Drain-Ausgänge mit externen Pull-up-Widerständen werden für die Daten- und Taktleitungen verwendet. Sobald ein Gerät aufhört, die Busleitungen aktiv zu treiben, ziehen die externen Widerstände jede Leitung auf High.

image

I²C-Timing-Beispiel

I²C ist ein adressbasiertes Protokoll, d.h. jedes Slave-Gerät hat eine eindeutige I²C-Adresse. I²C unterstützt mehrere Master und mehrere Slaves auf einem einzigen Bus. Das Datenblatt eines Geräts gibt seine I²C-Slave-Adresse an. Normalerweise verwendet ein Gerät eine 7-Bit-I²C-Slave-Adresse, obwohl einige Varianten des I²C-Protokolls auch 10- und 16-Bit-Adressierungs-Modi unterstützen. Eine typische I²C-Transaktion beginnt damit, daß der Master ein START-Signal ausgibt, gefolgt von einem einzelnen Byte, das aus der 7-Bit-Adresse des Slaves und einem einzelnen Lese-/Schreibbit besteht. Nach dem Slave-Adressbyte variiert das Nachrichtenformat ein wenig von Gerät zu Gerät. Es gibt keine Begrenzung für die Anzahl der Bytes, die in einer einzigen Transaktion übertragen werden können. Allerdings muß jedes Byte vom empfangenden Gerät quittiert werden, bevor das nächste Byte gesendet wird. Nachdem das letzte Byte und die letzte Bestätigung empfangen wurde, beendet der Master die Transaktion mit einem STOP-Signal. Bei Geräten, die größere Adressierungsschemata unterstützen, kann sich auch das anfängliche Byte-Format ändern. Das Datenblatt des jeweiligen Geräts beschreibt das erforderliche I²C-Nachrichtenformat. 100kbps ist die Standard-I²C-Datenrate, während neuere I²C-Varianten 400kbps Fast-Mode, 1Mbps Fast-Mode plus und 3,4Mbps High-Speed-Mode unterstützen.

Was ist SPI?

Das SPI -Protokoll ( S erial P eripheral I nterface) ist ein weiteres beliebtes synchrones serielles Kommunikationsprotokoll in Embedded-Designs. An der SPI-Kommunikation sind ein oder mehrere Master-Geräte und ein oder mehrere Slave-Geräte beteiligt, die einen gemeinsamen Bus verwenden. Vollduplex oder 4-Draht-SPI verwendet zwei Datenleitungen, eine gemeinsame Taktleitung und eine Slave-Select-Leitung. Halbduplex oder 3-Draht-SPI verwendet eine gemeinsame Datenleitung.

Pin-Beschreibungen

  • MISO : M aster I n, S lave O ut – Auf dieser Leitung werden die Daten vom Slave in den Master geschoben.

  • MOSI : M aster O ut, S lave I n – Daten werden auf dieser Leitung vom Master in den Slave geschoben.

  • SCLK: Clock – Der Takt wird immer vom Master getrieben. Der Takt startet, sobald Daten in den Sender des Masters geladen werden und stoppt, wenn das letzte Bit herausgeschoben wird.

  • SS : S lave S elect – Eine dedizierte Slave-Select (oder Chip-Select) Leitung wird verwendet, um verschiedene Slave-Geräte anzusprechen. Ein Slave empfängt nur dann Daten, wenn sein SS-Pin aktiviert ist (active low).

SPI-Timing

Die folgende Abbildung wurde einem Atmel Xmega-A3U-Handbuch entnommen. Sie veranschaulicht die 4 SPI-Betriebsmodi. Die 4 Modi sind für alle SPI-Geräte ähnlich.

  • Modus 0: SCLK liegt im Leerlauf auf low. Die Daten werden auf der fallenden Flanke von SCLK eingestellt. Die Daten werden bei der steigenden Flanke von SCLK abgetastet.

  • Modus 1: SCLK liegt im Leerlauf auf low. Daten werden auf die steigende Flanke von SCLK eingestellt. Die Daten werden mit der fallenden Flanke von SCLK abgetastet.

  • Modus 2: SCLK ist im Leerlauf hoch. Die Daten werden mit der steigenden Flanke von SCLK eingestellt. Die Daten werden mit der fallenden Flanke von SCLK abgetastet.

  • Modus 3: SCLK ist im Leerlauf hoch. Daten werden auf die fallende Flanke von SCLK eingestellt. Die Daten werden mit der steigenden Flanke von SCLK abgetastet.

Allgemeiner Betrieb

Die Übertragung wird immer vom Master initiiert. Der Slave muß lediglich auf die Aktivierung seiner SS-Leitung und das Erscheinen von SCLK warten oder den Master über andere E/A auffordern. Wenn SCLK aktiviert wird, beginnen die Daten gleichzeitig auf der MOSI-Leitung nach außen und auf der MISO-Leitung nach innen zu schieben. Die Daten werden bitweise ein-/ausgeschoben, bis jedes Bit verschoben wurde. Normalerweise hat ein Mikrocontroller ein eingebautes SPI-Register, das ein Flag setzt, wenn alle Datenbits herausgeschoben wurden.

Vorteile:

  • Geringer Overhead – Das SPI-Protokoll verwendet dedizierte Slave-Select-Leitungen für jedes Slave-Gerät. Dadurch entfällt die Notwendigkeit, Adressen über die Datenleitungen zu senden, und der Overhead wird verringert.

  • Zuverlässig – Die dedizierte Taktleitung eliminiert Baud-Fehlanpassungen, die bei asynchronen Protokollen (wie UART) üblich sind.

  • Schnell – Zwei Datenleitungen erhöhen den Gesamtdurchsatz und der geringe Overhead erhöht die Gesamt-Baudrate.

  • Gemeinsam genutzter Bus – Die dedizierten Slave-Select-Leitungen ermöglichen es mehreren Geräten, dieselben Daten-/Taktleitungen zu nutzen. Wenn die SS-Leitung des Geräts nicht aktiviert ist, ignoriert das Gerät einfach die Daten.

Nachteile:

  • Hohe Pinanzahl – Im Vergleich zu anderen gängigen seriellen Kommunikationsprotokollen verwendet SPI ziemlich viele Pins. Ein zusätzlicher Pin (SS) ist für jedes Slave-Gerät und Master-Gerät für Multi-Master-Setups erforderlich.

  • Fehlerprüfung – Keine standardmäßige CRC-Prüfung oder Buskonfliktanzeige

  • Übertragungsinitiierung – Der Master muß alle Übertragungen initiieren. Wenn ein Slave Daten an den Master zu senden hat, muß er warten, bis der Master die Übertragung startet, oder externe Signale verwenden, um den Master zu unterbrechen.

Was ist ein UART?

Ein U niversal A synchronous R eceiver/ T ransmitter ( UART ) ist eine sehr einfache Methode der seriellen Kommunikation in Embedded-Designs. Die UART-Kommunikation im Vollduplex-Modus verwendet einen Pin zum Senden (TX) und einen Pin zum Empfangen (RX). Bei Halbduplex wird ein gemeinsamer Pin für TX und RX verwendet (allgemein als Single-Wire UART oder 1-Wire Comm bezeichnet). Beide Versionen benötigen für den ordnungsgemäßen Betrieb eine gemeinsame Masse, da TX und RX unsymmetrische Signale sind.

Da es keine gemeinsame Taktleitung gibt, müssen die Datenrate und das Rahmenformat an beiden Enden der Kommunikationsverbindung im Voraus eingestellt werden. 7-, 8- und 9-Bit-Datenrahmen sind gängige Längen, wobei 8-Bit am weitesten verbreitet ist. Die Datenleitungen sind zwischen den Übertragungen im Leerlauf. Im UART-Protokoll gibt es keine Master-Slave-Beziehung, daher kann jedes Gerät die Übertragung initiieren. Dies wird erreicht, indem der Sende-Pin für eine Bit-Periode auf low gesetzt wird (wird als START-Signal betrachtet). Es folgt die angegebene Anzahl von Datenbits, wobei typischerweise das niederwertigste Bit zuerst übertragen wird. Ein optionales Paritätsbit kann zur grundlegenden Fehlerprüfung verwendet werden. Das Paritätsbit wird verwendet, um die “Summe” der Datenbits gerade oder ungerade zu machen und wird zusammen mit den Daten übertragen. Der Empfänger berechnet die Summe der Datenbits und des Paritätsbits neu und vergleicht sie mit der erwarteten Parität als einfache Prüfung der Datenintegrität. Der Rahmen wird beendet, indem die Leitung für die angegebene Anzahl von Bitperioden (STOP-Bits) auf High getrieben wird. Der Empfänger an jedem Ende verwendet Oversampling, um jedes Bit der eingehenden Daten zu lesen. Die Oversampling-Rate ist abhängig von der gewünschten Baudrate, die verwendet wird.

Das folgende Bild wurde dem Datenblatt des Atmel ATmega256RFR2 entnommen (Abschnitt 23.4). Es zeigt das Frame-Format für die UART-Kommunikation.

image

Separate Flußsteuerungssignale C lear- T o- S end ( CTS ) und R equest- T o- S end (RTS) werden manchmal verwendet, um effizientere Transaktionen zwischen Geräten zu ermöglichen, die mit unterschiedlichen Geschwindigkeiten arbeiten. Dies ist besonders häufig der Fall, wenn elektrische Systeme mit mechanischen Systemen gemischt werden (z.B. bei einem Desktop-Drucker). Das elektrische Signal benötigt nur sehr wenig Zeit für die Übertragung. Die mechanische Bewegung eines Motors oder eines Magneten wird jedoch viel länger brauchen, um einen Vorgang abzuschließen. Die beiden Geräte würden höchstwahrscheinlich CTS- und RTS-Signale in einer Handshaking-Methode verwenden, um sicherzustellen, daß die Daten zu den richtigen Zeiten übertragen werden.

Was ist ein USART?

Ein U niversal S ynchronous/ A synchronous R eceiver/ T ransmitter ( USART ) ist eine spezielle Hardware-Peripherie, die in einigen Mikrocontrollern zu finden ist. Die USART-Peripherie gibt dem Benutzer die Möglichkeit, synchrone oder asynchrone Kommunikation zu verwenden. Er kann wie oben beschrieben als UART verwendet werden, wobei nur die Datenleitungen genutzt werden, oder er kann im synchronen Modus verwendet werden, wobei die Taktleitung hinzugefügt wird. Der synchrone Modus ermöglicht in der Regel Burst-Transaktionen (Senden mehrerer Bytes in einer einzigen Transaktion), während im asynchronen Modus in der Regel ein einzelnes Byte auf einmal gesendet wird. Die meisten Mikrocontroller, die einen USART enthalten, erlauben es dem Benutzer, das SPI-Protokoll darauf zu implementieren (im synchronen Modus). Es sollte jedoch beachtet werden, daß die meisten Mikrocontroller, die den USART-SPI-Modus unterstützen, typischerweise nicht den SPI-Slave-Modus am USART unterstützen, sondern nur den SPI-Master-Modus. Grundsätzlich gibt Ihnen ein USART die Möglichkeit, UART oder SPI zu implementieren, ohne Sie auf das eine oder das andere zu beschränken.

Was ist ein ADC?

Ein A nalog- D igital- C onverter = W andler ( ADC ) ist eine der häufigsten Peripherien in Mikrocontrollern. Ein ADC wandelt eine kontinuierliche analoge Spannung zu einem bestimmten Zeitpunkt in einen digitalen Wert um, der von einem digitalen Gerät, wie z. B. einem Mikrocontroller, interpretiert werden kann. Der Entwickler entscheidet, wie häufig das analoge Signal abgetastet werden soll. Jeder ADC hat jedoch eine maximale Abtastrate, die nicht überschritten werden kann.

Die Auflösung ist eine weitere wichtige ADC-Spezifikation. Die Auflösung definiert die Anzahl der Bits, die zur Beschreibung des Analogsignals zu einem bestimmten Zeitpunkt verwendet werden. 8, 10 und 12 Bit sind typische ADC-Auflösungen, die in preiswerten Mikrocontrollern verfügbar sind. Einige Spezial-ADCs erreichen sogar eine Auflösung von bis zu 32 Bits. Je mehr Auflösung Sie haben, desto feiner können Sie ein analoges Signal definieren. Ein ADC mit 10-Bit-Auflösung erlaubt beispielsweise 2^10 oder 1024 mögliche digitale Werte, die zur Beschreibung des analogen Signals verwendet werden können. Ein 16-Bit-ADC hingegen erlaubt 2^16 bzw. 65.536 einzelne Digitalwerte, die zur Darstellung des Analogsignals verwendet werden können.

Der analoge Eingangsbereich des ADC ist ein weiterer wichtiger Punkt, der berücksichtigt werden muss. Bei Single-Ended-Messungen (Messungen mit Bezug zur Masse) reicht der analoge Eingangsbereich in der Regel von 0V bis zur definierten Referenzspannung. Normalerweise hat der Konstrukteur bei der Wahl der Referenzspannung freie Hand. Bei Differenzmessungen werden zwei verschiedene Analogsignale abgetastet und die Differenz zwischen beiden genommen. Dies ist nützlich, um externes Rauschen zu eliminieren, das auf beiden Signalen vorhanden ist, bekannt als Gleichtaktrauschen.

Was ist ein DAC?

Ein D igital/ A nalog- C onverter = W andler ( DAC ) wandelt ein digitales Signal in ein kontinuierliches analoges Signal um. DACs werden typischerweise in Audioanwendungen verwendet, um einen Lautsprecher oder Verstärker anzusteuern. Ähnlich wie ein ADC hat auch ein DAC eine maximale Betriebsgeschwindigkeit, die nicht überschritten werden kann. Ein DAC hat ebenfalls eine feste Auflösung wie ein ADC. Eine höhere Auflösung ermöglicht eine feinere Kontrolle über den Analogausgang.

Ein DAC nimmt einen digitalen Eingang und erzeugt einen einzelnen Impuls bis zum angegebenen Analogwert. Wenn Sie einen Strom digitaler Werte in den DAC eingeben, erhalten Sie aufeinanderfolgende Impulse der analogen Ausgabe. Die Zwischenräume zwischen den Ausgangsimpulsen werden durch einen Filter interpoliert, um ein kontinuierliches Signal zu erhalten. Wie bereits erwähnt, werden DACs typischerweise in Audioanwendungen eingesetzt. Daher werden die digitalen Eingänge in der Regel in konstanten Zeitintervallen angelegt und der analoge Ausgang wird entsprechend aktualisiert.

Was ist Pulsweitenmodulation?

P uls- W eiten- M odulation ( PWM ) ist eine Methode zur Steuerung einer Spannung oder eines Stroms, bei der das Signal zwischen vollständig EIN und vollständig AUS variiert und die Zeit, die in jedem Zustand verbracht wird, präzise gesteuert wird. Die Impulsfolge wird mit einer konstanten Frequenz geschaltet und der Durchschnittswert des Signals ist direkt proportional zum Verhältnis der EIN/AUS-Zeit. Dieses Verhältnis von EIN- und AUS-Zeit wird als Tastverhältnis bezeichnet. Das DC ( D uty C ycle = Tastverhältnis) erlaubt es uns, in Prozenten zu denken und nicht in einzelnen Zeiteinheiten. Schauen wir uns ein einfaches Beispiel an.

Das folgende Bild zeigt ein PWM-Signal mit 50% DC, was bedeutet, daß das Signal 50% der Zeit EIN und 50% der Zeit AUS ist. Wenn das Signal z.B. zwischen 0 und 5V geschaltet wird, würde der Mittelwert des folgenden PWM-Signals 2,5V betragen.

image

In diesem nächsten Bild wird das Tastverhältnis auf 75 % erhöht, d.h. das Signal ist 75 % der Zeit EIN und 25 % der Zeit AUS. Dadurch erhöht sich die Spannung von 2,5 V auf 3,75 V (75 % von 5 V).

image

Es ist zu beachten, daß die Periode (Frequenz) des PWM-Signals konstant bleibt. Sie sehen in beiden Bildern, daß die schwarzen Linien gleichmäßig verteilt sind und daß die fallende Flanke des Signals immer zu einem definierten Zeitpunkt auftritt. Die steigende Flanke und damit die Pulsbreite ist das, was wir einstellen, um den Mittelwert genau zu steuern. Die erforderliche Schaltfrequenz ist anwendungsspezifisch.

PWM wird häufig in Embedded-Designs eingesetzt. Motorsteuerung, LED-Intensitätssteuerung und DC/DC-Leistungswandlung sind allesamt typische Anwendungen für Pulsweitenmodulation.

Was ist DMA?

Der direkte Speicherzugriff (DMA) ermöglicht es einem Gerät, z.B. einem Mikrocontroller, bestimmte Aufgaben ohne Verwendung der CPU auszuführen. Der DMA-Controller kann Aufgaben überwachen und Daten zwischen verschiedenen Bereichen des Speichers übertragen. Dadurch kann die CPU andere Aufgaben ausführen, während sie auf die Fertigstellung langsamerer Funktionen wartet. Dies erhöht den Durchsatz und die Gesamteffizienz der Programmausführung.