<?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=193.254.108.90</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=193.254.108.90"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/193.254.108.90"/>
	<updated>2026-04-10T21:47:46Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mikrocontroller_Vergleich&amp;diff=88086</id>
		<title>Mikrocontroller Vergleich</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mikrocontroller_Vergleich&amp;diff=88086"/>
		<updated>2015-03-25T12:49:58Z</updated>

		<summary type="html">&lt;p&gt;193.254.108.90: Anpassung an aktuelle Gegebenheiten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein paar Kriterien für den CPU-Core und die µC-Familie.&lt;br /&gt;
&amp;lt;br&amp;gt;Weitere vergleichende Informationen über verschiedene Controllerfamilien gibt der Artikel: [[Entscheidung Mikrocontroller]] sowie [[STM32 für Einsteiger]]. Für etwas erfahrene Anwender auch [[LPC1xxx für Umsteiger]].&lt;br /&gt;
&lt;br /&gt;
==Compiler verfügbar, bzw wieviel will man dafür ausgeben?==&lt;br /&gt;
&lt;br /&gt;
Und wie verbreitet ist der Compiler? Finde ich dafür Hilfe, beispielsweise in Form von Support-Foren?&lt;br /&gt;
&lt;br /&gt;
Für &#039;&#039;&#039;[[ARM]]&#039;&#039;&#039;, &#039;&#039;&#039;[[AVR]]&#039;&#039;&#039; und &#039;&#039;&#039;[[MSP430]]&#039;&#039;&#039; gibt es mit GCC einen guten und kostenlosen Compiler.&lt;br /&gt;
&lt;br /&gt;
[[ARM]] ist eine Firma, die Prozessorarchitekturen herstellt, und diese in Lizenz verkauft. Chipproduzenten wie ST, NXP, ATmel, Fairchild, uvm. haben Lizenzen gekauft und produzieren damit µC. Wenn in diesem Artikel von [[ARM]] gesprochen wird dann gibt es stark unterschiedliche Kerne, ARM7, ARM9, ARM11, Cortex-M0, Cortex-M3/M4, Cortex-A15 (und viele mehr). Zum Teil sind die Kerne für µC geeignet (ARM7, Cortex-M0..M4), andere für PC ähnliche Systeme (ARM11, Cortex-A15).&lt;br /&gt;
&lt;br /&gt;
Für &#039;&#039;&#039;ARM&#039;&#039;&#039; gibt es eine ganze Reihe verschiedener [[ARM#Compiler|Compiler]], u.a.:&lt;br /&gt;
* Von IAR eine auf 32KB begrenzte kostenlose Version eines umgänglicheren kommerziellen Compilers.&lt;br /&gt;
* Vom &#039;&#039;&#039;GCC&#039;&#039;&#039; gibt es diverse Distributionen für die verschiedenen ARM-Kerne, einzeln oder in IDE&#039;s integriert, gratis oder kostenpflichtig; siehe [[ARM GCC]].&amp;lt;br/&amp;gt;&lt;br /&gt;
* Für alle CPUs von NXP - die LPCx Familie - stellt NXP eine kostenlose Plattform zur Verfügung, die [http://www.lpcware.com/lpcxpresso/home &#039;&#039;&#039;hier&#039;&#039;&#039;]downloadbar ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Des Weiteren gibt es für &#039;&#039;&#039;[[MSP430]]&#039;&#039;&#039; eine auf 4KB begrenzte kostenlose Version der Entwicklungsumgebung von IAR und eine auf 16KB begrenzte kostenlose Version der Entwicklungsumgebung Code Composer Studio (basiert auf Eclipse) von Texas Instruments.&lt;br /&gt;
&lt;br /&gt;
Für &#039;&#039;&#039;[[PIC]]&#039;&#039;&#039; und &#039;&#039;&#039;[[8051]]&#039;&#039;&#039; kann man entweder den Open-Source-Compiler [http://www.sf.net/projects/sdcc SDCC] verwenden (brauchbar, aber nicht mit GCC vergleichbar) oder diverse Löhnwares, bis 4-stellige Beträge (Keil: 2600&amp;amp;#8364; , freie Version codegrösseneingeschränkt), teils auch als Demoversion mit Tricks. Auch der offizielle C18-Compiler kann als großzügiges Demo heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
Für &#039;&#039;&#039;[[PIC]] 10/12/16&#039;&#039;&#039; gibt es den HI-TECH C-PRO von HI-TECH(Microchip) in einer freien Version. Alternative: CC5X. Die freie Version davon wurde inzwischen ohne Codegrößenbeschränkung freigegeben, kann aber nur bis 16-bit integer / 24-bit Floating Point. &lt;br /&gt;
&lt;br /&gt;
Für die &#039;&#039;&#039;[[PIC]] 18&#039;&#039;&#039; gibt es den C18 von Microchip. Er ist frei erhältlich und hat ähnliche Einschränkungen wie der C30. Eine CC5x-ähnliche Variante gibt es unter dem Namen CC8E, der allerdings auf 128k Code beschränkt ist.&lt;br /&gt;
&lt;br /&gt;
Für die &#039;&#039;&#039;[[PIC24]]&#039;&#039;&#039; und &#039;&#039;&#039;[[dsPIC]]&#039;&#039;&#039; gibt es den C30 von Microchip. Er basiert auf gcc und ist frei erhältlich, wobei nach 6 Wochen nicht mehr alle Optimierungsstufen wählbar sind, dann maximal -O1. Wie für alle PIC ist mit dem MPLAB eine kostenlose IDE mit Debugger und Simulator verfügbar.&lt;br /&gt;
&lt;br /&gt;
Eine nette IDE für PIC12/16/18 bietet der Sourceboost-Compiler, für kleine Programme reicht die Freeware-Version absolut aus http://www.sourceboost.com/home.html&lt;br /&gt;
&lt;br /&gt;
Für &#039;&#039;&#039;[[R8C]]/M16C&#039;&#039;&#039; gibt es eine Code-Größen-beschränkte Demoversion des Herstellers, sowie den GCC. Beide Compiler integrieren sich in die HEW (die IDE von Renesas), welche auch das Debugging mittels Software-Monitor oder Emulator unterstützt. Der GCC ist nach Registrierung bei Kpit Cummins erhältlich, die letzte Version ist 11.0x und wird nicht mehr weiterentwickelt. Die letzte Version ist jedoch problemlos im Archiv zu finden.&lt;br /&gt;
&lt;br /&gt;
Für &#039;&#039;&#039;[[ST7]]&#039;&#039;&#039; gibt es (teils limitierte) C-Compiler, teils mit IDE (z.ß. Cosmic und Ride). Toolchain von ST kostenlos erhältlich.&lt;br /&gt;
&lt;br /&gt;
Von Toshiba gibt es für &#039;&#039;&#039;[[TLCS-870]]&#039;&#039;&#039; mit den Starterkits eine IDE mit C-Compiler und Assembler. Ausserdem gibt es Toshibas eigene &amp;quot;C-Like Language&amp;quot;. Diese Tools sind nicht frei downloadbar.&lt;br /&gt;
&lt;br /&gt;
Zilog stellt für &#039;&#039;&#039;[[Z8_encore!]]&#039;&#039;&#039; eine unbeschränkte IDE mit C-Compiler, Debugger und Simulator kostenlos per Download zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pascal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Für PIC,DSPIC und AVR gibt es einen sehr guten PASCAL-Compiler &amp;quot;MikroPascal&amp;quot;&lt;br /&gt;
der, in der Downloadversion Code-Size begrenzt ist,&lt;br /&gt;
und den man zu moderaten Preisen zur &amp;quot;Vollversion&amp;quot; aufrüsten kann.&lt;br /&gt;
http://www.mikroelektronika.co.yu/&lt;br /&gt;
( ab 149,- &amp;amp;#8364; )&lt;br /&gt;
&lt;br /&gt;
Elektor-Verlag &#039;Pascal für 8051 und Derivate&#039; Buch+Compiler(Vollversion)&lt;br /&gt;
&lt;br /&gt;
AVRco Pascal Compiler (http://www.e-lab.de/), &lt;br /&gt;
Kostenlose Version für Mega8/88&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BASIC:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sowohl für den AVR als auch für die 8051er gibts von MCS-Electronics eine Demoversion eines BASIC-Compilers,&lt;br /&gt;
der leicht im Funktionsumfang und Codegröße eingeschränkt ist. &lt;br /&gt;
[http://www.mcselec.com/]&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus kursieren im Netz Versionen eines BASIC-Interpreters für 8052er mit dem Namen &amp;quot;8052 AH-BASIC&amp;quot;, wobei die Originalversion von INTEL stammt. Dieser Interpreter unterstützt sogar Fließkomma-Arithmetik und ist als Freeware verfügbar.&lt;br /&gt;
&lt;br /&gt;
==Architektur==&lt;br /&gt;
&lt;br /&gt;
Betrifft vor allem Assembler-Programmierung und die Frage, wie einfach oder umständlich sich C-Code in Maschinensprache übersetzen lässt. &lt;br /&gt;
&lt;br /&gt;
Dass für alle Architekturen teils mehrere C-Compiler existieren, hat wenig mit Eignung und viel mit Markt zu tun. Zudem ist meist nur entscheidend, ob ein Controller die Anforderungen erfüllt, nicht jedoch wie gut er das tut.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Manches davon ist durchaus subjektiv. Bei abweichender Meinung bitte als Diskussion starten, nicht einfach löschen.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8051&#039;&#039;&#039;: Typische Akkumulator-orientierte 8-Bit Architektur. Eine gewisse Komplexität entstand durch die sukzessive Erweiterung auf mehr RAM als ursprünglich vorgesehen war, mit etlichen unterschiedlich adressierten RAM-Bereichen als Folge. Für C-Compiler nur eingeschränkt geeignet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ARM&#039;&#039;&#039;: 32bit RISC-Architektur. In den gängigen Implementierungen mit dem  ARM7TDMI-Core (Architektur V4 = ARMv4T) stehen 2 Befehlssätze zur Verfügung: 32bit-codiert für Tempo, sofern der Speicherdurchsatz das zulässt, und 16bit-codiert (Thumb) für kompakte Programme. Cortex M3 (ARMv7) kennt ausschliesslich Thumb2 codierte Befehle, wurde gegenüber Thumb erheblich erweitert. Einheitlicher 32bit-Adressraum. Exzellente Zielmaschine für C-Compiler.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;: Register-orientierte, an RISC Prinzipien angelehnte 8-Bit Architektur. Getrennte Adressräume für RAM und ROM. Registersatz nicht einheitlich nutzbar. I/O-Bereich nicht einheitlich adressierbar. Nur ein Teil des I/O-Bereiches ist bitweise manipulierbar. Einheitliche RAM-Adressierung. Für C-Compiler geeignet.Bemerkung: Laut Wikipedia wurde der Controller während der Entwicklungsphase für den Einsatz von C-Compilern optimiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MSP430&#039;&#039;&#039;: Register-orientierte 16-Bit RISC-Architektur mit vollständiger Orthogonalität. Einheitlicher Adressraum für RAM und ROM. Exzellente Zielmaschine für C-Compiler. Angelehnt an die legendäre PDP-11, vieles wurde übernommen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039;: Akkumulator-orientierte 8-Bit Architektur. Getrennte Adressräume für RAM und ROM. RAM-Banking, ROM-banking. Umständlicher Zugriff auf Daten im ROM (nur 12/14-Bit Versionen). Viele für C-Compiler wesentliche Elemente sind nur umständlich realisierbar (z.&amp;amp;nbsp;B. Code/Datenadressierung mit Banking, Vergleich mit Vorzeichen).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC24&#039;&#039;&#039;: Register-orientierte 16-Bit Architektur mit getrennten Adressräumen für RAM und ROM, wobei ein Teil des ROM in den RAM-Adressbereich eingeblendet werden kann. Fast alle Befehle sind auf Register und RAM anwendbar, incl. Bitmanipulationen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dsPIC&#039;&#039;&#039;: wie &#039;&#039;&#039;PIC24&#039;&#039;&#039;, mit zusätzlichen DSP Befehlen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R8C&#039;&#039;&#039;: 16-Bit 2-Adress CISC-Architektur. Einheitlicher 64KB Adressraum für RAM und ROM. Gute Zielmaschine für C-Compiler.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M16C&#039;&#039;&#039;: Unter Bezeichnung M16C existieren zwei verschiedene inkompatible Architekturen. Die Modelle bis /6x sind grundsätzlich identisch mit R8C, die /8x Modelle mit M32C (hier nicht näher betrachtet). Der 64KB RAM-I/O-Adressraum ist ein Teil des 1MB großen Gesamtadressraumes, Daten im ROM liegen jedoch ausserhalb dieser 64KB und sind daher anders als beim R8C nicht mit 16-Bit Zeigern adressierbar. Gute Zielmaschine für spezialisierte C-Compiler, GCC jedoch tut sich etwas schwer mit den Adressräumen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST7&#039;&#039;&#039;:Akkumulatorarchitektur, Gemeinsamter Code/Datenadressraum (von-Neumann). 63 Befehle. Einheitlicher 64KB Adressraum für RAM und ROM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TLCS-870&#039;&#039;&#039;: 8-Bit CISC-Architektur, aus Z80 weiterentwickelt. Gemeinsamer Adressraum für RAM und ROM bis 60KB ROM, darüber getrennt. Adressraum 64/128KB. Serie 870/X mit 1MB Adressraum existiert, aber nur als OTP/Maskenversion.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Z8e&#039;&#039;&#039;: Register-orientierte 8-Bit Architektur, 2-Adress-CISC. Getrennte Adressräume für RAM und ROM. Historisch bedingt 3 RAM-Adressräume (8-Bit, 12-Bit, 16-Bit). Für C-Compiler geeignet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kleiner nicht repräsentativer Compiler-Vergleich. Verwendet wurde eine Variante des crc8-Code von Colin O&#039;Flynn. Jeweils kleinstes Speichermodell, auf Platz optimiert:&lt;br /&gt;
{|&lt;br /&gt;
|Compiler&lt;br /&gt;
|  Befehle(1)&lt;br /&gt;
|  Bytes(1)&lt;br /&gt;
|  Befehle(2)&lt;br /&gt;
|  Bytes(2)&lt;br /&gt;
|-&lt;br /&gt;
|GCC AVR&lt;br /&gt;
|24&lt;br /&gt;
|48&lt;br /&gt;
|24&lt;br /&gt;
|48&lt;br /&gt;
|-&lt;br /&gt;
|Keil 8051&lt;br /&gt;
|24&lt;br /&gt;
|38&lt;br /&gt;
|74&lt;br /&gt;
|109&lt;br /&gt;
|-&lt;br /&gt;
|SDCC 8051&lt;br /&gt;
|24&lt;br /&gt;
|40&lt;br /&gt;
|35&lt;br /&gt;
|54&lt;br /&gt;
|-&lt;br /&gt;
|Zilog Z8e&lt;br /&gt;
|21&lt;br /&gt;
|54&lt;br /&gt;
|27&lt;br /&gt;
|73&lt;br /&gt;
|-&lt;br /&gt;
|PIC C18&lt;br /&gt;
|26&lt;br /&gt;
|52&lt;br /&gt;
|95&lt;br /&gt;
|206&lt;br /&gt;
|-&lt;br /&gt;
|SDCC PIC18&lt;br /&gt;
|41&lt;br /&gt;
|112&lt;br /&gt;
|41&lt;br /&gt;
|112&lt;br /&gt;
|-&lt;br /&gt;
|SDCC PIC16&lt;br /&gt;
|26&lt;br /&gt;
|52&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| (for pic16f84)&lt;br /&gt;
|-&lt;br /&gt;
|HEW R8C/M16C&lt;br /&gt;
|20&lt;br /&gt;
|48&lt;br /&gt;
|20&lt;br /&gt;
|48&lt;br /&gt;
|-&lt;br /&gt;
|GCC 68HC11&lt;br /&gt;
|36&lt;br /&gt;
|65&lt;br /&gt;
|36&lt;br /&gt;
|65&lt;br /&gt;
|-&lt;br /&gt;
|GCC MSP430&lt;br /&gt;
|17&lt;br /&gt;
|40&lt;br /&gt;
|17&lt;br /&gt;
|40&lt;br /&gt;
|-&lt;br /&gt;
|GCC ARM7&lt;br /&gt;
|12&lt;br /&gt;
|48&lt;br /&gt;
|12&lt;br /&gt;
|48&lt;br /&gt;
|-&lt;br /&gt;
|GCC ARM7-Thumb&lt;br /&gt;
|20&lt;br /&gt;
|40&lt;br /&gt;
|20&lt;br /&gt;
|40&lt;br /&gt;
|}&lt;br /&gt;
(1): Lokale Daten ggf. statisch gespeichert, nicht reentrant.&lt;br /&gt;
&lt;br /&gt;
(2): Lokale Daten auf dem Stack, also reentrant.&lt;br /&gt;
&lt;br /&gt;
==Sind CPU-spezifische Erweiterungen in C erforderlich?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8051&#039;&#039;&#039;: &lt;br /&gt;
* 5-6 Speicherklassen für Datenspeicher (direkt, indirekt, 8-Bit &amp;quot;external&amp;quot;, 16-Bit &amp;quot;external&amp;quot;, Flash, evtl. noch Einzelbits). &lt;br /&gt;
*Außerdem noch Adresserweiterungen durch Mapping, Paging und Banking &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;: &lt;br /&gt;
* 3 Speicherklassen für Datenspeicher (RAM, ROM, EEPROM).&lt;br /&gt;
* In neueren Versionen von avr-libc kommt zwar eine 4. Klasse für die Fuse-Bits hinzu, die aber nur für die Konfiguration des Controllers verwendet wird und für das C-Programm selbst nicht relevant ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ARM&#039;&#039;&#039;, &#039;&#039;&#039;MSP430&#039;&#039;&#039;, &#039;&#039;&#039;R8C&#039;&#039;&#039;: nein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039;: &lt;br /&gt;
* 3 Speicherklassen für Datenspeicher (shared RAM, banked RAM, ROM).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Z8e&#039;&#039;&#039;:&lt;br /&gt;
* Für atomic execution (s.u.) notwendig, aber nicht existent.&lt;br /&gt;
* 4 Speicherklassen für Datenspeicher (256B, 4KB, 64KB, Flash).&lt;br /&gt;
&lt;br /&gt;
==Sind Daten in RAM und ROM mit dem gleichen Code benutzbar?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8051&#039;&#039;&#039;, &#039;&#039;&#039;AVR&#039;&#039;&#039;, &#039;&#039;&#039;PIC&#039;&#039;&#039;, &#039;&#039;&#039;Z8e&#039;&#039;&#039; wie generell alle [[Harvard-Architektur|Harvard-Architekturen]]: NEIN. Daten im ROM&lt;br /&gt;
erfordern anderen Zugriff als Daten im RAM. Entweder versteckt das der Compiler in Runtime-Routinen für Pointerzugriffe, oder man kann Routinen nicht so schreiben, dass sie beides als Parameter verdauen können. Bei kleinen Programmen von ein paar KB kein Problem, bei größeren jedoch schon. Bei AVR/GCC ziemlich fehlerträchtig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC24&#039;&#039;&#039; und &#039;&#039;&#039;dsPIC&#039;&#039;&#039; können einen Teil des ROM in den RAM-Adressbereich einblenden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M16C&#039;&#039;&#039;: Hängt vom Compiler ab. Mit 16-Bit Zeigern (GCC) nicht, 20-Bit Zeiger sind ineffizient.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ARM&#039;&#039;&#039;, &#039;&#039;&#039;MSP430&#039;&#039;&#039;, &#039;&#039;&#039;R8C&#039;&#039;&#039;, &#039;&#039;&#039;ST7&#039;&#039;&#039;, &#039;&#039;&#039;TLCS-870&#039;&#039;&#039;: [[von Neumann-Architektur]], problemlos.&lt;br /&gt;
&lt;br /&gt;
==Lineare Adressierung vom RAM?==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8051&#039;&#039;&#039;, &#039;&#039;&#039;ARM&#039;&#039;&#039;, &#039;&#039;&#039;AVR&#039;&#039;&#039;, &#039;&#039;&#039;MSP430&#039;&#039;&#039;, &#039;&#039;&#039;R8C/M16C&#039;&#039;&#039;, &#039;&#039;&#039;ST7&#039;&#039;&#039;, &#039;&#039;&#039;TLCS-870&#039;&#039;&#039;, &#039;&#039;&#039;Z8e&#039;&#039;&#039;: kein Problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039;: PIC18 ja, PIC16,PIC12,PIC10 nein. RAM-Puffer die größer sind als das RAM in einer Bank sind nur mit Klimmzügen möglich.&lt;br /&gt;
&lt;br /&gt;
==Skalierbarkeit==&lt;br /&gt;
&lt;br /&gt;
Vor allem für jene wichtig, die sich scheuen, für&lt;br /&gt;
verschiedene Aufgaben verschiedene Lösungen zu verwenden. &lt;br /&gt;
&lt;br /&gt;
Spezielle Versionen für LCD-Ansteuerung wurden in dieser Übersicht nicht berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8051&#039;&#039;&#039;: 8-Pin/1KB aufwärts, überwiegend 40/44-Pin und 64/68-Pin. Architekturbedingte Grenze bei 64KB Code, 64KB RAM - Versionen mit mehr Flash  nutzbar via Banking (Compiler-Support vorhanden) existieren, Versionen mit bis zu 100 MHz Taktfrequenz verfügbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ARM&#039;&#039;&#039;: 20/33-Pin/8KB-128K 80/208-Pins 34-512k mit internem Flash. Versionen mit internem Cache und externem Speicher sind praktisch beliebig weit ausbaufähig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;: 6-Pin/0.5KB bis 100-Pin/256KB. Architekturbedingte  Grenze bei 8MB Code, 64KB RAM. GCC/WinAVR derzeit nur bis 128KB Code möglich (in Arbeit).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MSP430&#039;&#039;&#039;: 14-Pin DIP/1KB bis 113-Pin BGA/256KB, mittlerweile auch Typen mit 4KB bis 16KB FRAM erhältlich. DIP, SOIC, TSSOP, QFN, TQFP und BGA erhältlich, in DIP und BGA jedoch nur wenige Typen verfügbar. Architekturbedingte Grenze von 64KB für Code+Daten wird in den großen Versionen durch 20-bittige Adressen umschifft. Taktfrequenz: maximal 8, 16, 18 und 25 MHz je nach Familie. Stromaufnahme: Rund 2 uA im LPM3 (real time clock mode) bis ca. 5 mA, typisch 200 µA pro MHz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039;: 6-Pin/512B aufwärts. Im Prinzip großer Bereich, aber innerhalb der Familie deutlich verschiedene inkompatible Architekturen mit unterschiedlichen architekturbedingen Grenzen und unterschiedlichem Compiler-Support.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC24&#039;&#039;&#039; und &#039;&#039;&#039;dsPIC&#039;&#039;&#039;: 18 bis 100-Pin mit 16 bis 256kB Code und bis zu 16kB RAM. Generell sind alle als TQFP und QFN erhältlich, die 18 und 28 Pin Modelle gibt es auch als SDIP und SSOP und SOIC. Es gibt Modelle mit 16 und 40MHz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R8C:&#039;&#039;&#039; TQFP, QFN 14 bis 100 Pins, 11 bis 88 I/Os. 256 bis 10K RAM, 2K bis 128K Flash, 0 bis 4K Data-Flash. 8MHz bis 32 MHz. -40°C bis 125°C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST7:&#039;&#039;&#039; 8 bis 80 Pins. SDIP, SOIC, LQFP, TQFP, QFN. 128 bis 2048 Bytes SRAM, 1 bis 60 kBytes Flash.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8:&#039;&#039;&#039; 20 bis 80 Pins. SDIP, SOIC, TSSOP, LQFP, QFN, UQFPN, WLCSP. 512 bis 6k Bytes SRAM, 4 bis 128 kBytes Flash, 384 bis 2k Bytes EEPROM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TLCS-870&#039;&#039;&#039;: 20pin DIP bis 267FBGA. Daneben SDIP, SOIC, SSOP und (L/T)QFP. Relativ wenige Flash-Typen. RAM: 128 Bytes bis 4kB. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Z8e&#039;&#039;&#039;: 8 bis 80 Pins. DIP, SOIC, SSOP, QFP, TQFP, QFN. Bis 64KB Flash. 256 Bytes bis 4 kBytes RAM.&lt;br /&gt;
&lt;br /&gt;
Empfehlung hier: Auch wenn teilweise mehr möglich ist, sind 8/16-Bit-Controller nur bis maximal 40-60K empfehlenswert. Darüber sollte eine 32-Bit-Architektur — z.&amp;amp;nbsp;B. mit [[ARM]]-Core — in Betracht gezogen werden. Insbesondere auch, weil große Programme zu Programm- und Datenstrukturen neigen, die sich auf 8-Bit-Prozessoren schlecht abbilden lassen.&lt;br /&gt;
&lt;br /&gt;
==Interrupt-feste (atomic) Programmierung von I/O-Ports==&lt;br /&gt;
&lt;br /&gt;
Siehe http://www.mikrocontroller.net/articles/Interrupt.&lt;br /&gt;
&lt;br /&gt;
Das ist besonders bei &#039;&#039;&#039;AVR&#039;&#039;&#039; (ausser den Typen seit 2004: ATtiny2313 usw.) ein Problem. Architekturbedingt ist nur ein Teil der Ports bitweise schaltbar, kein Port kann mehrere Bits gleichzeitig interrupt-fest schalten.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039;, &#039;&#039;&#039;8051&#039;&#039;&#039;, &#039;&#039;&#039;MSP430&#039;&#039;&#039;, &#039;&#039;&#039;R8C/M16C&#039;&#039;&#039;, &#039;&#039;&#039;Z8e&#039;&#039;&#039; können AND/OR/XOR zum Port hin, daher ist bei geeigneter Programmierung das Problem auch ohne Abschalten der Interrupts vermeidbar. Leider ist beim &#039;&#039;&#039;R8C/M16C/M32C&#039;&#039;&#039; die Adresse für das  Port input Register mit der Adresse für das Port output Register identisch.  Ein read/modify/write auf das Port output Register kopiert also bei Pins die auf Eingang stehen den eingelesenen Wert in das Port Output Register. Deswegen braucht man eine Interruptsperre wenn man einen Port Pin von input auf output umschalten will.&lt;br /&gt;
&lt;br /&gt;
Zu &#039;&#039;&#039;ARM&#039;&#039;&#039; ist dazu keine allgemeine Aussage möglich. Je nach Implementierung des Herstellers wird das Problem teilweise durch entsprechend gestaltete I/O-Ports gelöst, in anderen Fällen ist erhebliche Wachsamkeit geboten. Atmel SAM7, &#039;&#039;&#039;[[LPC1xxx]]&#039;&#039;&#039; oder &#039;&#039;&#039;[[STM32]]&#039;&#039;&#039; bereitet hier weniger Probleme als Philips LPC2000. Bei den  LPC2000 gibt es zwei getrennte Register, eines zum Setzen, das andere zum Löschen einzelner Pins. In einem weiteren Register können Bits ausmaskiert werden. Es gibt also kein read-modify-write. Gut gelöst für Push/Pull-Ausgänge, aber eine äquivalente Steuerung der Richtung wurde vergessen, was Open-Drain Pins erschwert. Implementierungen auf Basis des Cortex M3 oder der ARM Port-Macrocell verwenden statt dessen Adressbits zur Maskierung.&lt;br /&gt;
&lt;br /&gt;
Besonders pfiffig ist das beim &#039;&#039;&#039;Z8e&#039;&#039;&#039; gelöst. Ein Befehl fasst die nächsten 3 Befehle zu einer nicht unterbrechbaren Einheit zusammen (atomic execution). Allerdings wird das vom Zilog Compiler nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
==Zugriff auf I/O-Ports==&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;8051&#039;&#039;&#039; verfügt weder über eigene Register für die Steuerung der Richtung der I/O-Ports, noch über die Möglichkeit, lesend auf den Sollzustand der Ausgänge zuzugreifen. In Assembler ist das kein Problem, da abhängig vom Befehl entweder vom Zustand der Pins (Leseoperationen) oder vom Sollzustand der Ausgänge (kombinierte Lese/Schreiboperationen) ausgegangen wird. Ein korrekt arbeitender C Compiler kann damit jedoch nicht umgehen, weshalb für die Steuerung von Port-Pins spezielle Zugriffsfunktionen und eine sehr genaue Kenntnis der Arbeitsweise der Ports erforderlich sind.&lt;br /&gt;
&lt;br /&gt;
Anmerkung zum Keil 8051-Compiler: Port-Zugriff erfolgt über Pseudo-Variablen wie bei µC üblich. Infolgedessen ist in C Code nicht ersichtlich, ob beispielsweise die Port-Variable P1 für den Zustand der Pins oder den Sollzustand der Ausgänge steht. Nur der erzeugte Assembler-Code kann hier Klarheit schaffen. So haben die beiden prinzipiell identischen Zeilen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
P1 = P1 | 0x01;&lt;br /&gt;
P1 = (P1 | 0x01) &amp;amp; ~0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
völlig unterschiedliche Auswirkung auf den Port. Der Code der ersten Zeile setzt Bit 0 und lässt alle anderen Bits unverändert. Der von der zweiten Zeile erzeugte Code setzt zusätzlich auch alle vorher als Eingang definierten Pins im Zustand 0 auf Ausgang mit Zustand 0. Das ist weder hilfreich, noch mit der Sprachdefinition von C vereinbar.&lt;br /&gt;
&lt;br /&gt;
Auch manche Modelle der &#039;&#039;&#039;PIC&#039;&#039;&#039;-Familie können nur auf den Zustand der Pins zugreifen, nicht auf den Sollzustand der Ausgänge.&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen ist folglich bei Ports, die sowohl für Aus- als auch für Eingänge benutzt werden, besondere Sorgfalt nötig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ARM&#039;&#039;&#039;, &#039;&#039;&#039;AVR&#039;&#039;&#039;, &#039;&#039;&#039;MSP430&#039;&#039;&#039;, &#039;&#039;&#039;Z8e&#039;&#039;&#039; und neuere Modelle der &#039;&#039;&#039;PIC&#039;&#039;&#039;-Familie besitzen diese Probleme nicht.&lt;br /&gt;
&lt;br /&gt;
==Priorisierte Interrupts==&lt;br /&gt;
&lt;br /&gt;
Unter priorisierten Interrupts versteht man die Fähigkeit, den einzelnen Interrupt-Quellen eine Priorität zuweisen zu können um ohne Reprogrammierung der Interrupt-Quellen einen laufenden Interrupt ausschliesslich durch Interrupts höherer Priorität unterbrechbar machen zu können. Die bei separaten Vektoren selbstverständliche Fähigkeit, anstehende Interrupts nach fester Priorität zu sortieren, ist damit nicht gemeint.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8051&#039;&#039;&#039;: Ja.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ARM7/9&#039;&#039;&#039;: Der Core unterstützt 2 Prioritäten mit entsprechenden Vektoren. Oft ist jedoch ein separater priorisierter und vektorisierter Interrupt-Controller mit integriert (Atmel, NXP, Cortex ja, Analog Devices nein). Interrupt-Nesting ist dank eines Designfehlers etwas umständlich.&lt;br /&gt;
&amp;lt;br&amp;gt; &#039;&#039;&#039;ARM11, Cortex-Mx&#039;&#039;&#039;: Bei den neueren ARMv6M (ARM11, Cortex-M0(+)) und ARMv7M (Cortex-M3, M4(F)) Architekturen wurden die Interruptprioritäten fest in den Kern implementiert, dort hat jeder Interrupt eine 2-Bit (ARMv6M) bzw. 3-8 Bit (ARMv7M - die genaue Anzahl ist durch die Implementationen gegeben) Priorität die man auf Primary und Secundary unterteilen kann. Somit kann genau definiert werden welcher Interrupt einen anderen unterbricht und welcher warten muss bis einer mit einer höheren Priorität abgearbeitet wurde. Nesting von Exceptions ist problemlos möglich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR:&#039;&#039;&#039; Nein, aber separate Vektoren für die einzelnen Interrupt-Quellen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Anmerkung: Eine weniger wichtiger Interrupt Handler kann oft sofort nach Ansprung ein SEI ausführen, damit ein möglicherweise wichtigerer Interrupt Handler aufgerufen werden kann, weil bei den meisten Interrupts der Request bereits mit dem Aufruf des Handlers automatisch zurück gesetzt wird. Das trifft aber beispielsweise nicht beim TWI zu.&lt;br /&gt;
Xmegas haben ein Event-System....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MSP430:&#039;&#039;&#039; Nein, aber separate Vektoren für die einzelnen Interrupt-Quellen. Keine Priorisierung im Sinne der Präambel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC12 &amp;amp; PIC16:&#039;&#039;&#039; Nein, nur ein Interruptvektor.  Einfache PIC12 (12F508/509, 16F505) kennen gar keine Interrupts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC18:&#039;&#039;&#039; Jeder Interruptquelle kann separat eine niedrige oder hohe Priorität zugewiesen werden, die dann auf zwei Interruptvektoren verzweigen. Welche Quelle den Interrupt ausgelöst hat, muss aber immer noch händisch festgestellt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC17:&#039;&#039;&#039; Vier Interruptvektoren mit unterschiedlicher Priorität. Scheint es allerdings nur als OTP zu geben, deswegen wohl eher uninteressant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC24&#039;&#039;&#039; und &#039;&#039;&#039;dsPIC&#039;&#039;&#039; haben 7 Prioritäten und für jeden Interrupt einen eigenen Interruptvektor.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R8C/M16C&#039;&#039;&#039;: 7 Prioritäten, vektorisiert: 64+6 Vektoren, Priorität für jede Interrupt-Quelle frei einstellbar, Nesting möglich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST7&#039;&#039;&#039;: Nein. 16 Vektoren mit fixer (absteigender) Priorität.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Z8e&#039;&#039;&#039;: 3 Prioritäten, vektorisiert.&lt;br /&gt;
&lt;br /&gt;
== Spannungsversorgung ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8051&#039;&#039;&#039;, &#039;&#039;&#039;AVR&#039;&#039;&#039;, &#039;&#039;&#039;PIC&#039;&#039;&#039;: Modellabhängig 2-5V problemlos, ältere ab 3V. PICs für 2-4V sind schlecht verfügbar. Ungeregelter Batteriebetrieb möglich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ARM&#039;&#039;&#039;: 3,3V-Versorgung, je nach Modell mehr oder weniger 5V-kompatibel. Einige (vor allem ältere) Modelle benötigen eine separate 1,8V-Versorgung für den Core. Ungeregelter Batteriebetrieb möglich. z.B. können Prozessoren der [[LPC1xxx]]- oder [[STM32]]-Reihe von 1,65...3,6V betrieben werden und benötigen keine separate Stromversorgung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MSP430&#039;&#039;&#039;: nur 1.8-3.6V. Nicht 5V-kompatibel, 5V-Peripherie für I2C/RS485/CAN/... ist also nur mit Pegelkonvertierung einsetzbar. Ungeregelter Batteriebetrieb möglich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC24&#039;&#039;&#039; und &#039;&#039;&#039;dsPIC33&#039;&#039;&#039;: 2-3,6V. Pins die keine analogen Funktionen übernehmen können sind 5V tolerant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R8C&#039;&#039;&#039;: 2.7V - 5.5V, zwischen 2.7V und 3V etwas reduzierte Maximaltaktrate.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST7&#039;&#039;&#039;: 2,4-5,5V&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8&#039;&#039;&#039;: 1,65 - 5,5V&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TLCS-870&#039;&#039;&#039;: 2,7-5,5V. Serie 870/C 1,8-5,5V.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Z8e&#039;&#039;&#039;: 1,8-3,6V, I/Os 5V-tolerant.&lt;br /&gt;
&lt;br /&gt;
==Programmierung in der Schaltung==&lt;br /&gt;
&lt;br /&gt;
Geräte mit Debugging-Interface (s.U.) lassen sich i.d.R. auch damit programmieren. Siehe dazu nächsten Abschnitt.&lt;br /&gt;
&lt;br /&gt;
Die meisten Controller können sich selbst programmieren, Bootloader per RS232,CAN,usw sind dann problemlos realisierbar. Nur müssen solche Bootloader erst einmal auf den Chip programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8051&#039;&#039;&#039;: Verschieden, je nach Hersteller und Modell. Im Unterschied zu den anderen hier betrachtete Controllern existieren viele nicht in der Schaltung, sondern nur mit speziellen Interfaces programmierbare 8051 Modelle. Modelle mit seriellem Bootloader via UART, SPI, CAN oder USB existieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ARM&#039;&#039;&#039;: Am besten über JTAG, je nach Hersteller und Familie auch mit [[Bootloader]] oder SWD, z.&amp;amp;nbsp;B. bei Philips LPC2000 über RS232 und Atmel SAM7 über USB (bei letzterem sehr unbequem und langsam!).&lt;br /&gt;
Von NXP gibt es ein sehr preiswertes Entwicklungskit (ca. 25€ für Evaluation-Board incl. USB-JTAG-SWD Programmer und Debugger), erhältlich z.B. bei &#039;&#039;&#039;[http://www.watterott.com/index.php?page=search&amp;amp;keywords=LPCXpresso&amp;amp;cat=&amp;amp;mnf=&amp;amp;x=0&amp;amp;y=0 Watterott]&#039;&#039;&#039;. Damit ist eine Programmierung über SWD am USB-Port des PCs problemlos möglich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;: Je nach Derivat verschiedene bzw. mehrere Möglichkeiten: JTAG, DebugWire, ISP, HV, PDI. &lt;br /&gt;
Über ein ISP-Interface: Ist via Parallelport günstig herzustellen; der Adapter ist im besten Fall genau 5 Widerstände teuer, professioneller mit einem [[Ausgangsstufen_Logik-ICs#Tri-state|Tri-State]]-Bustreiber etwa 5-15 EUR. Alternativ auch ein einfach zu bauender Dongle für die RS232-Schnittstelle des PC. &lt;br /&gt;
Darüberhinaus auch mit HV-Programmer (z.&amp;amp;nbsp;B. auf dem [[STK500]]), der u.U. auch nötig ist um falsch gesetzte Fuses wieder zu &amp;quot;reparieren&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MSP430&#039;&#039;&#039;: Via JTAG-Interface, TI &amp;quot;Spy BiWire&amp;quot; und über integrierten  Bootloader. (Schaltung zur Ansteuerung via RS232 im Datenblatt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039;: Entweder über die serielle ICSP-Schnittstelle (dafür gibt es Baupläne für billige ParPort-Programmer incl. guter Software) oder mit dem InCircuit-Debugger (~50€ Pickit 2\Pickit 3,~150&amp;amp;#8364;, ICD2 von Microchip). Bootloader müssen generell vorher mit einer der vorher genannten Möglichkeiten auf den Chip geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R8C&#039;&#039;&#039;: Via UART (RS-232 oder USB-RS-232 Konverter) mit Flash-Tool (Windows, Linux). Variante über Bootloader ebenfalls möglich (wird vom Software Emulator-Debugger benutzt).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST7&#039;&#039;&#039;: Via ein mit der Schaltung (mittels mindestens 4poligen Kabels) kommunizieredes Debug-Interface. Offenes ST-Protokoll &amp;quot;ICC&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TLCS-870&#039;&#039;&#039;: Flash-Typen besitzen maskenprogrammierten Bootloader.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Z8e&#039;&#039;&#039;: Via Zilogs Debug-Interface &amp;quot;Smart Cable&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Debugging in der Schaltung==&lt;br /&gt;
&lt;br /&gt;
Ist beispielsweise ein günstiges [[JTAG]]-Interface für In-Circuit&lt;br /&gt;
Debugging verfügbar?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8051&#039;&#039;&#039;: Derivate mit JTAG verfügbar. ICEen gebraucht erschwinglich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ARM&#039;&#039;&#039;: &amp;lt;br&amp;gt;&lt;br /&gt;
die meisten JTAG und SWD&lt;br /&gt;
* Günstiges Parallel-Port-Interface verfügbar und einfach zu bauen (Wiggler), aber langsam und problematisch im Betrieb unter WinNT+ (besser: ocdremote unter Win9x auf Zweitrechner, via LAN). Kostenlose Debugger ([[GDB]]) unterstützen seit OCDremote 2.14 mit Einschränkungen auch Programme im Flash. &lt;br /&gt;
* Schnelles JTAG Interface basierend auf FT2232C für [[GDB]]/OpenOCD günstig und einfach zu bauen (http://www.fh-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html) oder fertig erhältlich (http://www.amontec.com/jtagkey.shtml).&lt;br /&gt;
* Kommerzielle Debugger per USB sind besser und schneller, aber recht teuer &lt;br /&gt;
* viele Hersteller bieten günstige Starter Kits mit USB-JTAG-SWD Programmer und Debugger an. Zum Beispiel: &lt;br /&gt;
**NXP Entwicklungskit (ca. 25€ für Evaluation-Board incl. USB-JTAG-SWD Programmer und Debugger), erhältlich z.B. bei &#039;&#039;&#039;[http://www.watterott.com/index.php?page=search&amp;amp;keywords=LPCXpresso&amp;amp;cat=&amp;amp;mnf=&amp;amp;x=0&amp;amp;y=0 Watterott]&#039;&#039;&#039;. Siehe dazu auch die Dokumentation von NXP zu den &#039;&#039;&#039;[http://www.nxp.com/documents/leaflet/75016842.pdf LPCXpresso-Entwicklungskits (PDF)]&#039;&#039;&#039; und diese &#039;&#039;&#039;[http://www.mikrocontroller.net/wikisoftware/index.php?title=LPC1xxx_Entwicklungskit_LPCXpresso Beschreibung]&#039;&#039;&#039;&lt;br /&gt;
** [http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419 STM32 Discovery Board] für ca. 20 Euro&lt;br /&gt;
** [http://www.infineon.com/cms/en/product/microcontrollers/32-bit-industrial-microcontrollers-based-on-arm-registered-cortex-tm-m/32-bit-xmc4000-industrial-microcontrollers-arm-registered-cortex-tm-m4/xmc-development-tools,-software-and-kits/xmc4500-relax/relax-lite-kit/channel.html?channel=db3a30433a747525013a97f6e265721e Infineon XMC4500 Relax Kit] für ca. 10 Euro&lt;br /&gt;
** [http://www.energymicro.com/tools/efm32-starter-kits Energy Micro Starter Kit] ab ca. 55 Euro&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[EFM32]] unterstützt nur SWD.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;: für ATmega16/162/32/128 ist JTAG günstig verfügbar&lt;br /&gt;
(Olimex, Erostech) bzw. einfach zu bauen (Evertool). ATmegas ab 2005/2006 mit JTAG sind zu dieser Billigvariante inkompatibel. Für diese und den [[debugWIRE]] der ATtinys und ATmegaX8 existiert das JTAG ICE mkII von Atmel, aber recht teuer, sowie der preiswerte AVR Dragon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MSP430&#039;&#039;&#039;: alle mit JTAG, Adapter sehr günstig/einfach zu bauen. Neuere Geräte mit Spy-by-Wire (braucht weniger Pins als JTAG).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039;: Entweder Microchips MPLAB ICD2 (&amp;amp;#8364;150-200) oder ein kompatibler Nachbau, wie z.&amp;amp;nbsp;B. http://www.stolz.de.be/. Alternativ das PICKit 2 für ~40€, dass neben dem Programmieren und Debuggen über USB auch noch als RS232-Brücke und einfacher Logic-Analyzer benutzt werden kann. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R8C&#039;&#039;&#039;: On-Chip Debugging ist mit dem E8 Hardware On-Chip Debugging Emulator möglich (kein JTAG). Ausserdem ist Debugging auch über einen normalen RS232 Anschluss möglich. Der E8 verwendet ein syncrones serielles Protokoll, die RS232 ein asyncrones. Daher ermöglicht der E8 das Debugging bei jeder beliebigen Taktfrequenz, bei RS232 gibt es da Einschränkungen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ST7&#039;&#039;&#039;: Via ein mit der Schaltung (mittels mindestens 4poligen Kabels) kommunizieredes Debug-Interface. Offenes ST-Protokoll &amp;quot;ICC&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Z8e&#039;&#039;&#039;: Debugging möglich mit &amp;quot;Smart Cable&amp;quot; (kein JTAG), Anschluss über USB oder seriell Schnittstelle&lt;br /&gt;
&lt;br /&gt;
==Starterkits==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8051&#039;&#039;&#039;: Keil MCBx51 http://www.keil.com/mcbx51 (z.&amp;amp;nbsp;B. für ~240&amp;amp;#8364; von [http://de.mouser.com/Search/Refine.aspx?Keyword=830-MCBX51 mouser.com])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ARM&#039;&#039;&#039;: &lt;br /&gt;
allgemein:&lt;br /&gt;
http://www.olimex.com (z.T. hier im Shop erhältlich), http://www.embeddedartists.com,&lt;br /&gt;
http://www.mct.de&lt;br /&gt;
* [[STM32]] [http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419 STM32 Discovery Board] für ca. 20 Euro&lt;br /&gt;
*NXP Entwicklungskit [http://www.nxp.com/documents/leaflet/75016842.pdf LPCXpresso-Entwicklungskits (PDF)] für ca. 25 Euro&lt;br /&gt;
* [http://www.infineon.com/cms/en/product/microcontrollers/32-bit-industrial-microcontrollers-based-on-arm-registered-cortex-tm-m/32-bit-xmc4000-industrial-microcontrollers-arm-registered-cortex-tm-m4/xmc-development-tools,-software-and-kits/xmc4500-relax/relax-lite-kit/channel.html?channel=db3a30433a747525013a97f6e265721e Infineon XMC4500 Relax Kit] für ca. 10 Euro&lt;br /&gt;
* [[EFM32]] [http://www.energymicro.com/tools/efm32-starter-kits Energy Micro Starter Kit] ab ca. 55 Euro&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;: [[STK200]], [[STK500]], [[AVR_Butterfly]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MSP430&#039;&#039;&#039;: http://www.olimex.com (z.T. hier im Shop erhältlich), ez430 (http://www.ti.com/ez430), Launchpad: http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_%28MSP-EXP430G2%29&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039;: http://www.microchipdirect.com/ , Velleman-Kit K8048 (www.velleman.be) , http://www.mikroe.com/eng/categories/view/6/pic-development-tools/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R8C&#039;&#039;&#039;: Mehrere (Google Suche). Am weitesten verbreitet ist vielleicht das R8C/13 Starterkit inkl. Entwickler-CD von Glyn/Elektor (Beilage Elektor 12/2005 (ausverkauft) bzw. diverse Drittanbieter). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8:&#039;&#039;&#039; [[STM8S-Discovery]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Z8e&#039;&#039;&#039;: Günstig verfügbar [~50&amp;amp;#8364;], teils hier im Shop, komplett inklusive unbeschränktem Compiler und In-System-Debugging. Nachteile: für jede Prozessorklasse ein eigenes Kit; eingelöteter SMD-Chip obwohl viele Typen auch im DIL-Gehäuse existieren.&lt;br /&gt;
&lt;br /&gt;
==Gehäuse==&lt;br /&gt;
&lt;br /&gt;
Mit DIP oder PLCC bastelt es sich leichter als mit *QFP. Die Domäne von&lt;br /&gt;
AVR/PIC/i51. Für MSP430 gibt es günstige fertig bestückte DIP-Adapter hier im Shop (MSP430x2xx gibt es auch in 14-Pin DIP-Gehäuse). Z8e-Chips existieren ebenfalls in DIP, sind aber schlechter verfügbar.&lt;br /&gt;
&lt;br /&gt;
==Beschaltungsaufwand==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8051, AVR, PIC, MSP430, R8C, ST7, Z8e&#039;&#039;&#039;: gering, i.d.R. sind Versionen mit integriertem Oszillator verfügbar, so dass man praktisch nur die Versorgungsspannung (nebst Abblockkondensator) braucht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ARM&#039;&#039;&#039;: aufwendigere externe Takt- und Spannungserzeugung, manchmal 2 Betriebsspannungen benötigt; Tendenz aber fallend.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-185133.html#new Forum]&lt;br /&gt;
* [[8051]]&lt;br /&gt;
* [[ARM]]&lt;br /&gt;
* [[AVR]]&lt;br /&gt;
* [[EFM32]]&lt;br /&gt;
* [[LPC1xxx]]&lt;br /&gt;
* [[MSP430]]&lt;br /&gt;
* [[PIC]]&lt;br /&gt;
* [[R8C]]&lt;br /&gt;
* [[ST7]]&lt;br /&gt;
* [[STM8]]&lt;br /&gt;
* [[STM32]]&lt;br /&gt;
* [[Z8]]&lt;br /&gt;
* [[Z8_encore!]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mikrocontroller| ]]&lt;/div&gt;</summary>
		<author><name>193.254.108.90</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Gerber-Tools&amp;diff=85621</id>
		<title>Gerber-Tools</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Gerber-Tools&amp;diff=85621"/>
		<updated>2014-11-10T08:10:53Z</updated>

		<summary type="html">&lt;p&gt;193.254.108.90: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gerber-Tools sind Programme, die es erlauben die von fast allen [[Schaltplaneditoren|Platinenlayoutprogrammen]] erzeugbaren Gerberfiles zu betrachten, zu überprüfen und eventuell sogar zu manipulieren. Das beginnt mit Tools, die es erlauben die Platinen zu drehen und miteinander zu verbinden bzw. mehrere identische zu größeren Panelen (sog. Nutzen) zusammenzufügen, um sie rationeller fertigen zu können. Es hört auf mit Programmen die in der Lage sind, Leiterbahnen und Bohrlöcher zu verschieben und zu ändern. Es ist guter Stil, seine eigene Arbeit mit einem Gerber-Viewer zu überprüfen, der &#039;&#039;&#039;nicht&#039;&#039;&#039; zum System des Platinenlayoutprogrammes gehört, mit der man die Platinendaten erzeugt hat, allein um systematische Fehler zu minimieren.&lt;br /&gt;
&lt;br /&gt;
== Allgemeines ==&lt;br /&gt;
&lt;br /&gt;
Gerber Daten stellen alle Daten dar, die zur Fertigung einer Leiterplatte benötigt werden. Und eben auch nicht mehr. Also keine Informationen über Netze, Schaltpläne oder Details über Bauteile. Daher erlauben sie es, auch solche Informationen gegenüber dem Fertiger einer Leiterplatte geheim zu halten, im Gegensatz zur Herausgabe von Platinendaten (CAD Boarddateien) direkt aus dem Programm. Ferner ist das Format robust und kompakt. Es enthält alle Angaben, die zur Steuerung eines Photoplotters zur Erstellung von Filmen für die Leiterplattenbelichtung benötigt werden. Es ist eng mit dem &amp;quot;G-Code&amp;quot; für CNC-Drehbänke und Fräßmaschienen verwandt, beschränkt sich aber auf eine zweidimensionale (xy) Darstellung. Gerber hat sich als weit verbreitetes Austauschformat für Leiterplattendaten etabliert; mittlerweile enthält so gut wie jedes Programm zur Platinenentwicklung eine Exportmöglichkeit für Gerber, und so gut wie alle Firmen, die Leiterplatten herstellen, können diese Daten einlesen und verwerten.&lt;br /&gt;
&lt;br /&gt;
== Historisches ==&lt;br /&gt;
&lt;br /&gt;
Das heute gebräuchliche Format RS-274X (X für &amp;quot;extended&amp;quot;) hat einen Vorgänger RS-274D. Wobei RS274D tatsächlich ein Standard zur Steuerung von CNC-Maschinen war, von dem dann für die optischen Verfahren in der Platinenherstellung nur eine Teilmenge verwendet wurde. Der Hauptunterschied zwischen dem RS-274D und RS-274X ist, dass das alte RS-274D keine Informationen über die verwendeten Blenden enthält. Zu einem Gerber File gehörte also immer noch eine Blendendatei. Beim RS-274X ist diese Information (und andere, z.B. die über das Zahlenformat) im Gerberfile selber integriert. Für neue Entwicklung sollte KEIN altes RS-274D mehr verwendet werden, nur neueres RS-274X.&lt;br /&gt;
&lt;br /&gt;
Da früher Photoplotter für den Blendenwechsel drehbare Blendenrevolver hatten, die enteder 6 oder 12 verschiedene Blenden aufnehmen konnte, war die Anzahl der verwendeten Blenden in einem Design beschränkt, wollte man nicht zuviele zeitraubende und teure manuelle Blendenwechsel vornehmen. Das Problem bestand bei späteren Vektorplottern nicht mehr in dieser Form, da diese die Blenden in gewissen Bereichen frei emulieren konnten. Heutige Plotter arbeiten komplett anders, so das die Daten auch anders aufbereitet werden müssen. Das Format der Gerberdateien hat sich als praktisches Austauschformat allerdings erhalten, auch wenn es jetzt nur noch so darstellt, als ob die Daten einen Photoplotter steuern würde. &lt;br /&gt;
&lt;br /&gt;
Entwickelt wurde das Gerber Fileformat von Gerber-Scientific. Später pflegte Barco und jetzt Ucamco die Spezifikationen dieses Formates. &lt;br /&gt;
&lt;br /&gt;
Auch heute ist das Gerber Format noch nicht komplett, weil durch den technischen Fortschritt immer neue Möglichkeiten entstehen, über die das jeweilige aktuelle Gerberformat keine Angaben enthalten kann. Es enthält z.B. keine Angaben über den Lagenaufbau. Solche Informationen müssen dem Fertiger daher in begleitenden Texten oder Zeichnungen übergeben werden.  Um diese Problem anzugehen, veröffentlicht Ucamco einen [http://www.ucamco.com/downloads Vorschlag (und weiter: Extending the Gerber Format with Attributes)] der das Gerber-Dateiformat um Attribute erweitert. Ucamco lädt dazu ein, zu diesem Vorschlag Kommentare und Verbesserungsvorschläge einzureichen, bevor er formell in die Gerberformat Spezifikationen Eingang erhält.&lt;br /&gt;
&lt;br /&gt;
== Details der Formate ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
Wikipedia hat eine Beschreibung des [http://de.wikipedia.org/wiki/Gerber-Format Gerber-Formates]. Die Spezifikation und weitere Informationen findet sich [http://www.ucamco.com/downloads hier als &amp;quot;The Gerber File Format Specification&amp;quot;]. Eine [http://www.artwork.com/gerber/274x/rs274x.htm weitere Erläuterung] hat Steve DiBartolomeo geschrieben. Zu den Gerberdaten im weiteren Sinne zählen auch sog. &amp;quot;Drillfiles&amp;quot;, welche die Ansteuerdaten für die CNC-Platinenbohrmaschinen enthalten. Sie sind den Gerberfiles meist sehr ähnlich, auch wenn sie anderslautende Befehle haben. Weit verbreitet für diesen Zweck sind unter anderem Bohrautomaten der Firma Excellon, und so hat das Excellon-Fileformat eine recht weite Verbreitung gefunden. Eine Beschreibung des Excellon-Fileformates findet sich auf der Homepage von [http://www.excellon.com/manuals/program.htm Exellon]. Bohrdaten können aber auch im Gerberformat dargestellt werden. Sie bilden dann ein eigenes Gerberfile. Im allgemeinen sollten aus praktischen Gründen immer mehrere Bohrdateien pro Platine verwendet werden: Für durchkontaktierte (mit Innenverkupferung, &amp;quot;Via&amp;quot; genannt), und eins für nicht durchkontaktierte Bohrungen. Der Hintergrund ist, das die Bohrungen für durchkontaktierte und nicht durchkontaktierte Bohrungen in zwei unterschiedlichen Arbeitsschritten erfolgen müssen. Bei Multilayerplatinen kann es für manche Lagen weitere Drillfiles geben, je nachdem es sich um &amp;quot;blind&amp;quot; oder &amp;quot;buried&amp;quot; Vias handelt, für die naturgemäß Bohrungen nicht in allen Lagen vorhanden sind. Fräsungen (Für Platinenumrisse und Aussparungen) haben ein eigenes Gerberlayer, in denen die zu fräsenden Konturen eingezeichnet sind. Da Bohrungen ab 2mm Durchmesser gefräst werden können und ab 4mm Durchmesser gefräst werden sollten, besteht eventuell ein Freiraum, um bestimmte Fräsungen besser als Bohrung in ein Drillfile aufzunehemen oder bestimmte Bohrungen als Fräsung in die Fräslage aufzunehmen.&lt;br /&gt;
&lt;br /&gt;
=== Struktur des Formates ===&lt;br /&gt;
&lt;br /&gt;
Jede Kupferlage, aber auch Lötpasten- und Kleberschablone, Lötstopplack, Beschriftung etc. hat seine eigene Gerberdatei. Wenn vorhanden, getrennt nach Vorder- und Rückseite. Die Datei beginnt mit einem Header, im dem Allgemeines, wie das Einheitensystem (Inch oder mm), die Zahlendarstellung (Nullen unterdrückt, Stellen vor und nach dem Dezimaltrenner), und ob eine Lage gespiegelt oder positiv/negativ dargestellt wird. Eine Lötstoppmaske zum Beispiel enthält meist die gleichen Pads wie die korrespondierende Kupferlage, allerdings etwas größer. Die Darstellung erfolgt aber im Gegensatz zur Kupferlage, wo die Pads &amp;quot;Inseln&amp;quot; sind, negativ, was &amp;quot;Löcher&amp;quot; in der die ganze Platine bedeckenden Lötstoppschicht bedeutet. Es folgt eine Blendentabelle. Hierbei wird eine Anzahl von Blenden in Form und Größe definiert. Daran anschliessend Zeilen mit X- und Y-Koordinaten, die entweder mit geschlossener (nur Positionswechsel) oder offener Blende (&amp;quot;Draw&amp;quot;, es wird ein &amp;quot;Strich&amp;quot; gezogen, die Blendenanweisung definiert seine Breite), angefahren werden. Es gibt auch Positionen, die mit geschlossener Blende angefahren werden, und wo am Zielort die Blende kurz geöffnet wird (&amp;quot;Blinks&amp;quot; oder &amp;quot;Flashes&amp;quot;). Diese werden verwendet, um speziell Pads darzustellen. Die Form und Größe der Blende bestimmt hierbei die Form und Größe des erzeugten Pads. Leiterbahnstücke gleicher Form werden nicht als Blink, sondern als Draw mit gleichem Anfangs und Endpunkt (&amp;quot;Null-Länge&amp;quot;) dargestellt. Diese konsequente Trennung von Pads als Blink und Leiterbahnen als Draw ermöglicht es, leichter Änderungen an den Pads vornehmen zu können, in dem man dem Pad eine andere Blendendefinition zuweist. Das gilt auch für mit dem Pad im Zusamenhang zusehenden Blinks für Lötstoppmasken und besonders Pasten- und Klebstoffmasken, die oft vom Bestücker für seinen individuellen Herstellungsprozess angepasst werden müssen. Das Gerberformat enthält auch Anweisungsmöglichkeiten für Skalierung, Makros, Polygone, Drehungen, Kreise u. Kreissegmente, Kommentare etc. Große Flächen werden entweder durch einen Flächenbefehl als Polygon definiert, oder aber durch viele Striche emuliert (&amp;quot;stroke fill&amp;quot;). Die Dateiendung ist nicht einheitlich. Üblich ist es, alle Gerber Dateien mit .gbr, .ger oder .gerber enden zu lassen, und den speziellen Zweck im Dateinahmen unterzubringen (Beispiel: &amp;quot;PlatineProjektname-CopperTop.gbr&amp;quot;), oder aber spezielle Endungen für die jeweilige Gerberlage entsprechend ihrer Verwendung zu benutzen. Ein spezielles System existiert hierbei nicht, jedes Programm handhabt diese auf seine Weise. Eine sehr alte Tradition aus DOS-Zeiten (vermutlich Orcad) ist aber:&lt;br /&gt;
*.BOT  Kupferflaechen Loetseite&lt;br /&gt;
*.drl  Bohrfile (&amp;quot;Drill Rack&amp;quot;, Bohrerliste)&lt;br /&gt;
*.drd  Excellon-Bohrdaten (es müssen aber zwei Bohrdatenlisten existieren. Einmal für durchkontaktierte und einmal für nicht durckontaktierte Bohrungen, weil die Löcher dafür in unterschiedlichen Bearbeitungsstufen gebohrt werden müssen)&lt;br /&gt;
*.dri  Bohrinfo (Statistik über Bohrungen, Bohrerliste)&lt;br /&gt;
*.mnt  Pick and Place Bauteilseite (nur SMD)&lt;br /&gt;
*.mnb  Pick and Place Loetseite (nur SMD, bei Bauteilen auf beiden Seiten)&lt;br /&gt;
*.SMB  Loetstoppmaske Loetseite (Solder Mask Bottom)&lt;br /&gt;
*.SMT  Loetstoppmaske Bestueckungsseite (Solder Mask Top)&lt;br /&gt;
*.SST  Bestueckungsplan Bauteilseite (Silk Screen Top)&lt;br /&gt;
*.SSB  Bestückungsplan Loetseite (Silk Screen Bottom)&lt;br /&gt;
*.TOP  Kupferflaechen Bestueckungsseite&lt;br /&gt;
*.CRT  Lötpastenmaske Bestueckungsseite (Cream Top)&lt;br /&gt;
*.CRB  Lötpastenmaske Lötseite (Cream Bottom)&lt;br /&gt;
*.GLT  Klebermaske Bestueckungsseite (Glue Top)&lt;br /&gt;
*.GLB  Klebermaske Loetseite (Glue Bottom)&lt;br /&gt;
*.KOT  Keepout Bestueckungsseite &lt;br /&gt;
*.KOB  Keepout Loetseite&lt;br /&gt;
*.OUT  Outline&lt;br /&gt;
&lt;br /&gt;
andere Endungen:&lt;br /&gt;
*.NCD  Drillfile&lt;br /&gt;
*.TOL  Toolfile&lt;br /&gt;
*.TC   Drillcounter&lt;br /&gt;
&lt;br /&gt;
Vorschläge für alternative Dateiendungssysteme finden sich im einschlägigen [http://de.wikipedia.org/wiki/Gerber-Format Wikipedia Artikel].&lt;br /&gt;
&lt;br /&gt;
== Tipps ==&lt;br /&gt;
&lt;br /&gt;
*Wenn man Gerber- und Drillfiles erstellt, verwenden man am besten für beide ein einheitliches Zahlenformat, sofern das Layoutprogramm dazu eine Wahl lässt. Richten Sie sich dabei in erster Linie an den Bohrdaten aus, da diese der Dreh und Angelpunkt der Toleranzen sind.&lt;br /&gt;
*Den Nullpunkt der Koordinaten legt man dabei idealerweise nach unten links, falls das Layoutprogram dazu eine Wahl lässt.&lt;br /&gt;
*Man sollte nach Möglichkeit nur noch Gerber RS-274X (&amp;quot;Extended Gerber&amp;quot;) verwenden.   &lt;br /&gt;
*Als standardmäßige Formateinstellung für Gerberdaten empfielt sich dabei 3.3 metrisch. Hintergrund: Die IPC Spezifikation empfiehlt, die höchste Auflösung zu verwenden.&lt;br /&gt;
*Man verwendet nach Möglichkeit kein &amp;quot;Stroke fill&amp;quot; für Kupferflächen, sondern einen Polygon-Befehl. Leider lässt das nicht jedes Programm zu. Eine Begründung für die Vermeidung findet sich hier unter [http://www.ucamco.com/downloads &amp;quot;Painting considered harmful&amp;quot;].&lt;br /&gt;
* Für Pads gilt ähnliches in noch verschärfterer Form: Pads sollten nach möglichkeit immer &amp;quot;Blinks&amp;quot; sein. Allerdings ist das bei exotischren Padformen nicht so ohne weiteres möglich.&lt;br /&gt;
* Alle Lagen &amp;quot;in normaler&amp;quot; Ansicht ausgeben. D.h. so, wie man sie sehen würde, wenn man mit einem Röntgenblick von der Bauteilseite durch die Platine schauen würde. Schriften auf der Unterseite die im fertigen Objekt normal lesbar sein sollen, erscheinen dabei gespiegelt.&lt;br /&gt;
* Eine Platinenbeschreibung in einem allgemein lesbaren Format (z.B. PDF oder TXT, &#039;&#039;&#039;nicht&#039;&#039;&#039; die obskuren Formate irgendwelcher Textverarbeitungssysteme) dabeilegen. Ausser Informationen über Lagenaufbau und Abmessungen sollte diese Beschreibung eine Liste aller Gerber- und Bohrfiles enthalten, mit einer &#039;&#039;&#039;expliziten Nennung&#039;&#039;&#039; der Lage, für die sie gedacht sind. Das gilt besonders für Innenlagen, die nicht nur einfach durchnummeriert sein sollten, sondern es sollte &#039;&#039;&#039;explizit&#039;&#039;&#039; angegeben werden, in welcher Position sich die &amp;quot;Nummer&amp;quot; zur Ober- oder Unterseite befindet. Bei einem vierlagigen Aufbau ist es sonst nicht eindeutig klar, das &amp;quot;Layer 1&amp;quot; die Lage direkt unter der Oberseitenlage ist.&lt;br /&gt;
* Die Lagen sollten nicht gespiegelt sein.&lt;br /&gt;
* Kupferlagen sollten nicht komplett negativ sein, auch wenn sie negative Teile enthalten. Aber Lötstoppmaske, Lotpastenmaske und Klebstoffmaske schon.&lt;br /&gt;
* Die Lagen sollten keinen Versatz gegeneinander haben.&lt;br /&gt;
* Es sollte eine Konturlage existieren, die alle (Aussen-) Konturen der Platine enthält.&lt;br /&gt;
* Für durchkontaktierte und nicht durchkontaktierte Bohrungen sollten separate Bohrfiles existieren. Diese sind dann aber im [http://en.wikipedia.org/wiki/Excellon_format Excelon-Format] und nicht Gerber. Bei Multilayer Aufbauten sind für jeden separaten Bohrvorgang separate Borfiles nötig (Achtung bei blind und buried Vias). Ist, wegen irgendeiner Besonderheit der speziellen Platine, ein sonst üblicher Bohrvorgang nicht vorhanden, so sollte das auch &#039;&#039;&#039;explizit&#039;&#039;&#039; im begleitenden Text vermerkt werden.&lt;br /&gt;
* Ein konkreter Fall mit Fragen zur Erstellung von Gerberdaten (aus Target, gilt aber allgemein) findet sich [http://www.mikrocontroller.net/topic/319625#new hier].&lt;br /&gt;
&lt;br /&gt;
== Alternativen zu Gerber ==&lt;br /&gt;
&lt;br /&gt;
Viele Leiterplattenhersteller aktzeptieren auch die direkten Entwicklungsdaten für die meisten weitverbreiteten Leiterplattenlayout Programme. Insbesondere gilt das für Eagle, Kicad, Target, Altium und Orcad. Es empfielt sich darum, den gewünschten Leiterplattenhersteller nach den Formaten, die er verarbeiten kann, zu fragen. Allerdings gibt man in diesem Falle wesentlich mehr Daten heraus, als für eine Produktion nötig ist. Insofern kann das als Sicherheitsrisiko gesehen werden, was aber für Amateure eher nebensächlich sein dürfte.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres, wesentlich schwerwiegenderes, Risiko liegt aber darin, das die CAD-Systemdaten wesentlich interpretierfähiger als die Gerberdaten sind, was zu fatalen Missverständnissen führen kann.&lt;br /&gt;
&lt;br /&gt;
Für die Produktion müssen die Daten aber auf jeden Fall vom Leiterplattenhersteller speziell für seine Anlagen aufbereitet werden. Darum, und um eine Kompatibilität mit den Daten anderer CAD-Systeme zu erhalten, werden die Daten dann im allgemeinen doch in das Gerberformat umgewandelt, da Gerber als Austauschformat den kleinsten gemeinsamen Nenner darstellt. Weil Gerber für den Austausch am weitesten verbreitet ist, haben die Leiterplattenhersteller darin auch oft die meiste Erfahrung und meiste Übung und oft feststehende Vorgehensweisen im Sinne der Qualitätssicherung.&lt;br /&gt;
&lt;br /&gt;
Daher ist es angeraten, seine Daten im Gerberformat bei den Leiterplattenherstellern einzureichen.&lt;br /&gt;
&lt;br /&gt;
Eine Diskussion zum Thema &amp;quot;CAD-Dateien statt Gerber&amp;quot; findet sich [http://www.mikrocontroller.net/topic/319065#new hier im Forum].&lt;br /&gt;
&lt;br /&gt;
Als direktes alternatives Dateiformat zu Gerber wäre ODB++ zu nennen, welches aber proprietär von Valor ist. Eine Diskussion zum Thema &amp;quot;ODB++ statt Gerber&amp;quot; findet sich [http://www.mikrocontroller.net/topic/320716#new hier im Forum]. Desweiteren entwickelte [http://www.ipc.org/de/default.aspx der IPC] mit [http://ipc-2581.com/ IPC-2581] ein XML basiertes Format, das sich bisher aber kaum verbreiten konnte. Es gibt wohl neuere Ansätze, IPC-2581 und Gerber aneinander anzugleichen. Auch dazu veröffentlichte Ucamco einen [http://www.ucamco.com/downloads Vorschlag (Und weiter: IPC-2581 meets the Gerber File Format)] der das Gerber-Dateiformat um Angaben z.b. zum Lagenaufbau erweitert.&lt;br /&gt;
&lt;br /&gt;
Ein [http://www.ilfa.de/Publikationen Plädoyer für Gerber (unter &amp;quot;Datenformate: Gerber&amp;quot;)] hält auch A.Wiemers.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich zählt das Gerberformat zu den Vektorgrafikformaten. Daher ist hypothetisch auch z.B. [http://de.wikipedia.org/wiki/SVG das SVG-Format] geeignet, um Platinendaten zu transportieren und zu manipulieren. Allerdings ist das bisher nicht üblich, und u.U. riskant, weil eine identische Darstellung in verschiedenen Programmen aufgrund der Komplexität von SVG nicht immer gewährleistet ist.&lt;br /&gt;
&lt;br /&gt;
== Gerber Tools == &lt;br /&gt;
&lt;br /&gt;
* [http://www.GerberLogix.com GerberLogix]: Einfach zu bedienender Extended Gerber Viewer. Weitere Formate sind Excellon 1/2. Highlight ist die Automatische Bemaßung von Leiterbahnen. Für Hobbyisten Kostenlos.&lt;br /&gt;
&lt;br /&gt;
* [http://www.PCB-Investigator.com PCB-Investigator]: Umfangreiche Funktionalität zum vergleichen verschiedenster Leiterplatten Daten. Wandelt alle Daten auch in 3D um. ODB++, IPC 2581, GenCAD und Gerber Daten. &lt;br /&gt;
&lt;br /&gt;
* [http://ruggedcircuits.com/gerbmerge/ Gerbmerge]: Ein unter Python geschriebenes Tool, mit denen einzelne Platinen zu größeren Nutzen zusammengefügt werden können. Freeware. &lt;br /&gt;
&lt;br /&gt;
* [http://www.graphicode.com/GC-Prevue_Gerber_Viewer gc-preview]: Ein Programm, um Gerberdaten ansehen und drucken zu können. Freeware.&lt;br /&gt;
&lt;br /&gt;
* Die Firma Graphicode bietet auch noch andere, im allgemeinen kostenpflichtige Software an, mit der diverse Plotter- und Platinenformate, u.a. auch Gerberdaten, ineinander überführt werden können, wie z.B. [http://www.graphicode.com/products/cam GC-CAM-Edit].&lt;br /&gt;
&lt;br /&gt;
* [http://www.softwarecompanions.com/gerbview.html GerbView (1)]: Ein Programm, das in der Lage ist, verschiedene Platinen- und Plotterformate, darunter eben auch Gerberdaten, zu sichten, ineinander zu convertieren, zu markieren und zu drucken. 30 Tage Testversion. &lt;br /&gt;
&lt;br /&gt;
* [http://iut-tice.ujf-grenoble.fr/kicad/ GerbView (2)]: Ebenfalls unter dem Namen GerbView existiert ein anderer Gerberviewer als Bestandteil von [[KiCAD]]. Dieser erlaubt das Betrachten der Gerberfiles und den Export als Platine in PCBnew, welches ebenfals Bestandteil von KiCAD ist. Unter KiCAD/PCBnew kann diese Platine dann manipuliert, verändert und wieder als Gerberfile exportiert werden. Allerdings können so nur Gerber-RS274X Daten eingelesen und exportiert werden. Blinks werden aber beim Reimport als Durchkontaktierung dargestellt. Insgesammt ist dieses Feature ziemlich &amp;quot;buggy&amp;quot; und unperfekt. Letzteres ist aber aus grundsätzlichen Erwägungen heraus auch schwer zu ändern. Siehe: http://www.mikrocontroller.net/topic/263576#2739329&lt;br /&gt;
&lt;br /&gt;
* [http://gerbv.gpleda.org/index.html Gerbv]: Ebenfalls ein Open Source Gerberviewer. Er gehört zum gEDA Projekt. Funktioniert hervorragend und hat viele Features. Verarbeitet RS-274-X und Excellon-Bohrdaten, jedoch kein RS-274 (Standard-Gerber). Dieser Gerberviewer ermöglicht auch das Löschen einzelner Strukturen und das Umskalieren, Verschieben, Spiegeln und Drehen der gesamten Gerberdatei. Gespeichert wird nur Extendet Gerber. &lt;br /&gt;
&lt;br /&gt;
* [http://www.pentalogix.com ViewMate]: ist eine professionelle CAM-Software, die als Viewer kostenlos abgegeben wird. Die Funktionen zum Ändern und Speichern sind gesperrt, aber zum Überprüfen der Ausgabedaten hervorragend geeignet (auch Bohrdaten). Dies kostenlose Version läuft auch recht gut unter wine (Debian squeeze). &lt;br /&gt;
&lt;br /&gt;
* [http://www.mentor.com/products/pcb-system-design/downloads/odb-viewer VUV]: ODB++ Viewer, der von der Firma Valor, jetzt von Mentor übernommen, kostenlos abgegeben wird.&lt;br /&gt;
&lt;br /&gt;
* [http://www.cenon.info/ Cenon]: Cenon ist eine Open Source Software um speziell Vektorgrafiken zu betrachten, zu manipulieren und zu konvertieren. Das Gerberformat ist grundsätzlich als Vektorgrafikformat anzusehen. Cenon kann auch Standard und extendet Gerber einlesen, und als extendet Gerber wieder abspeichern. Es können einzelne Strukturen in Gerber selektiert, kopiert, gelöscht, verschoben, gedreht und eingefügt werden. Ebenso können Mehrfachnutzen erstellt werden. Es kann auch in oder aus anderen Vektorformaten wie PDF, PS, HPGL, DXF konvertiert werden. Die Bedienung des Programmes ist manchmal sehr pfiffig, aber leider meistens sehr gewöhnungsbedürftig. Es ist z.B. unbedingt darauf zu achten, das die Dateien adäquate Endungen haben, als Gerber lässt Cenon nur .ger und .gerber zu. Bei der Zusammenarbeit mit anderen Programmen ist es daher leider oft nötig, die Dateien ständig umzubenennen. Unter Debian Squeeze existiert ein Cenon Package. Leider müssen z.Z. (17. Nov. 2011) nach der Installation noch die GNUstep Librarys manuell von /usr/lib/GNUstep/Library nach /usr/lib/GNUstep/Cenon oder /usr/local/lib/GNUstep/Cenon kopiert werden. Es ist dringend anzuraten, die  [http://www.cenon.info/frameLoad_de.html?support_faq_de.html Cenon FAQ] und das [http://www.vhf-group.com/vhf-interservice/download/doc/Cenon_de.pdf Cenon Handbuch] zu lesen.&lt;br /&gt;
&lt;br /&gt;
* [[Media:PyGerberAnalyse_B5_13Jun2013.zip]] Absolut primitives Programm zur Gerber-Daten Analyse. Test-Status. Geschrieben in Python3. Kann Gerber247d und Gerber247x einlesen und teilweise analysieren und die Analyse als Datei abspeichern, aber keine Makros darin. Kann auch Drill Files einlesen. Kann Gerber- oder Drill-Files in rudimentärer Form anzeigen (z.B. OHNE Aperturen, kein Maßstab, ist somit für fast nichts zu gebrauchen). Das Programm besteht aus den drei Teilen PyGerbAnalyse_B5_13Jun2013.py, ClassDefBasicAnalysisResults_13Jun2013.py und ClassDefGerberLayer_13Jun2013.py. Gestartet wird nur PyGerbAnalyse_B5_13Jun2013.py, die anderen beiden Python Files enthalten Klassendefinitionen. Steht unter GNU-GPL. Autor Bernd Wiebus. KEINE GARANTIE! Testberichte, Hinweise, Informationen und Anregungen sowie dringend benötigte Testdateien mit normalen und exotischen, auch älteren, Gerberformaten von unterschiedlichen Layoutprogrammen bitte an bernd.wiebus@gmx.de senden. DANKE im Voraus dazu! Es ist eine Python3 Version des unter dem BASIC-Dialekt Gambas2 geschriebenen ebenso primitiven Viewers, der unter [[Media:GerbAnalyse_RevA6.zip]] zu bekommen ist. Python3 ist unter Linux bei den meisten Distributionen als Packet installierbar. Windows User könnten vieleicht Möglichkeiten in dieser Diskussion finden: http://www.mikrocontroller.net/topic/280970#new&lt;br /&gt;
&lt;br /&gt;
* [http://www.gerber-viewer.com/ gerber-viewer.com]: Für die schnelle Kontrolle von Gerberdaten eignet sich auch ein online Viewer. Einfach Zip-Archiv oder Gerberdaten auswählen, uploaden und online begutachten. Datensicherheit beachten! Gerberdaten werden dabei herausgegeben!&lt;br /&gt;
&lt;br /&gt;
* [http://www.numericalinnovations.com/collections/fab-3000-gerber-cam?gclid=CLj1-_GW6LsCFclQ3godr3sASQ FAB 3000 V7]: Ein Gerberviewer und Editor von Numerical Innovations. Es existiert auch eine Trial Version.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/aitjcize/QCamber QCamber] Relativ neue Software, über die noch wenig bekannt ist.&lt;br /&gt;
&lt;br /&gt;
* [http://caram.cl/software/flatcam/ FlatCAM] Diese Software erstellt aus Gerberdaten Bohrdaten und G-Code um den Platinenumriss (mit Haltestegen) freizufräsen, oder auch zum &amp;quot;Konturfräsewn&amp;quot;. Beim &amp;quot;Konturfräsen&amp;quot; wird eine Leiterplatte nicht geätzt, sondern gefräst. Naturgemäß geht letzteres nur sinnvoll für Einzelstücke oder Kleinserien, und auch nur für relativ grobe Layouts. Desweiteren kann auf diesem Wege auch G-Code zum Fräsen bzw. Gravieren von Frontplatten o.ä. erzeugt werden, wenn man die Strukturen in einem Layoutprogramm passend anlegt, als Gerberdaten exportiert und dann mit dieser Software bearbeitet. Siehe http://www.mikrocontroller.net/topic/338193#3717135.&lt;br /&gt;
&lt;br /&gt;
* [http://www.zofzpcb.com ZofzPCB] Ein Gerber Viewer. Kann u.A. Gerber Daten in 3D Rendern. Freeware. Läuft aber z.Z. (Oktober 2014) nur unter Windows. Siehe: http://www.mikrocontroller.net/topic/346675#new&lt;br /&gt;
&lt;br /&gt;
== Siehe auch == &lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/293100#new Forumsbeitrag]: Gerber Daten: wie erkenne ich, ob Bohrung metallisiert ist?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/311780#new Forumsbeitrag]: Gerberdatei für Lötstoppmaske&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/311426#new Forumsbeitrag]: Ein Klassiker - Gerberdaten und Blendendatei - RS274D vs. RS274X&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/310333#new Forumsbeitrag]: Kicad: Bohrdatei&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/309923#new Forumsbeitrag]: Gerbv Layoutkontrolle fehlerhafte Anzeige/ Ergebnisse?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/309765#new Forumsbeitrag]: Bohrdatei für fertige Leiterplatte&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/303326#new Forumsbeitrag]: gerber Preview gcprevue welche Version empfehlenswert?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/298632#new Forumsbeitrag]: Gerber Daten für Board Cutout (Altium)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/307967#new Forumsbeitrag]: Kann mir wer Eagle zu Gerber exportieren&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/291090#new Forumsbeitrag]: Altium exportiert nicht korrekt in Gerber&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/262726#new Forumsbeitrag]: Gerber Daten (formate und Dateiendungen)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/255449#new Forumsbeitrag]: Eagle CAM-Job / Itead Studio - Fehler in Gerber Dateien?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/255129#new Forumsbeitrag]: Layout (Gerber) in Nutzen umwandeln - suche Tool&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/241858#new Forumsbeitrag]: EAGLE: Genauigkeit für Gerber-Dateien einstellen - wo? wie?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319065#new Forumsbeitrag]: CAD-Daten oder Gerberdaten herausgeben?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/320716#new Forumsbeitrag]: Diskussion über ODB++ als Alternative zu Gerber.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Schaltplaneditoren]]&lt;br /&gt;
[[Category:Platinen]]&lt;/div&gt;</summary>
		<author><name>193.254.108.90</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Gerber-Tools&amp;diff=85620</id>
		<title>Gerber-Tools</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Gerber-Tools&amp;diff=85620"/>
		<updated>2014-11-10T08:00:06Z</updated>

		<summary type="html">&lt;p&gt;193.254.108.90: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gerber-Tools sind Programme, die es erlauben die von fast allen [[Schaltplaneditoren|Platinenlayoutprogrammen]] erzeugbaren Gerberfiles zu betrachten, zu überprüfen und eventuell sogar zu manipulieren. Das beginnt mit Tools, die es erlauben die Platinen zu drehen und miteinander zu verbinden bzw. mehrere identische zu größeren Panelen (sog. Nutzen) zusammenzufügen, um sie rationeller fertigen zu können. Es hört auf mit Programmen die in der Lage sind, Leiterbahnen und Bohrlöcher zu verschieben und zu ändern. Es ist guter Stil, seine eigene Arbeit mit einem Gerber-Viewer zu überprüfen, der &#039;&#039;&#039;nicht&#039;&#039;&#039; zum System des Platinenlayoutprogrammes gehört, mit der man die Platinendaten erzeugt hat, allein um systematische Fehler zu minimieren.&lt;br /&gt;
&lt;br /&gt;
== Allgemeines ==&lt;br /&gt;
&lt;br /&gt;
Gerber Daten stellen alle Daten dar, die zur Fertigung einer Leiterplatte benötigt werden. Und eben auch nicht mehr. Also keine Informationen über Netze, Schaltpläne oder Details über Bauteile. Daher erlauben sie es, auch solche Informationen gegenüber dem Fertiger einer Leiterplatte geheim zu halten, im Gegensatz zur Herausgabe von Platinendaten (CAD Boarddateien) direkt aus dem Programm. Ferner ist das Format robust und kompakt. Es enthält alle Angaben, die zur Steuerung eines Photoplotters zur Erstellung von Filmen für die Leiterplattenbelichtung benötigt werden. Es ist eng mit dem &amp;quot;G-Code&amp;quot; für CNC-Drehbänke und Fräßmaschienen verwandt, beschränkt sich aber auf eine zweidimensionale (xy) Darstellung. Gerber hat sich als weit verbreitetes Austauschformat für Leiterplattendaten etabliert; mittlerweile enthält so gut wie jedes Programm zur Platinenentwicklung eine Exportmöglichkeit für Gerber, und so gut wie alle Firmen, die Leiterplatten herstellen, können diese Daten einlesen und verwerten.&lt;br /&gt;
&lt;br /&gt;
== Historisches ==&lt;br /&gt;
&lt;br /&gt;
Das heute gebräuchliche Format RS-274X (X für &amp;quot;extended&amp;quot;) hat einen Vorgänger RS-274D. Wobei RS274D tatsächlich ein Standard zur Steuerung von CNC-Maschinen war, von dem dann für die optischen Verfahren in der Platinenherstellung nur eine Teilmenge verwendet wurde. Der Hauptunterschied zwischen dem RS-274D und RS-274X ist, dass das alte RS-274D keine Informationen über die verwendeten Blenden enthält. Zu einem Gerber File gehörte also immer noch eine Blendendatei. Beim RS-274X ist diese Information (und andere, z.B. die über das Zahlenformat) im Gerberfile selber integriert. Für neue Entwicklung sollte KEIN altes RS-274D mehr verwendet werden, nur neueres RS-274X.&lt;br /&gt;
&lt;br /&gt;
Da früher Photoplotter für den Blendenwechsel drehbare Blendenrevolver hatten, die enteder 6 oder 12 verschiedene Blenden aufnehmen konnte, war die Anzahl der verwendeten Blenden in einem Design beschränkt, wollte man nicht zuviele zeitraubende und teure manuelle Blendenwechsel vornehmen. Das Problem bestand bei späteren Vektorplottern nicht mehr in dieser Form, da diese die Blenden in gewissen Bereichen frei emulieren konnten. Heutige Plotter arbeiten komplett anders, so das die Daten auch anders aufbereitet werden müssen. Das Format der Gerberdateien hat sich als praktisches Austauschformat allerdings erhalten, auch wenn es jetzt nur noch so darstellt, als ob die Daten einen Photoplotter steuern würde. &lt;br /&gt;
&lt;br /&gt;
Entwickelt wurde das Gerber Fileformat von Gerber-Scientific. Später pflegte Barco und jetzt Ucamco die Spezifikationen dieses Formates. &lt;br /&gt;
&lt;br /&gt;
Auch heute ist das Gerber Format noch nicht komplett, weil durch den technischen Fortschritt immer neue Möglichkeiten entstehen, über die das jeweilige aktuelle Gerberformat keine Angaben enthalten kann. Es enthält z.B. keine Angaben über den Lagenaufbau. Solche Informationen müssen dem Fertiger daher in begleitenden Texten oder Zeichnungen übergeben werden.  Um diese Problem anzugehen, veröffentlicht Ucamco einen [http://www.ucamco.com/downloads Vorschlag (und weiter: Extending the Gerber Format with Attributes)] der das Gerber-Dateiformat um Attribute erweitert. Ucamco lädt dazu ein, zu diesem Vorschlag Kommentare und Verbesserungsvorschläge einzureichen, bevor er formell in die Gerberformat Spezifikationen Eingang erhält.&lt;br /&gt;
&lt;br /&gt;
== Details der Formate ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
Wikipedia hat eine Beschreibung des [http://de.wikipedia.org/wiki/Gerber-Format Gerber-Formates]. Die Spezifikation und weitere Informationen findet sich [http://www.ucamco.com/downloads hier als &amp;quot;The Gerber File Format Specification&amp;quot;]. Eine [http://www.artwork.com/gerber/274x/rs274x.htm weitere Erläuterung] hat Steve DiBartolomeo geschrieben. Zu den Gerberdaten im weiteren Sinne zählen auch sog. &amp;quot;Drillfiles&amp;quot;, welche die Ansteuerdaten für die CNC-Platinenbohrmaschinen enthalten. Sie sind den Gerberfiles meist sehr ähnlich, auch wenn sie anderslautende Befehle haben. Weit verbreitet für diesen Zweck sind unter anderem Bohrautomaten der Firma Excellon, und so hat das Excellon-Fileformat eine recht weite Verbreitung gefunden. Eine Beschreibung des Excellon-Fileformates findet sich auf der Homepage von [http://www.excellon.com/manuals/program.htm Exellon]. Bohrdaten können aber auch im Gerberformat dargestellt werden. Sie bilden dann ein eigenes Gerberfile. Im allgemeinen sollten aus praktischen Gründen immer mehrere Bohrdateien pro Platine verwendet werden: Für durchkontaktierte (mit Innenverkupferung, &amp;quot;Via&amp;quot; genannt), und eins für nicht durchkontaktierte Bohrungen. Der Hintergrund ist, das die Bohrungen für durchkontaktierte und nicht durchkontaktierte Bohrungen in zwei unterschiedlichen Arbeitsschritten erfolgen müssen. Bei Multilayerplatinen kann es für manche Lagen weitere Drillfiles geben, je nachdem es sich um &amp;quot;blind&amp;quot; oder &amp;quot;buried&amp;quot; Vias handelt, für die naturgemäß Bohrungen nicht in allen Lagen vorhanden sind. Fräsungen (Für Platinenumrisse und Aussparungen) haben ein eigenes Gerberlayer, in denen die zu fräsenden Konturen eingezeichnet sind. Da Bohrungen ab 2mm Durchmesser gefräst werden können und ab 4mm Durchmesser gefräst werden sollten, besteht eventuell ein Freiraum, um bestimmte Fräsungen besser als Bohrung in ein Drillfile aufzunehemen oder bestimmte Bohrungen als Fräsung in die Fräslage aufzunehmen.&lt;br /&gt;
&lt;br /&gt;
=== Struktur des Formates ===&lt;br /&gt;
&lt;br /&gt;
Jede Kupferlage, aber auch Lötpasten- und Kleberschablone, Lötstopplack, Beschriftung etc. hat seine eigene Gerberdatei. Wenn vorhanden, getrennt nach Vorder- und Rückseite. Die Datei beginnt mit einem Header, im dem Allgemeines, wie das Einheitensystem (Inch oder mm), die Zahlendarstellung (Nullen unterdrückt, Stellen vor und nach dem Dezimaltrenner), und ob eine Lage gespiegelt oder positiv/negativ dargestellt wird. Eine Lötstoppmaske zum Beispiel enthält meist die gleichen Pads wie die korrespondierende Kupferlage, allerdings etwas größer. Die Darstellung erfolgt aber im Gegensatz zur Kupferlage, wo die Pads &amp;quot;Inseln&amp;quot; sind, negativ, was &amp;quot;Löcher&amp;quot; in der die ganze Platine bedeckenden Lötstoppschicht bedeutet. Es folgt eine Blendentabelle. Hierbei wird eine Anzahl von Blenden in Form und Größe definiert. Daran anschliessend Zeilen mit X- und Y-Koordinaten, die entweder mit geschlossener (nur Positionswechsel) oder offener Blende (&amp;quot;Draw&amp;quot;, es wird ein &amp;quot;Strich&amp;quot; gezogen, die Blendenanweisung definiert seine Breite), angefahren werden. Es gibt auch Positionen, die mit geschlossener Blende angefahren werden, und wo am Zielort die Blende kurz geöffnet wird (&amp;quot;Blinks&amp;quot; oder &amp;quot;Flashes&amp;quot;). Diese werden verwendet, um speziell Pads darzustellen. Die Form und Größe der Blende bestimmt hierbei die Form und Größe des erzeugten Pads. Leiterbahnstücke gleicher Form werden nicht als Blink, sondern als Draw mit gleichem Anfangs und Endpunkt (&amp;quot;Null-Länge&amp;quot;) dargestellt. Diese konsequente Trennung von Pads als Blink und Leiterbahnen als Draw ermöglicht es, leichter Änderungen an den Pads vornehmen zu können, in dem man dem Pad eine andere Blendendefinition zuweist. Das gilt auch für mit dem Pad im Zusamenhang zusehenden Blinks für Lötstoppmasken und besonders Pasten- und Klebstoffmasken, die oft vom Bestücker für seinen individuellen Herstellungsprozess angepasst werden müssen. Das Gerberformat enthält auch Anweisungsmöglichkeiten für Skalierung, Makros, Polygone, Drehungen, Kreise u. Kreissegmente, Kommentare etc. Große Flächen werden entweder durch einen Flächenbefehl als Polygon definiert, oder aber durch viele Striche emuliert (&amp;quot;stroke fill&amp;quot;). Die Dateiendung ist nicht einheitlich. Üblich ist es, alle Gerber Dateien mit .gbr, .ger oder .gerber enden zu lassen, und den speziellen Zweck im Dateinahmen unterzubringen (Beispiel: &amp;quot;PlatineProjektname-CopperTop.gbr&amp;quot;), oder aber spezielle Endungen für die jeweilige Gerberlage entsprechend ihrer Verwendung zu benutzen. Ein spezielles System existiert hierbei nicht, jedes Programm handhabt diese auf seine Weise. Eine sehr alte Tradition aus DOS-Zeiten (vermutlich Orcad) ist aber:&lt;br /&gt;
*.BOT  Kupferflaechen Loetseite&lt;br /&gt;
*.drl  Bohrfile (&amp;quot;Drill Rack&amp;quot;, Bohrerliste)&lt;br /&gt;
*.drd  Excellon-Bohrdaten (es müssen aber zwei Bohrdatenlisten existieren. Einmal für durchkontaktierte und einmal für nicht durckontaktierte Bohrungen, weil die Löcher dafür in unterschiedlichen Bearbeitungsstufen gebohrt werden müssen)&lt;br /&gt;
*.dri  Bohrinfo (Statistik über Bohrungen, Bohrerliste)&lt;br /&gt;
*.mnt  Pick and Place Bauteilseite (nur SMD)&lt;br /&gt;
*.mnb  Pick and Place Loetseite (nur SMD, bei Bauteilen auf beiden Seiten)&lt;br /&gt;
*.SMB  Loetstoppmaske Loetseite (Solder Mask Bottom)&lt;br /&gt;
*.SMT  Loetstoppmaske Bestueckungsseite (Solder Mask Top)&lt;br /&gt;
*.SST  Bestueckungsplan Bauteilseite (Silk Screen Top)&lt;br /&gt;
*.SSB  Bestückungsplan Loetseite (Silk Screen Bottom)&lt;br /&gt;
*.TOP  Kupferflaechen Bestueckungsseite&lt;br /&gt;
*.CRT  Lötpastenmaske Bestueckungsseite (Cream Top)&lt;br /&gt;
*.CRB  Lötpastenmaske Lötseite (Cream Bottom)&lt;br /&gt;
*.GLT  Klebermaske Bestueckungsseite (Glue Top)&lt;br /&gt;
*.GLB  Klebermaske Loetseite (Glue Bottom)&lt;br /&gt;
*.KOT  Keepout Bestueckungsseite &lt;br /&gt;
*.KOB  Keepout Loetseite&lt;br /&gt;
*.OUT  Outline&lt;br /&gt;
&lt;br /&gt;
andere Endungen:&lt;br /&gt;
*.NCD  Drillfile&lt;br /&gt;
*.TOL  Toolfile&lt;br /&gt;
*.TC   Drillcounter&lt;br /&gt;
&lt;br /&gt;
Vorschläge für alternative Dateiendungssysteme finden sich im einschlägigen [http://de.wikipedia.org/wiki/Gerber-Format Wikipedia Artikel].&lt;br /&gt;
&lt;br /&gt;
== Tipps ==&lt;br /&gt;
&lt;br /&gt;
*Wenn man Gerber- und Drillfiles erstellt, verwenden man am besten für beide ein einheitliches Zahlenformat, sofern das Layoutprogramm dazu eine Wahl lässt. Richten Sie sich dabei in erster Linie an den Bohrdaten aus, da diese der Dreh und Angelpunkt der Toleranzen sind.&lt;br /&gt;
*Den Nullpunkt der Koordinaten legt man dabei idealerweise nach unten links, falls das Layoutprogram dazu eine Wahl lässt.&lt;br /&gt;
*Man sollte nach Möglichkeit nur noch Gerber RS-274X (&amp;quot;Extended Gerber&amp;quot;) verwenden.   &lt;br /&gt;
*Als standardmäßige Formateinstellung für Gerberdaten empfielt sich dabei 3.3 metrisch. Hintergrund: Die IPC Spezifikation empfiehlt, die höchste Auflösung zu verwenden.&lt;br /&gt;
*Man verwendet nach Möglichkeit kein &amp;quot;Stroke fill&amp;quot; für Kupferflächen, sondern einen Polygon-Befehl. Leider lässt das nicht jedes Programm zu. Eine Begründung für die Vermeidung findet sich hier unter [http://www.ucamco.com/downloads &amp;quot;Painting considered harmful&amp;quot;].&lt;br /&gt;
* Für Pads gilt ähnliches in noch verschärfterer Form: Pads sollten nach möglichkeit immer &amp;quot;Blinks&amp;quot; sein. Allerdings ist das bei exotischren Padformen nicht so ohne weiteres möglich.&lt;br /&gt;
* Alle Lagen &amp;quot;in normaler&amp;quot; Ansicht ausgeben. D.h. so, wie man sie sehen würde, wenn man mit einem Röntgenblick von der Bauteilseite durch die Platine schauen würde. Schriften auf der Unterseite die im fertigen Objekt normal lesbar sein sollen, erscheinen dabei gespiegelt.&lt;br /&gt;
* Eine Platinenbeschreibung in einem allgemein lesbaren Format (z.B. PDF oder TXT, &#039;&#039;&#039;nicht&#039;&#039;&#039; die obskuren Formate irgendwelcher Textverarbeitungssysteme) dabeilegen. Ausser Informationen über Lagenaufbau und Abmessungen sollte diese Beschreibung eine Liste aller Gerber- und Bohrfiles enthalten, mit einer &#039;&#039;&#039;expliziten Nennung&#039;&#039;&#039; der Lage, für die sie gedacht sind. Das gilt besonders für Innenlagen, die nicht nur einfach durchnummeriert sein sollten, sondern es sollte &#039;&#039;&#039;explizit&#039;&#039;&#039; angegeben werden, in welcher Position sich die &amp;quot;Nummer&amp;quot; zur Ober- oder Unterseite befindet. Bei einem vierlagigen Aufbau ist es sonst nicht eindeutig klar, das &amp;quot;Layer 1&amp;quot; die Lage direkt unter der Oberseitenlage ist.&lt;br /&gt;
* Die Lagen sollten nicht gespiegelt sein.&lt;br /&gt;
* Kupferlagen sollten nicht komplett negativ sein, auch wenn sie negative Teile enthalten. Aber Lötstoppmaske, Lotpastenmaske und Klebstoffmaske schon.&lt;br /&gt;
* Die Lagen sollten keinen Versatz gegeneinander haben.&lt;br /&gt;
* Es sollte eine Konturlage existieren, die alle (Aussen-) Konturen der Platine enthält.&lt;br /&gt;
* Für durchkontaktierte und nicht durchkontaktierte Bohrungen sollten separate Bohrfiles existieren. Diese sind dann aber im [http://en.wikipedia.org/wiki/Excellon_format Excelon-Format] und nicht Gerber. Bei Multilayer Aufbauten sind für jeden separaten Bohrvorgang separate Borfiles nötig (Achtung bei blind und buried Vias). Ist, wegen irgendeiner Besonderheit der speziellen Platine, ein sonst üblicher Bohrvorgang nicht vorhanden, so sollte das auch &#039;&#039;&#039;explizit&#039;&#039;&#039; im begleitenden Text vermerkt werden.&lt;br /&gt;
* Ein konkreter Fall mit Fragen zur Erstellung von Gerberdaten (aus Target, gilt aber allgemein) findet sich [http://www.mikrocontroller.net/topic/319625#new hier].&lt;br /&gt;
&lt;br /&gt;
== Alternativen zu Gerber ==&lt;br /&gt;
&lt;br /&gt;
Viele Leiterplattenhersteller aktzeptieren auch die direkten Entwicklungsdaten für die meisten weitverbreiteten Leiterplattenlayout Programme. Insbesondere gilt das für Eagle, Kicad, Target, Altium und Orcad. Es empfielt sich darum, den gewünschten Leiterplattenhersteller nach den Formaten, die er verarbeiten kann, zu fragen. Allerdings gibt man in diesem Falle wesentlich mehr Daten heraus, als für eine Produktion nötig ist. Insofern kann das als Sicherheitsrisiko gesehen werden, was aber für Amateure eher nebensächlich sein dürfte.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres, wesentlich schwerwiegenderes, Risiko liegt aber darin, das die CAD-Systemdaten wesentlich interpretierfähiger als die Gerberdaten sind, was zu fatalen Missverständnissen führen kann.&lt;br /&gt;
&lt;br /&gt;
Für die Produktion müssen die Daten aber auf jeden Fall vom Leiterplattenhersteller speziell für seine Anlagen aufbereitet werden. Darum, und um eine Kompatibilität mit den Daten anderer CAD-Systeme zu erhalten, werden die Daten dann im allgemeinen doch in das Gerberformat umgewandelt, da Gerber als Austauschformat den kleinsten gemeinsamen Nenner darstellt. Weil Gerber für den Austausch am weitesten verbreitet ist, haben die Leiterplattenhersteller darin auch oft die meiste Erfahrung und meiste Übung und oft feststehende Vorgehensweisen im Sinne der Qalitätssicherung.&lt;br /&gt;
&lt;br /&gt;
Daher ist es angeraten, seine Daten im Gerberformat bei den Leiterplattenherstellern einzureichen.&lt;br /&gt;
&lt;br /&gt;
Eine Diskussion zum Thema &amp;quot;CAD-Dateien statt Gerber&amp;quot; findet sich [http://www.mikrocontroller.net/topic/319065#new hier im Forum].&lt;br /&gt;
&lt;br /&gt;
Als direktes alternatives Dateiformat zu Gerber wäre ODB++ zu nennen, welches aber proprietär von Valor ist. Eine Diskussion zum Thema &amp;quot;ODB++ statt Gerber&amp;quot; findet sich [http://www.mikrocontroller.net/topic/320716#new hier im Forum]. Desweiteren entwickelte [http://www.ipc.org/de/default.aspx der IPC] mit [http://ipc-2581.com/ IPC-2581] ein XML basiertes Format, das sich bisher aber kaum verbreiten konnte. Es gibt wohl neuere Ansätze, IPC-2581 und Gerber aneinander anzugleichen. Auch dazu veröffentlichte Ucamco einen [http://www.ucamco.com/downloads Vorschlag (Und weiter: IPC-2581 meets the Gerber File Format)] der das Gerber-Dateiformat um Angaben z.b. zum Lagenaufbau erweitert.&lt;br /&gt;
&lt;br /&gt;
Ein [http://www.ilfa.de/Publikationen Plädoyer für Gerber (unter &amp;quot;Datenformate: Gerber&amp;quot;)] hält auch A.Wiemers.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich zählt das Gerberformat zu den Vektorgrafikformaten. Daher ist hypothetisch auch z.B. [http://de.wikipedia.org/wiki/SVG das SVG-Format] geeignet, um Platinendaten zu transportieren und zu manipulieren. Allerdings ist das bisher nicht üblich, und u.U. riskant, weil eine identische Darstellung in verschiedenen Programmen aufgrund der Komplexität von SVG nicht immer gewährleistet ist.&lt;br /&gt;
&lt;br /&gt;
== Gerber Tools == &lt;br /&gt;
&lt;br /&gt;
* [http://www.GerberLogix.com GerberLogix]: Einfach zu bedienender Extended Gerber Viewer. Weitere Formate sind Excellon 1/2. Highlight ist die Automatische Bemaßung von Leiterbahnen. Für Hobbyisten Kostenlos.&lt;br /&gt;
&lt;br /&gt;
* [http://www.PCB-Investigator.com PCB-Investigator]: Umfangreiche Funktionalität zum vergleichen verschiedenster Leiterplatten Daten. Wandelt alle Daten auch in 3D um. ODB++, IPC 2581, GenCAD und Gerber Daten. &lt;br /&gt;
&lt;br /&gt;
* [http://ruggedcircuits.com/gerbmerge/ Gerbmerge]: Ein unter Python geschriebenes Tool, mit denen einzelne Platinen zu größeren Nutzen zusammengefügt werden können. Freeware. &lt;br /&gt;
&lt;br /&gt;
* [http://www.graphicode.com/GC-Prevue_Gerber_Viewer gc-preview]: Ein Programm, um Gerberdaten ansehen und drucken zu können. Freeware.&lt;br /&gt;
&lt;br /&gt;
* Die Firma Graphicode bietet auch noch andere, im allgemeinen kostenpflichtige Software an, mit der diverse Plotter- und Platinenformate, u.a. auch Gerberdaten, ineinander überführt werden können, wie z.B. [http://www.graphicode.com/products/cam GC-CAM-Edit].&lt;br /&gt;
&lt;br /&gt;
* [http://www.softwarecompanions.com/gerbview.html GerbView (1)]: Ein Programm, das in der Lage ist, verschiedene Platinen- und Plotterformate, darunter eben auch Gerberdaten, zu sichten, ineinander zu convertieren, zu markieren und zu drucken. 30 Tage Testversion. &lt;br /&gt;
&lt;br /&gt;
* [http://iut-tice.ujf-grenoble.fr/kicad/ GerbView (2)]: Ebenfalls unter dem Namen GerbView existiert ein anderer Gerberviewer als Bestandteil von [[KiCAD]]. Dieser erlaubt das Betrachten der Gerberfiles und den Export als Platine in PCBnew, welches ebenfals Bestandteil von KiCAD ist. Unter KiCAD/PCBnew kann diese Platine dann manipuliert, verändert und wieder als Gerberfile exportiert werden. Allerdings können so nur Gerber-RS274X Daten eingelesen und exportiert werden. Blinks werden aber beim Reimport als Durchkontaktierung dargestellt. Insgesammt ist dieses Feature ziemlich &amp;quot;buggy&amp;quot; und unperfekt. Letzteres ist aber aus grundsätzlichen Erwägungen heraus auch schwer zu ändern. Siehe: http://www.mikrocontroller.net/topic/263576#2739329&lt;br /&gt;
&lt;br /&gt;
* [http://gerbv.gpleda.org/index.html Gerbv]: Ebenfalls ein Open Source Gerberviewer. Er gehört zum gEDA Projekt. Funktioniert hervorragend und hat viele Features. Verarbeitet RS-274-X und Excellon-Bohrdaten, jedoch kein RS-274 (Standard-Gerber). Dieser Gerberviewer ermöglicht auch das Löschen einzelner Strukturen und das Umskalieren, Verschieben, Spiegeln und Drehen der gesamten Gerberdatei. Gespeichert wird nur Extendet Gerber. &lt;br /&gt;
&lt;br /&gt;
* [http://www.pentalogix.com ViewMate]: ist eine professionelle CAM-Software, die als Viewer kostenlos abgegeben wird. Die Funktionen zum Ändern und Speichern sind gesperrt, aber zum Überprüfen der Ausgabedaten hervorragend geeignet (auch Bohrdaten). Dies kostenlose Version läuft auch recht gut unter wine (Debian squeeze). &lt;br /&gt;
&lt;br /&gt;
* [http://www.mentor.com/products/pcb-system-design/downloads/odb-viewer VUV]: ODB++ Viewer, der von der Firma Valor, jetzt von Mentor übernommen, kostenlos abgegeben wird.&lt;br /&gt;
&lt;br /&gt;
* [http://www.cenon.info/ Cenon]: Cenon ist eine Open Source Software um speziell Vektorgrafiken zu betrachten, zu manipulieren und zu konvertieren. Das Gerberformat ist grundsätzlich als Vektorgrafikformat anzusehen. Cenon kann auch Standard und extendet Gerber einlesen, und als extendet Gerber wieder abspeichern. Es können einzelne Strukturen in Gerber selektiert, kopiert, gelöscht, verschoben, gedreht und eingefügt werden. Ebenso können Mehrfachnutzen erstellt werden. Es kann auch in oder aus anderen Vektorformaten wie PDF, PS, HPGL, DXF konvertiert werden. Die Bedienung des Programmes ist manchmal sehr pfiffig, aber leider meistens sehr gewöhnungsbedürftig. Es ist z.B. unbedingt darauf zu achten, das die Dateien adäquate Endungen haben, als Gerber lässt Cenon nur .ger und .gerber zu. Bei der Zusammenarbeit mit anderen Programmen ist es daher leider oft nötig, die Dateien ständig umzubenennen. Unter Debian Squeeze existiert ein Cenon Package. Leider müssen z.Z. (17. Nov. 2011) nach der Installation noch die GNUstep Librarys manuell von /usr/lib/GNUstep/Library nach /usr/lib/GNUstep/Cenon oder /usr/local/lib/GNUstep/Cenon kopiert werden. Es ist dringend anzuraten, die  [http://www.cenon.info/frameLoad_de.html?support_faq_de.html Cenon FAQ] und das [http://www.vhf-group.com/vhf-interservice/download/doc/Cenon_de.pdf Cenon Handbuch] zu lesen.&lt;br /&gt;
&lt;br /&gt;
* [[Media:PyGerberAnalyse_B5_13Jun2013.zip]] Absolut primitives Programm zur Gerber-Daten Analyse. Test-Status. Geschrieben in Python3. Kann Gerber247d und Gerber247x einlesen und teilweise analysieren und die Analyse als Datei abspeichern, aber keine Makros darin. Kann auch Drill Files einlesen. Kann Gerber- oder Drill-Files in rudimentärer Form anzeigen (z.B. OHNE Aperturen, kein Maßstab, ist somit für fast nichts zu gebrauchen). Das Programm besteht aus den drei Teilen PyGerbAnalyse_B5_13Jun2013.py, ClassDefBasicAnalysisResults_13Jun2013.py und ClassDefGerberLayer_13Jun2013.py. Gestartet wird nur PyGerbAnalyse_B5_13Jun2013.py, die anderen beiden Python Files enthalten Klassendefinitionen. Steht unter GNU-GPL. Autor Bernd Wiebus. KEINE GARANTIE! Testberichte, Hinweise, Informationen und Anregungen sowie dringend benötigte Testdateien mit normalen und exotischen, auch älteren, Gerberformaten von unterschiedlichen Layoutprogrammen bitte an bernd.wiebus@gmx.de senden. DANKE im Voraus dazu! Es ist eine Python3 Version des unter dem BASIC-Dialekt Gambas2 geschriebenen ebenso primitiven Viewers, der unter [[Media:GerbAnalyse_RevA6.zip]] zu bekommen ist. Python3 ist unter Linux bei den meisten Distributionen als Packet installierbar. Windows User könnten vieleicht Möglichkeiten in dieser Diskussion finden: http://www.mikrocontroller.net/topic/280970#new&lt;br /&gt;
&lt;br /&gt;
* [http://www.gerber-viewer.com/ gerber-viewer.com]: Für die schnelle Kontrolle von Gerberdaten eignet sich auch ein online Viewer. Einfach Zip-Archiv oder Gerberdaten auswählen, uploaden und online begutachten. Datensicherheit beachten! Gerberdaten werden dabei herausgegeben!&lt;br /&gt;
&lt;br /&gt;
* [http://www.numericalinnovations.com/collections/fab-3000-gerber-cam?gclid=CLj1-_GW6LsCFclQ3godr3sASQ FAB 3000 V7]: Ein Gerberviewer und Editor von Numerical Innovations. Es existiert auch eine Trial Version.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/aitjcize/QCamber QCamber] Relativ neue Software, über die noch wenig bekannt ist.&lt;br /&gt;
&lt;br /&gt;
* [http://caram.cl/software/flatcam/ FlatCAM] Diese Software erstellt aus Gerberdaten Bohrdaten und G-Code um den Platinenumriss (mit Haltestegen) freizufräsen, oder auch zum &amp;quot;Konturfräsewn&amp;quot;. Beim &amp;quot;Konturfräsen&amp;quot; wird eine Leiterplatte nicht geätzt, sondern gefräst. Naturgemäß geht letzteres nur sinnvoll für Einzelstücke oder Kleinserien, und auch nur für relativ grobe Layouts. Desweiteren kann auf diesem Wege auch G-Code zum Fräsen bzw. Gravieren von Frontplatten o.ä. erzeugt werden, wenn man die Strukturen in einem Layoutprogramm passend anlegt, als Gerberdaten exportiert und dann mit dieser Software bearbeitet. Siehe http://www.mikrocontroller.net/topic/338193#3717135.&lt;br /&gt;
&lt;br /&gt;
* [http://www.zofzpcb.com ZofzPCB] Ein Gerber Viewer. Kann u.A. Gerber Daten in 3D Rendern. Freeware. Läuft aber z.Z. (Oktober 2014) nur unter Windows. Siehe: http://www.mikrocontroller.net/topic/346675#new&lt;br /&gt;
&lt;br /&gt;
== Siehe auch == &lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/293100#new Forumsbeitrag]: Gerber Daten: wie erkenne ich, ob Bohrung metallisiert ist?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/311780#new Forumsbeitrag]: Gerberdatei für Lötstoppmaske&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/311426#new Forumsbeitrag]: Ein Klassiker - Gerberdaten und Blendendatei - RS274D vs. RS274X&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/310333#new Forumsbeitrag]: Kicad: Bohrdatei&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/309923#new Forumsbeitrag]: Gerbv Layoutkontrolle fehlerhafte Anzeige/ Ergebnisse?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/309765#new Forumsbeitrag]: Bohrdatei für fertige Leiterplatte&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/303326#new Forumsbeitrag]: gerber Preview gcprevue welche Version empfehlenswert?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/298632#new Forumsbeitrag]: Gerber Daten für Board Cutout (Altium)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/307967#new Forumsbeitrag]: Kann mir wer Eagle zu Gerber exportieren&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/291090#new Forumsbeitrag]: Altium exportiert nicht korrekt in Gerber&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/262726#new Forumsbeitrag]: Gerber Daten (formate und Dateiendungen)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/255449#new Forumsbeitrag]: Eagle CAM-Job / Itead Studio - Fehler in Gerber Dateien?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/255129#new Forumsbeitrag]: Layout (Gerber) in Nutzen umwandeln - suche Tool&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/241858#new Forumsbeitrag]: EAGLE: Genauigkeit für Gerber-Dateien einstellen - wo? wie?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319065#new Forumsbeitrag]: CAD-Daten oder Gerberdaten herausgeben?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/320716#new Forumsbeitrag]: Diskussion über ODB++ als Alternative zu Gerber.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Schaltplaneditoren]]&lt;br /&gt;
[[Category:Platinen]]&lt;/div&gt;</summary>
		<author><name>193.254.108.90</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Gerber-Tools&amp;diff=85619</id>
		<title>Gerber-Tools</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Gerber-Tools&amp;diff=85619"/>
		<updated>2014-11-10T07:58:29Z</updated>

		<summary type="html">&lt;p&gt;193.254.108.90: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gerber-Tools sind Programme, die es erlauben die von fast allen [[Schaltplaneditoren|Platinenlayoutprogrammen]] erzeugbaren Gerberfiles zu betrachten, zu überprüfen und eventuell sogar zu manipulieren. Das beginnt mit Tools, die es erlauben die Platinen zu drehen und miteinander zu verbinden bzw. mehrere identische zu größeren Panelen (sog. Nutzen) zusammenzufügen, um sie rationeller fertigen zu können. Es hört auf mit Programmen die in der Lage sind, Leiterbahnen und Bohrlöcher zu verschieben und zu ändern. Es ist guter Stil, seine eigene Arbeit mit einem Gerber-Viewer zu überprüfen, der &#039;&#039;&#039;nicht&#039;&#039;&#039; zum System des Platinenlayoutprogrammes gehört, mit der man die Platinendaten erzeugt hat, allein um systematische Fehler zu minimieren.&lt;br /&gt;
&lt;br /&gt;
== Allgemeines ==&lt;br /&gt;
&lt;br /&gt;
Gerber Daten stellen alle Daten dar, die zur Fertigung einer Leiterplatte benötigt werden. Und eben auch nicht mehr. Also keine Informationen über Netze, Schaltpläne oder Details über Bauteile. Daher erlauben sie es, auch solche Informationen gegenüber dem Fertiger einer Leiterplatte geheim zu halten, im Gegensatz zur Herausgabe von Platinendaten (CAD Boarddateien) direkt aus dem Programm. Ferner ist das Format robust und kompakt. Es enthält alle Angaben, die zur Steuerung eines Photoplotters zur Erstellung von Filmen für die Leiterplattenbelichtung benötigt werden. Es ist eng mit dem &amp;quot;G-Code&amp;quot; für CNC-Drehbänke und Fräßmaschienen verwandt, beschränkt sich aber auf eine zweidimensionale (xy) Darstellung. Gerber hat sich als weit verbreitetes Austauschformat für Leiterplattendaten etabliert; mittlerweile enthält so gut wie jedes Programm zur Platinenentwicklung eine Exportmöglichkeit für Gerber, und so gut wie alle Firmen, die Leiterplatten herstellen, können diese Daten einlesen und verwerten.&lt;br /&gt;
&lt;br /&gt;
== Historisches ==&lt;br /&gt;
&lt;br /&gt;
Das heute gebräuchliche Format RS-274X (X für &amp;quot;extended&amp;quot;) hat einen Vorgänger RS-274D. Wobei RS274D tatsächlich ein Standard zur Steuerung von CNC-Maschinen war, von dem dann für die optischen Verfahren in der Platinenherstellung nur eine Teilmenge verwendet wurde. Der Hauptunterschied zwischen dem RS-274D und RS-274X ist, dass das alte RS-274D keine Informationen über die verwendeten Blenden enthält. Zu einem Gerber File gehörte also immer noch eine Blendendatei. Beim RS-274X ist diese Information (und andere, z.B. die über das Zahlenformat) im Gerberfile selber integriert. Für neue Entwicklung sollte KEIN altes RS-274D mehr verwendet werden, nur neueres RS-274X.&lt;br /&gt;
&lt;br /&gt;
Da früher Photoplotter für den Blendenwechsel drehbare Blendenrevolver hatten, die enteder 6 oder 12 verschiedene Blenden aufnehmen konnte, war die Anzahl der verwendeten Blenden in einem Design beschränkt, wollte man nicht zuviele zeitraubende und teure manuelle Blendenwechsel vornehmen. Das Problem bestand bei späteren Vektorplottern nicht mehr in dieser Form, da diese die Blenden in gewissen Bereichen frei emulieren konnten. Heutige Plotter arbeiten komplett anders, so das die Daten auch anders aufbereitet werden müssen. Das Format der Gerberdateien hat sich als praktisches Austauschformat allerdings erhalten, auch wenn es jetzt nur noch so darstellt, als ob die Daten einen Photoplotter steuern würde. &lt;br /&gt;
&lt;br /&gt;
Entwickelt wurde das Gerber Fileformat von Gerber-Scientific. Später pflegte Barco und jetzt Ucamco die Spezifikationen dieses Formates. &lt;br /&gt;
&lt;br /&gt;
Auch heute ist das Gerber Format noch nicht komplett, weil durch den technischen Fortschritt immer neue Möglichkeiten entstehen, über die das jeweilige aktuelle Gerberformat keine Angaben enthalten kann. Es enthält z.B. keine Angaben über den Lagenaufbau. Solche Informationen müssen dem Fertiger daher in begleitenden Texten oder Zeichnungen übergeben werden.  Um diese Problem anzugehen, veröffentlicht Ucamco einen [http://www.ucamco.com/downloads Vorschlag (und weiter: Extending the Gerber Format with Attributes)] der das Gerber-Dateiformat um Attribute erweitert. Ucamco lädt dazu ein, zu diesem Vorschlag Kommentare und Verbesserungsvorschläge einzureichen, bevor er formell in die Gerberformat Spezifikationen Eingang erhält.&lt;br /&gt;
&lt;br /&gt;
== Details der Formate ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
Wikipedia hat eine Beschreibung des [http://de.wikipedia.org/wiki/Gerber-Format Gerber-Formates]. Die Spezifikation und weitere Informationen findet sich [http://www.ucamco.com/downloads hier als &amp;quot;The Gerber File Format Specification&amp;quot;]. Eine [http://www.artwork.com/gerber/274x/rs274x.htm weitere Erläuterung] hat Steve DiBartolomeo geschrieben. Zu den Gerberdaten im weiteren Sinne zählen auch sog. &amp;quot;Drillfiles&amp;quot;, welche die Ansteuerdaten für die CNC-Platinenbohrmaschinen enthalten. Sie sind den Gerberfiles meist sehr ähnlich, auch wenn sie anderslautende Befehle haben. Weit verbreitet für diesen Zweck sind unter anderem Bohrautomaten der Firma Excellon, und so hat das Excellon-Fileformat eine recht weite Verbreitung gefunden. Eine Beschreibung des Excellon-Fileformates findet sich auf der Homepage von [http://www.excellon.com/manuals/program.htm Exellon]. Bohrdaten können aber auch im Gerberformat dargestellt werden. Sie bilden dann ein eigenes Gerberfile. Im allgemeinen sollten aus praktischen Gründen immer mehrere Bohrdateien pro Platine verwendet werden: Für durchkontaktierte (mit Innenverkupferung, &amp;quot;Via&amp;quot; genannt), und eins für nicht durchkontaktierte Bohrungen. Der Hintergrund ist, das die Bohrungen für durchkontaktierte und nicht durchkontaktierte Bohrungen in zwei unterschiedlichen Arbeitsschritten erfolgen müssen. Bei Multilayerplatinen kann es für manche Lagen weitere Drillfiles geben, je nachdem es sich um &amp;quot;blind&amp;quot; oder &amp;quot;buried&amp;quot; Vias handelt, für die naturgemäß Bohrungen nicht in allen Lagen vorhanden sind. Fräsungen (Für Platinenumrisse und Aussparungen) haben ein eigenes Gerberlayer, in denen die zu fräsenden Konturen eingezeichnet sind. Da Bohrungen ab 2mm Durchmesser gefräst werden können und ab 4mm Durchmesser gefräst werden sollten, besteht eventuell ein Freiraum, um bestimmte Fräsungen besser als Bohrung in ein Drillfile aufzunehemen oder bestimmte Bohrungen als Fräsung in die Fräslage aufzunehmen.&lt;br /&gt;
&lt;br /&gt;
=== Struktur des Formates ===&lt;br /&gt;
&lt;br /&gt;
Jede Kupferlage, aber auch Lötpasten- und Kleberschablone, Lötstopplack, Beschriftung etc. hat seine eigene Gerberdatei. Wenn vorhanden, getrennt nach Vorder- und Rückseite. Die Datei beginnt mit einem Header, im dem Allgemeines, wie das Einheitensystem (Inch oder mm), die Zahlendarstellung (Nullen unterdrückt, Stellen vor und nach dem Dezimaltrenner), und ob eine Lage gespiegelt oder positiv/negativ dargestellt wird. Eine Lötstoppmaske zum Beispiel enthält meist die gleichen Pads wie die korrespondierende Kupferlage, allerdings etwas größer. Die Darstellung erfolgt aber im Gegensatz zur Kupferlage, wo die Pads &amp;quot;Inseln&amp;quot; sind, negativ, was &amp;quot;Löcher&amp;quot; in der die ganze Platine bedeckenden Lötstoppschicht bedeutet. Es folgt eine Blendentabelle. Hierbei wird eine Anzahl von Blenden in Form und Größe definiert. Daran anschliessend Zeilen mit X- und Y-Koordinaten, die entweder mit geschlossener (nur Positionswechsel) oder offener Blende (&amp;quot;Draw&amp;quot;, es wird ein &amp;quot;Strich&amp;quot; gezogen, die Blendenanweisung definiert seine Breite), angefahren werden. Es gibt auch Positionen, die mit geschlossener Blende angefahren werden, und wo am Zielort die Blende kurz geöffnet wird (&amp;quot;Blinks&amp;quot; oder &amp;quot;Flashes&amp;quot;). Diese werden verwendet, um speziell Pads darzustellen. Die Form und Größe der Blende bestimmt hierbei die Form und Größe des erzeugten Pads. Leiterbahnstücke gleicher Form werden nicht als Blink, sondern als Draw mit gleichem Anfangs und Endpunkt (&amp;quot;Null-Länge&amp;quot;) dargestellt. Diese konsequente Trennung von Pads als Blink und Leiterbahnen als Draw ermöglicht es, leichter Änderungen an den Pads vornehmen zu können, in dem man dem Pad eine andere Blendendefinition zuweist. Das gilt auch für mit dem Pad im Zusamenhang zusehenden Blinks für Lötstoppmasken und besonders Pasten- und Klebstoffmasken, die oft vom Bestücker für seinen individuellen Herstellungsprozess angepasst werden müssen. Das Gerberformat enthält auch Anweisungsmöglichkeiten für Skalierung, Makros, Polygone, Drehungen, Kreise u. Kreissegmente, Kommentare etc. Große Flächen werden entweder durch einen Flächenbefehl als Polygon definiert, oder aber durch viele Striche emuliert (&amp;quot;stroke fill&amp;quot;). Die Dateiendung ist nicht einheitlich. Üblich ist es, alle Gerber Dateien mit .gbr, .ger oder .gerber enden zu lassen, und den speziellen Zweck im Dateinahmen unterzubringen (Beispiel: &amp;quot;PlatineProjektname-CopperTop.gbr&amp;quot;), oder aber spezielle Endungen für die jeweilige Gerberlage entsprechend ihrer Verwendung zu benutzen. Ein spezielles System existiert hierbei nicht, jedes Programm handhabt diese auf seine Weise. Eine sehr alte Tradition aus DOS-Zeiten (vermutlich Orcad) ist aber:&lt;br /&gt;
*.BOT  Kupferflaechen Loetseite&lt;br /&gt;
*.drl  Bohrfile (&amp;quot;Drill Rack&amp;quot;, Bohrerliste)&lt;br /&gt;
*.drd  Excellon-Bohrdaten (es müssen aber zwei Bohrdatenlisten existieren. Einmal für durchkontaktierte und einmal für nicht durckontaktierte Bohrungen, weil die Löcher dafür in unterschiedlichen Bearbeitungsstufen gebohrt werden müssen)&lt;br /&gt;
*.dri  Bohrinfo (Statistik über Bohrungen, Bohrerliste)&lt;br /&gt;
*.mnt  Pick and Place Bauteilseite (nur SMD)&lt;br /&gt;
*.mnb  Pick and Place Loetseite (nur SMD, bei Bauteilen auf beiden Seiten)&lt;br /&gt;
*.SMB  Loetstoppmaske Loetseite (Solder Mask Bottom)&lt;br /&gt;
*.SMT  Loetstoppmaske Bestueckungsseite (Solder Mask Top)&lt;br /&gt;
*.SST  Bestueckungsplan Bauteilseite (Silk Screen Top)&lt;br /&gt;
*.SSB  Bestückungsplan Loetseite (Silk Screen Bottom)&lt;br /&gt;
*.TOP  Kupferflaechen Bestueckungsseite&lt;br /&gt;
*.CRT  Lötpastenmaske Bestueckungsseite (Cream Top)&lt;br /&gt;
*.CRB  Lötpastenmaske Lötseite (Cream Bottom)&lt;br /&gt;
*.GLT  Klebermaske Bestueckungsseite (Glue Top)&lt;br /&gt;
*.GLB  Klebermaske Loetseite (Glue Bottom)&lt;br /&gt;
*.KOT  Keepout Bestueckungsseite &lt;br /&gt;
*.KOB  Keepout Loetseite&lt;br /&gt;
*.OUT  Outline&lt;br /&gt;
&lt;br /&gt;
andere Endungen:&lt;br /&gt;
*.NCD  Drillfile&lt;br /&gt;
*.TOL  Toolfile&lt;br /&gt;
*.TC   Drillcounter&lt;br /&gt;
&lt;br /&gt;
Vorschläge für alternative Dateiendungssysteme finden sich im einschlägigen [http://de.wikipedia.org/wiki/Gerber-Format Wikipedia Artikel].&lt;br /&gt;
&lt;br /&gt;
== Tipps ==&lt;br /&gt;
&lt;br /&gt;
*Wenn man Gerber- und Drillfiles erstellt, verwenden man am besten für beide ein einheitliches Zahlenformat, sofern das Layoutprogramm dazu eine Wahl lässt. Richten Sie sich dabei in erster Linie an den Bohrdaten aus, da diese der Dreh und Angelpunkt der Toleranzen sind.&lt;br /&gt;
*Den Nullpunkt der Koordinaten legt man dabei idealerweise nach unten links, falls das Layoutprogram dazu eine Wahl lässt.&lt;br /&gt;
*Man sollte nach Möglichkeit nur noch Gerber RS-274X (&amp;quot;Extended Gerber&amp;quot;) verwenden.   &lt;br /&gt;
*Als standardmäßige Formateinstellung für Gerberdaten empfielt sich dabei 3.3 metrisch. Hintergrund: Die IPC Spezifikation empfiehlt, die höchste Auflösung zu verwenden.&lt;br /&gt;
*Man verwendet nach Möglichkeit kein &amp;quot;Stroke fill&amp;quot; für Kupferflächen, sondern einen Polygon-Befehl. Leider lässt das nicht jedes Programm zu. Eine Begründung für die Vermeidung findet sich hier unter [http://www.ucamco.com/downloads &amp;quot;Painting considered harmful&amp;quot;].&lt;br /&gt;
* Für Pads gilt ähnliches in noch verschärfterer Form: Pads sollten nach möglichkeit immer &amp;quot;Blinks&amp;quot; sein. Allerdings ist das bei exotischren Padformen nicht so ohne weiteres möglich.&lt;br /&gt;
* Alle Lagen &amp;quot;in normaler&amp;quot; Ansicht ausgeben. D.h. so, wie man sie sehen würde, wenn man mit einem Röntgenblick von der Bauteilseite durch die Platine schauen würde. Schriften auf der Unterseite die im fertigen Objekt normal lesbar sein sollen, erscheinen dabei gespiegelt.&lt;br /&gt;
* Eine Platinenbeschreibung in einem allgemein lesbaren Format (z.B. PDF oder TXT, &#039;&#039;&#039;nicht&#039;&#039;&#039; die obskuren Formate irgendwelcher Textverarbeitungssysteme) dabeilegen. Ausser Informationen über Lagenaufbau und die Abmessungen solte diese Beschreibung eine Liste aller Gerber- und Bohrfiles enthalten, mit einer &#039;&#039;&#039;expliziten Nennung&#039;&#039;&#039; der Lage, für die sie gedacht sind. Das gilt besonders für Innenlagen, die nicht nur einfach durchnummeriert sein sollten, sondern es sollte &#039;&#039;&#039;explizit&#039;&#039;&#039; angegeben werden, in welcher Position sich die &amp;quot;Nummer&amp;quot; zur Ober- oder Unterseite befindet. Bei einem vierlagigen Aufbau ist es sonst nicht eindeutig klar, das &amp;quot;Layer 1&amp;quot; die Lage direkt unter der Oberseitenlage ist.&lt;br /&gt;
* Die Lagen sollten nicht gespiegelt sein.&lt;br /&gt;
* Kupferlagen sollten nicht komplett negativ sein, auch wenn sie negative Teile enthalten. Aber Lötstoppmaske, Lotpastenmaske und Klebstoffmaske schon.&lt;br /&gt;
* Die Lagen sollten keinen Versatz gegeneinander haben.&lt;br /&gt;
* Es sollte eine Konturlage existieren, die alle (Aussen-) Konturen der Platine enthält.&lt;br /&gt;
* Für durchkontaktierte und nicht durchkontaktierte Bohrungen sollten separate Bohrfiles existieren. Diese sind dann aber im [http://en.wikipedia.org/wiki/Excellon_format Excelon-Format] und nicht Gerber. Bei Multilayer Aufbauten sind für jeden separaten Bohrvorgang separate Borfiles nötig (Achtung bei blind und buried Vias). Ist, wegen irgendeiner Besonderheit der speziellen Platine, ein sonst üblicher Bohrvorgang nicht vorhanden, so sollte das auch &#039;&#039;&#039;explizit&#039;&#039;&#039; im begleitenden Text vermerkt werden.&lt;br /&gt;
* Ein konkreter Fall mit Fragen zur Erstellung von Gerberdaten (aus Target, gilt aber allgemein) findet sich [http://www.mikrocontroller.net/topic/319625#new hier].&lt;br /&gt;
&lt;br /&gt;
== Alternativen zu Gerber ==&lt;br /&gt;
&lt;br /&gt;
Viele Leiterplattenhersteller aktzeptieren auch die direkten Entwicklungsdaten für die meisten weitverbreiteten Leiterplattenlayout Programme. Insbesondere gilt das für Eagle, Kicad, Target, Altium und Orcad. Es empfielt sich darum, den gewünschten Leiterplattenhersteller nach den Formaten, die er verarbeiten kann, zu fragen. Allerdings gibt man in diesem Falle wesentlich mehr Daten heraus, als für eine Produktion nötig ist. Insofern kann das als Sicherheitsrisiko gesehen werden, was aber für Amateure eher nebensächlich sein dürfte.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres, wesentlich schwerwiegenderes, Risiko liegt aber darin, das die CAD-Systemdaten wesentlich interpretierfähiger als die Gerberdaten sind, was zu fatalen Missverständnissen führen kann.&lt;br /&gt;
&lt;br /&gt;
Für die Produktion müssen die Daten aber auf jeden Fall vom Leiterplattenhersteller speziell für seine Anlagen aufbereitet werden. Darum, und um eine Kompatibilität mit den Daten anderer CAD-Systeme zu erhalten, werden die Daten dann im allgemeinen doch in das Gerberformat umgewandelt, da Gerber als Austauschformat den kleinsten gemeinsamen Nenner darstellt. Weil Gerber für den Austausch am weitesten verbreitet ist, haben die Leiterplattenhersteller darin auch oft die meiste Erfahrung und meiste Übung und oft feststehende Vorgehensweisen im Sinne der Qalitätssicherung.&lt;br /&gt;
&lt;br /&gt;
Daher ist es angeraten, seine Daten im Gerberformat bei den Leiterplattenherstellern einzureichen.&lt;br /&gt;
&lt;br /&gt;
Eine Diskussion zum Thema &amp;quot;CAD-Dateien statt Gerber&amp;quot; findet sich [http://www.mikrocontroller.net/topic/319065#new hier im Forum].&lt;br /&gt;
&lt;br /&gt;
Als direktes alternatives Dateiformat zu Gerber wäre ODB++ zu nennen, welches aber proprietär von Valor ist. Eine Diskussion zum Thema &amp;quot;ODB++ statt Gerber&amp;quot; findet sich [http://www.mikrocontroller.net/topic/320716#new hier im Forum]. Desweiteren entwickelte [http://www.ipc.org/de/default.aspx der IPC] mit [http://ipc-2581.com/ IPC-2581] ein XML basiertes Format, das sich bisher aber kaum verbreiten konnte. Es gibt wohl neuere Ansätze, IPC-2581 und Gerber aneinander anzugleichen. Auch dazu veröffentlichte Ucamco einen [http://www.ucamco.com/downloads Vorschlag (Und weiter: IPC-2581 meets the Gerber File Format)] der das Gerber-Dateiformat um Angaben z.b. zum Lagenaufbau erweitert.&lt;br /&gt;
&lt;br /&gt;
Ein [http://www.ilfa.de/Publikationen Plädoyer für Gerber (unter &amp;quot;Datenformate: Gerber&amp;quot;)] hält auch A.Wiemers.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich zählt das Gerberformat zu den Vektorgrafikformaten. Daher ist hypothetisch auch z.B. [http://de.wikipedia.org/wiki/SVG das SVG-Format] geeignet, um Platinendaten zu transportieren und zu manipulieren. Allerdings ist das bisher nicht üblich, und u.U. riskant, weil eine identische Darstellung in verschiedenen Programmen aufgrund der Komplexität von SVG nicht immer gewährleistet ist.&lt;br /&gt;
&lt;br /&gt;
== Gerber Tools == &lt;br /&gt;
&lt;br /&gt;
* [http://www.GerberLogix.com GerberLogix]: Einfach zu bedienender Extended Gerber Viewer. Weitere Formate sind Excellon 1/2. Highlight ist die Automatische Bemaßung von Leiterbahnen. Für Hobbyisten Kostenlos.&lt;br /&gt;
&lt;br /&gt;
* [http://www.PCB-Investigator.com PCB-Investigator]: Umfangreiche Funktionalität zum vergleichen verschiedenster Leiterplatten Daten. Wandelt alle Daten auch in 3D um. ODB++, IPC 2581, GenCAD und Gerber Daten. &lt;br /&gt;
&lt;br /&gt;
* [http://ruggedcircuits.com/gerbmerge/ Gerbmerge]: Ein unter Python geschriebenes Tool, mit denen einzelne Platinen zu größeren Nutzen zusammengefügt werden können. Freeware. &lt;br /&gt;
&lt;br /&gt;
* [http://www.graphicode.com/GC-Prevue_Gerber_Viewer gc-preview]: Ein Programm, um Gerberdaten ansehen und drucken zu können. Freeware.&lt;br /&gt;
&lt;br /&gt;
* Die Firma Graphicode bietet auch noch andere, im allgemeinen kostenpflichtige Software an, mit der diverse Plotter- und Platinenformate, u.a. auch Gerberdaten, ineinander überführt werden können, wie z.B. [http://www.graphicode.com/products/cam GC-CAM-Edit].&lt;br /&gt;
&lt;br /&gt;
* [http://www.softwarecompanions.com/gerbview.html GerbView (1)]: Ein Programm, das in der Lage ist, verschiedene Platinen- und Plotterformate, darunter eben auch Gerberdaten, zu sichten, ineinander zu convertieren, zu markieren und zu drucken. 30 Tage Testversion. &lt;br /&gt;
&lt;br /&gt;
* [http://iut-tice.ujf-grenoble.fr/kicad/ GerbView (2)]: Ebenfalls unter dem Namen GerbView existiert ein anderer Gerberviewer als Bestandteil von [[KiCAD]]. Dieser erlaubt das Betrachten der Gerberfiles und den Export als Platine in PCBnew, welches ebenfals Bestandteil von KiCAD ist. Unter KiCAD/PCBnew kann diese Platine dann manipuliert, verändert und wieder als Gerberfile exportiert werden. Allerdings können so nur Gerber-RS274X Daten eingelesen und exportiert werden. Blinks werden aber beim Reimport als Durchkontaktierung dargestellt. Insgesammt ist dieses Feature ziemlich &amp;quot;buggy&amp;quot; und unperfekt. Letzteres ist aber aus grundsätzlichen Erwägungen heraus auch schwer zu ändern. Siehe: http://www.mikrocontroller.net/topic/263576#2739329&lt;br /&gt;
&lt;br /&gt;
* [http://gerbv.gpleda.org/index.html Gerbv]: Ebenfalls ein Open Source Gerberviewer. Er gehört zum gEDA Projekt. Funktioniert hervorragend und hat viele Features. Verarbeitet RS-274-X und Excellon-Bohrdaten, jedoch kein RS-274 (Standard-Gerber). Dieser Gerberviewer ermöglicht auch das Löschen einzelner Strukturen und das Umskalieren, Verschieben, Spiegeln und Drehen der gesamten Gerberdatei. Gespeichert wird nur Extendet Gerber. &lt;br /&gt;
&lt;br /&gt;
* [http://www.pentalogix.com ViewMate]: ist eine professionelle CAM-Software, die als Viewer kostenlos abgegeben wird. Die Funktionen zum Ändern und Speichern sind gesperrt, aber zum Überprüfen der Ausgabedaten hervorragend geeignet (auch Bohrdaten). Dies kostenlose Version läuft auch recht gut unter wine (Debian squeeze). &lt;br /&gt;
&lt;br /&gt;
* [http://www.mentor.com/products/pcb-system-design/downloads/odb-viewer VUV]: ODB++ Viewer, der von der Firma Valor, jetzt von Mentor übernommen, kostenlos abgegeben wird.&lt;br /&gt;
&lt;br /&gt;
* [http://www.cenon.info/ Cenon]: Cenon ist eine Open Source Software um speziell Vektorgrafiken zu betrachten, zu manipulieren und zu konvertieren. Das Gerberformat ist grundsätzlich als Vektorgrafikformat anzusehen. Cenon kann auch Standard und extendet Gerber einlesen, und als extendet Gerber wieder abspeichern. Es können einzelne Strukturen in Gerber selektiert, kopiert, gelöscht, verschoben, gedreht und eingefügt werden. Ebenso können Mehrfachnutzen erstellt werden. Es kann auch in oder aus anderen Vektorformaten wie PDF, PS, HPGL, DXF konvertiert werden. Die Bedienung des Programmes ist manchmal sehr pfiffig, aber leider meistens sehr gewöhnungsbedürftig. Es ist z.B. unbedingt darauf zu achten, das die Dateien adäquate Endungen haben, als Gerber lässt Cenon nur .ger und .gerber zu. Bei der Zusammenarbeit mit anderen Programmen ist es daher leider oft nötig, die Dateien ständig umzubenennen. Unter Debian Squeeze existiert ein Cenon Package. Leider müssen z.Z. (17. Nov. 2011) nach der Installation noch die GNUstep Librarys manuell von /usr/lib/GNUstep/Library nach /usr/lib/GNUstep/Cenon oder /usr/local/lib/GNUstep/Cenon kopiert werden. Es ist dringend anzuraten, die  [http://www.cenon.info/frameLoad_de.html?support_faq_de.html Cenon FAQ] und das [http://www.vhf-group.com/vhf-interservice/download/doc/Cenon_de.pdf Cenon Handbuch] zu lesen.&lt;br /&gt;
&lt;br /&gt;
* [[Media:PyGerberAnalyse_B5_13Jun2013.zip]] Absolut primitives Programm zur Gerber-Daten Analyse. Test-Status. Geschrieben in Python3. Kann Gerber247d und Gerber247x einlesen und teilweise analysieren und die Analyse als Datei abspeichern, aber keine Makros darin. Kann auch Drill Files einlesen. Kann Gerber- oder Drill-Files in rudimentärer Form anzeigen (z.B. OHNE Aperturen, kein Maßstab, ist somit für fast nichts zu gebrauchen). Das Programm besteht aus den drei Teilen PyGerbAnalyse_B5_13Jun2013.py, ClassDefBasicAnalysisResults_13Jun2013.py und ClassDefGerberLayer_13Jun2013.py. Gestartet wird nur PyGerbAnalyse_B5_13Jun2013.py, die anderen beiden Python Files enthalten Klassendefinitionen. Steht unter GNU-GPL. Autor Bernd Wiebus. KEINE GARANTIE! Testberichte, Hinweise, Informationen und Anregungen sowie dringend benötigte Testdateien mit normalen und exotischen, auch älteren, Gerberformaten von unterschiedlichen Layoutprogrammen bitte an bernd.wiebus@gmx.de senden. DANKE im Voraus dazu! Es ist eine Python3 Version des unter dem BASIC-Dialekt Gambas2 geschriebenen ebenso primitiven Viewers, der unter [[Media:GerbAnalyse_RevA6.zip]] zu bekommen ist. Python3 ist unter Linux bei den meisten Distributionen als Packet installierbar. Windows User könnten vieleicht Möglichkeiten in dieser Diskussion finden: http://www.mikrocontroller.net/topic/280970#new&lt;br /&gt;
&lt;br /&gt;
* [http://www.gerber-viewer.com/ gerber-viewer.com]: Für die schnelle Kontrolle von Gerberdaten eignet sich auch ein online Viewer. Einfach Zip-Archiv oder Gerberdaten auswählen, uploaden und online begutachten. Datensicherheit beachten! Gerberdaten werden dabei herausgegeben!&lt;br /&gt;
&lt;br /&gt;
* [http://www.numericalinnovations.com/collections/fab-3000-gerber-cam?gclid=CLj1-_GW6LsCFclQ3godr3sASQ FAB 3000 V7]: Ein Gerberviewer und Editor von Numerical Innovations. Es existiert auch eine Trial Version.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/aitjcize/QCamber QCamber] Relativ neue Software, über die noch wenig bekannt ist.&lt;br /&gt;
&lt;br /&gt;
* [http://caram.cl/software/flatcam/ FlatCAM] Diese Software erstellt aus Gerberdaten Bohrdaten und G-Code um den Platinenumriss (mit Haltestegen) freizufräsen, oder auch zum &amp;quot;Konturfräsewn&amp;quot;. Beim &amp;quot;Konturfräsen&amp;quot; wird eine Leiterplatte nicht geätzt, sondern gefräst. Naturgemäß geht letzteres nur sinnvoll für Einzelstücke oder Kleinserien, und auch nur für relativ grobe Layouts. Desweiteren kann auf diesem Wege auch G-Code zum Fräsen bzw. Gravieren von Frontplatten o.ä. erzeugt werden, wenn man die Strukturen in einem Layoutprogramm passend anlegt, als Gerberdaten exportiert und dann mit dieser Software bearbeitet. Siehe http://www.mikrocontroller.net/topic/338193#3717135.&lt;br /&gt;
&lt;br /&gt;
* [http://www.zofzpcb.com ZofzPCB] Ein Gerber Viewer. Kann u.A. Gerber Daten in 3D Rendern. Freeware. Läuft aber z.Z. (Oktober 2014) nur unter Windows. Siehe: http://www.mikrocontroller.net/topic/346675#new&lt;br /&gt;
&lt;br /&gt;
== Siehe auch == &lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/293100#new Forumsbeitrag]: Gerber Daten: wie erkenne ich, ob Bohrung metallisiert ist?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/311780#new Forumsbeitrag]: Gerberdatei für Lötstoppmaske&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/311426#new Forumsbeitrag]: Ein Klassiker - Gerberdaten und Blendendatei - RS274D vs. RS274X&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/310333#new Forumsbeitrag]: Kicad: Bohrdatei&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/309923#new Forumsbeitrag]: Gerbv Layoutkontrolle fehlerhafte Anzeige/ Ergebnisse?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/309765#new Forumsbeitrag]: Bohrdatei für fertige Leiterplatte&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/303326#new Forumsbeitrag]: gerber Preview gcprevue welche Version empfehlenswert?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/298632#new Forumsbeitrag]: Gerber Daten für Board Cutout (Altium)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/307967#new Forumsbeitrag]: Kann mir wer Eagle zu Gerber exportieren&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/291090#new Forumsbeitrag]: Altium exportiert nicht korrekt in Gerber&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/262726#new Forumsbeitrag]: Gerber Daten (formate und Dateiendungen)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/255449#new Forumsbeitrag]: Eagle CAM-Job / Itead Studio - Fehler in Gerber Dateien?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/255129#new Forumsbeitrag]: Layout (Gerber) in Nutzen umwandeln - suche Tool&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/241858#new Forumsbeitrag]: EAGLE: Genauigkeit für Gerber-Dateien einstellen - wo? wie?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319065#new Forumsbeitrag]: CAD-Daten oder Gerberdaten herausgeben?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/320716#new Forumsbeitrag]: Diskussion über ODB++ als Alternative zu Gerber.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Schaltplaneditoren]]&lt;br /&gt;
[[Category:Platinen]]&lt;/div&gt;</summary>
		<author><name>193.254.108.90</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Gerber-Tools&amp;diff=85618</id>
		<title>Gerber-Tools</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Gerber-Tools&amp;diff=85618"/>
		<updated>2014-11-10T07:44:01Z</updated>

		<summary type="html">&lt;p&gt;193.254.108.90: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gerber-Tools sind Programme, die es erlauben die von fast allen [[Schaltplaneditoren|Platinenlayoutprogrammen]] erzeugbaren Gerberfiles zu betrachten, zu überprüfen und eventuell sogar zu manipulieren. Das beginnt mit Tools, die es erlauben die Platinen zu drehen und miteinander zu verbinden bzw. mehrere identische zu größeren Panelen (sog. Nutzen) zusammenzufügen, um sie rationeller fertigen zu können. Es hört auf mit Programmen die in der Lage sind, Leiterbahnen und Bohrlöcher zu verschieben und zu ändern. Es ist guter Stil, seine eigene Arbeit mit einem Gerber-Viewer zu überprüfen, der &#039;&#039;&#039;nicht&#039;&#039;&#039; zum System des Platinenlayoutprogrammes gehört, mit der man die Platinendaten erzeugt hat, allein um systematische Fehler zu minimieren.&lt;br /&gt;
&lt;br /&gt;
== Allgemeines ==&lt;br /&gt;
&lt;br /&gt;
Gerber Daten stellen alle Daten dar, die zur Fertigung einer Leiterplatte benötigt werden. Und eben auch nicht mehr. Also keine Informationen über Netze, Schaltpläne oder Details über Bauteile. Daher erlauben sie es, auch solche Informationen gegenüber dem Fertiger einer Leiterplatte geheim zu halten, im Gegensatz zur Herausgabe von Platinendaten (CAD Boarddateien) direkt aus dem Programm. Ferner ist das Format robust und kompakt. Es enthält alle Angaben, die zur Steuerung eines Photoplotters zur Erstellung von Filmen für die Leiterplattenbelichtung benötigt werden. Es ist eng mit dem &amp;quot;G-Code&amp;quot; für CNC-Drehbänke und Fräßmaschienen verwandt, beschränkt sich aber auf eine zweidimensionale (xy) Darstellung. Gerber hat sich als weit verbreitetes Austauschformat für Leiterplattendaten etabliert; mittlerweile enthält so gut wie jedes Programm zur Platinenentwicklung eine Exportmöglichkeit für Gerber, und so gut wie alle Firmen, die Leiterplatten herstellen, können diese Daten einlesen und verwerten.&lt;br /&gt;
&lt;br /&gt;
== Historisches ==&lt;br /&gt;
&lt;br /&gt;
Das heute gebräuchliche Format RS-274X (X für &amp;quot;extended&amp;quot;) hat einen Vorgänger RS-274D. Wobei RS274D tatsächlich ein Standard zur Steuerung von CNC-Maschinen war, von dem dann für die optischen Verfahren in der Platinenherstellung nur eine Teilmenge verwendet wurde. Der Hauptunterschied zwischen dem RS-274D und RS-274X ist, dass das alte RS-274D keine Informationen über die verwendeten Blenden enthält. Zu einem Gerber File gehörte also immer noch eine Blendendatei. Beim RS-274X ist diese Information (und andere, z.B. die über das Zahlenformat) im Gerberfile selber integriert. Für neue Entwicklung sollte KEIN altes RS-274D mehr verwendet werden, nur neueres RS-274X.&lt;br /&gt;
&lt;br /&gt;
Da früher Photoplotter für den Blendenwechsel drehbare Blendenrevolver hatten, die enteder 6 oder 12 verschiedene Blenden aufnehmen konnte, war die Anzahl der verwendeten Blenden in einem Design beschränkt, wollte man nicht zuviele zeitraubende und teure manuelle Blendenwechsel vornehmen. Das Problem bestand bei späteren Vektorplottern nicht mehr in dieser Form, da diese die Blenden in gewissen Bereichen frei emulieren konnten. Heutige Plotter arbeiten komplett anders, so das die Daten auch anders aufbereitet werden müssen. Das Format der Gerberdateien hat sich als praktisches Austauschformat allerdings erhalten, auch wenn es jetzt nur noch so darstellt, als ob die Daten einen Photoplotter steuern würde. &lt;br /&gt;
&lt;br /&gt;
Entwickelt wurde das Gerber Fileformat von Gerber-Scientific. Später pflegte Barco und jetzt Ucamco die Spezifikationen dieses Formates. &lt;br /&gt;
&lt;br /&gt;
Auch heute ist das Gerber Format noch nicht komplett, weil durch den technischen Fortschritt immer neue Möglichkeiten entstehen, über die das jeweilige aktuelle Gerberformat keine Angaben enthalten kann. Es enthält z.B. keine Angaben über den Lagenaufbau. Solche Informationen müssen dem Fertiger daher in begleitenden Texten oder Zeichnungen übergeben werden.  Um diese Problem anzugehen, veröffentlicht Ucamco einen [http://www.ucamco.com/downloads Vorschlag (und weiter: Extending the Gerber Format with Attributes)] der das Gerber-Dateiformat um Attribute erweitert. Ucamco lädt dazu ein, zu diesem Vorschlag Kommentare und Verbesserungsvorschläge einzureichen, bevor er formell in die Gerberformat Spezifikationen Eingang erhält.&lt;br /&gt;
&lt;br /&gt;
== Details der Formate ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
Wikipedia hat eine Beschreibung des [http://de.wikipedia.org/wiki/Gerber-Format Gerber-Formates]. Die Spezifikation und weitere Informationen findet sich [http://www.ucamco.com/downloads hier als &amp;quot;The Gerber File Format Specification&amp;quot;]. Eine [http://www.artwork.com/gerber/274x/rs274x.htm weitere Erläuterung] hat Steve DiBartolomeo geschrieben. Zu den Gerberdaten im weiteren Sinne zählen auch sog. &amp;quot;Drillfiles&amp;quot;, welche die Ansteuerdaten für die CNC-Platinenbohrmaschinen enthalten. Sie sind den Gerberfiles meist sehr ähnlich, auch wenn sie anderslautende Befehle haben. Weit verbreitet für diesen Zweck sind unter anderem Bohrautomaten der Firma Excellon, und so hat das Excellon-Fileformat eine recht weite Verbreitung gefunden. Eine Beschreibung des Excellon-Fileformates findet sich auf der Homepage von [http://www.excellon.com/manuals/program.htm Exellon]. Bohrdaten können aber auch im Gerberformat dargestellt werden. Sie bilden dann ein eigenes Gerberfile. Im allgemeinen sollten aus praktischen Gründen immer mehrere Bohrdateien pro Platine verwendet werden: Für durchkontaktierte (mit Innenverkupferung, &amp;quot;Via&amp;quot; genannt), und eins für nicht durchkontaktierte Bohrungen. Der Hintergrund ist, das die Bohrungen für durchkontaktierte und nicht durchkontaktierte Bohrungen in zwei unterschiedlichen Arbeitsschritten erfolgen müssen. Bei Multilayerplatinen kann es für manche Lagen weitere Drillfiles geben, je nachdem es sich um &amp;quot;blind&amp;quot; oder &amp;quot;buried&amp;quot; Vias handelt, für die naturgemäß Bohrungen nicht in allen Lagen vorhanden sind. Fräsungen (Für Platinenumrisse und Aussparungen) haben ein eigenes Gerberlayer, in denen die zu fräsenden Konturen eingezeichnet sind. Da Bohrungen ab 2mm Durchmesser gefräst werden können und ab 4mm Durchmesser gefräst werden sollten, besteht eventuell ein Freiraum, um bestimmte Fräsungen besser als Bohrung in ein Drillfile aufzunehemen oder bestimmte Bohrungen als Fräsung in die Fräslage aufzunehmen.&lt;br /&gt;
&lt;br /&gt;
=== Struktur des Formates ===&lt;br /&gt;
&lt;br /&gt;
Jede Kupferlage, aber auch Lötpasten- und Kleberschablone, Lötstopplack, Beschriftung etc. hat seine eigene Gerberdatei. Wenn vorhanden, getrennt nach Vorder- und Rückseite. Die Datei beginnt mit einem Header, im dem Allgemeines, wie das Einheitensystem (Inch oder mm), die Zahlendarstellung (Nullen unterdrückt, Stellen vor und nach dem Dezimaltrenner), und ob eine Lage gespiegelt oder positiv/negativ dargestellt wird. Eine Lötstoppmaske zum Beispiel enthält meist die gleichen Pads wie die korrespondierende Kupferlage, allerdings etwas größer. Die Darstellung erfolgt aber im Gegensatz zur Kupferlage, wo die Pads &amp;quot;Inseln&amp;quot; sind, negativ, was &amp;quot;Löcher&amp;quot; in der die ganze Platine bedeckenden Lötstoppschicht bedeutet. Es folgt eine Blendentabelle. Hierbei wird eine Anzahl von Blenden in Form und Größe definiert. Daran anschliessend Zeilen mit X- und Y-Koordinaten, die entweder mit geschlossener (nur Positionswechsel) oder offener Blende (&amp;quot;Draw&amp;quot;, es wird ein &amp;quot;Strich&amp;quot; gezogen, die Blendenanweisung definiert seine Breite), angefahren werden. Es gibt auch Positionen, die mit geschlossener Blende angefahren werden, und wo am Zielort die Blende kurz geöffnet wird (&amp;quot;Blinks&amp;quot; oder &amp;quot;Flashes&amp;quot;). Diese werden verwendet, um speziell Pads darzustellen. Die Form und Größe der Blende bestimmt hierbei die Form und Größe des erzeugten Pads. Leiterbahnstücke gleicher Form werden nicht als Blink, sondern als Draw mit gleichem Anfangs und Endpunkt (&amp;quot;Null-Länge&amp;quot;) dargestellt. Diese konsequente Trennung von Pads als Blink und Leiterbahnen als Draw ermöglicht es, leichter Änderungen an den Pads vornehmen zu können, in dem man dem Pad eine andere Blendendefinition zuweist. Das gilt auch für mit dem Pad im Zusamenhang zusehenden Blinks für Lötstoppmasken und besonders Pasten- und Klebstoffmasken, die oft vom Bestücker für seinen individuellen Herstellungsprozess angepasst werden müssen. Das Gerberformat enthält auch Anweisungsmöglichkeiten für Skalierung, Makros, Polygone, Drehungen, Kreise u. Kreissegmente, Kommentare etc. Große Flächen werden entweder durch einen Flächenbefehl als Polygon definiert, oder aber durch viele Striche emuliert (&amp;quot;stroke fill&amp;quot;). Die Dateiendung ist nicht einheitlich. Üblich ist es, alle Gerber Dateien mit .gbr, .ger oder .gerber enden zu lassen, und den speziellen Zweck im Dateinahmen unterzubringen (Beispiel: &amp;quot;PlatineProjektname-CopperTop.gbr&amp;quot;), oder aber spezielle Endungen für die jeweilige Gerberlage entsprechend ihrer Verwendung zu benutzen. Ein spezielles System existiert hierbei nicht, jedes Programm handhabt diese auf seine Weise. Eine sehr alte Tradition aus DOS-Zeiten (vermutlich Orcad) ist aber:&lt;br /&gt;
*.BOT  Kupferflaechen Loetseite&lt;br /&gt;
*.drl  Bohrfile (&amp;quot;Drill Rack&amp;quot;, Bohrerliste)&lt;br /&gt;
*.drd  Excellon-Bohrdaten (es müssen aber zwei Bohrdatenlisten existieren. Einmal für durchkontaktierte und einmal für nicht durckontaktierte Bohrungen, weil die Löcher dafür in unterschiedlichen Bearbeitungsstufen gebohrt werden müssen)&lt;br /&gt;
*.dri  Bohrinfo (Statistik über Bohrungen, Bohrerliste)&lt;br /&gt;
*.mnt  Pick and Place Bauteilseite (nur SMD)&lt;br /&gt;
*.mnb  Pick and Place Loetseite (nur SMD, bei Bauteilen auf beiden Seiten)&lt;br /&gt;
*.SMB  Loetstoppmaske Loetseite (Solder Mask Bottom)&lt;br /&gt;
*.SMT  Loetstoppmaske Bestueckungsseite (Solder Mask Top)&lt;br /&gt;
*.SST  Bestueckungsplan Bauteilseite (Silk Screen Top)&lt;br /&gt;
*.SSB  Bestückungsplan Loetseite (Silk Screen Bottom)&lt;br /&gt;
*.TOP  Kupferflaechen Bestueckungsseite&lt;br /&gt;
*.CRT  Lötpastenmaske Bestueckungsseite (Cream Top)&lt;br /&gt;
*.CRB  Lötpastenmaske Lötseite (Cream Bottom)&lt;br /&gt;
*.GLT  Klebermaske Bestueckungsseite (Glue Top)&lt;br /&gt;
*.GLB  Klebermaske Loetseite (Glue Bottom)&lt;br /&gt;
*.KOT  Keepout Bestueckungsseite &lt;br /&gt;
*.KOB  Keepout Loetseite&lt;br /&gt;
*.OUT  Outline&lt;br /&gt;
&lt;br /&gt;
andere Endungen:&lt;br /&gt;
*.NCD  Drillfile&lt;br /&gt;
*.TOL  Toolfile&lt;br /&gt;
*.TC   Drillcounter&lt;br /&gt;
&lt;br /&gt;
Vorschläge für alternative Dateiendungssysteme finden sich im einschlägigen [http://de.wikipedia.org/wiki/Gerber-Format Wikipedia Artikel].&lt;br /&gt;
&lt;br /&gt;
== Tipps ==&lt;br /&gt;
&lt;br /&gt;
*Wenn man Gerber- und Drillfiles erstellt, verwenden man am besten für beide ein einheitliches Zahlenformat, sofern das Layoutprogramm dazu eine Wahl lässt. Richten Sie sich dabei in erster Linie an den Bohrdaten aus, da diese der Dreh und Angelpunkt der Toleranzen sind.&lt;br /&gt;
*Den Nullpunkt der Koordinaten legt man dabei idealerweise nach unten links, falls das Layoutprogram dazu eine Wahl lässt.&lt;br /&gt;
*Man sollte nach Möglichkeit nur noch Gerber RS-274X (&amp;quot;Extended Gerber&amp;quot;) verwenden.   &lt;br /&gt;
*Als standardmäßige Formateinstellung für Gerberdaten empfielt sich dabei 3.3 metrisch. Hintergrund: Die IPC Spezifikation empfiehlt, die höchste Auflösung zu verwenden.&lt;br /&gt;
*Man verwendet nach Möglichkeit kein &amp;quot;Stroke fill&amp;quot; für Kupferflächen, sondern einen Polygon-Befehl. Leider lässt das nicht jedes Programm zu. Eine Begründung für die Vermeidung findet sich hier unter [http://www.ucamco.com/downloads &amp;quot;Painting considered harmful&amp;quot;].&lt;br /&gt;
* Für Pads gilt ähnliches in noch verschärfterer Form: Pads sollten nach möglichkeit immer &amp;quot;Blinks&amp;quot; sein. Allerdings ist das bei exotischren Padformen nicht so ohne weiteres möglich.&lt;br /&gt;
* Alle Lagen &amp;quot;in normaler&amp;quot; Ansicht ausgeben. D.h. so, wie man sie sehen würde, wenn man mit einem Röntgenblick von der Bauteilseite durch die Platine schauen würde. Schriften auf der Unterseite die im fertigen Objekt normal lesbar sein sollen, erscheinen dabei gespiegelt.&lt;br /&gt;
* Ein Platinenbeschreibung in einem allgemein lesbaren Format (z.B. PDF oder TXT, &#039;&#039;&#039;nicht&#039;&#039;&#039; die obskuren Formate irgendwelcher Textverarbeitungssysteme) dabeilegen. Ausser Informationen über Lagenaufbau und die Abmessungen solte diese Beschreibung eine Liste aller Gerber- und Bohrfiles enthalten, mit einer &#039;&#039;&#039;expliziten Nennung&#039;&#039;&#039; der Lage, für die sie gedacht sind. Das gilt besonders für Innenlagen, die nicht nur einfach durchnummeriert sein sollten, sondern es sollte &#039;&#039;&#039;explizit&#039;&#039;&#039; angegeben werden, in welcher Position sich die &amp;quot;Nummer&amp;quot; zur Ober- oder Unterseite befindet. Bei einem vierlagigen Aufbau ist es sonst nicht eindeutig klar, das &amp;quot;Layer 1&amp;quot; die Lage direkt unter der Oberseitenlage ist.&lt;br /&gt;
* Die Lagen sollten nicht gespiegelt sein.&lt;br /&gt;
* Kupferlagen sollten nicht komplett negativ sein, auch wenn sie negative Teile enthalten. Aber Lötstoppmaske, Lotpastenmaske und Klebstoffmaske schon.&lt;br /&gt;
* Die Lagen sollten keinen Versatz gegeneinander haben.&lt;br /&gt;
* Es sollte eine Konturlage existieren, die alle (Aussen-) Konturen der Platine enthält.&lt;br /&gt;
* Für durchkontaktierte und nicht durchkontaktierte Bohrungen sollten separate Bohrfiles existieren. Diese sind dann aber im [http://en.wikipedia.org/wiki/Excellon_format Excelon-Format] und nicht Gerber. Bei Multilayer Aufbauten sind für jeden separaten Bohrvorgang separate Borfiles nötig (Achtung bei blind und buried Vias). Ist, wegen irgendeiner Besonderheit der speziellen Platine, ein sonst üblicher Bohrvorgang nicht vorhanden, so sollte das auch &#039;&#039;&#039;explizit&#039;&#039;&#039; im begleitenden Text vermerkt werden.&lt;br /&gt;
* Ein konkreter Fall mit Fragen zur Erstellung von Gerberdaten (aus Target, gilt aber allgemein) findet sich [http://www.mikrocontroller.net/topic/319625#new hier].&lt;br /&gt;
&lt;br /&gt;
== Alternativen zu Gerber ==&lt;br /&gt;
&lt;br /&gt;
Viele Leiterplattenhersteller aktzeptieren auch die direkten Entwicklungsdaten für die meisten weitverbreiteten Leiterplattenlayout Programme. Insbesondere gilt das für Eagle, Kicad, Target, Altium und Orcad. Es empfielt sich darum, den gewünschten Leiterplattenhersteller nach den Formaten, die er verarbeiten kann, zu fragen. Allerdings gibt man in diesem Falle wesentlich mehr Daten heraus, als für eine Produktion nötig ist. Insofern kann das als Sicherheitsrisiko gesehen werden, was aber für Amateure eher nebensächlich sein dürfte.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres, wesentlich schwerwiegenderes, Risiko liegt aber darin, das die CAD-Systemdaten wesentlich interpretierfähiger als die Gerberdaten sind, was zu fatalen Missverständnissen führen kann.&lt;br /&gt;
&lt;br /&gt;
Für die Produktion müssen die Daten aber auf jeden Fall vom Leiterplattenhersteller speziell für seine Anlagen aufbereitet werden. Darum, und um eine Kompatibilität mit den Daten anderer CAD-Systeme zu erhalten, werden die Daten dann im allgemeinen doch in das Gerberformat umgewandelt, da Gerber als Austauschformat den kleinsten gemeinsamen Nenner darstellt. Weil Gerber für den Austausch am weitesten verbreitet ist, haben die Leiterplattenhersteller darin auch oft die meiste Erfahrung und meiste Übung und oft feststehende Vorgehensweisen im Sinne der Qalitätssicherung.&lt;br /&gt;
&lt;br /&gt;
Daher ist es angeraten, seine Daten im Gerberformat bei den Leiterplattenherstellern einzureichen.&lt;br /&gt;
&lt;br /&gt;
Eine Diskussion zum Thema &amp;quot;CAD-Dateien statt Gerber&amp;quot; findet sich [http://www.mikrocontroller.net/topic/319065#new hier im Forum].&lt;br /&gt;
&lt;br /&gt;
Als direktes alternatives Dateiformat zu Gerber wäre ODB++ zu nennen, welches aber proprietär von Valor ist. Eine Diskussion zum Thema &amp;quot;ODB++ statt Gerber&amp;quot; findet sich [http://www.mikrocontroller.net/topic/320716#new hier im Forum]. Desweiteren entwickelte [http://www.ipc.org/de/default.aspx der IPC] mit [http://ipc-2581.com/ IPC-2581] ein XML basiertes Format, das sich bisher aber kaum verbreiten konnte. Es gibt wohl neuere Ansätze, IPC-2581 und Gerber aneinander anzugleichen. Auch dazu veröffentlichte Ucamco einen [http://www.ucamco.com/downloads Vorschlag (Und weiter: IPC-2581 meets the Gerber File Format)] der das Gerber-Dateiformat um Angaben z.b. zum Lagenaufbau erweitert.&lt;br /&gt;
&lt;br /&gt;
Ein [http://www.ilfa.de/Publikationen Plädoyer für Gerber (unter &amp;quot;Datenformate: Gerber&amp;quot;)] hält auch A.Wiemers.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich zählt das Gerberformat zu den Vektorgrafikformaten. Daher ist hypothetisch auch z.B. [http://de.wikipedia.org/wiki/SVG das SVG-Format] geeignet, um Platinendaten zu transportieren und zu manipulieren. Allerdings ist das bisher nicht üblich, und u.U. riskant, weil eine identische Darstellung in verschiedenen Programmen aufgrund der Komplexität von SVG nicht immer gewährleistet ist.&lt;br /&gt;
&lt;br /&gt;
== Gerber Tools == &lt;br /&gt;
&lt;br /&gt;
* [http://www.GerberLogix.com GerberLogix]: Einfach zu bedienender Extended Gerber Viewer. Weitere Formate sind Excellon 1/2. Highlight ist die Automatische Bemaßung von Leiterbahnen. Für Hobbyisten Kostenlos.&lt;br /&gt;
&lt;br /&gt;
* [http://www.PCB-Investigator.com PCB-Investigator]: Umfangreiche Funktionalität zum vergleichen verschiedenster Leiterplatten Daten. Wandelt alle Daten auch in 3D um. ODB++, IPC 2581, GenCAD und Gerber Daten. &lt;br /&gt;
&lt;br /&gt;
* [http://ruggedcircuits.com/gerbmerge/ Gerbmerge]: Ein unter Python geschriebenes Tool, mit denen einzelne Platinen zu größeren Nutzen zusammengefügt werden können. Freeware. &lt;br /&gt;
&lt;br /&gt;
* [http://www.graphicode.com/GC-Prevue_Gerber_Viewer gc-preview]: Ein Programm, um Gerberdaten ansehen und drucken zu können. Freeware.&lt;br /&gt;
&lt;br /&gt;
* Die Firma Graphicode bietet auch noch andere, im allgemeinen kostenpflichtige Software an, mit der diverse Plotter- und Platinenformate, u.a. auch Gerberdaten, ineinander überführt werden können, wie z.B. [http://www.graphicode.com/products/cam GC-CAM-Edit].&lt;br /&gt;
&lt;br /&gt;
* [http://www.softwarecompanions.com/gerbview.html GerbView (1)]: Ein Programm, das in der Lage ist, verschiedene Platinen- und Plotterformate, darunter eben auch Gerberdaten, zu sichten, ineinander zu convertieren, zu markieren und zu drucken. 30 Tage Testversion. &lt;br /&gt;
&lt;br /&gt;
* [http://iut-tice.ujf-grenoble.fr/kicad/ GerbView (2)]: Ebenfalls unter dem Namen GerbView existiert ein anderer Gerberviewer als Bestandteil von [[KiCAD]]. Dieser erlaubt das Betrachten der Gerberfiles und den Export als Platine in PCBnew, welches ebenfals Bestandteil von KiCAD ist. Unter KiCAD/PCBnew kann diese Platine dann manipuliert, verändert und wieder als Gerberfile exportiert werden. Allerdings können so nur Gerber-RS274X Daten eingelesen und exportiert werden. Blinks werden aber beim Reimport als Durchkontaktierung dargestellt. Insgesammt ist dieses Feature ziemlich &amp;quot;buggy&amp;quot; und unperfekt. Letzteres ist aber aus grundsätzlichen Erwägungen heraus auch schwer zu ändern. Siehe: http://www.mikrocontroller.net/topic/263576#2739329&lt;br /&gt;
&lt;br /&gt;
* [http://gerbv.gpleda.org/index.html Gerbv]: Ebenfalls ein Open Source Gerberviewer. Er gehört zum gEDA Projekt. Funktioniert hervorragend und hat viele Features. Verarbeitet RS-274-X und Excellon-Bohrdaten, jedoch kein RS-274 (Standard-Gerber). Dieser Gerberviewer ermöglicht auch das Löschen einzelner Strukturen und das Umskalieren, Verschieben, Spiegeln und Drehen der gesamten Gerberdatei. Gespeichert wird nur Extendet Gerber. &lt;br /&gt;
&lt;br /&gt;
* [http://www.pentalogix.com ViewMate]: ist eine professionelle CAM-Software, die als Viewer kostenlos abgegeben wird. Die Funktionen zum Ändern und Speichern sind gesperrt, aber zum Überprüfen der Ausgabedaten hervorragend geeignet (auch Bohrdaten). Dies kostenlose Version läuft auch recht gut unter wine (Debian squeeze). &lt;br /&gt;
&lt;br /&gt;
* [http://www.mentor.com/products/pcb-system-design/downloads/odb-viewer VUV]: ODB++ Viewer, der von der Firma Valor, jetzt von Mentor übernommen, kostenlos abgegeben wird.&lt;br /&gt;
&lt;br /&gt;
* [http://www.cenon.info/ Cenon]: Cenon ist eine Open Source Software um speziell Vektorgrafiken zu betrachten, zu manipulieren und zu konvertieren. Das Gerberformat ist grundsätzlich als Vektorgrafikformat anzusehen. Cenon kann auch Standard und extendet Gerber einlesen, und als extendet Gerber wieder abspeichern. Es können einzelne Strukturen in Gerber selektiert, kopiert, gelöscht, verschoben, gedreht und eingefügt werden. Ebenso können Mehrfachnutzen erstellt werden. Es kann auch in oder aus anderen Vektorformaten wie PDF, PS, HPGL, DXF konvertiert werden. Die Bedienung des Programmes ist manchmal sehr pfiffig, aber leider meistens sehr gewöhnungsbedürftig. Es ist z.B. unbedingt darauf zu achten, das die Dateien adäquate Endungen haben, als Gerber lässt Cenon nur .ger und .gerber zu. Bei der Zusammenarbeit mit anderen Programmen ist es daher leider oft nötig, die Dateien ständig umzubenennen. Unter Debian Squeeze existiert ein Cenon Package. Leider müssen z.Z. (17. Nov. 2011) nach der Installation noch die GNUstep Librarys manuell von /usr/lib/GNUstep/Library nach /usr/lib/GNUstep/Cenon oder /usr/local/lib/GNUstep/Cenon kopiert werden. Es ist dringend anzuraten, die  [http://www.cenon.info/frameLoad_de.html?support_faq_de.html Cenon FAQ] und das [http://www.vhf-group.com/vhf-interservice/download/doc/Cenon_de.pdf Cenon Handbuch] zu lesen.&lt;br /&gt;
&lt;br /&gt;
* [[Media:PyGerberAnalyse_B5_13Jun2013.zip]] Absolut primitives Programm zur Gerber-Daten Analyse. Test-Status. Geschrieben in Python3. Kann Gerber247d und Gerber247x einlesen und teilweise analysieren und die Analyse als Datei abspeichern, aber keine Makros darin. Kann auch Drill Files einlesen. Kann Gerber- oder Drill-Files in rudimentärer Form anzeigen (z.B. OHNE Aperturen, kein Maßstab, ist somit für fast nichts zu gebrauchen). Das Programm besteht aus den drei Teilen PyGerbAnalyse_B5_13Jun2013.py, ClassDefBasicAnalysisResults_13Jun2013.py und ClassDefGerberLayer_13Jun2013.py. Gestartet wird nur PyGerbAnalyse_B5_13Jun2013.py, die anderen beiden Python Files enthalten Klassendefinitionen. Steht unter GNU-GPL. Autor Bernd Wiebus. KEINE GARANTIE! Testberichte, Hinweise, Informationen und Anregungen sowie dringend benötigte Testdateien mit normalen und exotischen, auch älteren, Gerberformaten von unterschiedlichen Layoutprogrammen bitte an bernd.wiebus@gmx.de senden. DANKE im Voraus dazu! Es ist eine Python3 Version des unter dem BASIC-Dialekt Gambas2 geschriebenen ebenso primitiven Viewers, der unter [[Media:GerbAnalyse_RevA6.zip]] zu bekommen ist. Python3 ist unter Linux bei den meisten Distributionen als Packet installierbar. Windows User könnten vieleicht Möglichkeiten in dieser Diskussion finden: http://www.mikrocontroller.net/topic/280970#new&lt;br /&gt;
&lt;br /&gt;
* [http://www.gerber-viewer.com/ gerber-viewer.com]: Für die schnelle Kontrolle von Gerberdaten eignet sich auch ein online Viewer. Einfach Zip-Archiv oder Gerberdaten auswählen, uploaden und online begutachten. Datensicherheit beachten! Gerberdaten werden dabei herausgegeben!&lt;br /&gt;
&lt;br /&gt;
* [http://www.numericalinnovations.com/collections/fab-3000-gerber-cam?gclid=CLj1-_GW6LsCFclQ3godr3sASQ FAB 3000 V7]: Ein Gerberviewer und Editor von Numerical Innovations. Es existiert auch eine Trial Version.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/aitjcize/QCamber QCamber] Relativ neue Software, über die noch wenig bekannt ist.&lt;br /&gt;
&lt;br /&gt;
* [http://caram.cl/software/flatcam/ FlatCAM] Diese Software erstellt aus Gerberdaten Bohrdaten und G-Code um den Platinenumriss (mit Haltestegen) freizufräsen, oder auch zum &amp;quot;Konturfräsewn&amp;quot;. Beim &amp;quot;Konturfräsen&amp;quot; wird eine Leiterplatte nicht geätzt, sondern gefräst. Naturgemäß geht letzteres nur sinnvoll für Einzelstücke oder Kleinserien, und auch nur für relativ grobe Layouts. Desweiteren kann auf diesem Wege auch G-Code zum Fräsen bzw. Gravieren von Frontplatten o.ä. erzeugt werden, wenn man die Strukturen in einem Layoutprogramm passend anlegt, als Gerberdaten exportiert und dann mit dieser Software bearbeitet. Siehe http://www.mikrocontroller.net/topic/338193#3717135.&lt;br /&gt;
&lt;br /&gt;
* [http://www.zofzpcb.com ZofzPCB] Ein Gerber Viewer. Kann u.A. Gerber Daten in 3D Rendern. Freeware. Läuft aber z.Z. (Oktober 2014) nur unter Windows. Siehe: http://www.mikrocontroller.net/topic/346675#new&lt;br /&gt;
&lt;br /&gt;
== Siehe auch == &lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/293100#new Forumsbeitrag]: Gerber Daten: wie erkenne ich, ob Bohrung metallisiert ist?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/311780#new Forumsbeitrag]: Gerberdatei für Lötstoppmaske&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/311426#new Forumsbeitrag]: Ein Klassiker - Gerberdaten und Blendendatei - RS274D vs. RS274X&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/310333#new Forumsbeitrag]: Kicad: Bohrdatei&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/309923#new Forumsbeitrag]: Gerbv Layoutkontrolle fehlerhafte Anzeige/ Ergebnisse?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/309765#new Forumsbeitrag]: Bohrdatei für fertige Leiterplatte&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/303326#new Forumsbeitrag]: gerber Preview gcprevue welche Version empfehlenswert?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/298632#new Forumsbeitrag]: Gerber Daten für Board Cutout (Altium)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/307967#new Forumsbeitrag]: Kann mir wer Eagle zu Gerber exportieren&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/291090#new Forumsbeitrag]: Altium exportiert nicht korrekt in Gerber&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/262726#new Forumsbeitrag]: Gerber Daten (formate und Dateiendungen)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/255449#new Forumsbeitrag]: Eagle CAM-Job / Itead Studio - Fehler in Gerber Dateien?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/255129#new Forumsbeitrag]: Layout (Gerber) in Nutzen umwandeln - suche Tool&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/241858#new Forumsbeitrag]: EAGLE: Genauigkeit für Gerber-Dateien einstellen - wo? wie?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319065#new Forumsbeitrag]: CAD-Daten oder Gerberdaten herausgeben?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/320716#new Forumsbeitrag]: Diskussion über ODB++ als Alternative zu Gerber.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Schaltplaneditoren]]&lt;br /&gt;
[[Category:Platinen]]&lt;/div&gt;</summary>
		<author><name>193.254.108.90</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Gerber-Tools&amp;diff=85617</id>
		<title>Gerber-Tools</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Gerber-Tools&amp;diff=85617"/>
		<updated>2014-11-10T07:18:03Z</updated>

		<summary type="html">&lt;p&gt;193.254.108.90: das &amp;quot;t&amp;quot; bei etc. fehlte&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gerber-Tools sind Programme, die es erlauben die von fast allen [[Schaltplaneditoren|Platinenlayoutprogrammen]] erzeugbaren Gerberfiles zu betrachten, zu überprüfen und eventuell sogar zu manipulieren. Das beginnt mit Tools, die es erlauben die Platinen zu drehen und miteinander zu verbinden bzw. mehrere identische zu größeren Panelen (sog. Nutzen) zusammenzufügen, um sie rationeller fertigen zu können. Es hört auf mit Programmen die in der Lage sind, Leiterbahnen und Bohrlöcher zu verschieben und zu ändern. Es ist guter Stil, seine eigene Arbeit mit einem Gerber-Viewer zu überprüfen, der &#039;&#039;&#039;nicht&#039;&#039;&#039; zum System des Platinenlayoutprogrammes gehört, mit der man die Platinendaten erzeugt hat, allein um systematische Fehler zu minimieren.&lt;br /&gt;
&lt;br /&gt;
== Allgemeines ==&lt;br /&gt;
&lt;br /&gt;
Gerber Daten stellen alle Daten dar, die zur Fertigung einer Leiterplatte benötigt werden. Und eben auch nicht mehr. Also keine Informationen über Netze, Schaltpläne oder Details über Bauteile. Daher erlauben sie es, auch solche Informationen gegenüber dem Fertiger einer Leiterplatte geheim zu halten, im Gegensatz zur Herausgabe von Platinendaten (CAD Boarddateien) direkt aus dem Programm. Ferner ist das Format robust und kompakt. Es enthält alle Angaben, die zur Steuerung eines Photoplotters zur Erstellung von Filmen für die Leiterplattenbelichtung benötigt werden. Es ist eng mit dem &amp;quot;G-Code&amp;quot; für CNC-Drehbänke und Fräßmaschienen verwandt, beschränkt sich aber auf eine zweidimensionale (xy) Darstellung. Gerber hat sich als weit verbreitetes Austauschformat für Leiterplattendaten etabliert; mittlerweile enthält so gut wie jedes Programm zur Platinenentwicklung eine Exportmöglichkeit für Gerber, und so gut wie alle Firmen, die Leiterplatten herstellen, können diese Daten einlesen und verwerten.&lt;br /&gt;
&lt;br /&gt;
== Historisches ==&lt;br /&gt;
&lt;br /&gt;
Das heute gebräuchliche Format RS-274X (X für &amp;quot;extended&amp;quot;) hat einen Vorgänger RS-274D. Wobei RS274D tatsächlich ein Standard zur Steuerung von CNC-Maschinen war, von dem dann für die optischen Verfahren in der Platinenherstellung nur eine Teilmenge verwendet wurde. Der Hauptunterschied zwischen dem RS-274D und RS-274X ist, dass das alte RS-274D keine Informationen über die verwendeten Blenden enthält. Zu einem Gerber File gehörte also immer noch eine Blendendatei. Beim RS-274X ist diese Information (und andere, z.B. die über das Zahlenformat) im Gerberfile selber integriert. Für neue Entwicklung sollte KEIN altes RS-274D mehr verwendet werden, nur neueres RS-274X.&lt;br /&gt;
&lt;br /&gt;
Da früher Photoplotter für den Blendenwechsel drehbare Blendenrevolver hatten, die enteder 6 oder 12 verschiedene Blenden aufnehmen konnte, war die Anzahl der verwendeten Blenden in einem Design beschränkt, wollte man nicht zuviele zeitraubende und teure manuelle Blendenwechsel vornehmen. Das Problem bestand bei späteren Vektorplottern nicht mehr in dieser Form, da diese die Blenden in gewissen Bereichen frei emulieren konnten. Heutige Plotter arbeiten komplett anders, so das die Daten auch anders aufbereitet werden müssen. Das Format der Gerberdateien hat sich als praktisches Austauschformat allerdings erhalten, auch wenn es jetzt nur noch so darstellt, als ob die Daten einen Photoplotter steuern würde. &lt;br /&gt;
&lt;br /&gt;
Entwickelt wurde das Gerber Fileformat von Gerber-Scientific. Später pflegte Barco und jetzt Ucamco die Spezifikationen dieses Formates. &lt;br /&gt;
&lt;br /&gt;
Auch heute ist das Gerber Format noch nicht komplett, weil durch den technischen Fortschritt immer neue Möglichkeiten entstehen, über die das jeweilige aktuelle Gerberformat keine Angaben enthalten kann. Es enthält z.B. keine Angaben über den Lagenaufbau. Solche Informationen müssen dem Fertiger daher in begleitenden Texten oder Zeichnungen übergeben werden.  Um diese Problem anzugehen, veröffentlicht Ucamco einen [http://www.ucamco.com/downloads Vorschlag (und weiter: Extending the Gerber Format with Attributes)] der das Gerber-Dateiformat um Attribute erweitert. Ucamco lädt dazu ein, zu diesem Vorschlag Kommentare und Verbesserungsvorschläge einzureichen, bevor er formell in die Gerberformat Spezifikationen Eingang erhält.&lt;br /&gt;
&lt;br /&gt;
== Details der Formate ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
Wikipedia hat eine Beschreibung des [http://de.wikipedia.org/wiki/Gerber-Format Gerber-Formates]. Die Spezifikation und weitere Informationen findet sich [http://www.ucamco.com/downloads hier als &amp;quot;The Gerber File Format Specification&amp;quot;]. Eine [http://www.artwork.com/gerber/274x/rs274x.htm weitere Erläuterung] hat Steve DiBartolomeo geschrieben. Zu den Gerberdaten im weiteren Sinne zählen auch sog. &amp;quot;Drillfiles&amp;quot;, welche die Ansteuerdaten für die CNC-Platinenbohrmaschinen enthalten. Sie sind den Gerberfiles meist sehr ähnlich, auch wenn sie anderslautende Befehle haben. Weit verbreitet für diesen Zweck sind unter anderem Bohrautomaten der Firma Excellon, und so hat das Excellon-Fileformat eine recht weite Verbreitung gefunden. Eine Beschreibung des Excellon-Fileformates findet sich auf der Homepage von [http://www.excellon.com/manuals/program.htm Exellon]. Bohrdaten können aber auch im Gerberformat dargestellt werden. Sie bilden dann ein eigenes Gerberfile. Im allgemeinen sollten aus praktischen Gründen immer mehrere Bohrdateien pro Platine verwendet werden: Für durchkontaktierte (mit Innenverkupferung, &amp;quot;Via&amp;quot; genannt), und eins für nicht durchkontaktierte Bohrungen. Der Hintergrund ist, das die Bohrungen für durchkontaktierte und nicht durchkontaktierte Bohrungen in zwei unterschiedlichen Arbeitsschritten erfolgen müssen. Bei Multilayerplatinen kann es für manche Lagen weitere Drillfiles geben, je nachdem es sich um &amp;quot;blind&amp;quot; oder &amp;quot;buried&amp;quot; Vias handelt, für die naturgemäß Bohrungen nicht in allen Lagen vorhanden sind. Fräsungen (Für Platinenumrisse und Aussparungen) haben ein eigenes Gerberlayer, in denen die zu fräsenden Konturen eingezeichnet sind. Da Bohrungen ab 2mm Durchmesser gefräst werden können und ab 4mm Durchmesser gefräst werden sollten, besteht eventuell ein Freiraum, um bestimmte Fräsungen besser als Bohrung in ein Drillfile aufzunehemen oder bestimmte Bohrungen als Fräsung in die Fräslage aufzunehmen.&lt;br /&gt;
&lt;br /&gt;
=== Struktur des Formates ===&lt;br /&gt;
&lt;br /&gt;
Jede Kupferlage, aber auch Lötpasten- und Kleberschablone, Lötstopplack, Beschriftung etc. hat seine eigene Gerberdatei. Wenn vorhanden, getrennt nach Vorder- und Rückseite. Die Datei beginnt mit einem Header, im dem Allgemeines, wie das Einheitensystem (Inch oder mm), die Zahlendarstellung (Nullen unterdrückt, Stellen vor und nach dem Dezimaltrenner), und ob eine Lage gespiegelt oder positiv/negativ dargestellt wird. Eine Lötstoppmaske zum Beispiel enthält meist die gleichen Pads wie die korrespondierende Kupferlage, allerdings etwas größer. Die Darstellung erfolgt aber im Gegensatz zur Kupferlage, wo die Pads &amp;quot;Inseln&amp;quot; sind, negativ, was &amp;quot;Löcher&amp;quot; in der die ganze Platine bedeckenden Lötstoppschicht bedeutet. Es folgt eine Blendentabelle. Hierbei wird eine Anzahl von Blenden in Form und Größe definiert. Daran anschliessend Zeilen mit X- und Y-Koordinaten, die entweder mit geschlossener (nur Positionswechsel) oder offener Blende (&amp;quot;Draw&amp;quot;, es wird ein &amp;quot;Strich&amp;quot; gezogen, die Blendenanweisung definiert seine Breite), angefahren werden. Es gibt auch Positionen, die mit geschlossener Blende angefahren werden, und wo am Zielort die Blende kurz geöffnet wird (&amp;quot;Blinks&amp;quot; oder &amp;quot;Flashes&amp;quot;). Diese werden verwendet, um speziell Pads darzustellen. Die Form und Größe der Blende bestimmt hierbei die Form und Größe des erzeugten Pads. Leiterbahnstücke gleicher Form werden nicht als Blink, sondern als Draw mit gleichem Anfangs und Endpunkt (&amp;quot;Null-Länge&amp;quot;) dargestellt. Diese konsequente Trennung von Pads als Blink und Leiterbahnen als Draw ermöglicht es, leichter Änderungen an den Pads vornehmen zu können, in dem man dem Pad eine andere Blendendefinition zuweist. Das gilt auch für mit dem Pad im Zusamenhang zusehenden Blinks für Lötstoppmasken und besonders Pasten- und Klebstoffmasken, die oft vom Bestücker für seinen individuellen Herstellungsprozess angepasst werden müssen. Das Gerberformat enthält auch Anweisungsmöglichkeiten für Skalierung, Makros, Polygone, Drehungen, Kreise u. Kreissegmente, Kommentare ec. Große Flächen werden entweder durch einen Flächenbefehl als Polygon definiert, oder aber durch viele Striche emuliert (&amp;quot;stroke fill&amp;quot;). Die Dateiendung ist nicht einheitlich. Üblich ist es, alle Gerber Dateien mit .gbr, .ger oder .gerber enden zu lassen, und den speziellen Zweck im Dateinahmen unterzubringen (Beispiel: &amp;quot;PlatineProjektname-CopperTop.gbr&amp;quot;), oder aber spezielle Endungen für die jeweilige Gerberlage entsprechend ihrer Verwendung zu benutzen. Ein spezielles System existiert hierbei nicht, jedes Programm handhabt diese auf seine Weise. Eine sehr alte Tradition aus DOS-Zeiten (vermutlich Orcad) ist aber:&lt;br /&gt;
*.BOT  Kupferflaechen Loetseite&lt;br /&gt;
*.drl  Bohrfile (&amp;quot;Drill Rack&amp;quot;, Bohrerliste)&lt;br /&gt;
*.drd  Excellon-Bohrdaten (es müssen aber zwei Bohrdatenlisten existieren. Einmal für durchkontaktierte und einmal für nicht durckontaktierte Bohrungen, weil die Löcher dafür in unterschiedlichen Bearbeitungsstufen gebohrt werden müssen)&lt;br /&gt;
*.dri  Bohrinfo (Statistik über Bohrungen, Bohrerliste)&lt;br /&gt;
*.mnt  Pick and Place Bauteilseite (nur SMD)&lt;br /&gt;
*.mnb  Pick and Place Loetseite (nur SMD, bei Bauteilen auf beiden Seiten)&lt;br /&gt;
*.SMB  Loetstoppmaske Loetseite (Solder Mask Bottom)&lt;br /&gt;
*.SMT  Loetstoppmaske Bestueckungsseite (Solder Mask Top)&lt;br /&gt;
*.SST  Bestueckungsplan Bauteilseite (Silk Screen Top)&lt;br /&gt;
*.SSB  Bestückungsplan Loetseite (Silk Screen Bottom)&lt;br /&gt;
*.TOP  Kupferflaechen Bestueckungsseite&lt;br /&gt;
*.CRT  Lötpastenmaske Bestueckungsseite (Cream Top)&lt;br /&gt;
*.CRB  Lötpastenmaske Lötseite (Cream Bottom)&lt;br /&gt;
*.GLT  Klebermaske Bestueckungsseite (Glue Top)&lt;br /&gt;
*.GLB  Klebermaske Loetseite (Glue Bottom)&lt;br /&gt;
*.KOT  Keepout Bestueckungsseite &lt;br /&gt;
*.KOB  Keepout Loetseite&lt;br /&gt;
*.OUT  Outline&lt;br /&gt;
&lt;br /&gt;
andere Endungen:&lt;br /&gt;
*.NCD  Drillfile&lt;br /&gt;
*.TOL  Toolfile&lt;br /&gt;
*.TC   Drillcounter&lt;br /&gt;
&lt;br /&gt;
Vorschläge für alternative Dateiendungssysteme finden sich im einschlägigen [http://de.wikipedia.org/wiki/Gerber-Format Wikipedia Artikel].&lt;br /&gt;
&lt;br /&gt;
== Tipps ==&lt;br /&gt;
&lt;br /&gt;
*Wenn man Gerber- und Drillfiles erstellt, verwenden man am besten für beide ein einheitliches Zahlenformat, sofern das Layoutprogramm dazu eine Wahl lässt. Richten Sie sich dabei in erster Linie an den Bohrdaten aus, da diese der Dreh und Angelpunkt der Toleranzen sind.&lt;br /&gt;
*Den Nullpunkt der Koordinaten legt man dabei idealerweise nach unten links, falls das Layoutprogram dazu eine Wahl lässt.&lt;br /&gt;
*Man sollte nach Möglichkeit nur noch Gerber RS-274X (&amp;quot;Extended Gerber&amp;quot;) verwenden.   &lt;br /&gt;
*Als standardmäßige Formateinstellung für Gerberdaten empfielt sich dabei 3.3 metrisch. Hintergrund: Die IPC Spezifikation empfiehlt, die höchste Auflösung zu verwenden.&lt;br /&gt;
*Man verwendet nach Möglichkeit kein &amp;quot;Stroke fill&amp;quot; für Kupferflächen, sondern einen Polygon-Befehl. Leider lässt das nicht jedes Programm zu. Eine Begründung für die Vermeidung findet sich hier unter [http://www.ucamco.com/downloads &amp;quot;Painting considered harmful&amp;quot;].&lt;br /&gt;
* Für Pads gilt ähnliches in noch verschärfterer Form: Pads sollten nach möglichkeit immer &amp;quot;Blinks&amp;quot; sein. Allerdings ist das bei exotischren Padformen nicht so ohne weiteres möglich.&lt;br /&gt;
* Alle Lagen &amp;quot;in normaler&amp;quot; Ansicht ausgeben. D.h. so, wie man sie sehen würde, wenn man mit einem Röntgenblick von der Bauteilseite durch die Platine schauen würde. Schriften auf der Unterseite die im fertigen Objekt normal lesbar sein sollen, erscheinen dabei gespiegelt.&lt;br /&gt;
* Ein Platinenbeschreibung in einem allgemein lesbaren Format (z.B. PDF oder TXT, &#039;&#039;&#039;nicht&#039;&#039;&#039; die obskuren Formate irgendwelcher Textverarbeitungssysteme) dabeilegen. Ausser Informationen über Lagenaufbau und die Abmessungen solte diese Beschreibung eine Liste aller Gerber- und Bohrfiles enthalten, mit einer &#039;&#039;&#039;expliziten Nennung&#039;&#039;&#039; der Lage, für die sie gedacht sind. Das gilt besonders für Innenlagen, die nicht nur einfach durchnummeriert sein sollten, sondern es sollte &#039;&#039;&#039;explizit&#039;&#039;&#039; angegeben werden, in welcher Position sich die &amp;quot;Nummer&amp;quot; zur Ober- oder Unterseite befindet. Bei einem vierlagigen Aufbau ist es sonst nicht eindeutig klar, das &amp;quot;Layer 1&amp;quot; die Lage direkt unter der Oberseitenlage ist.&lt;br /&gt;
* Die Lagen sollten nicht gespiegelt sein.&lt;br /&gt;
* Kupferlagen sollten nicht komplett negativ sein, auch wenn sie negative Teile enthalten. Aber Lötstoppmaske, Lotpastenmaske und Klebstoffmaske schon.&lt;br /&gt;
* Die Lagen sollten keinen Versatz gegeneinander haben.&lt;br /&gt;
* Es sollte eine Konturlage existieren, die alle (Aussen-) Konturen der Platine enthält.&lt;br /&gt;
* Für durchkontaktierte und nicht durchkontaktierte Bohrungen sollten separate Bohrfiles existieren. Diese sind dann aber im [http://en.wikipedia.org/wiki/Excellon_format Excelon-Format] und nicht Gerber. Bei Multilayer Aufbauten sind für jeden separaten Bohrvorgang separate Borfiles nötig (Achtung bei blind und buried Vias). Ist, wegen irgendeiner Besonderheit der speziellen Platine, ein sonst üblicher Bohrvorgang nicht vorhanden, so sollte das auch &#039;&#039;&#039;explizit&#039;&#039;&#039; im begleitenden Text vermerkt werden.&lt;br /&gt;
* Ein konkreter Fall mit Fragen zur Erstellung von Gerberdaten (aus Target, gilt aber allgemein) findet sich [http://www.mikrocontroller.net/topic/319625#new hier].&lt;br /&gt;
&lt;br /&gt;
== Alternativen zu Gerber ==&lt;br /&gt;
&lt;br /&gt;
Viele Leiterplattenhersteller aktzeptieren auch die direkten Entwicklungsdaten für die meisten weitverbreiteten Leiterplattenlayout Programme. Insbesondere gilt das für Eagle, Kicad, Target, Altium und Orcad. Es empfielt sich darum, den gewünschten Leiterplattenhersteller nach den Formaten, die er verarbeiten kann, zu fragen. Allerdings gibt man in diesem Falle wesentlich mehr Daten heraus, als für eine Produktion nötig ist. Insofern kann das als Sicherheitsrisiko gesehen werden, was aber für Amateure eher nebensächlich sein dürfte.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres, wesentlich schwerwiegenderes, Risiko liegt aber darin, das die CAD-Systemdaten wesentlich interpretierfähiger als die Gerberdaten sind, was zu fatalen Missverständnissen führen kann.&lt;br /&gt;
&lt;br /&gt;
Für die Produktion müssen die Daten aber auf jeden Fall vom Leiterplattenhersteller speziell für seine Anlagen aufbereitet werden. Darum, und um eine Kompatibilität mit den Daten anderer CAD-Systeme zu erhalten, werden die Daten dann im allgemeinen doch in das Gerberformat umgewandelt, da Gerber als Austauschformat den kleinsten gemeinsamen Nenner darstellt. Weil Gerber für den Austausch am weitesten verbreitet ist, haben die Leiterplattenhersteller darin auch oft die meiste Erfahrung und meiste Übung und oft feststehende Vorgehensweisen im Sinne der Qalitätssicherung.&lt;br /&gt;
&lt;br /&gt;
Daher ist es angeraten, seine Daten im Gerberformat bei den Leiterplattenherstellern einzureichen.&lt;br /&gt;
&lt;br /&gt;
Eine Diskussion zum Thema &amp;quot;CAD-Dateien statt Gerber&amp;quot; findet sich [http://www.mikrocontroller.net/topic/319065#new hier im Forum].&lt;br /&gt;
&lt;br /&gt;
Als direktes alternatives Dateiformat zu Gerber wäre ODB++ zu nennen, welches aber proprietär von Valor ist. Eine Diskussion zum Thema &amp;quot;ODB++ statt Gerber&amp;quot; findet sich [http://www.mikrocontroller.net/topic/320716#new hier im Forum]. Desweiteren entwickelte [http://www.ipc.org/de/default.aspx der IPC] mit [http://ipc-2581.com/ IPC-2581] ein XML basiertes Format, das sich bisher aber kaum verbreiten konnte. Es gibt wohl neuere Ansätze, IPC-2581 und Gerber aneinander anzugleichen. Auch dazu veröffentlichte Ucamco einen [http://www.ucamco.com/downloads Vorschlag (Und weiter: IPC-2581 meets the Gerber File Format)] der das Gerber-Dateiformat um Angaben z.b. zum Lagenaufbau erweitert.&lt;br /&gt;
&lt;br /&gt;
Ein [http://www.ilfa.de/Publikationen Plädoyer für Gerber (unter &amp;quot;Datenformate: Gerber&amp;quot;)] hält auch A.Wiemers.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich zählt das Gerberformat zu den Vektorgrafikformaten. Daher ist hypothetisch auch z.B. [http://de.wikipedia.org/wiki/SVG das SVG-Format] geeignet, um Platinendaten zu transportieren und zu manipulieren. Allerdings ist das bisher nicht üblich, und u.U. riskant, weil eine identische Darstellung in verschiedenen Programmen aufgrund der Komplexität von SVG nicht immer gewährleistet ist.&lt;br /&gt;
&lt;br /&gt;
== Gerber Tools == &lt;br /&gt;
&lt;br /&gt;
* [http://www.GerberLogix.com GerberLogix]: Einfach zu bedienender Extended Gerber Viewer. Weitere Formate sind Excellon 1/2. Highlight ist die Automatische Bemaßung von Leiterbahnen. Für Hobbyisten Kostenlos.&lt;br /&gt;
&lt;br /&gt;
* [http://www.PCB-Investigator.com PCB-Investigator]: Umfangreiche Funktionalität zum vergleichen verschiedenster Leiterplatten Daten. Wandelt alle Daten auch in 3D um. ODB++, IPC 2581, GenCAD und Gerber Daten. &lt;br /&gt;
&lt;br /&gt;
* [http://ruggedcircuits.com/gerbmerge/ Gerbmerge]: Ein unter Python geschriebenes Tool, mit denen einzelne Platinen zu größeren Nutzen zusammengefügt werden können. Freeware. &lt;br /&gt;
&lt;br /&gt;
* [http://www.graphicode.com/GC-Prevue_Gerber_Viewer gc-preview]: Ein Programm, um Gerberdaten ansehen und drucken zu können. Freeware.&lt;br /&gt;
&lt;br /&gt;
* Die Firma Graphicode bietet auch noch andere, im allgemeinen kostenpflichtige Software an, mit der diverse Plotter- und Platinenformate, u.a. auch Gerberdaten, ineinander überführt werden können, wie z.B. [http://www.graphicode.com/products/cam GC-CAM-Edit].&lt;br /&gt;
&lt;br /&gt;
* [http://www.softwarecompanions.com/gerbview.html GerbView (1)]: Ein Programm, das in der Lage ist, verschiedene Platinen- und Plotterformate, darunter eben auch Gerberdaten, zu sichten, ineinander zu convertieren, zu markieren und zu drucken. 30 Tage Testversion. &lt;br /&gt;
&lt;br /&gt;
* [http://iut-tice.ujf-grenoble.fr/kicad/ GerbView (2)]: Ebenfalls unter dem Namen GerbView existiert ein anderer Gerberviewer als Bestandteil von [[KiCAD]]. Dieser erlaubt das Betrachten der Gerberfiles und den Export als Platine in PCBnew, welches ebenfals Bestandteil von KiCAD ist. Unter KiCAD/PCBnew kann diese Platine dann manipuliert, verändert und wieder als Gerberfile exportiert werden. Allerdings können so nur Gerber-RS274X Daten eingelesen und exportiert werden. Blinks werden aber beim Reimport als Durchkontaktierung dargestellt. Insgesammt ist dieses Feature ziemlich &amp;quot;buggy&amp;quot; und unperfekt. Letzteres ist aber aus grundsätzlichen Erwägungen heraus auch schwer zu ändern. Siehe: http://www.mikrocontroller.net/topic/263576#2739329&lt;br /&gt;
&lt;br /&gt;
* [http://gerbv.gpleda.org/index.html Gerbv]: Ebenfalls ein Open Source Gerberviewer. Er gehört zum gEDA Projekt. Funktioniert hervorragend und hat viele Features. Verarbeitet RS-274-X und Excellon-Bohrdaten, jedoch kein RS-274 (Standard-Gerber). Dieser Gerberviewer ermöglicht auch das Löschen einzelner Strukturen und das Umskalieren, Verschieben, Spiegeln und Drehen der gesamten Gerberdatei. Gespeichert wird nur Extendet Gerber. &lt;br /&gt;
&lt;br /&gt;
* [http://www.pentalogix.com ViewMate]: ist eine professionelle CAM-Software, die als Viewer kostenlos abgegeben wird. Die Funktionen zum Ändern und Speichern sind gesperrt, aber zum Überprüfen der Ausgabedaten hervorragend geeignet (auch Bohrdaten). Dies kostenlose Version läuft auch recht gut unter wine (Debian squeeze). &lt;br /&gt;
&lt;br /&gt;
* [http://www.mentor.com/products/pcb-system-design/downloads/odb-viewer VUV]: ODB++ Viewer, der von der Firma Valor, jetzt von Mentor übernommen, kostenlos abgegeben wird.&lt;br /&gt;
&lt;br /&gt;
* [http://www.cenon.info/ Cenon]: Cenon ist eine Open Source Software um speziell Vektorgrafiken zu betrachten, zu manipulieren und zu konvertieren. Das Gerberformat ist grundsätzlich als Vektorgrafikformat anzusehen. Cenon kann auch Standard und extendet Gerber einlesen, und als extendet Gerber wieder abspeichern. Es können einzelne Strukturen in Gerber selektiert, kopiert, gelöscht, verschoben, gedreht und eingefügt werden. Ebenso können Mehrfachnutzen erstellt werden. Es kann auch in oder aus anderen Vektorformaten wie PDF, PS, HPGL, DXF konvertiert werden. Die Bedienung des Programmes ist manchmal sehr pfiffig, aber leider meistens sehr gewöhnungsbedürftig. Es ist z.B. unbedingt darauf zu achten, das die Dateien adäquate Endungen haben, als Gerber lässt Cenon nur .ger und .gerber zu. Bei der Zusammenarbeit mit anderen Programmen ist es daher leider oft nötig, die Dateien ständig umzubenennen. Unter Debian Squeeze existiert ein Cenon Package. Leider müssen z.Z. (17. Nov. 2011) nach der Installation noch die GNUstep Librarys manuell von /usr/lib/GNUstep/Library nach /usr/lib/GNUstep/Cenon oder /usr/local/lib/GNUstep/Cenon kopiert werden. Es ist dringend anzuraten, die  [http://www.cenon.info/frameLoad_de.html?support_faq_de.html Cenon FAQ] und das [http://www.vhf-group.com/vhf-interservice/download/doc/Cenon_de.pdf Cenon Handbuch] zu lesen.&lt;br /&gt;
&lt;br /&gt;
* [[Media:PyGerberAnalyse_B5_13Jun2013.zip]] Absolut primitives Programm zur Gerber-Daten Analyse. Test-Status. Geschrieben in Python3. Kann Gerber247d und Gerber247x einlesen und teilweise analysieren und die Analyse als Datei abspeichern, aber keine Makros darin. Kann auch Drill Files einlesen. Kann Gerber- oder Drill-Files in rudimentärer Form anzeigen (z.B. OHNE Aperturen, kein Maßstab, ist somit für fast nichts zu gebrauchen). Das Programm besteht aus den drei Teilen PyGerbAnalyse_B5_13Jun2013.py, ClassDefBasicAnalysisResults_13Jun2013.py und ClassDefGerberLayer_13Jun2013.py. Gestartet wird nur PyGerbAnalyse_B5_13Jun2013.py, die anderen beiden Python Files enthalten Klassendefinitionen. Steht unter GNU-GPL. Autor Bernd Wiebus. KEINE GARANTIE! Testberichte, Hinweise, Informationen und Anregungen sowie dringend benötigte Testdateien mit normalen und exotischen, auch älteren, Gerberformaten von unterschiedlichen Layoutprogrammen bitte an bernd.wiebus@gmx.de senden. DANKE im Voraus dazu! Es ist eine Python3 Version des unter dem BASIC-Dialekt Gambas2 geschriebenen ebenso primitiven Viewers, der unter [[Media:GerbAnalyse_RevA6.zip]] zu bekommen ist. Python3 ist unter Linux bei den meisten Distributionen als Packet installierbar. Windows User könnten vieleicht Möglichkeiten in dieser Diskussion finden: http://www.mikrocontroller.net/topic/280970#new&lt;br /&gt;
&lt;br /&gt;
* [http://www.gerber-viewer.com/ gerber-viewer.com]: Für die schnelle Kontrolle von Gerberdaten eignet sich auch ein online Viewer. Einfach Zip-Archiv oder Gerberdaten auswählen, uploaden und online begutachten. Datensicherheit beachten! Gerberdaten werden dabei herausgegeben!&lt;br /&gt;
&lt;br /&gt;
* [http://www.numericalinnovations.com/collections/fab-3000-gerber-cam?gclid=CLj1-_GW6LsCFclQ3godr3sASQ FAB 3000 V7]: Ein Gerberviewer und Editor von Numerical Innovations. Es existiert auch eine Trial Version.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/aitjcize/QCamber QCamber] Relativ neue Software, über die noch wenig bekannt ist.&lt;br /&gt;
&lt;br /&gt;
* [http://caram.cl/software/flatcam/ FlatCAM] Diese Software erstellt aus Gerberdaten Bohrdaten und G-Code um den Platinenumriss (mit Haltestegen) freizufräsen, oder auch zum &amp;quot;Konturfräsewn&amp;quot;. Beim &amp;quot;Konturfräsen&amp;quot; wird eine Leiterplatte nicht geätzt, sondern gefräst. Naturgemäß geht letzteres nur sinnvoll für Einzelstücke oder Kleinserien, und auch nur für relativ grobe Layouts. Desweiteren kann auf diesem Wege auch G-Code zum Fräsen bzw. Gravieren von Frontplatten o.ä. erzeugt werden, wenn man die Strukturen in einem Layoutprogramm passend anlegt, als Gerberdaten exportiert und dann mit dieser Software bearbeitet. Siehe http://www.mikrocontroller.net/topic/338193#3717135.&lt;br /&gt;
&lt;br /&gt;
* [http://www.zofzpcb.com ZofzPCB] Ein Gerber Viewer. Kann u.A. Gerber Daten in 3D Rendern. Freeware. Läuft aber z.Z. (Oktober 2014) nur unter Windows. Siehe: http://www.mikrocontroller.net/topic/346675#new&lt;br /&gt;
&lt;br /&gt;
== Siehe auch == &lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/293100#new Forumsbeitrag]: Gerber Daten: wie erkenne ich, ob Bohrung metallisiert ist?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/311780#new Forumsbeitrag]: Gerberdatei für Lötstoppmaske&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/311426#new Forumsbeitrag]: Ein Klassiker - Gerberdaten und Blendendatei - RS274D vs. RS274X&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/310333#new Forumsbeitrag]: Kicad: Bohrdatei&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/309923#new Forumsbeitrag]: Gerbv Layoutkontrolle fehlerhafte Anzeige/ Ergebnisse?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/309765#new Forumsbeitrag]: Bohrdatei für fertige Leiterplatte&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/303326#new Forumsbeitrag]: gerber Preview gcprevue welche Version empfehlenswert?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/298632#new Forumsbeitrag]: Gerber Daten für Board Cutout (Altium)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/307967#new Forumsbeitrag]: Kann mir wer Eagle zu Gerber exportieren&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/291090#new Forumsbeitrag]: Altium exportiert nicht korrekt in Gerber&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/262726#new Forumsbeitrag]: Gerber Daten (formate und Dateiendungen)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/255449#new Forumsbeitrag]: Eagle CAM-Job / Itead Studio - Fehler in Gerber Dateien?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/255129#new Forumsbeitrag]: Layout (Gerber) in Nutzen umwandeln - suche Tool&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/241858#new Forumsbeitrag]: EAGLE: Genauigkeit für Gerber-Dateien einstellen - wo? wie?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319065#new Forumsbeitrag]: CAD-Daten oder Gerberdaten herausgeben?&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/320716#new Forumsbeitrag]: Diskussion über ODB++ als Alternative zu Gerber.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Schaltplaneditoren]]&lt;br /&gt;
[[Category:Platinen]]&lt;/div&gt;</summary>
		<author><name>193.254.108.90</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=85248</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=85248"/>
		<updated>2014-10-15T13:02:13Z</updated>

		<summary type="html">&lt;p&gt;193.254.108.90: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
===Mechanischer Aufbau===&lt;br /&gt;
Schrittmotoren bestehen aus einem (magnetisierten) Ankerkonstrukt und einem Spulensystem, wodurch bei Stromfluss eine Bewegung generiert werden kann. Kohlebürsten oder Schleifringe braucht der Motor nicht. Der Anker (Innenläufer) kann z. B. aus einem gezahnten Permanentmagneten bestehen. Durch diesen geschickten Aufbau wird erreicht, dass je Motorumdrehung mehrere Schrittpositionen geschaffen werden, in die der Motor einrasten kann. So gibt es Motoren mit 200 Vollschritten je Umdrehung. Aufgrund der Magnetisierung besitzt der Motor Ruhepunkte, in denen ein Haltemoment vorliegt.&lt;br /&gt;
&lt;br /&gt;
===Elektrischer Aufbau===&lt;br /&gt;
Es gibt aus elektrischer Sicht zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt. Der Unterschied besteht in der Ansteuerung der Wicklungen:&lt;br /&gt;
&lt;br /&gt;
==== Unipolare Schrittmotoren ====&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* verringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
==== Bipolare Schrittmotoren ====&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen. Änderung der Drehrichtung von Linearachsen kann Durch vertauschen der Spulenanschlüße am Motortreiber erreicht werden: A -&amp;gt; B, #A -&amp;gt; #B, B -&amp;gt; A, #B -&amp;gt; A#. &lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
* hohe Präzision&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
Durch passendes Anlegen der Spannungen an die Wicklungen wird ein Drehfeld erzeugt, dem der Motor folgt. Bevor der Motor die durch das Feld vorgegebene Position erreicht, muss es weitergeführt werden, um die Drehung zu erhalten. Der Motor wird dadurch hinter dem Feld her geführt. Die Winkeldifferenz zwischen Feld und Position ist ein Maß für die Belastung des Motors und die Beschleunigung.&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/Products/Motor-Driver-And-Interface-ICs/Bipolar-Stepper-Motor-Drivers/A4988.aspx Allegromicro A4988] &lt;br /&gt;
===Betriebsarten===&lt;br /&gt;
====Vollschrittbetrieb====&lt;br /&gt;
Die einfachste Betriebsart ist die des Vollschrittbetriebs, bei der das Drehfeld immer um 90 Grad vorgeschoben werden muss, was durch wechselseitiges Ansteuern der Spulen sowie Negation der Ströme nach dem Muster + 0 - 0 sowie  0 + 0 - erfolgt. Es ist dabei immer nur eine einzige Spule aktiv.&lt;br /&gt;
&lt;br /&gt;
====Halbschrittbetrieb====&lt;br /&gt;
Durch Nutzung von zwei Spulen gleichzeitig entstehen Zwischenstufen, die gegenüber dem Vollschritt um 45 Grad gedreht sind, da der Motor z.B. gleichzeit in Nord- als auch in Ostrichtung gezogen wird. Werden beide Betriebsarten gemischt, entsteht das Halbschrittverfahren. Dadurch entstehen 45 Grad-Schritte. Das Bestromungsmuster sieht wie folgt aus: + + 0 - - - 0 +   sowie  0 + + + 0 - - -  für die andere Spule, wobei man wieder eine 90 Grad-Verschiebung der beiden Ströme erkennt.&lt;br /&gt;
&lt;br /&gt;
====Micro-Step-Betrieb====&lt;br /&gt;
Bei weiterer Verfeinerung der Methode entsteht der sogenannte microstep Betrieb, bei dem die beiden Wicklungen mit Sinus/Cosinus-Strömen angesteuert werden. Dennoch bleiben bei Schrittmotoren jeweils die Ruhepunkte pro Vollschritt erhalten, in die sie bei Abschalten des Stromes hineinfallen. In diesen Punkten ist das magnetische Haltemoment vergleichsweise gering (theoretisch null), wächst aber bei infinitisimaler Motordrehung rasch an, um dann wieder abzuflachen, sodass es bei 45 Grad, wenn der Anker gerade zwischen zwei magentischen Positionen steht, wieder Null ist. Vereinfacht kann man sich dies durch einen sinusförmigen Kurvenverlauf, wie im Diagramm rot dargestellt, vorstellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:schrittmotor-ansteuerung-sin-con-js.gif|thumb|500px]]&lt;br /&gt;
&lt;br /&gt;
Den beiden ansteuernden Strömen Sinus/Cosinus kann nun ein dem Haltemoment eitgegengesetzter Strom aufaddiert werden, der dem Anker dort, wo er am stärksten Widerstand erfährt, mehr Drehmoment von aussen zuführt. Dazu muss eine Welle mit 4facher Frequenz, die immer exakt 90 Grad Vorlauf zur Ankerstellung hat, hinzuaddiert werden.&lt;br /&gt;
&lt;br /&gt;
In Realität ist das Moment nicht sinusförmig und dessen Maximum leicht nach vorne verschoben. Unter der Annahme, dass der Vorlauf des Drehfeldes für den Motor günstig ist, kann vereinfachend eine leichte Abflachung der Kurven in den Maxima von Sinus und Cosinus vorgenommen werden. Dies ist bei der einfachen Methode [[Digitale_Sinusfunktion#Sinus-Approximation_1]] bereits ansatzweise berücksichtigt, da die Kurve im Bereich 30 und 150 Grad steiler verläuft, als der reale Sinus.&lt;br /&gt;
&lt;br /&gt;
{Absatz}&lt;br /&gt;
=== Schrittverlust ===&lt;br /&gt;
Das Hauptziel einer sinnvollen Ansteuerung ist neben dem schnellen Erreichen der Endposition bei möglichst geringem Stromaufwand die Vermeidung des so genannten Schrittverlustes, der auftritt, wenn der Motor dem Drehfeld nicht folgen kann. Der Motor schwingt dann in die Position des letzten Vollschritts zurück, teilweise sogar darüber hinaus, wenn schwere Mechanik über Getriebe angetrieben wird und hohe Torsionsmomente gespeichert waren. Damit wird die Sollvorgabe nicht erreicht.&lt;br /&gt;
&lt;br /&gt;
==== Erkennung ====&lt;br /&gt;
Eine Möglichkeit ist, auf der Achse des Motors einen Winkelsensor (Encoder) zu montieren und die Schritte permanent mitzuzählen. Eine weitere Möglichkeit besteht in der Messung des Gegen-EMK des Motors. Bei einem Schrittverlust entstehen bestimmte Oberwellen, insbesondere die dritte Harmonische. Besser, als die Erkennung des erfolgten Verlustes ist die Vermeidung.&lt;br /&gt;
&lt;br /&gt;
==== Vermeidung ====&lt;br /&gt;
Entscheidend ist, das Drehfeld des Motors zum richtigen Zeitpunkt und im Idealfall kontinuierlich so weiterzuführen, dass immer ein optimaler Lastwinkel besteht. Bei gepulstem Betrieb darf das Weiterführen nicht zu früh passieren. Der kritischste Fall ist der des Starts. Der Motor sieht noch kein Lastmoment, das Drehfeld beginnt sich aber gfs schon, schnell zu bewegen. Daher kommt der richtigen Wahl der Beschleunigungskurve eine grosse Bedeutung zu.&lt;br /&gt;
&lt;br /&gt;
===Beschleunigungsrampen richtig wählen und berechnen===&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1 bis 2 kHz ausreichend. Will man auf 5 bis 8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: Das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
Daher muss die Kurve oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Obwohl im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi)-förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://sew-eurodrive.com/download/pdf/09191704.pdf (2,28 MB) S. 30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://sew-eurodrive.com/download/pdf/11220201.pdf (2,68 MB) S. 37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/dyn/resources/prod_documents/doc8017.pdf&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
====Häufigster Fehler====&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: Nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
====Tipps zur Rampe====&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben. Damit ergibt sich ein beschleunigter Zeitverlauf.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;Veraltet&#039;&#039;! Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700 Euro)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50 kHz (!) Schrittfrequenz = 6000 1/min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-Trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200 Euro) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===3 und 4 Achsen TB6560 Schrittmotorplatinen von hyu68.com, wie sie auf eBay angeboten werden (Preisklasse 50 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**state of the art Schrittmotor-IC&lt;br /&gt;
**Mikroschritt bis 16&lt;br /&gt;
**eigener Spannungsregler, benötigt nur die Motorspannung&lt;br /&gt;
**Optokoppler&lt;br /&gt;
**Enable-Eingang&lt;br /&gt;
**Strom in 3 Stufen, 100%, 75%, 50% vom Nennstrom, einstellbar&lt;br /&gt;
**Bedienteil ansteckbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse&lt;br /&gt;
**trotz Optokoppler nicht galvanisch getrennt&lt;br /&gt;
**wegen der Optokoppler nur langsame Pulse, langsamer als Mach3 überhaupt einstellbar ist. Entfernt man die Optokoppler, geht das Handbedienteil nicht mehr.&lt;br /&gt;
**Chopperfrequenz und Nennstrom nur durch Austausch von Bauelementen veränderbar&lt;br /&gt;
**Freilaufdiode am Relais fehlt&lt;br /&gt;
**offiziell darf die Spannung der ICs nicht aus der Motorspannung abgeleitet werden, weil damit die Einschaltsequenz des TB6560 nicht eingehalten wird. Dennoch ist bisher keiner kaputt gegangen.&lt;br /&gt;
**obwohl viele Dioden auf dem Board verbaut sind, haben die Ausgänge nur nach Masse Freilaufdioden (der TB656A benötigt laut Hersteller keine Freilaufdioden) die anderen entkoppeln die Versorgungsspannung der 3 oder 4 Kanäle und dienen als Verpolschutz. &lt;br /&gt;
**wenn die Schrittmotoren gedreht werden, ohne dass das Board an Versorgungsspannung liegt, können die ICs gehimmelt werden.&lt;br /&gt;
**die Fähigkeiten des TB6560, wie Bremstempo, Umschalten der Mikroschritte während der Fahrt, Fehlermeldungen wie Übertemp, können nicht genutzt werden, werden aber von Mach3 sowieso nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85 V, Preisklasse 140-180 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhestromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse (gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60 V, 150 mA, 9 W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, obwohl nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Alternative Stellantriebe ==&lt;br /&gt;
&lt;br /&gt;
Eine preiswerte Alternative zu Schrittmotoren sind die [[Servo|Modellbau-Servos]], die es schon ab 5,- &amp;amp;#8364; gibt. Sie sind im Vergleich geradezu spielend einfach auch von µC anzusteuern und ermöglichen das exakte Anfahren bestimmter (speicherbarer) Winkel. Da sie nicht den Schrittmotor-typischen Schlupf haben, der gerne beim Anfahren unter mechanischer Last auftritt, eignen sie sich auch gut für größere Kräfte. Das integrierte Getriebe und die Stellautomatik blockieren die angefahrene Position, was bei kleineren Schrittmotoren mitunter problematischer ist. Für höhere Genauigkeit sollte man sogenannte digitale Servos nehmen. Eine Sonderform sind die Servowinden, mit denen man auch mehrere Umdrehungen erreichen kann. (&amp;quot;Segelwinden&amp;quot; bei Modellsegelbooten).&lt;br /&gt;
&lt;br /&gt;
== Diskussionsthreads ==&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/topic/51534&lt;br /&gt;
* http://www.mikrocontroller.net/topic/232355&lt;br /&gt;
* http://www.mikrocontroller.net/topic/215261&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/262652#new G-Code-Interpreter und 3-Achs Schrittmotorsteuerung mit ATMega644 und Trinamic TMC260]&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
* Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
* [http://de.nanotec.com/support/tutorials/schrittmotor-und-bldc-motoren-animation Onlinetool zur Darstellung verschiedener Ansteuerungsarten von Nanotec.de] (Flash erforderlich)&lt;br /&gt;
* [http://de.nanotec.com/support/motorauswahl-assistent Motor-Assistent] - Onlinetool zur Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;br /&gt;
* [http://www.schrittmotor-blog.de/ Schrittmotor-blog.de] - Blog mit technischen Hintergrundinformationen und Detailwissen zum Schrittmotor&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>193.254.108.90</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=85247</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=85247"/>
		<updated>2014-10-15T13:00:43Z</updated>

		<summary type="html">&lt;p&gt;193.254.108.90: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
===Mechanischer Aufbau===&lt;br /&gt;
Schrittmotoren bestehen aus einem (magnetisierten) Ankerkonstrukt und einem Spulensystem, wodurch bei Stromfluss eine Bewegung generiert werden kann. Kohlebürsten oder Schleifringe braucht der Motor nicht. Der Anker (Innenläufer) kann z. B. aus einem gezahnten Permanentmagneten bestehen. Durch diesen geschickten Aufbau wird erreicht, dass je Motorumdrehung mehrere Schrittpositionen geschaffen werden, in die der Motor einrasten kann. So gibt es Motoren mit 200 Vollschritten je Umdrehung. Aufgrund der Magnetisierung besitzt der Motor Ruhepunkte, in denen ein Haltemoment vorliegt.&lt;br /&gt;
&lt;br /&gt;
===Elektrischer Aufbau===&lt;br /&gt;
Es gibt aus elektrischer Sicht zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt. Der Unterschied besteht in der Ansteuerung der Wicklungen:&lt;br /&gt;
&lt;br /&gt;
==== Unipolare Schrittmotoren ====&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* verringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
==== Bipolare Schrittmotoren ====&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen. Änderung der Drehrichtung von Linearachsen kann Durch vertauschen der Spulenanschlüße am Motortreiber erreicht werden: A -&amp;gt; B, #A -&amp;gt; #B, B -&amp;gt; A, #B -&amp;gt; A#. &lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
* hohe Präzision&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
Durch passendes Anlegen der Spannungen an die Wicklungen wird ein Drehfeld erzeugt, dem der Motor folgt. Bevor der Motor die durch das Feld vorgegebene Position erreicht, muss es weitergeführt werden, um die Drehung zu erhalten. Der Motor wird dadurch hinter dem Feld her geführt. Die Winkeldifferenz zwischen Feld und Position ist ein Maß für die Belastung des Motors und die Beschleunigung.&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/Products/Motor-Driver-And-Interface-ICs/Bipolar-Stepper-Motor-Drivers/A4988.aspx Allegromicro A4988] &lt;br /&gt;
===Betriebsarten===&lt;br /&gt;
====Vollschrittbetrieb====&lt;br /&gt;
Die einfachste Betriebsart ist die des Vollschrittbetriebs, bei der das Drehfeld immer um 90 Grad vorgeschoben werden muss, was durch wechselseitiges Ansteuern der Spulen sowie Negation der Ströme nach dem Muster + 0 - 0 sowie  0 + 0 - erfolgt. Es ist dabei immer nur eine einzige Spule aktiv.&lt;br /&gt;
&lt;br /&gt;
====Halbschrittbetrieb====&lt;br /&gt;
Durch Nutzung von zwei Spulen gleichzeitig entstehen Zwischenstufen, die gegenüber dem Vollschritt um 45 Grad gedreht sind, da der Motor z.B. gleichzeit in Nord- als auch in Ostrichtung gezogen wird. Werden beide Betriebsarten gemischt, entsteht das Halbschrittverfahren. Dadurch entstehen 45 Grad-Schritte. Das Bestromungsmuster sieht wie folgt aus: + + 0 - - - 0 +   sowie  0 + + + 0 - - -  für die andere Spule, wobei man wieder eine 90 Grad-Verschiebung der beiden Ströme erkennt.&lt;br /&gt;
&lt;br /&gt;
====Micro-Step-Betrieb====&lt;br /&gt;
Bei weiterer Verfeinerung der Methode entsteht der sogenannte microstep Betrieb, bei dem die beiden Wicklungen mit Sinus/Cosinus-Strömen angesteuert werden. Dennoch bleiben bei Schrittmotoren jeweils die Ruhepunkte pro Vollschritt erhalten, in die sie bei Abschalten des Stromes hineinfallen. In diesen Punkten ist das magnetische Haltemoment vergleichsweise gering (theoretisch null), wächst aber bei infinitisimaler Motordrehung rasch an, um dann wieder abzuflachen, sodass es bei 45 Grad, wenn der Anker gerade zwischen zwei magentischen Positionen steht, wieder Null ist. Vereinfacht kann man sich dies durch einen sinusförmigen Kurvenverlauf, wie im Diagramm rot dargestellt, vorstellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:schrittmotor-ansteuerung-sin-con-js.gif|thumb|500px]]&lt;br /&gt;
&lt;br /&gt;
Den beiden ansteuernden Strömen Sinus/Cosinus kann nun ein dem Haltemoment eitgegengesetzter Strom aufaddiert werden, der dem Anker dort, wo er am stärksten Widerstand erfährt, mehr Drehmoment von aussen zuführt. Dazu muss eine Welle mit 4facher Frequenz, die immer exakt 90 Grad Vorlauf zur Ankerstellung hat, hinzuaddiert werden.&lt;br /&gt;
&lt;br /&gt;
In Realität ist das Moment nicht sinusförmig und dessen Maximum leicht nach vorne verschoben. Unter der Annahme, dass der Vorlauf des Drehfeldes für den Motor günstig ist, kann vereinfachend eine leichte Abflachung der Kurven in den Maxima von Sinus und Cosinus vorgenommen werden. Dies ist bei der einfachen Methode [[Digitale_Sinusfunktion#Sinus-Approximation_1]] bereits ansatzweise berücksichtigt, da die Kurve im Bereich 30 und 150 Grad steiler verläuft, als der reale Sinus.&lt;br /&gt;
&lt;br /&gt;
{Absatz}&lt;br /&gt;
=== Schrittverlust ===&lt;br /&gt;
Das Hauptziel einer sinnvollen Ansteuerung ist neben dem schnellen Erreichen der Endposition bei möglichst geringem Stromaufwand die Vermeidung des so genannten Schrittverlustes, der auftritt, wenn der Motor dem Drehfeld nicht folgen kann. Der Motor schwingt dann in die Position des letzten Vollschritts zurück, teilweise sogar darüber hinaus, wenn schwere Mechanik über Getriebe angetrieben wird und hohe Torsionsmomente gespeichert waren. Damit wird die Sollvorgabe nicht erreicht.&lt;br /&gt;
&lt;br /&gt;
==== Erkennung ====&lt;br /&gt;
Eine Möglichkeit ist, auf der Achse des Motors einen Winkelsensor (Encoder) zu montieren und die Schritte permanent mitzuzählen. Eine weitere Möglichkeit besteht in der Messung des Gegen-EMK des Motors. Bei einem Schrittverlust entstehen bestimmte Oberwellen, insbesondere die dritte Harmonische. Besser, als die Erkennung des erfolgten Verlustes ist die Vermeidung.&lt;br /&gt;
&lt;br /&gt;
==== Vermeidung ====&lt;br /&gt;
Entscheidend ist, das Drehfeld des Motors zum richtigen Zeitpunkt und im Idealfall kontinuierlich so weiterzuführen, dass immer ein optimaler Lastwinkel besteht. Bei gepulstem Betrieb darf das Weiterführen nicht zu früh passieren. Der kritischste Fall ist der des Starts. Der Motor sieht noch kein Lastmoment, das Drehfeld beginnt sich aber gfs schon, schnell zu bewegen. Daher kommt der richtigen Wahl der Beschleunigungskurve eine grosse Bedeutung zu.&lt;br /&gt;
&lt;br /&gt;
===Beschleunigungsrampen richtig wählen und berechnen===&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1 bis 2 kHz ausreichend. Will man auf 5 bis 8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: Das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
Daher muss die Kurve oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Obwohl im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi)-förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://sew-eurodrive.com/download/pdf/09191704.pdf (2,28 MB) S. 30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://sew-eurodrive.com/download/pdf/11220201.pdf (2,68 MB) S. 37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/dyn/resources/prod_documents/doc8017.pdf&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
====Häufigster Fehler====&lt;br /&gt;
&lt;br /&gt;
Die Rampi wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenzis- oder Timerwertis einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: Nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
====Tipps zur Rampe====&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben. Damit ergibt sich ein beschleunigter Zeitverlauf.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;Veraltet&#039;&#039;! Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700 Euro)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50 kHz (!) Schrittfrequenz = 6000 1/min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-Trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200 Euro) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===3 und 4 Achsen TB6560 Schrittmotorplatinen von hyu68.com, wie sie auf eBay angeboten werden (Preisklasse 50 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**state of the art Schrittmotor-IC&lt;br /&gt;
**Mikroschritt bis 16&lt;br /&gt;
**eigener Spannungsregler, benötigt nur die Motorspannung&lt;br /&gt;
**Optokoppler&lt;br /&gt;
**Enable-Eingang&lt;br /&gt;
**Strom in 3 Stufen, 100%, 75%, 50% vom Nennstrom, einstellbar&lt;br /&gt;
**Bedienteil ansteckbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse&lt;br /&gt;
**trotz Optokoppler nicht galvanisch getrennt&lt;br /&gt;
**wegen der Optokoppler nur langsame Pulse, langsamer als Mach3 überhaupt einstellbar ist. Entfernt man die Optokoppler, geht das Handbedienteil nicht mehr.&lt;br /&gt;
**Chopperfrequenz und Nennstrom nur durch Austausch von Bauelementen veränderbar&lt;br /&gt;
**Freilaufdiode am Relais fehlt&lt;br /&gt;
**offiziell darf die Spannung der ICs nicht aus der Motorspannung abgeleitet werden, weil damit die Einschaltsequenz des TB6560 nicht eingehalten wird. Dennoch ist bisher keiner kaputt gegangen.&lt;br /&gt;
**obwohl viele Dioden auf dem Board verbaut sind, haben die Ausgänge nur nach Masse Freilaufdioden (der TB656A benötigt laut Hersteller keine Freilaufdioden) die anderen entkoppeln die Versorgungsspannung der 3 oder 4 Kanäle und dienen als Verpolschutz. &lt;br /&gt;
**wenn die Schrittmotoren gedreht werden, ohne dass das Board an Versorgungsspannung liegt, können die ICs gehimmelt werden.&lt;br /&gt;
**die Fähigkeiten des TB6560, wie Bremstempo, Umschalten der Mikroschritte während der Fahrt, Fehlermeldungen wie Übertemp, können nicht genutzt werden, werden aber von Mach3 sowieso nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85 V, Preisklasse 140-180 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhestromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse (gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60 V, 150 mA, 9 W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, obwohl nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Alternative Stellantriebe ==&lt;br /&gt;
&lt;br /&gt;
Eine preiswerte Alternative zu Schrittmotoren sind die [[Servo|Modellbau-Servos]], die es schon ab 5,- &amp;amp;#8364; gibt. Sie sind im Vergleich geradezu spielend einfach auch von µC anzusteuern und ermöglichen das exakte Anfahren bestimmter (speicherbarer) Winkel. Da sie nicht den Schrittmotor-typischen Schlupf haben, der gerne beim Anfahren unter mechanischer Last auftritt, eignen sie sich auch gut für größere Kräfte. Das integrierte Getriebe und die Stellautomatik blockieren die angefahrene Position, was bei kleineren Schrittmotoren mitunter problematischer ist. Für höhere Genauigkeit sollte man sogenannte digitale Servos nehmen. Eine Sonderform sind die Servowinden, mit denen man auch mehrere Umdrehungen erreichen kann. (&amp;quot;Segelwinden&amp;quot; bei Modellsegelbooten).&lt;br /&gt;
&lt;br /&gt;
== Diskussionsthreads ==&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/topic/51534&lt;br /&gt;
* http://www.mikrocontroller.net/topic/232355&lt;br /&gt;
* http://www.mikrocontroller.net/topic/215261&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/262652#new G-Code-Interpreter und 3-Achs Schrittmotorsteuerung mit ATMega644 und Trinamic TMC260]&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
* Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
* [http://de.nanotec.com/support/tutorials/schrittmotor-und-bldc-motoren-animation Onlinetool zur Darstellung verschiedener Ansteuerungsarten von Nanotec.de] (Flash erforderlich)&lt;br /&gt;
* [http://de.nanotec.com/support/motorauswahl-assistent Motor-Assistent] - Onlinetool zur Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;br /&gt;
* [http://www.schrittmotor-blog.de/ Schrittmotor-blog.de] - Blog mit technischen Hintergrundinformationen und Detailwissen zum Schrittmotor&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>193.254.108.90</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Checkliste&amp;diff=76080</id>
		<title>AVR Checkliste</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Checkliste&amp;diff=76080"/>
		<updated>2013-05-29T13:20:40Z</updated>

		<summary type="html">&lt;p&gt;193.254.108.90: /* Mainschleife vorhanden? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:AVR]]&lt;br /&gt;
Diese Seite soll als erste Anlaufstelle dienen, wenn der [[AVR]]-Mikrocontroller mal wieder nicht so will wie er soll. Es wird versucht, die Standardfehler und Probleme aufzulisten und zu erklären, was man dagegen tun kann.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Anderen Controller benutzt als den im Schaltplan: Pinkompatibilität sichergestellt? ===&lt;br /&gt;
&lt;br /&gt;
Nur wenige AVR-Controller sind pinkompatibel und damit untereinander austauschbar. Manchmal liegen gar die am dringensten benötigten Funktionen (ISP-Programmierung) bei anderen Controllern auf anderen Pins. Unbedingt vorher die Belegungen anhand der Datenblätter vergleichen!&lt;br /&gt;
&lt;br /&gt;
=== Fuses richtig gesetzt? ===&lt;br /&gt;
&lt;br /&gt;
Die AVR-Controller haben &#039;Fuses&#039; (deutsch: &#039;Sicherungen&#039;), die das Verhalten des Prozessors auf grundlegender Ebene bestimmen. Ein häufiger Fehler ist beispielsweise, dass die falsche Taktquelle gewählt wurde (Fuse &amp;quot;CKSEL&amp;quot; etc.): einige AVRs können mit dem internen Oszillator (&amp;lt;i&amp;gt;internal R/C&amp;lt;/i&amp;gt;), mit einem externen Oszillator (&amp;lt;i&amp;gt;external clock&amp;lt;/i&amp;gt;), mit einem Quarz (&amp;lt;i&amp;gt;external crystal&amp;lt;/i&amp;gt;) oder mit einem Resonator (&amp;lt;i&amp;gt;external R/C&amp;lt;/i&amp;gt;) betrieben werden. Wenn die Einstellung über die Fusebits nicht dazu passt (z. B. &amp;lt;i&amp;gt;external clock&amp;lt;/i&amp;gt; statt &amp;lt;i&amp;gt;external crystal&amp;lt;/i&amp;gt;), fehlt dem Controller unter Umständen der Systemtakt und er läuft nicht an, oder man bekommt auf der seriellen Schnittstelle Nonsens, oder die Timer bzw. Zeitschleifen im Programm laufen zu langsam oder zu schnell.&lt;br /&gt;
&lt;br /&gt;
Eine andere Fuse (JTAGEN) schaltet auf einem Port (z.&amp;amp;nbsp;B. PORTC auf ATMega32) die JTAG-Unterstützung ein bzw. aus. Wenn sie eingeschaltet ist, funktionieren vier Bits dieses Ports nicht wie gewohnt, da sie für die JTAG-Schnittstelle reserviert werden.&lt;br /&gt;
&lt;br /&gt;
In dem zum STK500 gehörenden Entwicklungstool &#039;AVR Studio&#039; gibt es in der Programmer-Dialogbox einen Tab &#039;Fuses&#039;, der controllerabhängig den Status der Fusebits anzeigt und Änderungen ermöglicht.&lt;br /&gt;
Siehe auch: [[AVR Fuses]].&lt;br /&gt;
&lt;br /&gt;
=== ISP-Adapter ===&lt;br /&gt;
&lt;br /&gt;
Bei ISP-Programmieradaptern für den Parallelport kann es zu Inkompatibilitäten mit manchen Ports kommen. Tritt das Problem auch auf, wenn der ISP-Adapter an einem anderen Rechner angeschlossen ist? Funktioniert es vielleicht mit einer anderen Software? Siehe auch: [[AVR In System Programmer]]).&lt;br /&gt;
&lt;br /&gt;
Bei seriellem Programmer mit Controller (STK500, Atmel AVRISP etc.): Programmieren dauert sehr lange, es gibt Fehler. Abhilfe: ISP Taktrate richtig einstellen (&amp;lt;1/4 F_CPU).&lt;br /&gt;
&lt;br /&gt;
Beim Programmieren mit dem usbasp Programmieradapter muss die Geschwindigkeit richtig eingestellt werden. Bei einem AVR der auf den eingebauten 1 Mhz läuft muss mit langsamer Geschwindigkeit (Jumper zu) programmiert werden.&lt;br /&gt;
&lt;br /&gt;
=== Programmieren via SPI und angeschlossene SPI-Hardware ===&lt;br /&gt;
Wenn Peripherie über SPI angebunden ist, muss sich diese zum Programmierzeitpunkt auf dem Bus neutral verhalten. Normalerweise bedeutet dies, dass die Slave-Select/Chip-Select-Leitungen der Peripherie auf high gezogen werden müssen, wenn die Chips keinen internen Pull-Up haben. Werte von 10 kΩ bis 100 kΩ für normale Anwendungen haben sich bewährt.&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung richtig angeschlossen? ===&lt;br /&gt;
&lt;br /&gt;
Der AVCC-Pin ist der Versorgungsanschluss für den AD-Wandler und den zugehörigen Port. Er ist nicht an allen AVRs vorhanden; wenn er aber vorhanden ist, so muss er auf jeden Fall angeschlossen sein, auch wenn der AD-Wandler nicht benutzt wird. Wird der AD-Wandler verwendet, sollte zur Verbesserung der Genauigkeit der AVCC-Pin über einen Lowpass-Filter angeschlossen werden (siehe Datenblatt).&lt;br /&gt;
Oft funktioniert die Programmierung des Controllers auch, wenn Vcc oder GND nicht richtig angeschlossen ist. Zur Sicherheit kann man mit einem Messgerät direkt an den Anschlüssen des AVRs kontrollieren (VCC-GND, AVCC-GND) prüfen, ob die Verbindungen korrekt sind. Es empfiehlt sich, vor dem Einsetzen bzw. Einlöten des Controllers die Versorgungsanschlüsse nochmals zu prüfen, um sicherzustellen, dass man den IC nicht durch eine zu hohe Spannung aufgrund eines Fehlers in der Versorgung zerstört.&lt;br /&gt;
&lt;br /&gt;
=== Reset-Pin korrekt beschaltet? ===&lt;br /&gt;
&lt;br /&gt;
Der Reset-Anschluss am AVR ist &#039;active-low&#039;, d. h. wenn man den Pin mit GND (Masse) verbindet, wird der Controller zurückgesetzt gehalten. Zwar haben die meisten(!) AVRs einen internen Pullup-Widerstand, der den Reset-Pin gegen VCC &amp;quot;zieht&amp;quot;, dieser ist jedoch relativ hochohmig (ca. 50 kΩ, vgl. Datenblatt) und reicht in extrem stark gestörter Umgebung nicht aus, um den Reset-Pin sicher &amp;quot;hochzuhalten&amp;quot;. Als Mindestbeschaltung empfiehlt sich dringend, einen externen Pullup-Widerstand vorzusehen (typisch 10 kΩ), der den Reset-Pin mit VCC verbindet. Er sollte nicht kleiner als 4,7 kΩ sein, da der Programmieradapter sonst eventuell den Reset-Pin während des Programmiervorgangs nicht sicher auf &amp;quot;low&amp;quot; ziehen kann. Mit einem Oszilloskop kann man gut überprüfen, ob der Pegel am Reset-Pin sauber zwischen high und low wechselt. Zusätzlich sollte man auch noch einen Kondensator 47 nF oder 100 nF zwischen Reset-Pin und GND anordnen. Dieses RC-Glied sorgt dafür, dass der Controller beim Einschalten der Versorgungsspannung für eine definierte Zeitspanne im Reset gehalten wird. Im laufenden Betrieb sorgt der Kondensator dafür, dass der Reseteingang unempfindlich gegenüber Spikes und Glitches wird. Er sollte deshalb unmittelbar in Pin-Nähe beim Prozessor untergebracht werden. Dieser Kondensator darf jedoch nicht verwendet werden, wenn [[debugWIRE]] möglich sein soll.&lt;br /&gt;
&lt;br /&gt;
Atmel empfiehlt zusätzlich noch zum Schutz vor Überspannungen eine externe Diode nach VCC (&amp;quot;Clamp-Diode&amp;quot;), da für den Reset-Pin keine interne vorhanden ist. Diese Diode bereitet jedoch bei manchen Programmieradaptern Schwierigkeiten. Allerdings schützt die Diode den Controller davor, in den High-Voltage Programming Mode zu schalten, zum Beispiel als Folge von Störspannung wegen EMV, und dadurch den Programmspeicher zu überschreiben.&lt;br /&gt;
&lt;br /&gt;
=== Flashen / Lesen / Fuse nur einmal möglich ===&lt;br /&gt;
&lt;br /&gt;
Es kann vorkommen, dass ein AVR nur einmal programmiert werden kann, danach geht es nicht mehr (z.B. Typ wird nicht mehr erkannt). Erst nachdem die Versorgungsspannung getrennt / wieder verbunden ist, geht es erneut.&lt;br /&gt;
&lt;br /&gt;
In diesem Fall ist meistens der Resetpin kurzgeschlossen, daher lässt sich der AVR einmal programmieren.&lt;br /&gt;
&lt;br /&gt;
Der Reset PIN müsste bei korrekter Beschaltung eine Spannung nahe VCC (z.B. 4.9V) aufweisen, ist die Spannung bei GND, ist der Pin kurzgeschlossen und verursacht dieses Problem.&lt;br /&gt;
&lt;br /&gt;
=== Abblockkondensator(en) ordnungsgemäß installiert? ===&lt;br /&gt;
&lt;br /&gt;
Abblockkondensatoren (&amp;quot;Bunker-Kondensatoren&amp;quot;) dienen dazu, sehr kurze Versorgungsspannungseinbrüche, die durch Schaltvorgänge verursacht werden können, zu kompensieren. Diesen Zweck erfüllen sie optimal, wenn folgende Regeln eingehalten werden: &lt;br /&gt;
&lt;br /&gt;
* Ein Abblockkondensator sollte möglichst dicht am IC sitzen.&lt;br /&gt;
&lt;br /&gt;
* Jedes IC in einer Schaltung sollte einen Abblockkondensator besitzen.&lt;br /&gt;
&lt;br /&gt;
* Bei ICs mit mehreren Anschlüssen für VCC und GND sollte jedes VCC-GND-Paar mit einem eigenen Abblockkondensator beschaltet werden (z. B. AVRs in SMD-Bauform wie dem ATmega16A also mit vier Kondensatoren).&lt;br /&gt;
&lt;br /&gt;
* Es sollten keramische Kondensatoren mit einer Kapazität von 100 nF verwendet werden. Größere Kondensatoren, etwa 10 µF-Elkos, sind für diese Aufgabe &#039;&#039;nicht&#039;&#039; geeignet, weil sie &amp;quot;zu langsam&amp;quot; sind!&lt;br /&gt;
&lt;br /&gt;
=== Quarz oder Quarzoszillator angeschlossen? ===&lt;br /&gt;
&lt;br /&gt;
Die neueren AVRs haben einen internen [[Oszillator]], der im Auslieferungszustand über die entsprechenden Fuses eingeschaltet ist. In diesem Fall muss kein externer [[Quarze und AVR|Quarz]] mehr angeschlossen werden. Man kann in den [[AVR Fuses|Fuse-Bits]] aber einstellen, dass man einen externen Taktgenerator (&#039;&#039;external clock&#039;&#039;, z. B. Quarzoszillator) oder externen Quarz (&#039;&#039;external crystal&#039;&#039;) verwenden möchte.&lt;br /&gt;
&lt;br /&gt;
Dann, oder wenn der AVR keinen internen Takt hat, wird an die entsprechenden Pins des Controllers ein Quarz (&#039;&#039;external crystal&#039;&#039;, Bauelement mit zwei &amp;quot;Beinchen&amp;quot;) oder Quarzoszillator (&#039;&#039;external clock&#039;&#039;, Bauelement mit vier &amp;quot;Beinchen&amp;quot;) angeschlossen. Im Falle eines Quarzes werden die XTAL-Pins mit den beiden Anschlüssen des Quarzes und jeweils mit einem Kondensator (ca. 12 bis 22 pF) (vgl. Datenblatt ATMega 8) gegen Masse angeschlossen. Im Falle eines Quarzoszillators reicht es aus, den Taktausgang mit dem XTAL1-Pin zu verbinden, und den XTAL2-Pin unbeschaltet zu lassen. Die Fuses sind entsprechend einzustellen.&lt;br /&gt;
&lt;br /&gt;
=== Alle Ground-Anschlüsse beschaltet? ===&lt;br /&gt;
&lt;br /&gt;
Bei AVRs mit mehreren Ground-Anschlüssen müssen alle Anschlüsse beschaltet werden. Siehe http://www.mikrocontroller.net/forum/read-1-107259.html&lt;br /&gt;
&lt;br /&gt;
=== Alle Lötstellen in Ordnung? ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Kalte&amp;quot;, d.h. schlechte Lötstellen erkennt man an ihrer matten Oberfläche (bei bleihaltigem Lot). Bei beschädigten Lötstellen erkennt man oft einen Riss, der sich kreisförmig um die Mitte des Lötpunktes herum gebildet hat. Solche Stellen verursachen oft erst bei mechanischer Beanspruchung Probleme.&lt;br /&gt;
&lt;br /&gt;
Bei kleinen Abständen (SMD-Bauteile) müssen besonders Verbindungen zwischen benachbarten Lötungen kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Bei Lochrasterplatinen kann man mit einem spitzen Messer (Bastelmesser) die Zwischenräume von möglichen leitenden Verbindungen befreien. &lt;br /&gt;
&lt;br /&gt;
=== Eingänge ===&lt;br /&gt;
&lt;br /&gt;
Taster müssen:&lt;br /&gt;
&lt;br /&gt;
* entprellt werden ([[Entprellung]])&lt;br /&gt;
&lt;br /&gt;
* einen [[AVR-GCC-Tutorial#Tasten_und_Schalter|Pullup-Widerstand]] besitzen, so sie &#039;&#039;active-low&#039;&#039; betrieben werden, d.h. wenn beim Tastendruck der Pin mit GND (Masse) verbunden wird (dies ist die übliche Anschaltung). Man kann einen externen Pull-Up Widerstand (typ. 10 kOhm) benutzen oder den internen aktivieren (DDR als Eingang also &amp;quot;0&amp;quot;, PORT auf &amp;quot;1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Will man einen Taster &#039;&#039;active-high&#039;&#039; betreiben, soll also bei Tastendruck eine &amp;quot;1&amp;quot; in PIN gelesen werden, ist ein externer Pull-Down-Widerstand (typ. 10 kOhm) gegen GND anzuschließen, denn interne Pull-Downs sind nicht verfügbar.&lt;br /&gt;
&lt;br /&gt;
Symptome: Aufgrund des Prellens bekommt man bei einem Tastendruck statt eines Signals mehrere, und beim fehlenden Pullup fängt man sich Störungen (z.&amp;amp;nbsp;B. das 50 Hz-Netzbrummen) ein, da der Pin nicht auf einem &amp;quot;definierten Pegel&amp;quot; liegt, wenn der Taster nicht geschlossen ist. Soll z.&amp;amp;nbsp;B. bei einem Tastendruck eine LED angehen, dann leuchtet die LED durch das Netzbrummen plötzlich mit 50 Hz anstatt aus zu sein.&lt;br /&gt;
&lt;br /&gt;
* active low: ein Anschluss des Tasters an den Port-Pin, den anderen Taster-Anschluss an GND; internen Pull-Up-Widerstand aktivieren oder externen Widerstand zwischen Port-Pin und VCC.&lt;br /&gt;
&lt;br /&gt;
* active high: Taster zwischen Port-Pin und VCC; externen Widerstand zwischen Port-Pin und GND.&lt;br /&gt;
&lt;br /&gt;
=== Ausgänge ===&lt;br /&gt;
&lt;br /&gt;
Man sollte darauf achten, das &amp;quot;kritische&amp;quot; Ausgänge, d.h. Ausgänge, über die nicht &amp;quot;nur&amp;quot; eine LED geschaltet wird, einen definierten Zustand haben, wenn der Portpin auf &amp;quot;Eingang&amp;quot; und damit hochohmig geschaltet ist. Dadurch wird sichergestellt, dass beim Einschalten nicht kurz ein Verbraucher geschaltet wird (z.&amp;amp;nbsp;B. &amp;quot;Zucken&amp;quot; eines Motors). Dies kann man bewerkstelligen, indem man extern Widerstände (auch hier Pull-Up bzw. Pull-Down genannt, typ. 10 kOhm) an den Ausgangs-Pins vorsieht, die den Ausgang auf den gewünschten Zustand ziehen.&lt;br /&gt;
&lt;br /&gt;
=== Besonderheiten bei ATmega128 und seinen Derivaten im 64-Pin-Gehäuse===&lt;br /&gt;
&lt;br /&gt;
[[Bild:isp.png|thumb|300px|right|ISP-Adapter]]&lt;br /&gt;
Der ATmega64 und der ATmega128 sowie alle vom ATMega128 abgeleiteten AVRs im 64-Pin-Gehäuse (ATMega641/1281/2561 sowie AT90CAN32/64/128, Ausnahmen sind nur AT90USB64/128, die eine ganz andere Pinbelegung haben) haben besondere Fallstricke, über die man bei nicht ausreichendem Datenblattstudium leicht stolpert. &lt;br /&gt;
&lt;br /&gt;
* Der erste betrifft den Anschluss der ISP-Signale (MISO, MOSI, SCK, RESET). Dieser erfolgt nicht wie bei den meisten anderen AVR-Controllern an den gleichnamigen Pins, sondern an PDI, PDO, SCK und RESET. Die Pinzuordnung ist:&lt;br /&gt;
:* MOSI → PE0 (Pin 2)&lt;br /&gt;
:* MISO → PE1 (Pin 3)&lt;br /&gt;
:* SCK → PB1 (Pin 11)&lt;br /&gt;
:* RESET → RESET (Pin 20)&lt;br /&gt;
: PEN (Pin 1) hat für normale ISP-Adapter keine Bedeutung und kann offen gelassen oder direkt mit Vcc verbunden werden. Die Benutzung der Pins PDI und PDO anstelle von MOSI und MISO gilt für praktisch alle ATmega128-Derivate im 64-Pin-TQFP-Gehäuse, darunter AT90CAN32/64/128 und ATmega641/1281/2561. Im Zweifelsfall im Datenblatt (Pin Configuration) nachsehen, ob PE0 und PE1 mit &amp;quot;PDI&amp;quot; bzw. &amp;quot;PDO&amp;quot; beschriftet sind.&lt;br /&gt;
&lt;br /&gt;
* Die zweite kleine Gemeinheit betrifft die M103C-Fuse (ATmega103 Compatibility Mode, nur bei den ATmega-Typen, nicht beim AT90CAN32/64/128). Diese ist bei fabrikneuen Atmega64/128 gesetzt und sorgt dafür, dass sich diese wie ein Atmega103 verhalten.&lt;br /&gt;
** Dies hat zur Folge, dass ein für den ATmega64 oder ATmega128 geschriebenes Programm beim ersten RET abstürzt, da der SRAM an einer anderen Stelle endet als erwartet und somit der Prozessor keine gültige Rücksprungadresse vom Stack holen kann. &lt;br /&gt;
** Außerdem funktionieren einige IO-Pins an PORTC, PORTF und PORTG anders.&lt;br /&gt;
** Für weitere Infos bzgl. [[TWI]], [[UART]], [[Timer]], [[Bootloader]] und Kalibrierung des internen RC-Oszillators unbedingt das Datenblatt lesen.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Mainschleife vorhanden? ===&lt;br /&gt;
&lt;br /&gt;
Insbesondere beim Testen von Interrupts kann es passieren, dass man keine eigentliche Programmschleife vorsieht, weil ja alles in den Interrupts passiert. Das fuehrt dazu, dass der Controller nach Abarbeiten aller Befehle in &amp;lt;c&amp;gt;int main(void) {}&amp;lt;/c&amp;gt; seine Arbeit einstellt und daher auch keine Interrupts mehr funktionieren. Demnach sollte bei rein Interrupt-basierten Programmen die Funktion mindestens so aussehen: &lt;br /&gt;
&amp;lt;c&amp;gt;int main(void)&lt;br /&gt;
{&lt;br /&gt;
    // hier Interrupts definieren&lt;br /&gt;
    // und einschalten&lt;br /&gt;
    while (1){}&lt;br /&gt;
}&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alle Interruptvektoren definiert? ===&lt;br /&gt;
&lt;br /&gt;
Wenn man irgendwelche [[Interrupt]]vektoren verwendet, sollte man alle definieren, auch die nicht benutzten. Passiert es dann aufgrund eines Fehlers, dass ein Interrupt unbeabsichtigt ausgeführt wird, so führt der Controller dann eine definierte Aktion aus. Benutzt man eine Hochsprache wie C oder Basic, nimmt einem der Compiler diese Arbeit ab.&lt;br /&gt;
&lt;br /&gt;
Ausserdem sollte man immer im Datenblatt des Controllers nachsehen, wie die Interrupttabelle aufgebaut ist. Die kleinen AVRs verwenden ein RCALL zum Anspringen der Interrupts, welches 1 Wort lang ist. Die grossen AVRs mit mehr als 8 KiBi FLASH verwenden ein CALL, welches 2 Worte lang ist. Verwendet man nun  den falschen Befehl, verschieben sich die Einsprungadressen und das Chaos ist perfekt.&lt;br /&gt;
&lt;br /&gt;
In einem komplett interruptlosen Programm kann man auf die Interrupttabelle selbstverständlich verzichten (erkennbar daran, dass nirgendwo im Code Interrupts mittels Assembler-Befehl SEI eingeschaltet werden).&lt;br /&gt;
&lt;br /&gt;
Oft hilft es einen Catch All Interruptvektor zu definieren um herauszufinden ob ein Fehler (z.B. ein Neubeginn des Programms) vorliegt.&lt;br /&gt;
&amp;lt;c&amp;gt;#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ISR (BADISR_vect)&lt;br /&gt;
{&lt;br /&gt;
    // Hier eine Fehlerausgabe definieren.&lt;br /&gt;
    // Z.B. UART-Ausgabe oder ein PIN toggeln&lt;br /&gt;
}&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann findet man solche Fehler recht schnell.&lt;br /&gt;
&lt;br /&gt;
=== Alle Konfigurationsregister korrekt initialisiert? ===&lt;br /&gt;
&lt;br /&gt;
Alle benötigten Konfigurationsregister (auch &amp;quot;I/O-Register&amp;quot; genannt) eines Mikrocontrollers müssen korrekt initialisiert werden. Bei Fehlfunktionen sollten diese Konfigurationen noch einmal mit dem Datenblatt abgeglichen werden. &lt;br /&gt;
Manchmal ist es auch sinnvoll, bestimmte Funktionen explizit abzuwählen. Ein Beispiel hierfür ist der [[Analog-Komparator]] des AVR: Schaltet man diesen ab, wenn man ihn nicht benötigt, kann man dadurch ein wenig Strom sparen. &lt;br /&gt;
Wenn man besonders &amp;quot;sauber&amp;quot; programmieren möchte, initialisiert man Konfigurationsregister immer, d.h. auch wenn sie nicht im Programm verwendet werden. Dies verhindert mögliche zufällige Fehlkonfigurationen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stackpointer initialisiert? (Nur in Assembler relevant) ===&lt;br /&gt;
&lt;br /&gt;
Fehlerbeschreibung: &#039;&#039;Das Programm lief, bis ein &amp;quot;rcall&amp;quot; oder ein Interrupt eingefügt wurde. Danach ging plötzlich gar nichts mehr.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wahrscheinliche Ursache: Der Stack ist ein spezieller Bereich im RAM, der von Sprungbefehlen und Interruptaufrufen dazu verwendet wird, die Rücksprungadresse ins Hauptprogramm zu speichern.  Da der Stack bei den AVRs nach &amp;quot;unten&amp;quot; wächst, d.h. in Richtung Anfang des RAMs, wird er üblicherweise ans Ende des RAMs gelegt. Der Stack muss vor der ersten Benutzung, am besten direkt am Anfang des Programms, initialisiert werden (sonst ist nach einem Sprung in ein Unterprogramm die Rücksprungadresse undefiniert und das Programm wird an einer unvorhersehbaren Stelle weiter ausgeführt, was in der Regel einen Absturz zur Folge hat). &amp;quot;Den Stack initialisieren&amp;quot; bedeutet, den Stackpointer auf den gewünschten &amp;quot;Startwert&amp;quot; zu setzen. Meistens wird dafür die letzte RAM-Adresse gewählt. &lt;br /&gt;
&lt;br /&gt;
Die Initialisierung unterscheidet sich geringfügig je nach verwendetem AVR. Bei den alten AT90xxxx und den ATtinys ist sie mit zwei Zeilen erledigt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
       ldi r16, RAMEND   ;Die Adresse der letzten Stelle im RAM in r16 laden&lt;br /&gt;
       out SPL, r16      ;Die Adresse in das Register SPL ausgeben&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Da die ATmegas mehr RAM haben, reicht das 8 bit-Register SPL nicht mehr, und es ist ein zweites (SPH) dazugekommen.  Die Initialisierung des Stacks erfordert hier vier Zeilen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
       ldi r16, LOW(RAMEND)    ;Untere 8 bit des 16 bit-Wertes RAMEND laden&lt;br /&gt;
       out SPL, r16&lt;br /&gt;
       ldi r16, HIGH(RAMEND)   ;Obere 8 bit laden&lt;br /&gt;
       out SPH, r16&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 16bit-Register in richtiger Reihenfolge geladen/gelesen? (Nur in Assembler relevant) ===&lt;br /&gt;
&lt;br /&gt;
Bei den 16-bit Registern (z.&amp;amp;nbsp;B. Timer1) genau die Hinweise im Kapitel &amp;quot;Accessing 16-bit Registers&amp;quot; beachten!&lt;br /&gt;
&lt;br /&gt;
So muss z.&amp;amp;nbsp;B. das High-Byte VOR dem Low-Byte geschrieben werden, weil mit dem Schreiben des Low Byte das gesamte Register &amp;quot;übernommen&amp;quot; wird.&lt;br /&gt;
Beim Lesen muss zuerst das Low-Byte gelesen werden, dann das High-Byte.&lt;br /&gt;
Es wird dadurch garantiert, dass sich zwischen den beiden einzelnen Befehlen nicht noch das Register weiter verändert, z.&amp;amp;nbsp;B. beim 16bit Counter.&lt;br /&gt;
Möglich wird das durch ein &amp;quot;temporary Register&amp;quot;, von dem es aber nur eines gibt - was beachtet werden muss, da zwischen diesen beiden einzelnen Lese-/Schreib-Befehlen kein Interrupt auftreten darf, der selber das temporary Rgegister benutzt.&lt;br /&gt;
&lt;br /&gt;
In C oder Basic kümmert sich der Compiler um das Problem - man liest oder beschreibt dann einfach z.&amp;amp;nbsp;B. TCNT1 anstatt TCNT1H und TCNT1L einzeln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flag richtig gelöscht? ===&lt;br /&gt;
&lt;br /&gt;
Ein beliebter Fehler ist, dass man überliest, dass gesetzte Flags (z.&amp;amp;nbsp;B. die Interrupt-Flags) durch beschreiben mit einer &#039;1&#039; und nicht mit einer &#039;0&#039; gelöscht werden! &lt;br /&gt;
&lt;br /&gt;
Beispiel: &lt;br /&gt;
* das Flag ist zuerst &#039;0&#039;&lt;br /&gt;
* das Ereignis (z.&amp;amp;nbsp;B. Zählerüberlauf, also Bit TOV0 in TIFR) tritt auf und setzt das jeweilige Bit im Register auf &#039;1&#039;&lt;br /&gt;
* wir haben auf die &#039;1&#039; gewartet und wollen das Bit nun wieder löschen und müssen dafür eine &#039;1&#039; (eins!) in das Register schreiben, &#039;&#039;&#039;keine&#039;&#039;&#039; &#039;0&#039;. Trotzdem wird das Bit dadurch &#039;0&#039; z.&amp;amp;nbsp;B.:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
    TIFR = (1&amp;lt;&amp;lt;TOV0);&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das ganze ist kein Fehler, sondern hat seine guten Gründe.&lt;br /&gt;
&lt;br /&gt;
Wenn Interrupts zugelassen sind (z.&amp;amp;nbsp;B. in TIMSK) und die Interruptroutine aufgerufen wird, werden diese Flags zumeist automatisch gelöscht.&lt;br /&gt;
&lt;br /&gt;
Der UART-Empfangs-Interrupt (RXC in UCSRA) jedoch nicht! Der wird gelöscht durch Auslesen des Empfangsregisters (UDR). Hier liegt wiederum ein beliebter Stolperstein: Man prüft oft zuerst in der Interruptroutine die Fehlerflags (z.&amp;amp;nbsp;B. Parity) und macht dann manchmal den Fehler das empfangene Zeichen im Fehlerfall nicht auszulesen. Das führt dann zum Absturz (der IRQ wird immer wieder aufgerufen) - man muss also immer das UDR lesen auch wenn etwas Fehlerhaftes drinsteht.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich ist zu beachten, dass in C die Interrupt-Flags &#039;&#039;&#039;nicht&#039;&#039;&#039; mit einer Veroderung des Registers (z.&amp;amp;nbsp;B. TIFR |= (1 &amp;lt;&amp;lt; TOV0)) gelöscht werden sollten, da bei dieser Operation alle anderen evtl. gesetzten Flags im betreffenden Register ebenfalls gelöscht werden. Es ist die Schreibweise von oben zu benutzen (also TIFR = (1 &amp;lt;&amp;lt; TOV0))!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Alle Interrupt Variablen als volatile bezeichnet? ===&lt;br /&gt;
&lt;br /&gt;
Das Schlüsselwort volatile kann als Attribut an Variablen gehängt werden. Der Ausdruck „volatile int i“ versieht die Integervariable i mit dem Attribut volatile. Das Attribut weist den Compiler an, diese Variable nicht zu optimieren, sondern im Speicher abzulegen und zu beachten, dass diese Variable von anderen Prozessen geändert werden kann. Normale Variablen können durch den Compiler auf Register reduziert werden, oder die Daten werden einmalig aus dem Speicher geladen und erst am Ende des Programmes wieder zurückgeschrieben. Das kann Probleme bereiten, wenn beispielsweise in einer [[Interrupt]]routine die Variable verändert wird. Darum müssen alle globalen Variablen, die in einer Interruptroutine geändert werden, mit diesem Schlüsselwort versehen werden.&lt;br /&gt;
&lt;br /&gt;
=== Wo nötig Variablenzugriff atomar gestaltet? ===&lt;br /&gt;
Der Zugriff auf Variablen &amp;gt;8 Bit welche in der ISR und in der Hauptfunktion genutzt werden muss [[atomar]] erfolgen. Das Vergessen dieser Regel führt selten zu Problemen, aber wenn dann zu schwer Nachvollziehbaren...&lt;br /&gt;
&lt;br /&gt;
=== Die Programmierfrequenz passend? ===&lt;br /&gt;
&lt;br /&gt;
Sollte ein Programmieren nicht möglich sein erst einmal die Programmiergeschwindigkeit bei AVR dude mit der Option&lt;br /&gt;
-B bitclock anpassen&lt;br /&gt;
wobei bitclock die Perioden dauer in Milisekunden (floating-point Zahl) ist. Normalerweise -B 1 für Controller mit &amp;gt;=4MHz daher ist bei der Erstprogrammierung ein höherer Wert zu versuchen.&lt;br /&gt;
&lt;br /&gt;
== Serielle Verbindungen ==&lt;br /&gt;
&lt;br /&gt;
=== [[I²C]]/[[TWI]] ===&lt;br /&gt;
&lt;br /&gt;
Sind die Leitungen SCL und SDA mit einem Pullup-Widerstand ausgestattet? Die I²C-Bus-Leitungen SCL und SDA müssen über einen Pullup-Widerstand mit einem Wert von 4,7 kΩ bis 10 kΩ mit der Versorgungsspannung (+5 V) verbunden sein.&lt;br /&gt;
&lt;br /&gt;
=== UART/USART ===&lt;br /&gt;
&lt;br /&gt;
==== Übertragungsprobleme durch falschen oder ungenauen Takt ====&lt;br /&gt;
&lt;br /&gt;
* Der interne [[Oszillator]] ist recht ungenau und nicht temperaturstabil. Daher kann die Umgebungstemperatur auch den [[UART|USART]]-Takt verändern. Für serielle, asynchrone Kommunikation per UART sollte man deshalb immer einen Quarz oder einen Oszillator verwenden, egal bei welcher Baudrate: 3% Fehler sind immer 3% Fehler, egal ob bei 1200 oder 9600 [[Baud]]. Falls doch der interne Oszillator verwendet wird: Wurde er für die richtige Frequenz und Betriebsspannung kalibriert?&lt;br /&gt;
&lt;br /&gt;
* Nicht mit allen Quarzen kann man alle Baudraten genau genug erzeugen. Deswegen gibt es [[Baudratenquarz]]e wie z.&amp;amp;nbsp;B. 3,6864 MHz. Näheres steht im Datenblatt.&lt;br /&gt;
&lt;br /&gt;
* Geschieht die Konfiguration des U(S)ART automatisch durch die Programmiersprache (z.&amp;amp;nbsp;B. in [[Bascom AVR|BASCOM]], [[C]]), dann muss dort der Takt &#039;&#039;genau&#039;&#039; angegeben werden. Setzt man z.&amp;amp;nbsp;B. einen 3,6864 MHz-Quarz ein, darf man dort nicht einfach &amp;quot;4 MHz&amp;quot; angeben, weil dann die Abweichung mit ca. 8% zu hoch wäre. Damit funktioniert die Übertragung nicht mehr.&lt;br /&gt;
&lt;br /&gt;
* Im AVR-Studio kann man die Taktfrequenz sowohl über ein &amp;lt;code&amp;gt;#define F_CPU&amp;lt;/code&amp;gt; im Quelltext als auch über das Optionsmenu oder das selbsterstellte Makefile einstellen. Es darf nur &#039;&#039;eine&#039;&#039; Variante verwendet werden!&lt;br /&gt;
&lt;br /&gt;
* Wenn ein externer Oszillator oder Quarz angeschlossen ist: Sind die [[AVR Fuses | Fuses]] des Controllers so gesetzt, dass er auch verwendet wird?&lt;br /&gt;
&lt;br /&gt;
* Ist die Fuse CLKDIV &#039;&#039;nicht&#039;&#039; programmiert?&lt;br /&gt;
&lt;br /&gt;
* Es taucht auch des öfteren das Missverständnis auf, dass man nur F_CPU verändern muss, um den µC mit einem anderen Takt laufen zu lassen. Dem ist nicht so. Der µC-Takt wird durch die Fuses bzw. den eventuell angeschlossenen Quarz oder Quarzoszillator bestimmt. F_CPU dient nur dazu, die dadurch festgelegte Frequenz im C-Programm zur Verfügung zu haben. F_CPU ist nur eine Information, mit der man bei der Programmierung arbeiten kann. Aber ein anderer F_CPU-Wert führt nicht dazu, dass der µC dann magisch auf diese Frequenz umgestellt wird.&lt;br /&gt;
&lt;br /&gt;
* Um zu prüfen, ob der externe Quarz auch wirklich verwendet wird, kann man  mittels _delay_ms() testweise eine LED im Sekundentakt blinken lassen. Den Unterschied zwischen Quarz und internem RC-Oszillator kann man bei grösseren Frequenzunterschieden leicht sehen. Ebenso sieht man, ob versehentlich die CLKDIV Fuse gesetzt ist: die Blinkfrequenz ist dann achtmal langsamer. Allerdings muss man auch hier aufpassen. Siehe [[AVR-GCC-Tutorial#Warteschleifen (delay.h)|AVR-GCC-Tutorial: Warteschleifen]].&lt;br /&gt;
&lt;br /&gt;
Im folgenden Programm muss angepasst werden:&lt;br /&gt;
*Die vermeintliche Taktfrequenz F_CPU&lt;br /&gt;
*der Port und der Pin, an dem eine LED angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Wird das Programm laufen gelassen, muss die LED 1 Sekunde ein/1 Sekunde aus sein. Stimmen die Zeiten nicht, ist das ein deutlicher Hinweis darauf, dass die tatsächlich vom µC verwendete Taktfrequenz nicht mit der in F_CPU angegebenen übereinstimmt. Das Programm muss mit aktivierter Optimierung &amp;lt;code&amp;gt;-Os&amp;lt;/code&amp;gt; compiliert werden.&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
// Testprogramm für CPU Takt&lt;br /&gt;
// Hier die vermeintliche Taktrate des µC eintragen&lt;br /&gt;
// Im Beispiel hier: 1Mhz&lt;br /&gt;
&lt;br /&gt;
#define F_CPU 1000000&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Hier die tatsächlich verwendeten Parameter angeben&lt;br /&gt;
&lt;br /&gt;
#define LED_PORT    PORTB&lt;br /&gt;
#define LED_DDR     DDRB&lt;br /&gt;
#define LED_PIN     PB0&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   LED_DDR |= 1 &amp;lt;&amp;lt; LED_PIN;&lt;br /&gt;
&lt;br /&gt;
   while (1)&lt;br /&gt;
   {&lt;br /&gt;
      LED_PORT ^= 1 &amp;lt;&amp;lt; LED_PIN;&lt;br /&gt;
      _delay_ms(1000);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Erscheinen im Terminalprogramm kryptische Zeichen anstatt ordentlichen Buchstaben (z.&amp;amp;nbsp;B. ü statt A), liegt das zu 99,9% an einer falsch eingestellten/erzeugten Baudrate im Mikrocontroller. Meistens wiederum liegt dies daran, dass der µC nicht mit der vermeintlichen Taktrate läuft und daher die Baudratenparameter falsch berechnet werden.&lt;br /&gt;
&lt;br /&gt;
* URSEL-Bit in UCSRC: Bei der Initialisierung der UART beachtet, wenn das für den verwendeten AVR notwendig ist, siehe [[AVR-GCC-Tutorial/Der_UART#Die_UART-Register|AVR-GCC-Tutorial/Der UART: Die UART-Register]].&lt;br /&gt;
&lt;br /&gt;
* In den Tutorials für [[AVR-Tutorial: UART |Assembler]] und [http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Der_UART GCC] wird die Nutzung recht gut erklärt und mit Beispielen erläutert.&lt;br /&gt;
&lt;br /&gt;
==== Sonstige Fehlerquellen bei UART/USART ====&lt;br /&gt;
&lt;br /&gt;
* Funktioniert die Datenübertragung zum PC nur solange der Programmieradapter eingesteckt ist, deutet dies auf ein Problem mit der Masse hin (z.&amp;amp;nbsp;B. GND-Anschluss am RS232-Stecker nicht belegt oder dergleichen).&lt;br /&gt;
&lt;br /&gt;
* Der Pegelwandler/Inverter (z.&amp;amp;nbsp;B. MAX232) muss mit Kondensatoren für die internen Ladungspumpen beschaltet werden. Beim MAX232 sind dies mindestens vier Kondensatoren ≥ 1 µF (Polung beachten!), beim MAX202, MAX232A und MAX3232 vier Kondensatoren ≥ 100 nF. Hinzu kommt der obligatorische Abblockkondensator von 100 nF keramisch zwischen VCC und GND des ICs. Das jeweilige Datenblatt gibt Auskunft über die Beschaltung bei &amp;quot;typischer Anwendung&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* TX/RX vertauscht? Modem- oder Nullmodemkabel?&lt;br /&gt;
&lt;br /&gt;
* Bei Kommunikation mit PC: ist die serielle Schnittstelle richtig konfiguriert? Nicht nur Baudrate, Stopp- und Parity-Bits, sondern auch Handshakeverhalten muss stimmen (kein Hardwarehandshake bei ausschließlicher Verwendung der Pins RX/TX).&lt;br /&gt;
&lt;br /&gt;
* Wird das Signal eventuell durch zusätzliche Chips invertiert? (EEPROM von FT232 falsch Programmiert)&lt;br /&gt;
&lt;br /&gt;
* Die Hardware und Verkabelung kann man schnell prüfen, indem man den Pin R1OUT bzw. R2OUT mit T1IN bzw. T2IN am MAX232 miteinander verbindet (je nachdem welches Pinpaar verwendet wird). Dann sollte man auf dem PC ein Terminalprogramm wie Hyperterminal starten und nach dem Eingeben von Zeichen diese sofort angezeigt bekommen, egal mit welcher Baudrate. Lediglich die Flusssteuerung muss auf &amp;quot;Kein&amp;quot; eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
: Man muss aber beachten, dass T1IN bzw. T2IN für diesen Test &#039;&#039;nicht&#039;&#039; mit dem Mikrocontroller verbunden sein darf, weil sonst zwei Ausgänge miteinander verbunden sind, siehe [[Ausgangsstufen Logik-ICs]]. Wenn der µC gesockelt ist, kann man ihn dafür einfach aus dem Sockel nehmen und die RX/TX Pins direkt im µC-Sockel mit einem Stück Draht verbinden.&lt;br /&gt;
&lt;br /&gt;
* UART Ausgabe-Pin als Output-Pin deklariert?&lt;br /&gt;
&lt;br /&gt;
* Spannung an Pin 15 und 16 liegt an? (Falsche Zeichen kommen an, aber in der richtigen Reihenfolge. Beim Test durch Kurzschluss von T1IN und R1OUT kommt nichts an)&lt;br /&gt;
&lt;br /&gt;
=== SPI (Hardware) ===&lt;br /&gt;
* Master Mode: SS Pin als Ausgang oder auf High gelegt? (siehe hier: [http://www.holger-klabunde.de/avr/avrhelp.htm] )&lt;br /&gt;
* SPI zu schnell&lt;br /&gt;
* Hängen andere SPI-Devices am Bus, die undefiniertes CS haben?&lt;br /&gt;
* Sind die DDR-Register der SPI-Ports richtig gesetzt?&lt;br /&gt;
&lt;br /&gt;
== Analog-Digital-Wandler ==&lt;br /&gt;
&lt;br /&gt;
* Sind die Pullup-Widerstände deaktiviert? (im allgemeinen)&lt;br /&gt;
* (im speziellen) Bei einige Controllern liegt der JTAG mit auf den ADC-Pins. Die betroffenen ADC-Kanäle werden erst richtig funktionieren, wenn der JTAG deaktiviert ist. Das geht per Fuse oder - wenn man an die Fuses nicht mehr herrankommen sollte, weil man mit einem Bootloader arbeitet - auch per Software.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf Application Note AVR042: AVR Hardware Design Considerations]&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc1619.pdf Application Note AVR040: EMC Design Considerations]&lt;/div&gt;</summary>
		<author><name>193.254.108.90</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:MSP430_LaunchPad&amp;diff=75666</id>
		<title>Diskussion:MSP430 LaunchPad</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:MSP430_LaunchPad&amp;diff=75666"/>
		<updated>2013-05-16T10:37:29Z</updated>

		<summary type="html">&lt;p&gt;193.254.108.90: /* ToDo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= ToDo =&lt;br /&gt;
* Bilder verkleinern&lt;br /&gt;
* 32768 MKz Quartz erwähnen (&amp;quot;What&#039;s Included&amp;quot; im Original)&lt;br /&gt;
* Fotos ergänzen&lt;br /&gt;
* Typos korrigieren&lt;br /&gt;
* FAQ Interrupt-Vectoren&lt;br /&gt;
* Launchpad Bezugsquellen aktualisieren&lt;br /&gt;
* BTW: Hinweise zu Diskussionsseiten (z.B. &amp;quot;- - ~ ~ ~ ~&amp;quot; und &amp;quot;::&amp;quot;)&lt;br /&gt;
* printf(sprintf) Unterstützung aktivieren&lt;br /&gt;
* Compileroptimierungen (z.B. bei einer eigene wait()Funktion)&lt;br /&gt;
--[[Benutzer:Torsten c|Torsten c]] 22:45, 15. Mai 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>193.254.108.90</name></author>
	</entry>
</feed>