<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=162.219.176.251</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=162.219.176.251"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/162.219.176.251"/>
	<updated>2026-04-11T01:27:54Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR32_Tutorial&amp;diff=90465</id>
		<title>AVR32 Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR32_Tutorial&amp;diff=90465"/>
		<updated>2015-12-01T15:20:30Z</updated>

		<summary type="html">&lt;p&gt;162.219.176.251: AVR64 Tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Tutorial soll eine Einführung in die [[AVR32]](32-bit)-Architektur erleichtern. Die [[AVR32]]-Architektur ist im Vergleich zu den 8 Bit [[AVR]]s oder PICs schwieriger zu erlernen und deshalb nicht unbedingt für [[Mikrocontroller]]-Anfänger geeignet. Die meisten Änderungen der 32-bit- Architektur im Vergleich zur 8-bit-Architektur liegen im Interrupt-Handling und beim Register-Zugriff. &lt;br /&gt;
&lt;br /&gt;
{{Warnung |&lt;br /&gt;
Die Besonderheit dieses Tutorials ist es, komplett auf das AVR32 Software-Framework von Atmel zu verzichten.&lt;br /&gt;
}}&lt;br /&gt;
Der vorgestellte Code ist für einen AT32UC3L064 zugeschnitten und dort auch getestet.&lt;br /&gt;
&lt;br /&gt;
=== SIEG HEIL ===&lt;br /&gt;
Dieses Tutorial wurde geschrieben, da es bisher noch kein Tutorials zu Atmels 32-Bit-Serie gibt.&lt;br /&gt;
Deshalb richtet sich das Tutorial in erster Linie an alle, die von der 8-bit Serie (ATmega/Attiny/Xmega...) auf die 32-bit-Prozessoren umsteigen möchten.&lt;br /&gt;
Das Tutorial wurde so gestaltet, dass es auch von allen anderen, die in die Atmel 32-bit Serie einsteigen wollen, verwendet werden kann.&lt;br /&gt;
Sollte es Verbesserungsvorschläge oder Ideen geben, mit denen das Tutorial verbessert werden kann: Bitte sendet eine PN oder hinterlasst im Diskussionsbereich einen Kommentar.&lt;br /&gt;
--[[Benutzer:Basti195|Basti195]] ([[Benutzer Diskussion:Basti195|Diskussion]]) 11:52, 22. Aug. 2014 (CEST)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Benötigte Vorkenntnisse ===&lt;br /&gt;
&lt;br /&gt;
Da der [[GCC]] verwendet wird, ist es notwendig gute C-Kenntnisse zu besitzen. Ohne das Atmel Software Framework ist es außerdem notwendig, einige grundlegende Kenntnisse in Assembler zu haben, die man sich ggf., wenn man die entsprechenden Stellen des Tutorials erreicht, noch nachträglich aneignen kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Benötigte Software ===&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich kann man mit dem [[AVR32 Studio]] und der Atmel AVR32-Toolchain (mittlerweile auch mit dem [[Atmel Studio]]) alle Aufgaben übernehmen. Es geht aber auch ohne das AVR-Studio. Man benötigt dann einen Editor, die Atmel AVR32-Toolchain und unter Windows ist cygwin zu empfehlen, bzw. man kann auch einfach unter Linux entwickeln.&lt;br /&gt;
&lt;br /&gt;
Die Atmel AVR32-Toolchain bekommt man über die Atmel-Homepage (Quellcode oder fertige Installer) oder alternativ hier den Quellcode [http://avr32linux.org/twiki/bin/view/Main/GettingStarted].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Toolchain besteht aus mindestens 3 Komponenten:&lt;br /&gt;
* binutils&lt;br /&gt;
* gcc&lt;br /&gt;
* eine c-library&lt;br /&gt;
Wenn man diese Software aus dem Quellcode installieren möchte, sind die Patches von Atmel erforderlich. Man kann sich die fertig gepatchten Quellen von avr32linux.org runterladen. Selbst zu patchen kann je nach Linuxdistribution bzw. der Version der Distribution sehr kompliziert werden, da nach dem Patchen die Makefiles neu aufgebaut werden müssen.&lt;br /&gt;
&lt;br /&gt;
=== Benötigte Hardware ===&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Benötigt werden &lt;br /&gt;
* Prozessor: z.B. AT32UC3L064 &amp;lt;br /&amp;gt;&lt;br /&gt;
* Programmer: z.B. JTAG&amp;lt;br/&amp;gt;&lt;br /&gt;
* Board:      z.B. ein Dev-board&lt;br /&gt;
* Oszilloskop -&amp;gt; zum Debuggen&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Trouble-Shooting==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Hier geht es um Logik-Fehler und nicht um Syntax-Fehler. &amp;lt;br /&amp;gt;&lt;br /&gt;
Die hier dargestellten Methoden sind allgemein und dienen als Checkliste.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Leider funktioniert nur selten alles wie geplant. Deshalb ist es hier umso wichtiger, die Projekte genau zu dokumentieren, da so deutlich schneller Fehler gefunden werden können.&amp;lt;br /&amp;gt;&lt;br /&gt;
Schleicht sich doch einmal ein Fehler in den Code und funktioniert es nicht, ist es sehr hilfreich, einen Debugger zu haben. Alternativ kann man auch auf den eingeschränkten Simulator vom [[Atmel Studio]] zurückgreifen.&amp;lt;br /&amp;gt;&lt;br /&gt;
Am besten geht man dabei folgendermaßen vor: &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Fehler lokalisieren: über ein Oszilloskop kann herausgefunden werden, ob es sich um einen Prozessor-Fehler handelt oder um ein Fehler eines Fremdgerätes.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Zunächst einmal sollte der Code nochmals durchgearbeitet werden, um so sicher zu stellen, dass nicht wichtige Teile vergessen wurden.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Nun sollte das Programm mit dem Debugger Schritt für Schritt durchgegangen werden um zu überprüfen, ob wirklich alle Bits in den richtigen Registern gesetzt worden sind. Manchmal löst ein Bit ein Ereignis aus, welches andere Bits löscht!&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ebenfalls sollte im Power-Management überprüft werden, ob die Funktionen aktiv sind.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Register Zugriff ==&lt;br /&gt;
Der [[Register]]zugriff bei der [[AT32-Serie]] ist etwas anders als bei der AT8-Serie.&lt;br /&gt;
Um hier ein [[Register]] zu beschreiben muss nicht wie z.B. an einem ATmega8 der Befehl wie folgt aussehen: &lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;  DDRD = 0xff; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Sondern bei der 32-bit Serie wird ein Register stattdessen folgendermaßen beschrieben: &lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;  AVR32_&amp;quot;Funktion&amp;quot;.[Channel].Register = 0xff;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Vor jedem [[Register]]Befehl steht zunächst das &amp;quot;AVR32_&amp;quot;. Hieran wird dann eine Funktion (z.B. [[SPI]]) angehängt, damit der [[Prozessor]] weiß wem er das Register zuweisen muss.&lt;br /&gt;
Die Unterfunktion kommt dann zum Einsatz, wenn es mehrere Channels gibt, wie z. B. 3 [[Timer]] oder 2 GPIO-lines. Hier muss dann die Zahl in &amp;quot;[ ]&amp;quot; geschrieben werden.&lt;br /&gt;
Zum Schluss muss noch das entsprechende Register angesprochen werden &amp;quot;.Register&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Der gesamte Befehl sieht dann am Ende so aus:&lt;br /&gt;
     &lt;br /&gt;
     &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;  AVR32_TC0.channel[1].cr = 1&amp;lt;&amp;lt;8;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO - General Purpose Input Output ==&lt;br /&gt;
[[Kategorie:AVR32]]&lt;br /&gt;
Codebeispiel anhand eines AT32UC3L064&lt;br /&gt;
&lt;br /&gt;
=== IO-Zugriff ===&lt;br /&gt;
Bei der 32-Bit Serie ist die Ansteuerung der Pins etwas anders gelöst: Hier kann ein Port nicht mehr mit DDRx und PORTx beschrieben werden, sondern dies geschieht über ein spezielles GPIO-Register, wobei man sich auch hier entsprechende #DEFINEs machen kann.&lt;br /&gt;
 &lt;br /&gt;
Die GPIO Befehle sind folgendermaßen aufgebaut: &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;    AVR32_GPIO.port[X].register = 0xff; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Teil AVR32_GPIO.port[1/2] bezeichnet die entsprechenden Ports (A oder B). Mit dem &#039;&#039;.Register-Name&#039;&#039; wird dann das entsprechende Register angesprochen. Nun muss nur noch eine 1 auf das entsprechende Bit gesetzt werden. Hier gilt, dass der erste Pin auf der 0ten Position steht und der zweite auf Position 1...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um ein Signal aus dem UCxx zu bekommen, muss zunächst das GPIO-Modul aktiviert werden. Dies wird über das GPIO Enable Register(gper) gemacht.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;  AVR32_GPIO.port[0].gper = 1&amp;lt;&amp;lt;13 // Port A Pin 13 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Pin wird mit dem OVR (Output Value Register) auf high gezogen&lt;br /&gt;
       &lt;br /&gt;
     &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt; AVR32_GPIO.port[1].ovr = 1&amp;lt;&amp;lt;13 // Port B Pin 13 auf 3,3V&#039;&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es gibt zu jedem Register zusätzlich die Endung t/c/s toggl/clear/set&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;  AVR32_GPIO.port[0].gperc = 1&amp;lt;&amp;lt;13 //löscht das entsprechende Bit da gperC (clear)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um nun den Wert eines Pins auslesen zu können, muss man sich das &#039;&#039;.pvr&#039;&#039;(Port Value Register ) anschauen. Ist das entsprechende Bit gesetzt, ist der Port logisch high.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Die AT32-Prozessoren verfügen über das Feature, dass Hardware-Funktionen nicht an einen speziellen Pin gebunden sind, sondern sich multiplexen lassen. &amp;lt;br&amp;gt;&lt;br /&gt;
Dies hat den Vorteil, dass man nicht mehr an einen bestimmten Pin gebunden ist, sondern dass man den Prozessor an das Layout des Schaltplans anpassen kann. Jedoch macht dies die Konfiguration deutlich komplizierter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jeder Port hat die Möglichkeit, bis zu 8 (A-H) verschiedene Hardware-Funktionen zu übernehmen (Datenblatt: Package and Pinout)  &lt;br /&gt;
&lt;br /&gt;
Nun muss der entsprechende Port im PMRx (GPIO) der entsprechenden Funktion zugewiesen bekommen.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ausschnitt aus der &amp;quot;Peripheral Multiplexing on I/O lines&amp;quot;-Tabelle:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PIN !! Pin Type!! A!! B!! C!! ...&lt;br /&gt;
|-&lt;br /&gt;
| PA00|| Normal I/O|| USART0 TXD|| USART1 RTS||SPI NPCS[2] || &lt;br /&gt;
|-&lt;br /&gt;
| PA02|| Highdrive I/O|| USART0 RTS|| ADCIFB TRIGGER|| USART2 TXD|| &lt;br /&gt;
|-&lt;br /&gt;
| PA06|| Highdrive I/O, 5V tolerant|| SPI SCK|| USART2 TXD|| USART1 CLK || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Die prozessorspezifische Tabelle befindet sich unter dem Punkt &amp;quot;Package and Pinout&amp;quot;-&amp;quot;Peripheral Multiplexing on I/O lines&amp;quot; im Datenblatt. &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
{{Warnung |&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Damit die Hardware-Funktionen auch verwendet werden können, muss im Register &amp;quot;Gper&amp;quot; der Pin deaktiviert werden, da sonst der Port ganz normale GPIO-Funktionen hat.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Um nun den Modus eines Pines zu verändern  müssen die PMRx Register wie Folgend  verändert werden. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!MODE  !! PMR2!! PMR1!!PMR0&lt;br /&gt;
|-&lt;br /&gt;
| A|| 0|| 0||0  &lt;br /&gt;
|-&lt;br /&gt;
| B|| 0|| 0|| 1 &lt;br /&gt;
|-&lt;br /&gt;
| C|| 0|| 1|| 0 &lt;br /&gt;
|-&lt;br /&gt;
| D|| 0|| 1|| 1 &lt;br /&gt;
|-&lt;br /&gt;
| E|| …|| …|| … &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispielcode um auf Pin A17 den Mode B und auf Pin B05 den Mode D zu bekommen:&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt; &lt;br /&gt;
AVR32_GPIO.port[0].pmr0 = 1&amp;lt;&amp;lt;17;	AVR32_GPIO.port[0].pmr1 = 0;	AVR32_GPIO.port[0].pmr2 = 0; //mode B&lt;br /&gt;
AVR32_GPIO.port[1].pmr0 = 1&amp;lt;&amp;lt;5;		AVR32_GPIO.port[1].pmr1 = 1&amp;lt;&amp;lt;5;	AVR32_GPIO.port[1].pmr2 = 0; //mode D &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interrupt==&lt;br /&gt;
===IRQ(Interrupt Request)===&lt;br /&gt;
Der Interrupt-Controller der AT32-Serie hat zahlreiche Unterscheide zur AT8-Serie.&lt;br /&gt;
Hier gibt es verschiedene Interrupt Requests, die jedem Interrupt einzeln zugewiesen werden können. Hierzu ist es wichtig die Gruppe des Interrupts zu wissen. Jede Hardware-Funktion hat ihre eigene Gruppe. &amp;lt;br /&amp;gt;&lt;br /&gt;
Jeder Interrupt hat eine eigene Interrupt-Line. So kann man jeden Interrupt direkt zuordnen.&lt;br /&gt;
Aus den beiden Werten bildet sich die IRQ-Nummer (interrupt request nummber).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies erstellt sich folgendermaßen: &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt; Interrupt-Gruppe * 32 + Interrupt-Line&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dem Interrupt-Controller müssen nun nur die IRQ-Nummer und ein Pointer auf die Interrupt-Routine und die Priorität des Interrupts übergeben werden. Dies geschieht in der main{}.  &amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt; &lt;br /&gt;
INTC_register_interrupt( &amp;amp;funktion,IRW,Prio) &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===Interrupt im Atmel Studio===&lt;br /&gt;
Nun muss nur noch die Funktion, die dann wärend des Interruptes durchgeführt wird, erstellt werden, jedoch mit dem Suffix: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt; __attribute__((__interrupt__))&lt;br /&gt;
void funktion(void)&lt;br /&gt;
{&lt;br /&gt;
//code&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
So wird dem Compiler mitgeteilt, dass es sich hierbei um eine [[Interrupt]]-Routine handelt und er diese mit &amp;quot;Vorsicht&amp;quot; genießen soll, d.h. aktuelles Programm anhalten, Daten speichern, Interrupt ausführen, und wieder an die letzte Position zurück gehen. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Ein solches Programm kann dann so ausschauen:&amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 __attribute__((__interrupt__)) void timer(void) //interrupt handler &lt;br /&gt;
         {  &lt;br /&gt;
		//Code	  &lt;br /&gt;
	 }	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main (void)&lt;br /&gt;
  {&lt;br /&gt;
&lt;br /&gt;
   Enable_global_interrupt(); //wichtig!!&lt;br /&gt;
   INTC_register_interrupt( &amp;amp;timer,800,1); //interupt group int_level 	&lt;br /&gt;
   // IRQ%32 = line number  &lt;br /&gt;
   // IRQ/32 = Gruppe&lt;br /&gt;
   // IRQ = 32 *25 (Gruppe)+0(line)= 800.&lt;br /&gt;
&lt;br /&gt;
   // im Register den Interrupt erlauben&lt;br /&gt;
   AVR32_TC0.channel[0].ier = 1&amp;lt;&amp;lt;AVR32_TC_IER0_CPCS; //interrupt enable &lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonderfälle===&lt;br /&gt;
In einigen Registern ist der AVR32UC3 nicht in der Lage den Interrupt-Aufruf von selbst zu löschen. d.h der Interrupt wird immer wieder nach Beendigung der Interrupt Routine wieder ausgerufen. &amp;lt;br /&amp;gt;&lt;br /&gt;
um dies zu umgehen muss man laut Datenblatt den Interrupt Disablen, und daraufhin ein Dummy-read auf das Status- bzw. dem Interrupt-Status -Registers ausführen, damit intern der Interrupt Aufruf gelöscht wird. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
möchte man nun die Interrupt Routine wieder starten macht man das über IER&lt;br /&gt;
&lt;br /&gt;
Bsp: &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
		AVR32_TC0.channel[Timer].idr =	1&amp;lt;&amp;lt; AVR32_TC_IER0_CPCS; //disable  Interuppt bei RC comparae&lt;br /&gt;
		AVR32_TC0.channel[0].sr;// dummy read&lt;br /&gt;
		AVR32_TC0.channel[0].ier = 1&amp;lt;&amp;lt; AVR32_TC_IER0_CPCS; //enable interrupt&lt;br /&gt;
		&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Datenblatt: &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;sup&amp;gt;Clearing of the interrupt request is done by writing to registers in the corresponding peripheral&lt;br /&gt;
module, which then clears the corresponding NMIREQ/IREQ signal.&lt;br /&gt;
The recommended way of clearing an interrupt request is a store operation to the controlling&lt;br /&gt;
peripheral register, followed by a dummy load operation from the same register. This causes a&lt;br /&gt;
pipeline stall, which prevents the interrupt from accidentally re-triggering in case the handler is&lt;br /&gt;
exited and the interrupt mask is cleared before the interrupt request is cleared.&lt;br /&gt;
&amp;lt;/sup&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Timer/Counter==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
So wie viele andere Prozessoren verfügt auch der AVR32xxx über eine [[FAQ#Timer|Timer]] Funktion.&amp;lt;br /&amp;gt;&lt;br /&gt;
Der AVR32UCL verfügt über insgesamt 6x 32-Bit-Timer. Diese werden über insgesammt 2 Register angesprochen:&amp;lt;br /&amp;gt;&lt;br /&gt;
      - AVR32_TC0&amp;lt;br /&amp;gt;&lt;br /&gt;
      - AVR32_TC1&amp;lt;br /&amp;gt;&lt;br /&gt;
Jedes dieser Register verfügt über je 3 [https://www.mikrocontroller.net/articles/FAQ#Timer Timer], die sich einzeln konfigurieren lassen. Dies geschieht über die Channel-Funktion. z.B.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
      - AVR32_TC0.channel[0].ccr &lt;br /&gt;
      - AVR32_TC0.channel[1].ccr &lt;br /&gt;
      - AVR32_TC0.channel[2].ccr &lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Der Timer ist in der Lage in 2 Funktions-Typen zu arbeiten, dem Capture Mode und dem Waveform Mode. Der unterschied liegt  ist, dass im Capture Mode TIOA und TIOB (Timer Input/Output A/B)als Input für den Timer verwendet werde, und im Waveform Mode als Output. &amp;lt;br /&amp;gt;&lt;br /&gt;
===Capture Mode===&lt;br /&gt;
Beispiel Konfiguration, in der der Timer auf einen Bestimmten wert hoch zähl und in der zeit in eine Routine abläuft.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
AVR32_TC0.channel[0].ccr = 1&amp;lt;&amp;lt;AVR32_TC_CCR0_CLKEN | 1&amp;lt;&amp;lt;AVR32_TC_CCR0_SWTRG ;//start timer + enable timer&lt;br /&gt;
AVR32_TC0.channel[0].cmr = 2&amp;lt;&amp;lt;AVR32_TC_CMR0_WAVSEL |1&amp;lt;&amp;lt;AVR32_TC_CMR0_WAVE | 1&amp;lt;&amp;lt;AVR32_TC_CMR0_TCCLKS;//mode config&lt;br /&gt;
&lt;br /&gt;
while(AVR32_TC0.channel[2].cv &amp;lt;= zeit_daten_senden) &lt;br /&gt;
			{	&lt;br /&gt;
				//mach was &lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Über die Register LDRB und LDRA kann der Aktuelle Zählerstand in einen der beiden Register (RA / RB) abgelegt werden.&lt;br /&gt;
&lt;br /&gt;
===Waveform Mode===&lt;br /&gt;
im Waveform Mode kann über ein RA/RB Compare und einem RC Compare ein eine Steigende oder fallende Flanke am TIOA/B erzeugt werden. So ist es einfach ein PWM Signal zu erzeugen, was ein genaues PWM ermöglicht als der 8-Bit PWM der pro Pin verbaut ist.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Um den Waveform Mode zu aktivieren muss im CMR Register WAVE auf 1 gesetzt werden.&lt;br /&gt;
Insgesamt gibt es 4 verschieden Funktionen, die über WAVESEL ausgewählt werden können: &amp;lt;br /&amp;gt;&lt;br /&gt;
      -UP mode &amp;lt;br /&amp;gt;&lt;br /&gt;
      -UPDOWN&amp;lt;br /&amp;gt;&lt;br /&gt;
      -UP mode mit RC Compare Trigger &amp;lt;br /&amp;gt;&lt;br /&gt;
      -UPDOWN  mit RC Compare Trigger &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Counter wird entweder bis 0xFFFF hochgezählt und beginnt wieder bei 0x0000, oder er wird nach 0xffff von oben nach unten zurückgezahlt.&amp;lt;br /&amp;gt;&lt;br /&gt;
auch ist es möglich bei einem RC Compare einen reset auszulösen. &amp;lt;br /&amp;gt;&lt;br /&gt;
TIOA und TIOB sind in der Lage ein Signal bei einem Compare mit RA/RB und RC auszulösen. Hierbei ist es möglich &lt;br /&gt;
das Signal entweder zu löschen, Toggeln oder zu setzen. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	AVR32_TC0.channel[Timer].ier =		1&amp;lt;&amp;lt; AVR32_TC_IER0_CPCS; //enable Interuppt bei RC comparae&lt;br /&gt;
	AVR32_TC0.channel[Timer].cmr =	 1&amp;lt;&amp;lt;AVR32_TC_CMR0_ACPA | 2&amp;lt;&amp;lt;AVR32_TC_CMR0_ACPC // Setzte TIOA bei RC &lt;br /&gt;
                                                                          //compere und lösche es bei RA comparae&lt;br /&gt;
		 |   1&amp;lt;&amp;lt;AVR32_TC_CMR0_BCPB | 2&amp;lt;&amp;lt;AVR32_TC_CMR0_BCPC // TIOB Setze bei RC und lösche bei RC &lt;br /&gt;
		 |   1 &amp;lt;&amp;lt;AVR32_TC_CMR0_WAVE // wave enable&lt;br /&gt;
		 |   2&amp;lt;&amp;lt;AVR32_TC_CMR0_WAVSEL //Wavemode 2 UP- RC copare und reset des Counters&lt;br /&gt;
		 |   1&amp;lt;&amp;lt;AVR32_TC_CMR0_TCCLKS //clock select&lt;br /&gt;
		 |   1&amp;lt;&amp;lt;AVR32_TC_CMR0_ENETRG // externe Trigger disable, da ansonsten TIOB nicht als Output ist &lt;br /&gt;
		 |   1&amp;lt;&amp;lt;AVR32_TC_CMR0_EEVT; //keine Externel Trigger EVents behandeln &lt;br /&gt;
		&lt;br /&gt;
		AVR32_TC0.channel[Timer].ra  = 3686&amp;lt;&amp;lt;AVR32_TC_RA;  //Register a&lt;br /&gt;
		AVR32_TC0.channel[Timer].rb  = 3686&amp;lt;&amp;lt;AVR32_TC_RB;  //Register b	==&amp;gt;  RA start TIOA     RB lösche&lt;br /&gt;
                                                                   // TIOB		RC lösche TIOA Start TIOB&lt;br /&gt;
		AVR32_TC0.channel[Timer].rc  = 0xffff&amp;lt;&amp;lt;AVR32_TC_RC; //Register c&lt;br /&gt;
		AVR32_TC0.channel[Timer].ccr = 1&amp;lt;&amp;lt;AVR32_TC_CCR0_CLKEN | 1&amp;lt;&amp;lt; AVR32_TC_CCR0_SWTRG; //clock enable und start &lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interrupt===&lt;br /&gt;
Jeder dieser Timer/counter ist in der Lage bei einem Timer-Overflow ein Interrupt auszulösen. Diese lassen sich über die [https://www.mikrocontroller.net/articles/AVR32-Tutorial#IRQ.28Interrupt_Request.29 IRQ] auseinander halten.&amp;lt;br /&amp;gt;&lt;br /&gt;
Es ist möglich ein Interrupt bei einem RA - RB - RA - Comparare auslösen zu lassen, sowie bei einer Änderung am  Externen Trigger oder einer RB bzw. RA Load-action.&lt;br /&gt;
&lt;br /&gt;
==TWI/I2C==&lt;br /&gt;
===Allgemein===&lt;br /&gt;
Mit dem TWI-Bus hat Atmel einen Klon von Philips I2C-Bus implementiert.&amp;lt;br /&amp;gt;&lt;br /&gt;
Der AVR32uc3-L0064 und die meisten anderen AVR32-Prozessoren verfügen über 2x TWI-Master und über 2x TWI-Slaves, die sich einzeln Konfigurieren lassen. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dies wird über folgendes Register durchgeführt: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    AVR32_TWIM0  //Master1&lt;br /&gt;
    AVR32_TWIM1  //Master2&lt;br /&gt;
    AVR32_TWIS0  //Slave1&lt;br /&gt;
    AVR32_TWIS1  //Slave2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Register Master0/1 sowie die Register Slave0/1 sind identisch aufgebaut.&amp;lt;br /&amp;gt;&lt;br /&gt;
===Konfiguration===&lt;br /&gt;
In den AVR32-Bibliothek werden die #Define&#039;s für die einzelnen Register nicht nach Master 0 und 1 unterschieden, da diese identisch sind. Deshalb müssen die Register wie folgt angesprochen werden: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    AVR32_TWIM_NCMDR_VALID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===Grundkonfig===&lt;br /&gt;
Um den TWI-Bus zum Laufen zu bringen muss zunächst einmal das Entsprechende Bit im Power-Management gesetzt werden(hierzu im Datenblatt nachschauen, welches dies ist).&amp;lt;br /&amp;gt;&lt;br /&gt;
Genauso wichtig ist es, darauf zu achten, dass die Ports richtig gemultiplext werden.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nun kann im &amp;quot;CWGR&amp;quot;-Register(Clock Waveform Generator Register) der Clock Prescaler (EXP) mit den Werden 0-7 bespielt werden.&amp;lt;br /&amp;gt;&lt;br /&gt;
Eine weitere Besonderheit ist, dass sich die TWI-High- und Low Phasen, sowie wie Daten und die Start/Stopp-Zeiten Individuell einstellen lassen. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dies hat den Vorteil, dass hier mit viel Erfahrung noch ein kleines bisschen Zeit herausgekitzelt werden kann.&lt;br /&gt;
Ich empfehle jedoch, die Zeiten auf &amp;quot;1&amp;quot; zu stellen.&amp;lt;br /&amp;gt;&lt;br /&gt;
===Daten-Übertragung===&lt;br /&gt;
Nun sollen die ersten Daten übertragen werden:&amp;lt;br /&amp;gt;&lt;br /&gt;
Hierzu ist das Register &amp;quot;CMDR&amp;quot; (Command Register) und &amp;quot;NCMDR&amp;quot;(Next Command Register) wichtig. Diese Register sollen nach jeder Übertragung neu beschrieben werden.&amp;lt;br /&amp;gt;&lt;br /&gt;
Die wichtigsten Bits sind:&amp;lt;br /&amp;gt;&lt;br /&gt;
* NBYTES:    Hier wird die Anzahl der zu übertragenden Bytes eingeben. Eine Stopp-Bedingung wird erst gesendet, wenn all Bytes gesendet worden sind.&lt;br /&gt;
* STOP:      Sendet nach der Übertragung ein Stopp-Flanke&lt;br /&gt;
* Start:     Beginnt die Übertragung mit einer Start-Flanke&lt;br /&gt;
* SADR:      Slaveadresse&lt;br /&gt;
* Read:      Wenn gelesen werden soll muss hier eine 1 stehen, ansonsten weiß der Slave, dass geschrieben wird.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Jetzt weiß der TWI-Bus, wie gesendet werden soll. Nun muss ihm nur noch gesagt werden was gesendet wird. Die zu sendende Information wird in das Register &amp;quot;THR&amp;quot; (Transmit Holding Register) geschrieben.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nun muss noch die Übertragung gestartet werden. Hierzu muss im CMDR-Register das Bit VALID gesetzt werden. Hat man eine Übertragung von mehr als 1 Byte, muss nach der Übertragung des ersten Bytes das THR-Register mit dem nächsten Byte gefüttert werden (jedoch ohne VALID!).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Daten Senden und Empfangen===&lt;br /&gt;
Um z. B. Sensoren auszulesen wird normalerweise zunächst die Register-Adresse auf dem Bus geschrieben, und dann sendet der Slave den oder die Werte des angefragten Registers.&amp;lt;br /&amp;gt;&lt;br /&gt;
Hierzu muss eine Übertragung mit START = 1,SADR,Stopn = 0, Read = 0 und Nbytets = 1 begonnen werden. In THR wird das Register geschrieben.&amp;lt;br /&amp;gt;&lt;br /&gt;
Im nächsten Schritt wird dann (z. B. über das Ncmdr-Register -- wichtig hierbei: das VALID-Register muss dann auch im NCDMR-Register gesetzt werden und nicht im CMDR!) eine Übertragung gestartet: START = 0, SADR, Stopn = 1, Read = 1 und Nbytets = 1. Nun weiß der Slave, dass er etwas zurücksenden soll, und legt die Information auf die Datenleitung. Beim Zurücksenden wird der Takt (Clock) vom Master angelegt. Nach der Übertragung schreibt der Master die Information in das &amp;quot;RHR&amp;quot;-Register (Receive Holding Register).&amp;lt;br /&amp;gt;&lt;br /&gt;
Viele Slaves sind in der Lage einen Burst-Read durchzuführen: Hier wird einmal das Lesen gestartet und der Slave sendet denn immer weiter(Register abwärts oder aufwärts), bis eine STOP Bedingung gesendet wird. Einfach Nbytes auf die Anzahl der Bytes stellen.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Takt-Quelle ==&lt;br /&gt;
Im AVR32UC können übers Powermanagement verschiedene Einstellungen zur Takt-Source und zur Taktversorgung der Teilkomponenten des Prozessors getroffen werden. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RC-Oszillator===&lt;br /&gt;
Der AVRUC3X verfügt über einen interne RC-Oszillator, der als Takt-Source verwendet werden kann. hierzu müssen folgende Register im Powermanagement(PM) gesetzt werden: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
//Rc enable&lt;br /&gt;
	AVR32_SCIF.unlock =  0x0058 &amp;lt;&amp;lt; AVR32_SCIF_UNLOCK_ADDR| 0xAA&amp;lt;&amp;lt;AVR32_SCIF_UNLOCK_KEY;&lt;br /&gt;
	AVR32_SCIF.rc120mcr = 0xff; //enable 120mhz oszilator&lt;br /&gt;
	&lt;br /&gt;
	AVR32_PM.unlock = 0xAA &amp;lt;&amp;lt; AVR32_PM_UNLOCK_KEY   | 0x004 &amp;lt;&amp;lt; AVR32_PM_UNLOCK_ADDR;&lt;br /&gt;
	AVR32_PM.cpusel = 1&amp;lt;&amp;lt; AVR32_PM_CPUSEL_CPUDIV | 2&amp;lt;&amp;lt; AVR32_PM_CPUSEL_CPUSEL; //pba auf ein 6 von mainclock &lt;br /&gt;
        // hier ist auch twi drinnen&lt;br /&gt;
	&lt;br /&gt;
	AVR32_PM.unlock = 0xAA &amp;lt;&amp;lt; AVR32_PM_UNLOCK_KEY  | 0x000 &amp;lt;&amp;lt; AVR32_PM_UNLOCK_ADDR;&lt;br /&gt;
	AVR32_PM.mcctrl = 3; //clocksource auf RC-oszilator umstellen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig hierbei ist das die entsprechenden Register über ein Log-Register geschützt sind.&lt;br /&gt;
Ist das zu beschreibende Register nicht entsperrt, kann es nicht beschrieben werden.&amp;lt;br /&amp;gt;&lt;br /&gt;
Um das entsprechende Register zu entsperren, muss im Log-Register der &amp;quot;Key&amp;quot; eingetragen werden und die Adresse des zu entsperrenden Registers.&amp;lt;br /&amp;gt;&lt;br /&gt;
Wichtig: das Register ist nur für einen weiten Befehl entsperrt.    &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Peripherie Komponenten ===&lt;br /&gt;
Ebenfals ist es möglich die Peripherie Komponenten einen eigen Takt zu geben dies geschieht über das PBAMASK-Register und dem PBASEL-Register im Power-Management. &amp;lt;br /&amp;gt;&lt;br /&gt;
Hier kann allen Peripherie Komponenten einen Main-Clock unabhängigem Takt gegeben werden. Hierbei wird die Main-Clock durch  den Teiler im PBASEL geteilt. Der Takt ist nun Mainclock/2^(teiler+1)&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links und Literaturempfehlungen ==&lt;br /&gt;
Es ist empfehlenswert, im Datenblatt nicht nur den entsprechende Abschnitt durchzulesen, sondern auch nach den Begriffen zu suchen, da viele wichtige Informationen nicht in dem entsprechenden Abschnitt stehen (wie z.B. Modulkonfiguration).&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/AVR32 AVR32]&lt;br /&gt;
* http://de.wikipedia.org/wiki/Atmel_AVR32&lt;br /&gt;
* http://www.atmel.com/products/microcontrollers/avr/32-bitavruc3.aspx&lt;br /&gt;
* [http://www.atmel.com/Images/doc32117.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Autoren==&lt;br /&gt;
Ersteller : unbekannt &amp;lt;br&amp;gt;&lt;br /&gt;
Bearbeitung: Sebastian Balz&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
--[[Benutzer:Basti195|Basti195]] ([[Benutzer Diskussion:Basti195|Diskussion]]) 15:39, 6. Sep. 2014 (CEST)&lt;/div&gt;</summary>
		<author><name>162.219.176.251</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Transistor&amp;diff=90464</id>
		<title>Transistor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Transistor&amp;diff=90464"/>
		<updated>2015-12-01T15:19:33Z</updated>

		<summary type="html">&lt;p&gt;162.219.176.251: Sieg Heil&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kunstwort aus &amp;quot;transfer resistor&amp;quot;, was etwa so viel bedeutet wie &amp;quot;übertragener [[Widerstand]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den 1950-ern als praktische Anwendung des [[Halbleiter]]-Effekts erfundenes &amp;quot;solid state&amp;quot; Schalt- und Verstärkerelement, welches sehr klein ist, ohne bewegte Teile auskommt (anders als ein klassisches Relais) und keine energiefressende Heizung benötigt (anders als eine Röhre).&lt;br /&gt;
&lt;br /&gt;
Vom &amp;quot;bipolaren Transistor&amp;quot; (PNP, NPN) weiterentwickelt zum &amp;quot;Feldeffekt-Transistor&amp;quot; ([[FET]]), der heute - gefertigt mit einem preiswerten Verfahren unter Verwendung von Metall-Oxid-Schichten (MOS) - ein wesentliches Element integrierter Schaltkreise (ICs, integrated circuits) darstellt, und damit natürlich auch von [[Mikrocontroller]]n, um die es in diesem Wiki hauptsächlich geht (bzw. gehen sollte).&lt;br /&gt;
&lt;br /&gt;
== Schaltzeichen ==&lt;br /&gt;
http://electronicsclub.info/images/transbce.gif&lt;br /&gt;
&lt;br /&gt;
* E: Tuerke&lt;br /&gt;
* B: Neger&lt;br /&gt;
* C: Jude    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ASCII Schaltplänen sehen Transistoren so aus:&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
                       |&amp;gt;                 |/&lt;br /&gt;
NPN      |&amp;gt;   oder    -|       oder      -|&lt;br /&gt;
                       |\                 |&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       |&amp;lt;                 |/&lt;br /&gt;
PNP:     |&amp;lt;   oder    -|       oder      -|&lt;br /&gt;
                       |\                 |&amp;lt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um zu erkennen, ob ein NPN oder PNP Transistor im Schaltplan verwendet wird, gibt es Eselsbrücken:&lt;br /&gt;
*Für Dichter: &#039;&#039;&#039;Tut der Jud dem Nazi weh, gibt es kraeftig Zyklon B&#039;&#039;&#039;&lt;br /&gt;
*Für Praktiker: &#039;&#039;&#039;PNP heisst &amp;quot;Neger Nach Afrika&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
*Mit Dialekt: &#039;&#039;&#039;NPD &amp;quot;&#039;Gas geben!&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
*..und für Gleichberechtigungsverfechter: &#039;&#039;&#039;Sieg Heil&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JFET: [[Bild:Transistor_JFET.png]]&lt;br /&gt;
&lt;br /&gt;
MOSFET: [[Bild:Transistor_MOSFET.png]]&lt;br /&gt;
&lt;br /&gt;
* S: Source&lt;br /&gt;
* G: Gate&lt;br /&gt;
* D: Drain&lt;br /&gt;
&lt;br /&gt;
Eigentlich haben MOSFETs noch einen vierten Anschluss namens Bulk. Der ist aber nur bei Spezialtypen als Pin herausgeführt. Im Normalfall kann man ihn vergessen, da er nicht gesondert beschaltet werden muss, er ist praktisch und auch im Symbol mit Source verbunden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Die NPN/PNP Eselsbrücken funktionieren bei FETs nicht, denn bei einem P-Kanal FET zeigt der Pfeil weg vom FET!&lt;br /&gt;
Ein Bipolartransistor, im Englischen als bipolar junction transistor (BJT) bezeichnet, ist ein Transistor, bei dem Ladungsträger – negativ geladene Elektronen und positiv geladene Defektelektronen – zum Stromtransport durch den Bipolartransistor beitragen. Der BJT wird mittels eines elektrischen Stroms gesteuert und wird zum Schalten und Verstärken von Signalen ohne mechanisch bewegte Teile eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Bipolare Leistungstransistoren sind für das Schalten und Verstärken von Signalen höherer Stromstärken und Spannungen ausgelegt.&lt;br /&gt;
&lt;br /&gt;
== Typbezeichnungen == &lt;br /&gt;
&lt;br /&gt;
Neben den Typbezeichnungen wie 2Nxxxx, TIPxxx, MJxxx, MJExx gibt es noch die in Europa geläufigere  Kennzeichnung bestehend aus zwei Buchstaben und drei Ziffern. Die diversen Kennzeichnungsmöglichkeiten sind in einem eigenen Artikel ([[Kennzeichnung von Halbleitern]]) zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
== Kenndaten/Parameter ==&lt;br /&gt;
&lt;br /&gt;
Im [http://www.mikrocontroller.net/topic/197676#1938546 Beitrag: Transistorparameter Erklärung] sind Links zu Erläuterungen spezieller Kürzel.&lt;br /&gt;
&lt;br /&gt;
== Transistor Grundschaltungen ==&lt;br /&gt;
&lt;br /&gt;
Generell gilt, dass Strom vom Kollektor zum Emitter nur dann fließen kann, wenn die Basis positiver (NPN) bzw. negativer (PNP) wird als der Emitter. Dabei darf die Basis nicht direkt mit Vcc (NPN) oder GND (PNP) verbunden werden, da der Basisstrom sonst zu gross wird. Es muss jeweils ein geeigneter Basiswiderstand (R_Basis) gewählt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weitere Links:&#039;&#039;&#039;&lt;br /&gt;
* Artikel [[Basiswiderstand]]&lt;br /&gt;
* [http://www.elektronik-kompendium.de/sites/slt/0203111.htm Transistor Grundschaltungen im ElKo]&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Transistor Transistor bei RoboterNetz.de]&lt;br /&gt;
&lt;br /&gt;
Es gibt drei Grundschaltungen. Der Name beschreibt den Anschluss, welcher sich auf einem festen Potential (Spannung) befindet. Die beiden anderen Anschlüsse haben bedingt durch die Schaltung ein veränderliches Potential.&lt;br /&gt;
&lt;br /&gt;
=== Kollektorschaltung (Emitterfolger)===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anwendung:&#039;&#039;&#039;&lt;br /&gt;
* Impedanzwandler&lt;br /&gt;
* Darlington-Schaltung&lt;br /&gt;
* Schalter&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eigenschaften:&#039;&#039;&#039;&lt;br /&gt;
* Keine Phasendrehung&lt;br /&gt;
* Hohe Stromverstärkung&lt;br /&gt;
* Keine Spannungsverstärkung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel: Transistor als Schalter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* NPN: Kollektor mit Vcc verbinden, Last an Emitter&lt;br /&gt;
* PNP: Kollektor mit GND verbinden, Last an Emitter&lt;br /&gt;
&lt;br /&gt;
In diesem Fall regelt der Transistor die Spannungen am Emitter, daher wird die Last am Emitter angeschlossen. Die Spannung am Emitter entspricht immer der an der Basis minus 0,6V, sie folgt der Basisspannung, deswegen auch der Name Emitterfolger. Daher ist diese Schaltung nicht geeignet, um 12V mit 5V zu schalten. &lt;br /&gt;
&lt;br /&gt;
[[Bild:NPN_Collector.gif | framed | center | NPN Transistor in Kollektorschaltung]]&lt;br /&gt;
&lt;br /&gt;
Wird &amp;lt;math&amp;gt;R_{Poti}&amp;lt;/math&amp;gt; (Spannungsteiler) erhöht, steigt die Spannung &amp;lt;math&amp;gt;U_{Last}&amp;lt;/math&amp;gt; letztlich bis auf Vcc-0,6V (Basis-Emitter-Übergang). &lt;br /&gt;
&lt;br /&gt;
[[Bild:PNP_Collector.gif | framed | center | PNP Transistor in Kollektorschaltung]]     &lt;br /&gt;
&lt;br /&gt;
Wird &amp;lt;math&amp;gt;R_{Poti}&amp;lt;/math&amp;gt; (Spannungsteiler) erhöht, sinkt Spannung an &amp;lt;math&amp;gt;U_{Last}&amp;lt;/math&amp;gt; letztlich bis auf 0,6V (Basis-Emitter-Übergang).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weitere Links:&#039;&#039;&#039;&lt;br /&gt;
* [http://www.elektronik-kompendium.de/sites/slt/0204133.htm Kollektorschaltung im ElKo]&lt;br /&gt;
&lt;br /&gt;
=== Emitterschaltung ===&lt;br /&gt;
&lt;br /&gt;
Die Emitterschaltung bietet hohe Spannungs- und Stromverstärkung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anwendung:&#039;&#039;&#039;&lt;br /&gt;
* NF- und HF-Verstärker&lt;br /&gt;
* Leistungsverstärker&lt;br /&gt;
* Transistor als Schalter&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eigenschaften:&#039;&#039;&#039;&lt;br /&gt;
* Phasendrehung 180°&lt;br /&gt;
* Hohe Spannungsverstärkung&lt;br /&gt;
* Hohe Stromverstärkung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel: Transistor als Schalter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Last liegt am Kollektor. Der Strom durch den Schalter oder an U_Schalt steuert den Strom zwischen Kollektor und Emitter. Wird der Schalter geschlossen, fließt ein Strom.&lt;br /&gt;
&lt;br /&gt;
[[Bild:NPN_Schalter.gif | framed | center | NPN Transistor als Schalter]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                   ___                                          ___&lt;br /&gt;
Vcc/+ o-----------------------+          Vcc/+ o-----------------------+&lt;br /&gt;
                              |                                        |&lt;br /&gt;
                     ___    |&amp;lt;            U_schalt (-)       ___     |&amp;lt;  PNP             &lt;br /&gt;
             +------|___|---|  PNP             o------------|___|----|&lt;br /&gt;
             |     R_Basis  |\                             R_Basis   |\&lt;br /&gt;
    Schalter \                |                                        |&lt;br /&gt;
             |       ___      |                               ___      |&lt;br /&gt;
GND/- o------+------|___|-----+          GND/- o-------------|___|-----+&lt;br /&gt;
                   R_Last                                    R_Last     &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weitere Links:&#039;&#039;&#039;&lt;br /&gt;
* [http://www.elektronik-kompendium.de/sites/slt/0204302.htm Emitterschaltung im ElKo]&lt;br /&gt;
&lt;br /&gt;
=== Basisschaltung ===&lt;br /&gt;
&lt;br /&gt;
Die Basisschaltung findet sich vor allem in Eingangsstufen in der HF-Technik. Im Schaltbetrieb wird sie praktisch nur zur [[Pegelwandler#STEP-UP: 5V -&amp;gt; 9..15V | Pegelwandlung]] für nachfolgende Stufen verwendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eigenschaften:&#039;&#039;&#039;&lt;br /&gt;
* Geringe Eingangsimpedanz&lt;br /&gt;
* Keine Phasenverschiebung&lt;br /&gt;
* Hohe Bandbreite&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weitere Links:&#039;&#039;&#039;&lt;br /&gt;
* [http://www.elektronik-kompendium.de/sites/slt/0205081.htm Basisschaltung im ElKo&lt;br /&gt;
&lt;br /&gt;
== FAQ aus dem Forum ==&lt;br /&gt;
&lt;br /&gt;
=== PNP/NPN als Schalter, wohin mit der Last? === &lt;br /&gt;
Für viele einfache Anwendungen kann man sich merken: &#039;&#039;&#039;Bei Schaltanwendungen darf der Basisstrom nicht durch die Last fließen&#039;&#039;&#039;. Normalerweise kommt dabei die Emitterschaltung zum Einsatz, die Last kommt also an den Kollektor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Vcc o-------------+                  Vcc o-----------+&lt;br /&gt;
                   |                                  |&lt;br /&gt;
                  .-.               An: GND   ___   |&amp;lt;&lt;br /&gt;
                  | | R_Last             o---|___|--|   PNP&lt;br /&gt;
                  &#039;-&#039;               Aus: Vcc        |\&lt;br /&gt;
                   |                                  |&lt;br /&gt;
An: Vcc  ___     |/                                  .-.&lt;br /&gt;
    o---|___|----|   NPN                             | | R_Last&lt;br /&gt;
Aus: GND         |&amp;gt;                                  &#039;-&#039;&lt;br /&gt;
                   |                                  |&lt;br /&gt;
 GND o-------------+                  GND o-----------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siehe [[Basiswiderstand]] zur Berechnung des notwendigen Basiswiderstandes bei gegebener Last R_Last für einen Transistor als Schalter.&lt;br /&gt;
&lt;br /&gt;
Siehe auch Threads im Forum: &lt;br /&gt;
* http://www.mikrocontroller.net/topic/58567 &lt;br /&gt;
* http://www.mikrocontroller.net/topic/119841&lt;br /&gt;
* oder im [http://www.elektronik-kompendium.de/sites/slt/0208031.htm Elektronik-Kompendium-Forum]&lt;br /&gt;
&lt;br /&gt;
=== Wie kann ich mit 5V vom Mikrocontroller 12V und mehr schalten? === &lt;br /&gt;
Schau mal hier:&lt;br /&gt;
* Wikiartikel [[Pegelwandler]]&lt;br /&gt;
* [http://www.elektronik-kompendium.de/sites/praxis/bausatz_pegelwandler-mit-transistoren.htm Pegelwandler im ElKo]&lt;br /&gt;
* [http://dl6gl.de/grundlagen/schalten-mit-transistoren schalten-mit-transistoren]&lt;br /&gt;
&lt;br /&gt;
oder in diesen Threads:&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/17899 Transistor als Schalter]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/14437 Vcc schalten mit MOSFET]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/29830 Schalten mit PNP-Transistor]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/104027 Transistorschalter für Versorgungsspannung]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/104951#921417 7-50V strombegrenzt schalten]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/103116#900247 P-Kanal MOSFET ansteuern]&lt;br /&gt;
*[https://www.mikrocontroller.net/topic/383039#4367479 5V/15mA mit 3,3V schalten]&lt;br /&gt;
&lt;br /&gt;
Bei der Kollektor-Schaltung entspricht die Spannung am Emitter immer der an der Basis, daher ist sie nur bedingt geeignet. Zum Schalten können die folgenden Emitter-Schaltungen verwendet werden. Achtung: In der zweiten davon arbeitet T1 in Basisschaltung.&lt;br /&gt;
&lt;br /&gt;
Schalten gegen GND&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 +12V o------------------------+&lt;br /&gt;
                               |&lt;br /&gt;
                              .-. &lt;br /&gt;
                             ( X )  &lt;br /&gt;
                              &#039;-&#039;&lt;br /&gt;
                               |&lt;br /&gt;
                    ___      |/ T1,NPN   &lt;br /&gt;
        uC PIN o---|___|-----| BC547     &lt;br /&gt;
                   R2,4K7    |&amp;gt;&lt;br /&gt;
                               |&lt;br /&gt;
  GND o---------o--------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schalten gegen +12V&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 +12V o--------------+----------------------+&lt;br /&gt;
                     |                      |&lt;br /&gt;
                     |   ____              |&amp;lt; T2, PNP&lt;br /&gt;
                     +--|____|----+--------|  BC557&lt;br /&gt;
                        R1,4K7    |        |\&lt;br /&gt;
                                |/T1,NPN    |&lt;br /&gt;
         Vcc/+5V o--------------| BC547     |&lt;br /&gt;
                                |&amp;gt;          |&lt;br /&gt;
                        ___       |        .-. &lt;br /&gt;
          uC PIN o-----|___|------+       ( X )  &lt;br /&gt;
                       R2,4K7              &#039;-&#039;&lt;br /&gt;
                                            |&lt;br /&gt;
  GND o----------o--------------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transistor an µC ohne Vorwiderstand === &lt;br /&gt;
&lt;br /&gt;
Normalerweise sind IO Pins vom µC nicht in der Lage, große Ströme zu treiben, beim AVR maximal ~20mA. Für einen kleinen Transistor ist das immer noch zu viel und es wäre auch Stromverschwendung.&lt;br /&gt;
&lt;br /&gt;
Deshalb kann man den IO-Pin des AVRs einfach als Tristate Eingang einstellen (Portpin als Eingang und Pullup deaktivieren), damit kein Basisstrom fließt.&lt;br /&gt;
&lt;br /&gt;
Aktiviert man nun den internen Pullup-Widerstand des AVRs, agiert dieser als Basisvorwiderstand, und es fließt nur ein geringer Basisstrom (die Pullups eines AVRs liegen irgendwo bei 50k bis 100k Ohm - siehe Datenblatt).&lt;br /&gt;
&lt;br /&gt;
Nur sollte man bei kleinen Transistoren aufpassen, dass man den Portpin in der Software nie als aktiven Ausgang schaltet. &lt;br /&gt;
&lt;br /&gt;
Wenn der verwendete µC zuschaltbare Pulldown-Widerstände an seinen Pins besitzt, kann man das gleiche auch mit einem PNP-Transistor machen (natürlich nur den Pulldown aktivieren).&lt;br /&gt;
&lt;br /&gt;
Eine Anwendung wären z.&amp;amp;nbsp;B. Nixie-Röhren-Kathodentreiber (geringe Stromverstärkung nötig).&lt;br /&gt;
&lt;br /&gt;
=== Wann bipolare (NPN/PNP) und wann FETs (insbesonders, wenn LEDs im Spiel sind)?=== &lt;br /&gt;
Oft sind bipolare Transistoren (NPN/PNP) schon ausreichend, vor allem wenn &amp;quot;normale&amp;quot; LEDs (20mA) verwendet werden. FETs sind u.a. dann gut, wenn mit geringen Eingangsströmen hohe Ausgangsströme (über 300 mA) geschaltet werden sollen, also bei den Power-LEDs (Luxeon...).&lt;br /&gt;
&lt;br /&gt;
Ein Grenzfall: 500mA/5V schalten, siehe http://www.mikrocontroller.net/topic/62327.&lt;br /&gt;
&lt;br /&gt;
=== Wieso gehen bei einer Multiplex-Anzeige mit Schieberegister 74HC595 und (Darlington-)Transistor als Zeilentreiber die LED nicht ganz aus?  ===&lt;br /&gt;
Das liegt an der &#039;&#039;&#039;Miller-Kapazität&#039;&#039;&#039; des übersteuerten (Darlington-)Transistors. Der braucht erst mal einige 10µs, um zu sperren. Du mußt also erstmal beide Zeilen ausschalten, dann etwas warten und dann die nächste Zeile an. Oder Du ersetzt die Darlington durch P-FETs. [http://www.mikrocontroller.net/topic/132545]&lt;br /&gt;
&lt;br /&gt;
=== Wie steuert man ein Relais? ===&lt;br /&gt;
Normalerweise verwendet man zur Ansteuerung von Relais NPN-Transistoren in Emitterschaltung. Freilaufdiode nicht vergessen! &lt;br /&gt;
&lt;br /&gt;
Siehe auch:&lt;br /&gt;
* [[Relais mit Logik ansteuern]]&lt;br /&gt;
* [http://www.mikrocontroller.net/attachment/22023/Relaisanteuerung.png Schaltbilder aus dem Forum]&lt;br /&gt;
&lt;br /&gt;
=== Was ist die Spannung &amp;lt;math&amp;gt;U_{BE\_sat}&amp;lt;/math&amp;gt; (lt. Datenblatt max. 1,2V)? ===&lt;br /&gt;
Bekanntlich verhält sich die Basis-Emitter Strecke eines Transistors wie eine Diode und &amp;lt;math&amp;gt;U_{BE\_sat}&amp;lt;/math&amp;gt; ist die bei maximal zulässigem Basisstrom anliegende Vorwärtsspannung.&lt;br /&gt;
&lt;br /&gt;
=== Was bewirkt ein Kondensator (100µF-1nF) parallel zur Basis-Emitter-Strecke nach Masse? === &lt;br /&gt;
Er wirkt mit dem Basisvorwiderstand als RC-Tiefpass. Damit wird der Transistor eigentlich nicht mehr als Schalter, sondern als Linearregler betrieben. Manche Verstärker-Schaltungen sind, gerade bei hohen Lasten, sehr schwingfreudig. Deswegen ist bei PWM so ein C nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
=== Gibt es einen IC, der wie mehrere Transistoren funktioniert? ===&lt;br /&gt;
&lt;br /&gt;
Gibt es! Beispielsweise der &#039;&#039;&#039;ULN2803&#039;&#039;&#039; ist ein 8-fach Darlington Transistor Array mit [[Ausgangsstufen_Logik-ICs#Open_Collector|Open-Collector Ausgang]]. Damit lässt sich z.&amp;amp;nbsp;B. ein Leistungstreiber zur Ansteuerung von Schrittmotoren, Relais und anderen induktiven Lasten aufbauen.&lt;br /&gt;
&lt;br /&gt;
=== Gibt es ein Transistor-Array wie ULN28xx, das gegen Vcc schaltet? ===&lt;br /&gt;
&lt;br /&gt;
Such mal nach UDN29xx, z.&amp;amp;nbsp;B. UDN2981, UDN2987 ...&lt;br /&gt;
&lt;br /&gt;
=== Wann setzt man einen MOSFET, Bipolartransistor, IGBT oder Thyristor ein ? ===&lt;br /&gt;
siehe [[Leistungselektronik]]&lt;br /&gt;
&lt;br /&gt;
Die Summe allen Übels ist konstant. Man muss wissen, welches Bauteil sich wofür besonders eignet.&lt;br /&gt;
&lt;br /&gt;
====[[FET | MOSFET]]====&lt;br /&gt;
&lt;br /&gt;
Vorteile&lt;br /&gt;
* Bei niedrigen Spannungen &amp;lt;100V sehr gut geeignet, &amp;lt;200V gut geeignet, sehr geringe R_DS-ON Widerstände möglich (einstelliger mOhm-Bereich)&lt;br /&gt;
* Hohe Schaltgeschwindigkeiten möglich&lt;br /&gt;
* Geringe An- und Ausschaltverluste&lt;br /&gt;
* Statisch praktisch leistungslos steuerbar&lt;br /&gt;
* Bodydiode kann als Freilaufdiode in H-Brücken verwendet werden&lt;br /&gt;
* 2. Durchbruch bei Überschreiten der max. Drain-Source Sperrspannung zerstört das Bauteil nicht, wenn der Strom sowie die Energie begrenzt werden. (Verhalten wie [[Diode | Z-Diode]])&lt;br /&gt;
   &lt;br /&gt;
Nachteile&lt;br /&gt;
*Antiparallele Diode (Bodydiode) ist in nahezu allen MOSFETs unvermeidlich, daduch Sperren nur in einer Polarität möglich, Stromfluss über den MOSFET aber in beiden Richtungen möglich (Inversbetrieb, Synchrongleichrichter)&lt;br /&gt;
* Bei Sperrspannungen &amp;gt;100V deutlich steigende Einschaltwiderstände (R_DS-ON)&lt;br /&gt;
* Schnelles Umschalten erfordert hohe Lade-und Entladeströme ([[MOSFET-Übersicht#Mosfet-Treiber|MOSFET-Treiber]])&lt;br /&gt;
* Leitverluste quadratisch proportional zum Strom, Pv = I²*R_DS-ON&lt;br /&gt;
&lt;br /&gt;
====[[Transistor | Bipolartransistor]]====&lt;br /&gt;
&lt;br /&gt;
Vorteile&lt;br /&gt;
* Hohe Spannungsfestigkeiten möglich, bis zu 2000V&lt;br /&gt;
* Sehr hohe Schaltgeschwindigkeiten möglich&lt;br /&gt;
* Leitverluste etwa linear proportional zum Strom und Kollektor-Emitter-Sättigungsspannung, Pv = I * Uce-sat, U_CEC-sat typ 0,1...2.5 V&lt;br /&gt;
&lt;br /&gt;
Nachteile&lt;br /&gt;
* Stromgesteuert, damit wird immer eine gewisse Ansteuerleistung benötigt&lt;br /&gt;
* Bei grossen Kollektorströmen nimmt die Stromverstärkung deutlich ab, dann wird ein großer Basisstrom benötigt&lt;br /&gt;
* 2. Durchbruch bei Überschreiten der max. Kollektor-Emitter Sperrspannung zerstört das Bauteil&lt;br /&gt;
&lt;br /&gt;
====[[IGBT]]====&lt;br /&gt;
&lt;br /&gt;
Vorteile&lt;br /&gt;
* Hohe Spannungsfestigkeiten möglich, bis zu 6600V, in üblichen Bauformen bis ca 1700V gut verfügbar&lt;br /&gt;
* Statisch praktisch leistungslos steuerbar&lt;br /&gt;
* Mit oder ohne antiparallele Diode zur Kollektor-Emitter-Strecke verfügbar&lt;br /&gt;
* Leitverluste linear proportional zum Strom und Kollektor-Emitter-Sättigungsspannung, Pv = I * Uce-sat, U_CE-sat typ. 2V&lt;br /&gt;
&lt;br /&gt;
Nachteile&lt;br /&gt;
* Nur mäßige Schaltfrequenzen möglich (typ. &amp;lt;30..50kHz)&lt;br /&gt;
* Schnelles Umschalten erfordert hohe Lade-und Entladeströme ([[MOSFET-Übersicht#Mosfet-Treiber|MOSFET-Treiber]])&lt;br /&gt;
* 2. Durchbruch bei Überschreiten der max. Kollektor-Emitter Sperrspannung zerstört das Bauteil&lt;br /&gt;
&lt;br /&gt;
====[[TRIAC]]/Thyristor====&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Sehr hohe Spannungsfestigkeiten möglich (800V...mehrere kV, Thyristoren bis 12kV)&lt;br /&gt;
* Mit kurzen Pulsen einschaltbar, danach Selbsthaltung des Stromflusses&lt;br /&gt;
* Leitverluste linear proportional zum Strom, Pv = I * Uak, Uak typ. 0,8...1,5 V &lt;br /&gt;
&lt;br /&gt;
Nachteile&lt;br /&gt;
* Auf niedrige Schaltfrequenzen beschränkt (kHz-Bereich, Schaltzeit im Bereich von µs)&lt;br /&gt;
* Anstiegsgeschwindigkeit des Stromes muss begrenzt werden, sonst kommt es zu Bauteilschäden&lt;br /&gt;
* Anstiegsgeschwindigkeit der Spannung muss begrenzt werden, sonst kommt es zum ungewollten Zünden&lt;br /&gt;
* Stromfluss kann nicht ausgeschaltet werden, damit meist nur Einsatz an Wechselspannung&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! Bauteil               || optimales Einsatzgebiet || Kommentar&lt;br /&gt;
|-&lt;br /&gt;
| MOSFET                || 0..200V, 0..500A || im Kleinspannungsbereich meist die beste Wahl als Schalter&lt;br /&gt;
|-&lt;br /&gt;
| Bipolartransistor     || 0..1000V, 0..10A || wird mehr und mehr von MOSFETs verdrängt&lt;br /&gt;
|-&lt;br /&gt;
| IGBT                  || 200..1700V, 0..500A || optimal für hohe Spannungen und hohe Ströme&lt;br /&gt;
|-&lt;br /&gt;
| Triac/Thyristor       || 230V, 400V, 680V, bis mehrere kV, 0..100A || meist für Wechselspannung, im Pulsbetrieb einige kA. Thyristoren bis 1000A im Dauerbetrieb (Scheibenzelle)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wie finde ich den richtigen Transistor für eine LED-Ansteuerung? ===&lt;br /&gt;
&lt;br /&gt;
Quelle: Beiträge [http://www.mikrocontroller.net/topic/157763#1493623] und [http://www.mikrocontroller.net/topic/157763#1494972] von yalu&lt;br /&gt;
&lt;br /&gt;
Um am Anfang wenigstens ein bisschen den Durchblick im Transistordschungel zu behalten, kannst du folgendermaßen vorgehen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nomenklatur&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nach der amerikanischen Nomenklatur beginnen die Transistornamen meist mit 2N (z.&amp;amp;nbsp;B. 2N2222 oder 2N3055) und nach der japanischen mit 2S (z.&amp;amp;nbsp;B. 2SC1815). Für den Anfang kann man sich auf europäische Transistoren beschränken, da es diese in ausreichender Auswahl gibt und die Bezeichnungen relativ gut den Transistortyp wiedergeben:&lt;br /&gt;
&lt;br /&gt;
Der erste Buchstabe bezeichnet das Halbleitermaterial (A=Germanium, B=Silizium). Germaniumtransistoren werden heute nur noch selten verwendet.&lt;br /&gt;
&lt;br /&gt;
Der zweite Buchstabe steht für den Einsatzzweck (C=Universal, D=hohe Leistung, F=Hochfrequenz, U=hohe Spannung).&lt;br /&gt;
&lt;br /&gt;
So ist also ein ACxxx ein Germaniumuniversaltransistor und ein BDxxx ein Siliziumleistungstransistor.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auswahl&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wenn du dich für einen Grundtyp entschieden hast (für die LED ist ein BC-Typ das Richtige), gehst du auf die Webseite eines Elektronikhändlers (Reichelt, Kessler usw.), schlägst die Seite mit den BC-Transistoren auf. Da gibt es natürlich sehr viele  davon, und du brauchst jetzt eine&lt;br /&gt;
Suchreihenfolge. Als erstes Auswahlkriterium nimmst du den Preis, denn:&lt;br /&gt;
&lt;br /&gt;
* Zuviel Geld hast wahrscheinlich nicht einmal du.&lt;br /&gt;
* Billig ist meist das, was in großen Stückzahlen hergestellt wird. Was für die Masse gut ist, ist (zumindest in diesem Fall) meist auch für dich gut.&lt;br /&gt;
* Was billig und damit in Massen verkauft wird, bekommst du auch bei anderen Händlern und auch noch in 10 Jahren. Das ist wichtig, wenn deine Schaltung irgendwann einmal in Serie gefertigt werden soll.&lt;br /&gt;
&lt;br /&gt;
Gleich als nächstes überlegst du, ob du einen NPN- oder einen PNP-Typ brauchst. Das ergibt sich aus der Anordnung der Bauteile in deiner Schaltung. Hast du die Möglichkeit, die Schaltung wahlweise für einen NPN- oder einen PNP-Typ auszulegen, wählst du die Variante mit dem NPN-Typ. Um einfach eine LED über einen Mikrocontroller einzuschalten, ist i.Allg. ein NPN-Typ in Emitterschaltung richtig.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres wichtiges Kriterium ist die Befestigungstechnik: Wenn dir die SMD-Löterei etwas suspekt ist, lässt du die entsprechenden Modelle erst einmal alle außen vor. Ein typisches Nicht-SMD-Gehäuse für Universaltransistoren ist TO-92. Es gibt im Internet bebilderte Listen mit den einzelnen Gehäuseformen ([[IC-Gehäuseformen#Weblinks]])&lt;br /&gt;
&lt;br /&gt;
Wenn du jetzt also bei Reichelt  die BC-Transistoren nach Preis aufsteigend sortiert hast, siehst du erst einen Schwung SMD-Tranistoren. Dann kommen ein paar Transistoren im TO-92-Gehäuse, die sind aber PNP. Etwas weiter unten kommt der erste NPN-Transistor in TO-92, nämlich der BC547C. Netterweise stehen gleich ein paar Eckdaten dabei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BC547C  45V  0,1A  0,5W&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 45V sind die maximale Kollektor-Emitter-Spannung, in deinem Fall also die Spannung, die du maximal schalten kannst. Da die LED bei Weitem keine 45V braucht und deine Versorgungsspannung eher in der Gegend von 5V liegt, bist du auf jeden Fall auf der sicheren Seite.&lt;br /&gt;
&lt;br /&gt;
Deine LED wird typisch mit 20mA (max. 30mA) betrieben. Der BC547C kann 100mA, also ist auch hier noch Luft.&lt;br /&gt;
&lt;br /&gt;
Zur maximalen Verlustleistung (0,5W): Wenn deine LED eingeschaltet ist, fließen bspw. 20mA. Ist der Transistor voll durchgesteuert (in Sättigung) beträgt die Kollektor-Emitter-Spannung bei diesem geringen Strom typischerweise zwischen 0,1V und 0,2V (Genaueres steht im Datenblatt). Am Transistor wird also maximal die Leistung 20mA·0,2V=4mW in Wärme umgesetzt. Bis zu 500mW dürfen es sein, also ebenfalls ok.&lt;br /&gt;
&lt;br /&gt;
Nachdem du den Transistor in engere Auswahl gezogen hast, lohnt sich auf jeden Fall ein Blick ins Datenblatt. Aus den Tabellen und Diagrammen erfährst du bspw., wie hoch der Basisstrom sein muss, um den Kollektorstrom von mindestens 20mA bei ausreichend geringer CE-Spannung bereitzustellen. Dort ist auch erklärt warum es einen BC547A, BC547B und BC547C gibt. Der letzte Buchstabe gibt nämlich die Stromverstärkungsklasse an. Da eine hohe Stromverstärkung meist wünschenswert ist und in diesem Fall keinen Aufpreis kostet, ziehst du den BC547C den anderen beiden vor.&lt;br /&gt;
&lt;br /&gt;
Da in deiner Anwendung HF- und Rauschverhalten keine Rolle spielen, bist du schon am Ziel angelangt.&lt;br /&gt;
&lt;br /&gt;
Würde deine LED 100mA statt 20mA benötigen, wären die max. 100mA des BC547 etwas knapp bemessen. Du blätterst also in der Reichelt-Liste weiter und stößt auf den BC337-40 mit 45V, 0,5A und 0,525W. Das ist genau das, wonach du suchst. Bei diesem Transistor sind die Stromverstärkungsklassen durch die Endungen -16, -25 und -40 gekennzeichnet. Es wäre ja auch&lt;br /&gt;
zu einfach, wenn immer nur A, B und C verwendet würde ;-)&lt;br /&gt;
&lt;br /&gt;
Bei Strömen ab etwa 500mA kommt man an die Grenze der Leistungsfähigkeit der BC-Typen. Dann geht es weiter mit BD. Der BD135 geht bspw. schon bis 1,5A. Das Problem bei solchen größeren Transistoren: Die Stromverstärkung ist nicht besonders hoch, so dass irgendwann der Mikrocontroller nicht mehr den benötigten Basisstrom liefern kann. Dann muss dem großen Transistor ein kleiner vorangeschaltet werden, um den erhöhten Basisstrom bereitszustellen. Man kann diese Kombination von zwei Transistoren auch fertig als Darlington-Transistor kaufen, von denen ebenfalls einige in der BD-Reihe zu finden sind (z.&amp;amp;nbsp;B. BD647). Ein Transistortyp, der sich sehr gut zum Schalten höherer Ströme eignet, ist der [[FET | MOSFET]].&lt;br /&gt;
&lt;br /&gt;
Wie schon oben angedeutet: Wenn die 30-80V die die meisten BC- und BD-Transistoren abkönnen, nicht ausreichen, suchst du weiter bei BU.&lt;br /&gt;
&lt;br /&gt;
Steigst du in die HF-Technik ein, sind BF-Transistoren eher das Richtige, wobei bei HF-Anwendungen die Auswahl der Transistoren nicht mehr das Schwierigste ist ;-)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Und wie geht&#039;s weiter?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Man könnte natürlich noch viel mehr zu diesem Thema schreiben. Ich hoffe aber, dass das Geschriebene dir wenigstens grob zeigt, wie man bei nicht allzu speziellem Anforderungen relativ schnell zu einem gewünschten Transistortyp kommt, der nicht nur die technischen Anforderungen erfüllt, sondern auch leicht beschaffbar ist.&lt;br /&gt;
&lt;br /&gt;
Werden die Anforderungen spezieller, helfen oft die Selektionstabellen auf den Webseiten der einschlägigen  Hersteller weiter. Auch Händler wie Farnell haben teilweise ganz gute Auswahlwerkzeuge. &lt;br /&gt;
&lt;br /&gt;
Wenn du dich intensiv mit Elektronik beschäftigst, wirst du wahrscheinlich noch viele  Schaltungen von Leuten zu Gesicht bekommen, die vielleicht schon etwas weiter fortgeschritten sind. Dabei wirst du immer wieder auf bestimmte Standardtypen von Transistoren (und auch anderen Bauteilen wie Operationsverstärker u.ä.) stoßen und sehen, welche [[Standardbauelemente]] &amp;quot;man&amp;quot; üblicherweise für bestimmte Anwendungen einsetzt. Mit der Zeit setzt sich dann eine Auswahl von bspw. 10 oder 20 verschiedenen Transistoren und 5 bis 10 verschiedenen OpAmps im Kopf fest, von denen man die wesentlichen Parameter auswendig kennt, so dass man ohne aufwendige Suche eine schnelle Auswahl treffen kann. Auch hier in der Artikelsammlung gibt es eine solche [[Transistor-Übersicht]].&lt;br /&gt;
&lt;br /&gt;
=== Wo ist die Antwort auf meine Frage? ===&lt;br /&gt;
&lt;br /&gt;
Vielleicht im Forum? Falls du sie da findest, dann pack das ganze doch hier rein.&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/topic/165580 Gegen Vcc oder GND schalten]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Basiswiderstand]]&lt;br /&gt;
* [[Transistor-Übersicht]]&lt;br /&gt;
* [[AVR-Transistortester]]&lt;br /&gt;
* [[Leistungselektronik]]&lt;br /&gt;
&lt;br /&gt;
== Gehäusebauformen von Transistoren ==&lt;br /&gt;
&lt;br /&gt;
=== TO-92 ===&lt;br /&gt;
Ein kleiner Aufsatz über TO-92 Transistorgehäuse und Footprints findet sich unter: [[Media:TO-92-Gehaeuse_RevB2.pdf]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://de.wikipedia.org/wiki/transistor &amp;quot;Transistor&amp;quot; bei Wikipedia]&lt;br /&gt;
* [http://www.elektronik-kompendium.de www.elektronik-kompendium.de]&lt;br /&gt;
** [http://www.elektronik-kompendium.de/sites/bau/0201291.htm Elko/Transistor]&lt;br /&gt;
* http://www.elektronikinfo.de/strom/bipolartransistoren.htm&lt;br /&gt;
* http://www.ferromel.de/tronic_1870.htm&lt;br /&gt;
* [http://www.DieElektronikerseite.de Die Elektronikerseite] Lehrgang: Der Transistor - Ein Tausendsassa&lt;br /&gt;
* [http://www.infoplease.com/encyclopedia/science/transistor-types-transistors.html Transistortypen]&lt;br /&gt;
* [http://electronics-electrical.exportersindia.com/electronic-components/transistors.htm Transistoren Industrieunternehmen Geschäftsauflistungen]&lt;br /&gt;
&lt;br /&gt;
[[Category:Bauteile]]&lt;br /&gt;
[[Category:Grundlagen]]&lt;/div&gt;</summary>
		<author><name>162.219.176.251</name></author>
	</entry>
</feed>