<?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=Kubi48</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=Kubi48"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Kubi48"/>
	<updated>2026-04-12T08:53:06Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=104032</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=104032"/>
		<updated>2021-03-01T10:36:09Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Verzeichnisstruktur des Git Archivs*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168, ATmega328 or ATmega644 and ATmega1284 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 or 4x20 characters.&lt;br /&gt;
* Also a graphical display with the ST7565, NT7108 or ST7920 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible. You can also connect color displays with ILI9341 or ILI9163 controller.&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins for universal use.&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC.&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* If the processor has at least 32K flash memory, you can use the samplingADC method from Pieter-Tjerk to get a resolution of up to 0.01 pF for capacitors with lower capacity than 100 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* If your processor has at least 32K flash, you can use the samplingADC method to measure lesser inductances with a parallel capacitor of known capacity. The resonant frequency and the computed inductance value is shown and additionally the quality factor. &lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 20 nF is built in. The resolution is 0.01 Ohm. For lower capacity values the accuracy of ESR result becomes worse.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Introduktion (dansk) ==&lt;br /&gt;
(Det originale (tidligere) design kan nås via denne link: http://www.mikrocontroller.net/articles/AVR-Transistortester )&lt;br /&gt;
&lt;br /&gt;
Videreudviklet design af Karl-Heinz Kübbeler, se denne [https://www.mikrocontroller.net/topic/248078 forumtråd], de fleste forumbrugere kan også forstå og svare på engelsk.&lt;br /&gt;
&lt;br /&gt;
Jeg (Karl-Heinz Kübbeler) har videreført projektet &#039;&#039;transistortester&#039;&#039; fra Markus Frejek og hovedsageligt videreudviklet softwaren. På grund af dens forbedrede egenskaber, blev navnet &#039;&#039;komponenttester&#039;&#039; foreslået. Jeg ser selv, at dens hovedformål er, at bestemme transistortype og dennes parametre, som udviklet af Markus Frejek.&lt;br /&gt;
&lt;br /&gt;
De vigtigste egenskaber er:&lt;br /&gt;
&lt;br /&gt;
* Fungerer med mikrocontrollerne ATmega8, ATmega168, ATmega328 eller også med ATmega644, ATmega1284.&lt;br /&gt;
* Viser resultater på en udlæsningsenhed (LCD) med 2x16 eller 4x20 tegn.&lt;br /&gt;
* Det er også muligt at anvende grafik udlæsningsenhederne med controllerne ST7565, NT7108 eller ST7920. Det er også muligt at anvende OLED udlæsningsenheder med controller SSD1306 og kommunikation via databus grænsefladerne SPI eller I2C. Det er også muligt at anvende farvegrafik udlæsningsenheder med controllerne ILI9341 eller ILI9163.&lt;br /&gt;
* Én-tast-operation med automatisk sluk.&lt;br /&gt;
* Apparatet har tre måleporte (testtilslutninger, (måle)pinde).&lt;br /&gt;
* Automatisk detektering af NPN, PNP, N-kanal og P-kanal MOSFET, JFET, dioder og små tyristorer, TRIAC.&lt;br /&gt;
* Automatisk detektering af komponentben, hvilket betyder at komponentens ben kan tilsluttes måleportene vilkårligt.&lt;br /&gt;
* Måling af hFE (beta) og basis-emitter-spændingsfald for bipolære transistorer (BJT), incl. for Darlington-transistorer.&lt;br /&gt;
* Automatisk detektering af beskyttelsesdioder i bipolære transistorer og MOSFETs.&lt;br /&gt;
* Bipolære transistorer bliver detekteret som en transistor med en parasitisk transistor (NPNp = NPN + parasitisk PNP).&lt;br /&gt;
* Op til to resistorer kan måles med en opløsning ned til 0,1 ohm. Måleområdet dækker op til 50 Mohm (Megaohm). Resistorer under 10 ohm bliver målt på samme måde som en ESR-måling og med en opløsning på 0,01 ohm hvis en ATmega168/328 anvendes. Bemærk: [[Auflösung und Genauigkeit|Opløsning er ikke nøjagtighed]].&lt;br /&gt;
* Kondensatorers kapacitans i intervallet 35pF (pikofarad) til 100mF (millifarad) kan måles med en opløsning ned til 1 pF. Man skal sikre sig at kondensatoren er afladet inden tilslutning til måleportene.&lt;br /&gt;
* Hvis processoren har mindst 32K flash-hukommelse, kan Pieter-Tjerks samplingADC metode anvendes til at få en opløsning ned til 0,01 pF for kondensatorer med lavere kapacitans end 100 pF.&lt;br /&gt;
* Resistorer og kondensatorer vil blive vist med deres respektive symboler, måleporte og værdier.&lt;br /&gt;
* Op til to dioder vil også blive vist med deres korrekt vendte symboler, måleporte og spændingsfald.&lt;br /&gt;
* Hvis komponenten er en enkelt diode, vil dens parasitiske kapacitans blive målt - og fra version 1.08k vil dens lækstrøm også blive målt.&lt;br /&gt;
* Med ATmega168/328 er selvkalibrering mulig for nul-kapacitans, nul-resistans og andre parametre.&lt;br /&gt;
* Med ATmega168/328 kan spoler detekteres og deres induktanser måles, hvis i intervallet 0,01 mH til 20 H.&lt;br /&gt;
* Hvis processoren har mindst 32K flash-hukommelse, kan samplingADC metoden anvendes til at måle mindre induktanser med en parallel kondensator med kendt kapacitansværdi. Resonansfrekvensen, den beregnede induktansværdi vises og godheden. &lt;br /&gt;
* Med ATmega168/328 kan en kondensators ESR (&#039;&#039;Equivalent Series Resistance&#039;&#039;) måles for kapacitanser større end 20 nF. Opløsningen er 0,01 Ohm. For lavere kapacitanser bliver ESR nøjagtigheden dårligere.&lt;br /&gt;
* Med ATmega168/328 og kondensatorer over 5 nF kan Vtab undersøges efter ladepulser. Via denne metode kan kondensatorens godhed estimeres.&lt;br /&gt;
* Med ATmega328 kan en menufunktion nås med et langt tastetryk (&amp;gt; 0,5 sekund). Et kort tastetryk skifter til næste funktion. Et langt tastetryk starter funktionen. Her er listen af indbyggede funktioner indtil videre:&lt;br /&gt;
** Frekvensmåling på port PD4. Denne port anvendes også til udlæsningsenheden (LCD) og vil blive ændret til input (høj-Z) under målingen. Frekvensen måles over 1 sekund. Hvis frekvensen er under 25 kHz, måles middeltidsperioder istedet for at øge nøjagtigheden. Opløsningen går ned til 0,001 mHz (milliHertz).&lt;br /&gt;
** Spændingsmåling på port PC3, hvis den ikke anvendes til seriel output. Ds ATmega328 har 32 ben (PLCC), kan ADC6 eller ADC7 også anvendes. En 10:1 spændingsdeler anvendes, så spændinger op til 50 V kan måles. Med en yderligere DC-DC-konverter, kan zenerdioder også måles.&lt;br /&gt;
** Frekvensgenerering på port TP2. Over 680 ohm resistoren, der er forbundet til port PB2, kan et signal med en valgt frekvens fra 1 Hz til 2 MHz fås fra port TP2. Port TP1 er jord. (?: Det tyske og engelske tekstafsnit kunne ikke forstås)&lt;br /&gt;
** Variabel PWM (&#039;&#039;pulse width modulation&#039;&#039;) med fast frekvens på port TP2. 10-bit tæller. Port TP1 er jord. Kort tastetryk øger pulsbredden med 1%, langt tastetryk med 10%.&lt;br /&gt;
** Der er en alternativ mulig metode at måle kapacitans og ESR på. Kapacitanser på 2 µF til 50 mF kan sædvanligvis måles, mens kondensatoren sidder i kredsløbet. Man skal sikre sig at kondensatoren er afladet inden tilslutning til måleportene.&lt;br /&gt;
&lt;br /&gt;
Man kan læse detaljeret information med måleeksempler i PDF-dokumentationen på engelsk og tysk. En russisk oversættelse er også tilgængelig. PDFernes links er i denne sides download afsnit.&lt;br /&gt;
&lt;br /&gt;
== Introduction (Français) ==&lt;br /&gt;
&lt;br /&gt;
Projet d&#039;origine : http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Perfectionné par l&#039;auteur Karl-Heinz Kübbeler, voir le [https://www.mikrocontroller.net/topic/248078 forum de discussion afférent].&lt;br /&gt;
&lt;br /&gt;
J&#039;ai continué à développer le projet de Markus Frejek et plus spécifiquement le logiciel. Sur la base des caractéristiques améliorées certains ont proposé de l&#039;appeler testeur de composants. Personnellement, je considère pourtant comme propriéte éminente la détermination automatique du type et des caractéristiques des transistors, telle que développée par Markus Frejek.&lt;br /&gt;
&lt;br /&gt;
J&#039;aimerais citer ici les caractéristiques les plus importantes :&lt;br /&gt;
&lt;br /&gt;
* Utilisation des processeurs ATmega8, ATmega168, ATmega328 ou alors ATmega644 et ATmega1284.&lt;br /&gt;
* Affichage des résultats mesurés par un afficheur LCD de 2x16 ou 4x20 caractères.&lt;br /&gt;
* Au lieu d&#039;un afficheur LCD à 2x16 caractères, on peut aussi utiliser un afficheur graphique sur la base d&#039;un contrôleur ST7565, NT7108 ou ST7920. Le raccordement d&#039;un afficheur OLED à contrôleur SSD1306 via interface SPI ou I2C est possible. Les afficheurs en couleur à contrôleur ILI9341 ou ILI9163 peuvent également être utilisés.&lt;br /&gt;
* Utilisation par touche unique avec coupure automatique temporisée.&lt;br /&gt;
* L&#039;appareil possède trois ports de test universels (Pins Test TP1, TP2 et TP3).&lt;br /&gt;
* Détermination automatique du type des transistors bipolaires NPN et PNP, des MOSFETs à canal N ou P, des JFETs, des diodes ainsi que des thyristors et TRIACs à faible puissance.&lt;br /&gt;
* Détermination automatique du schéma de raccordement des composants, les composants pouvant être connectés de façon quelconque.&lt;br /&gt;
* Mesure du facteur d&#039;amplification de courant (hfe) et de la tension base-émetteur des transistors bipolaires, y inclus les transistors Darlington.&lt;br /&gt;
* Détection automatique d&#039;une diode protectrice intégrée aux transistors bipolaires et MOSFETs.&lt;br /&gt;
* Dans certains cas un transistor parasitaire peut être détecté lors du test de transistors avec diode protectrice (NPNp = NPN + PNP parasitaire).&lt;br /&gt;
* Jusqu&#039;à deux résistances peuvent être mesurées simultanément avec une résolution de 0,1 Ohm. La plage de mesure dépasse les 50 MOhm. Lors de l&#039;utilisation d&#039;un processeur ATmega168/328 les résistances en-dessous de 10 Ohm sont mesurées par la méthode ESR (résistance série) avec une résolution de 0.01 Ohm.&lt;br /&gt;
* Les condensateurs sont mesurés dans une plage de 35 pF à 100 mF avec une résolution de 1 pF.&lt;br /&gt;
* Lorsque la taille de la mémoire Flash est de 32 K, les condensateurs en dessous de 100 pF peuvent être mesurés par la méthode SamplingADC de [https://wwwhome.ewi.utwente.nl/~ptdeboer/ Pieter-Tjerk] avec une résolution jusqu&#039;à 0.01 pF.&lt;br /&gt;
* Les résistances et condensateurs sont affichés avec leur symbole, entouré du numéro des bornes de raccordement.&lt;br /&gt;
* Les valeurs résistances et condensateurs sont affichées avec 4 chiffres décimaux dans la dimension correcte.&lt;br /&gt;
* Dans le cas de diodes détachées, l&#039;appareil effectue aussi la mesure des valeurs de la capacité et (à partir de la version 1.08k) du courant de fuite en direction inverse.&lt;br /&gt;
* Jusqu&#039;à deux diodes sont également affichées avec leur symbole en observant la direction de passage du courant. Les symboles sont entourés des numéros des bornes de raccordement. La valeur du seuil de tension est également affichée.&lt;br /&gt;
* Le processeur ATmega168/328 prévoit un mode &amp;quot;self test&amp;quot; (test auto) permettant un calibrage de la capacité respectivent de la résistance à vide ainsi que d&#039;autres paramètres. &lt;br /&gt;
* Le processeur ATmega168/328 permet aussi la détection et la mesure d&#039;inductivités supérieures à 0.01 mH jusqu&#039;à plus de 20 H.&lt;br /&gt;
* Avec une mémoire Flash minimale de 32 K il est possible, moyennant la connexion parallèle d&#039;un condensateur de capacité connue, de mesurer des inductivités de faible valeur par la méthode SamplingADC. Sont affichés, en outre de la fréquence de résonnance, la valeur calculée de l&#039;inductivité et le facteur de perte.&lt;br /&gt;
* Le processeur ATmega168/328 permet une mesure par la méthode ESR (résistance série équivalente ou Equivalent Series Resistance) des condensteurs d&#039;au moins 20 nF avec une résolution de 0.01 Ohm. Notez cependant que la précision des résultats est moindre pour les faibles valeurs de capacité.&lt;br /&gt;
* Le processeur ATmega168/328 mesure la perte de tension Vloss des condensateurs supérieurs à 5 nF en analysant la tenue en tension après une impulsion de charge. Ceci permet d&#039;estimer le facteur de perte des condensateurs.&lt;br /&gt;
* Des fonctions supplémentaires sont disponibles avec un processeur ATmega328. Un menu peut être activé moyennant une pression de la touche d&#039;une durée supérieure à 0.5 s. Les fonctions spéciales peuvent alors être choisies dans une liste. Une pression de courte durée affiche la fonction suivante de la liste. Une pression de longue durée lance la fonction affichée. Ci-dessous les fonctions supplémentaires implémentées à présent :&lt;br /&gt;
** Mesure de fréquences au pin PD4, utilsé en même temps pour le raccordement de l&#039;afficheur LCD. Pour la mesure, le pin est configuré en tant qu&#039;entrée. La fréquence appliquée est d&#039;abord comptée pendant une seconde. Si la fréquence est inférieure à 25 kHz, la période moyenne est mesurée. Sur base de la période la fréquence est calculée avec une résolution allant jusqu&#039;à 0.001 mHz.&lt;br /&gt;
** Mesure d&#039;une tension externe via le pin PC3, sous condition que celui-ci ne soit pas utilisé comme port de sortie sériel. Lors de l&#039;utilisation d&#039;un ATmega328 en boitier PLCC à 32 pins un des pins ADC6 ou ADC7 peut être affecté à la mesure de tension. Comme un diviseur de tension 10:1 est prévu, des tensions de 0 à 50 V peuvent être mesurées. Une extension du circuit (converisseur DC-DC) permet alors de mesurer des diodes Zener.&lt;br /&gt;
** Générateur de tension au Port TP2. Par l&#039;intermédiaire de la résistance de 680 Ohm raccordée au pin PB2, un signal avec une fréquence variable entre 1 Hz et 2 MHz peut être émis via le port TP2. Le port TP1 est alors raccordé à la masse.&lt;br /&gt;
** Générateur d&#039;impulsions au port TP2 à fréquence fixe et rapport de la largeur d&#039;impulsion variable. Dans cette fonction, le compteur 1 est utilisé comme compteur à 10 bits. Le port TP1 est raccordé à la masse. La largeur d&#039;impulsion peut être augmentée de 1% par une pression courte de la touche, et de 10% par une pression longue.&lt;br /&gt;
** Une variante de la fonction de mesure de la capacité et de l&#039;ESR permet de mesurer des condensateurs de 2 µF à 50 mF dans leur circuit. A cette fin ceux-ci seront raccordés aux pins Test TP1 et TP3. Il est particulièrement important que les condensateurs ainsi mesurés n&#039;ont plus aucune charge résiduelle.&lt;br /&gt;
&lt;br /&gt;
Lorsque l&#039;option POWER_OFF était activée au niveau du fichier de configuration (Makefile), les fonctions supplémentaires tout comme la fonction de dialogue elle même sont limitées dans le temps.&lt;br /&gt;
Pour des informations plus détaillées voir la documentation au format pdf, en langue allemande ou anglaise. Une traduction russe de la documentation est également disponible.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Software (Français) ==&lt;br /&gt;
&lt;br /&gt;
Le logiciel a été développé sur la base du travail de Markus F.&lt;br /&gt;
La partie concernant la mesure des condensateurs a été réécrite complétement et la mesure des résistances a été revisée de façon considérable. En cas de difficultés ou de problèmes il y a lieu de me contacter par mail ou via le forum de discussions. Pour être en mesure de lever les problèmes je dois d&#039;abord les connaître.&lt;br /&gt;
&lt;br /&gt;
Dans ma documentation au format pdf, en langue allemande ou anglaise, j&#039;ai décrit des détails supplémentaires, les différentes procédures de mesure ainsi que des exemples de résultats. L&#039;on y trouve aussi des indications pour la configuration du logiciel à l&#039;aide des paramètres et options du fichier &amp;quot;Makefile&amp;quot;.&lt;br /&gt;
Les commentaires dans les codes source sont en anglais.&lt;br /&gt;
&lt;br /&gt;
J&#039;ai intégré dans le logiciel une nouvelle fonction de test automatique vérifiant le fonctionnement correct du testeur. Le test automatique comprend aussi une routine de calibrage.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden. Ein 16 MHz Quarz ist auch verwendbar, wenn die Software in der Makefile angepasst ist.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software can be configured to run without any changes on the hardware developed by Markus F.&lt;br /&gt;
&lt;br /&gt;
But a few modifications still make sense:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. To this purpose the fuses have to be set. A 16 MHz quartz may also be used if the software is adapted through the Makefile option.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turns on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF. Where necessary resisitor R7 should be decreased to 3.3 kΩ. The circuit diagram and further detail is to be found in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The reasons and details concerning these changes as well as further hints about new implementations are explained in the hardware section of my PDF documentation. ATmega168 or ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to the 1.1V internal reference. The ATmega8 has a 2.56V internal reference which is inferior for measurements below 1V. The ATmega8 can be replaced by a ATmega168/328 without changes to the hardware. Here is the part from the [https://www.mikrocontroller.net/wikifiles/thumb/6/64/TransistorTesterVC1.png/779px-TransistorTesterVC1.png circuit diagram] that is responsible for the measurements.&lt;br /&gt;
&lt;br /&gt;
The circuits for the battery supply and the automatic shutdown are not shown by this circuit diagram.&lt;br /&gt;
&lt;br /&gt;
You could go without the components marked in red, but they may enhance the precision of the measurements. Those marked in green are modifications to the original design by Markus F.&lt;br /&gt;
The Eagle CAD files by Asko B. for three variants can be found in the discussion thread at http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
This is the article about the first version of the transistor tester by Markus F.: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (Français) ==&lt;br /&gt;
&lt;br /&gt;
En pricipe le logiciel peut être configuré de manière à tourner sans modifications sur le hardware présenté par Markus F. (voir ci-dessous).&lt;br /&gt;
&lt;br /&gt;
Quelques modifications sont pourtant utiles :&lt;br /&gt;
&lt;br /&gt;
* Le processeur devrait être piloté par une horloge de 8 MHz, de préférence avec un quartz externe. A cette fin il faut modifier les fusibles (&amp;quot;fuses&amp;quot;) du processeur ATmega. Un quartz de 16 MHz peut être utilisé sous condition de configurer le logiciel en conséquence par l&#039;intermédiaire du Makefile.&lt;br /&gt;
* Une résistance &amp;quot;pull up&amp;quot; d&#039;environ 27 kΩ devrait être ajoutée entre le pin 13 (PD7) du ATmega et l&#039;alimentation VCC.&lt;br /&gt;
* Le condensateur 100 nF au pin 21 (AREF) peut être supprimé ou, mieux, être remplacé par un condensateur 1 nF.&lt;br /&gt;
* Si la mise en marche électronique du testeur cause problème, il faut au moins réduire la valeur du condensateur C2 à la base du transistor T1 à 10 nF et, le cas échéant, réduire la valeur de la résistance R7 à 3,3 kΩ. Le schéma complet et des détails à cet égard se trouvent dans la documentation pdf.&lt;br /&gt;
&lt;br /&gt;
Les raisons pour ces modifications ainsi que des indications supplémentaires sont détaillées au chapitre &amp;quot;Hardware&amp;quot; de ma documentation pdf. L&#039;utilisation d&#039;un processeur ATmega168 ou ATmega328 est recommandée, parce qu&#039;en cas de besoin la fonction &amp;quot;auto-scale&amp;quot; du convertisseur analogique-numérique (ADC) passe de la référence de 5 V (VCC) vers la tension de référence interne. La référence interne du ATmega8 est de 2,56 V, alors que celle des autres processeurs est de 1,1 Volt. Avec 1,1 V on atteint une meilleure résolution du convertisseur ADC lors de la mesure de tensions en dessous de 1 Volt.&lt;br /&gt;
Le processeur ATmega8 peut être remplacé par un ATmega168 ou ATmega328 sans aucune modification du schéma du testeur!&lt;br /&gt;
Voici la partie du [https://www.mikrocontroller.net/wikifiles/thumb/6/64/TransistorTesterVC1.png/779px-TransistorTesterVC1.png schéma] responsable pour les mesures.&lt;br /&gt;
&lt;br /&gt;
Les circuits pour l&#039;alimentation par batterie et l&#039;arrêt automatique ne sont pas représentés sur ce schéma.&lt;br /&gt;
&lt;br /&gt;
Les composants marqués en rouge ne sont pas indispensables, mais ils peuvent contribuer à améliorer la précision des mesures. Les composants marqués en vert sont changés par rapport au projet original de Markus F.&lt;br /&gt;
Les fichiers CAD au format Eagle pour trois variantes mis à disposition par Asko B. se trouvent dans le fil de discussion sous l&#039;adresse :&lt;br /&gt;
http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Voici l&#039;article concernant le première version du testeur de transistors par Markus F. :[[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Dokumentation ist nun auf github abrufbar.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Mikrocontroller-net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können mit dem Kommando &amp;quot;git clone https://github.com/Mikrocontroller-net/transistortester&amp;quot;&lt;br /&gt;
eine vollständige Kopie des Archivs in ein neu erstelltes transistortester Verzeichnis herunterladen.&lt;br /&gt;
Im Arbeitsverzeichnis transistortester kann man mit &amp;quot;git checkout&amp;quot; die Kopie auf den letzten Stand bringen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/russian/ttester_rus112k.pdf инструкции (русский) Версия 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Затем щелкаем в папке правой кнопкой мыши, выбираем SVN Checkout, вводим следующий адрес  [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] и получаем свежую рабочию копию репозитория.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
You can get the most up-to-date versions of software and documentation now at&lt;br /&gt;
[https://github.com/Mikrocontroller-net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Users can download the full archiv with &amp;quot;git clone https://github.com/Mikrocontroller-net/transistortester&amp;quot;&lt;br /&gt;
into a new created transistortester directory.&lt;br /&gt;
You can update your local copy in the working directory transistortester with&lt;br /&gt;
the command &amp;quot;git checkout&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Français) ==&lt;br /&gt;
&lt;br /&gt;
La version actuelle du logiciel ainsi que la documentation sont dosponibles à tout moment au [https://www.mikrocontroller.net/svnbrowser/transistortester/ repositoire SVN].&lt;br /&gt;
&lt;br /&gt;
La documentation se trouve sous&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttinfo_ger112k.pdf Description succinte (allemand) version 1.12k (2017-02-18)] et&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttester_ger112k.pdf Mode d&#039;emploi détaillé (allemand) version 1.12k (2017-02-18)]&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs peuvent télécharger le répertoire choisi comme &amp;quot;GNU tarball&amp;quot; via [https://www.mikrocontroller.net/svnbrowser/transistortester/ svnbrowser]. &lt;br /&gt;
Après sélection du répertoire souhaité, il suffit de cliquer le lien &amp;quot;Download GNU tarball&amp;quot; qui se trouve en-dessous de la liste des repertoires/fichiers.&lt;br /&gt;
&lt;br /&gt;
Pour ouvrir le fichier ainsi téléchargé &amp;quot;transistortester*.tar.gz&amp;quot;, les utilisateurs sous Windows ont besoin d&#039;un logiciel approprié, comme p. ex. l&#039;application freeware [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Après le déballage de l&#039;archive transistortester*.tar.gz, les répertoires et fichiers sélectionnés pour le téléchargement se trouvent sur le disque de l&#039;ordinateur local.&lt;br /&gt;
Un accès direct aux fichiers via le svnbrowser n&#039;est pas possible!&lt;br /&gt;
&lt;br /&gt;
Il existe une méthode alternative pour accéder au contenu du repositoire SVN : c&#039;est l&#039;installation du plug-in TortoiseSVN de l&#039;explorateur de Windows. &lt;br /&gt;
L&#039;accès direct aux fichiers du repositoire SVN est alors possible via l&#039;explorateur sous &amp;quot;svn://mikrocontroller.net/transistortester&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs sous Linux peuvent accéder directement au repositoire à l&#039;aide de l&#039;application svn.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if it is done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed.&lt;br /&gt;
&lt;br /&gt;
== Hint to Cloners and Sellers ==&lt;br /&gt;
Dear Transistortester Cloners and Sellers!&lt;br /&gt;
&lt;br /&gt;
We don&#039;t mind if you produce and sell clones of the Transistortester. It&lt;br /&gt;
provides an inexpensive great little tool for electronics enthusiasts&lt;br /&gt;
and beginners, but PLEASE note the links to the project&#039;s webpage,&lt;br /&gt;
source repo and documentation. You would add more value by giving users&lt;br /&gt;
that information to be able to update the firmware and to understand all&lt;br /&gt;
the features. If you do any modifications to the firmware, please send&lt;br /&gt;
us a copy for the repo. And if you would send us your Transistortester&lt;br /&gt;
clones, we would be able to keep the firmware as compatible as possible.&lt;br /&gt;
Don&#039;t forget, this is an OSHW project!&lt;br /&gt;
&lt;br /&gt;
Best regards,&lt;br /&gt;
Transistortester team&lt;br /&gt;
&lt;br /&gt;
亲爱的晶体管测试仪复制品生产商和卖家:&lt;br /&gt;
&lt;br /&gt;
如果您生产和销售晶体管测试仪的复制品，我们不会介意。它可以为电子爱好者和初学者提供一个便宜的小工具，但销售时请注意提供项目网页的链结，源代码和文档。&lt;br /&gt;
通过链结向用户提供能够更新固件和了解所有功能的信息来增加产品的价值。如果您对固件进行任何修改，请向我们发送一份备份。如果您向我们发送晶体管测试仪的样品，&lt;br /&gt;
我们将能够保持固件尽可能兼容。别忘了，这是一个OSHW(开源硬件)项目！&lt;br /&gt;
&lt;br /&gt;
送上最好的祝福，&lt;br /&gt;
晶体管测试团队&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des Git Archivs ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Messtechniker&#039;&#039;&#039; || || Fernsteuerfuktion für die &amp;quot;m&amp;quot;-Version (Markus).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=104031</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=104031"/>
		<updated>2021-03-01T10:33:56Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Downloads (English) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168, ATmega328 or ATmega644 and ATmega1284 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 or 4x20 characters.&lt;br /&gt;
* Also a graphical display with the ST7565, NT7108 or ST7920 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible. You can also connect color displays with ILI9341 or ILI9163 controller.&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins for universal use.&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC.&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* If the processor has at least 32K flash memory, you can use the samplingADC method from Pieter-Tjerk to get a resolution of up to 0.01 pF for capacitors with lower capacity than 100 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* If your processor has at least 32K flash, you can use the samplingADC method to measure lesser inductances with a parallel capacitor of known capacity. The resonant frequency and the computed inductance value is shown and additionally the quality factor. &lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 20 nF is built in. The resolution is 0.01 Ohm. For lower capacity values the accuracy of ESR result becomes worse.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Introduktion (dansk) ==&lt;br /&gt;
(Det originale (tidligere) design kan nås via denne link: http://www.mikrocontroller.net/articles/AVR-Transistortester )&lt;br /&gt;
&lt;br /&gt;
Videreudviklet design af Karl-Heinz Kübbeler, se denne [https://www.mikrocontroller.net/topic/248078 forumtråd], de fleste forumbrugere kan også forstå og svare på engelsk.&lt;br /&gt;
&lt;br /&gt;
Jeg (Karl-Heinz Kübbeler) har videreført projektet &#039;&#039;transistortester&#039;&#039; fra Markus Frejek og hovedsageligt videreudviklet softwaren. På grund af dens forbedrede egenskaber, blev navnet &#039;&#039;komponenttester&#039;&#039; foreslået. Jeg ser selv, at dens hovedformål er, at bestemme transistortype og dennes parametre, som udviklet af Markus Frejek.&lt;br /&gt;
&lt;br /&gt;
De vigtigste egenskaber er:&lt;br /&gt;
&lt;br /&gt;
* Fungerer med mikrocontrollerne ATmega8, ATmega168, ATmega328 eller også med ATmega644, ATmega1284.&lt;br /&gt;
* Viser resultater på en udlæsningsenhed (LCD) med 2x16 eller 4x20 tegn.&lt;br /&gt;
* Det er også muligt at anvende grafik udlæsningsenhederne med controllerne ST7565, NT7108 eller ST7920. Det er også muligt at anvende OLED udlæsningsenheder med controller SSD1306 og kommunikation via databus grænsefladerne SPI eller I2C. Det er også muligt at anvende farvegrafik udlæsningsenheder med controllerne ILI9341 eller ILI9163.&lt;br /&gt;
* Én-tast-operation med automatisk sluk.&lt;br /&gt;
* Apparatet har tre måleporte (testtilslutninger, (måle)pinde).&lt;br /&gt;
* Automatisk detektering af NPN, PNP, N-kanal og P-kanal MOSFET, JFET, dioder og små tyristorer, TRIAC.&lt;br /&gt;
* Automatisk detektering af komponentben, hvilket betyder at komponentens ben kan tilsluttes måleportene vilkårligt.&lt;br /&gt;
* Måling af hFE (beta) og basis-emitter-spændingsfald for bipolære transistorer (BJT), incl. for Darlington-transistorer.&lt;br /&gt;
* Automatisk detektering af beskyttelsesdioder i bipolære transistorer og MOSFETs.&lt;br /&gt;
* Bipolære transistorer bliver detekteret som en transistor med en parasitisk transistor (NPNp = NPN + parasitisk PNP).&lt;br /&gt;
* Op til to resistorer kan måles med en opløsning ned til 0,1 ohm. Måleområdet dækker op til 50 Mohm (Megaohm). Resistorer under 10 ohm bliver målt på samme måde som en ESR-måling og med en opløsning på 0,01 ohm hvis en ATmega168/328 anvendes. Bemærk: [[Auflösung und Genauigkeit|Opløsning er ikke nøjagtighed]].&lt;br /&gt;
* Kondensatorers kapacitans i intervallet 35pF (pikofarad) til 100mF (millifarad) kan måles med en opløsning ned til 1 pF. Man skal sikre sig at kondensatoren er afladet inden tilslutning til måleportene.&lt;br /&gt;
* Hvis processoren har mindst 32K flash-hukommelse, kan Pieter-Tjerks samplingADC metode anvendes til at få en opløsning ned til 0,01 pF for kondensatorer med lavere kapacitans end 100 pF.&lt;br /&gt;
* Resistorer og kondensatorer vil blive vist med deres respektive symboler, måleporte og værdier.&lt;br /&gt;
* Op til to dioder vil også blive vist med deres korrekt vendte symboler, måleporte og spændingsfald.&lt;br /&gt;
* Hvis komponenten er en enkelt diode, vil dens parasitiske kapacitans blive målt - og fra version 1.08k vil dens lækstrøm også blive målt.&lt;br /&gt;
* Med ATmega168/328 er selvkalibrering mulig for nul-kapacitans, nul-resistans og andre parametre.&lt;br /&gt;
* Med ATmega168/328 kan spoler detekteres og deres induktanser måles, hvis i intervallet 0,01 mH til 20 H.&lt;br /&gt;
* Hvis processoren har mindst 32K flash-hukommelse, kan samplingADC metoden anvendes til at måle mindre induktanser med en parallel kondensator med kendt kapacitansværdi. Resonansfrekvensen, den beregnede induktansværdi vises og godheden. &lt;br /&gt;
* Med ATmega168/328 kan en kondensators ESR (&#039;&#039;Equivalent Series Resistance&#039;&#039;) måles for kapacitanser større end 20 nF. Opløsningen er 0,01 Ohm. For lavere kapacitanser bliver ESR nøjagtigheden dårligere.&lt;br /&gt;
* Med ATmega168/328 og kondensatorer over 5 nF kan Vtab undersøges efter ladepulser. Via denne metode kan kondensatorens godhed estimeres.&lt;br /&gt;
* Med ATmega328 kan en menufunktion nås med et langt tastetryk (&amp;gt; 0,5 sekund). Et kort tastetryk skifter til næste funktion. Et langt tastetryk starter funktionen. Her er listen af indbyggede funktioner indtil videre:&lt;br /&gt;
** Frekvensmåling på port PD4. Denne port anvendes også til udlæsningsenheden (LCD) og vil blive ændret til input (høj-Z) under målingen. Frekvensen måles over 1 sekund. Hvis frekvensen er under 25 kHz, måles middeltidsperioder istedet for at øge nøjagtigheden. Opløsningen går ned til 0,001 mHz (milliHertz).&lt;br /&gt;
** Spændingsmåling på port PC3, hvis den ikke anvendes til seriel output. Ds ATmega328 har 32 ben (PLCC), kan ADC6 eller ADC7 også anvendes. En 10:1 spændingsdeler anvendes, så spændinger op til 50 V kan måles. Med en yderligere DC-DC-konverter, kan zenerdioder også måles.&lt;br /&gt;
** Frekvensgenerering på port TP2. Over 680 ohm resistoren, der er forbundet til port PB2, kan et signal med en valgt frekvens fra 1 Hz til 2 MHz fås fra port TP2. Port TP1 er jord. (?: Det tyske og engelske tekstafsnit kunne ikke forstås)&lt;br /&gt;
** Variabel PWM (&#039;&#039;pulse width modulation&#039;&#039;) med fast frekvens på port TP2. 10-bit tæller. Port TP1 er jord. Kort tastetryk øger pulsbredden med 1%, langt tastetryk med 10%.&lt;br /&gt;
** Der er en alternativ mulig metode at måle kapacitans og ESR på. Kapacitanser på 2 µF til 50 mF kan sædvanligvis måles, mens kondensatoren sidder i kredsløbet. Man skal sikre sig at kondensatoren er afladet inden tilslutning til måleportene.&lt;br /&gt;
&lt;br /&gt;
Man kan læse detaljeret information med måleeksempler i PDF-dokumentationen på engelsk og tysk. En russisk oversættelse er også tilgængelig. PDFernes links er i denne sides download afsnit.&lt;br /&gt;
&lt;br /&gt;
== Introduction (Français) ==&lt;br /&gt;
&lt;br /&gt;
Projet d&#039;origine : http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Perfectionné par l&#039;auteur Karl-Heinz Kübbeler, voir le [https://www.mikrocontroller.net/topic/248078 forum de discussion afférent].&lt;br /&gt;
&lt;br /&gt;
J&#039;ai continué à développer le projet de Markus Frejek et plus spécifiquement le logiciel. Sur la base des caractéristiques améliorées certains ont proposé de l&#039;appeler testeur de composants. Personnellement, je considère pourtant comme propriéte éminente la détermination automatique du type et des caractéristiques des transistors, telle que développée par Markus Frejek.&lt;br /&gt;
&lt;br /&gt;
J&#039;aimerais citer ici les caractéristiques les plus importantes :&lt;br /&gt;
&lt;br /&gt;
* Utilisation des processeurs ATmega8, ATmega168, ATmega328 ou alors ATmega644 et ATmega1284.&lt;br /&gt;
* Affichage des résultats mesurés par un afficheur LCD de 2x16 ou 4x20 caractères.&lt;br /&gt;
* Au lieu d&#039;un afficheur LCD à 2x16 caractères, on peut aussi utiliser un afficheur graphique sur la base d&#039;un contrôleur ST7565, NT7108 ou ST7920. Le raccordement d&#039;un afficheur OLED à contrôleur SSD1306 via interface SPI ou I2C est possible. Les afficheurs en couleur à contrôleur ILI9341 ou ILI9163 peuvent également être utilisés.&lt;br /&gt;
* Utilisation par touche unique avec coupure automatique temporisée.&lt;br /&gt;
* L&#039;appareil possède trois ports de test universels (Pins Test TP1, TP2 et TP3).&lt;br /&gt;
* Détermination automatique du type des transistors bipolaires NPN et PNP, des MOSFETs à canal N ou P, des JFETs, des diodes ainsi que des thyristors et TRIACs à faible puissance.&lt;br /&gt;
* Détermination automatique du schéma de raccordement des composants, les composants pouvant être connectés de façon quelconque.&lt;br /&gt;
* Mesure du facteur d&#039;amplification de courant (hfe) et de la tension base-émetteur des transistors bipolaires, y inclus les transistors Darlington.&lt;br /&gt;
* Détection automatique d&#039;une diode protectrice intégrée aux transistors bipolaires et MOSFETs.&lt;br /&gt;
* Dans certains cas un transistor parasitaire peut être détecté lors du test de transistors avec diode protectrice (NPNp = NPN + PNP parasitaire).&lt;br /&gt;
* Jusqu&#039;à deux résistances peuvent être mesurées simultanément avec une résolution de 0,1 Ohm. La plage de mesure dépasse les 50 MOhm. Lors de l&#039;utilisation d&#039;un processeur ATmega168/328 les résistances en-dessous de 10 Ohm sont mesurées par la méthode ESR (résistance série) avec une résolution de 0.01 Ohm.&lt;br /&gt;
* Les condensateurs sont mesurés dans une plage de 35 pF à 100 mF avec une résolution de 1 pF.&lt;br /&gt;
* Lorsque la taille de la mémoire Flash est de 32 K, les condensateurs en dessous de 100 pF peuvent être mesurés par la méthode SamplingADC de [https://wwwhome.ewi.utwente.nl/~ptdeboer/ Pieter-Tjerk] avec une résolution jusqu&#039;à 0.01 pF.&lt;br /&gt;
* Les résistances et condensateurs sont affichés avec leur symbole, entouré du numéro des bornes de raccordement.&lt;br /&gt;
* Les valeurs résistances et condensateurs sont affichées avec 4 chiffres décimaux dans la dimension correcte.&lt;br /&gt;
* Dans le cas de diodes détachées, l&#039;appareil effectue aussi la mesure des valeurs de la capacité et (à partir de la version 1.08k) du courant de fuite en direction inverse.&lt;br /&gt;
* Jusqu&#039;à deux diodes sont également affichées avec leur symbole en observant la direction de passage du courant. Les symboles sont entourés des numéros des bornes de raccordement. La valeur du seuil de tension est également affichée.&lt;br /&gt;
* Le processeur ATmega168/328 prévoit un mode &amp;quot;self test&amp;quot; (test auto) permettant un calibrage de la capacité respectivent de la résistance à vide ainsi que d&#039;autres paramètres. &lt;br /&gt;
* Le processeur ATmega168/328 permet aussi la détection et la mesure d&#039;inductivités supérieures à 0.01 mH jusqu&#039;à plus de 20 H.&lt;br /&gt;
* Avec une mémoire Flash minimale de 32 K il est possible, moyennant la connexion parallèle d&#039;un condensateur de capacité connue, de mesurer des inductivités de faible valeur par la méthode SamplingADC. Sont affichés, en outre de la fréquence de résonnance, la valeur calculée de l&#039;inductivité et le facteur de perte.&lt;br /&gt;
* Le processeur ATmega168/328 permet une mesure par la méthode ESR (résistance série équivalente ou Equivalent Series Resistance) des condensteurs d&#039;au moins 20 nF avec une résolution de 0.01 Ohm. Notez cependant que la précision des résultats est moindre pour les faibles valeurs de capacité.&lt;br /&gt;
* Le processeur ATmega168/328 mesure la perte de tension Vloss des condensateurs supérieurs à 5 nF en analysant la tenue en tension après une impulsion de charge. Ceci permet d&#039;estimer le facteur de perte des condensateurs.&lt;br /&gt;
* Des fonctions supplémentaires sont disponibles avec un processeur ATmega328. Un menu peut être activé moyennant une pression de la touche d&#039;une durée supérieure à 0.5 s. Les fonctions spéciales peuvent alors être choisies dans une liste. Une pression de courte durée affiche la fonction suivante de la liste. Une pression de longue durée lance la fonction affichée. Ci-dessous les fonctions supplémentaires implémentées à présent :&lt;br /&gt;
** Mesure de fréquences au pin PD4, utilsé en même temps pour le raccordement de l&#039;afficheur LCD. Pour la mesure, le pin est configuré en tant qu&#039;entrée. La fréquence appliquée est d&#039;abord comptée pendant une seconde. Si la fréquence est inférieure à 25 kHz, la période moyenne est mesurée. Sur base de la période la fréquence est calculée avec une résolution allant jusqu&#039;à 0.001 mHz.&lt;br /&gt;
** Mesure d&#039;une tension externe via le pin PC3, sous condition que celui-ci ne soit pas utilisé comme port de sortie sériel. Lors de l&#039;utilisation d&#039;un ATmega328 en boitier PLCC à 32 pins un des pins ADC6 ou ADC7 peut être affecté à la mesure de tension. Comme un diviseur de tension 10:1 est prévu, des tensions de 0 à 50 V peuvent être mesurées. Une extension du circuit (converisseur DC-DC) permet alors de mesurer des diodes Zener.&lt;br /&gt;
** Générateur de tension au Port TP2. Par l&#039;intermédiaire de la résistance de 680 Ohm raccordée au pin PB2, un signal avec une fréquence variable entre 1 Hz et 2 MHz peut être émis via le port TP2. Le port TP1 est alors raccordé à la masse.&lt;br /&gt;
** Générateur d&#039;impulsions au port TP2 à fréquence fixe et rapport de la largeur d&#039;impulsion variable. Dans cette fonction, le compteur 1 est utilisé comme compteur à 10 bits. Le port TP1 est raccordé à la masse. La largeur d&#039;impulsion peut être augmentée de 1% par une pression courte de la touche, et de 10% par une pression longue.&lt;br /&gt;
** Une variante de la fonction de mesure de la capacité et de l&#039;ESR permet de mesurer des condensateurs de 2 µF à 50 mF dans leur circuit. A cette fin ceux-ci seront raccordés aux pins Test TP1 et TP3. Il est particulièrement important que les condensateurs ainsi mesurés n&#039;ont plus aucune charge résiduelle.&lt;br /&gt;
&lt;br /&gt;
Lorsque l&#039;option POWER_OFF était activée au niveau du fichier de configuration (Makefile), les fonctions supplémentaires tout comme la fonction de dialogue elle même sont limitées dans le temps.&lt;br /&gt;
Pour des informations plus détaillées voir la documentation au format pdf, en langue allemande ou anglaise. Une traduction russe de la documentation est également disponible.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Software (Français) ==&lt;br /&gt;
&lt;br /&gt;
Le logiciel a été développé sur la base du travail de Markus F.&lt;br /&gt;
La partie concernant la mesure des condensateurs a été réécrite complétement et la mesure des résistances a été revisée de façon considérable. En cas de difficultés ou de problèmes il y a lieu de me contacter par mail ou via le forum de discussions. Pour être en mesure de lever les problèmes je dois d&#039;abord les connaître.&lt;br /&gt;
&lt;br /&gt;
Dans ma documentation au format pdf, en langue allemande ou anglaise, j&#039;ai décrit des détails supplémentaires, les différentes procédures de mesure ainsi que des exemples de résultats. L&#039;on y trouve aussi des indications pour la configuration du logiciel à l&#039;aide des paramètres et options du fichier &amp;quot;Makefile&amp;quot;.&lt;br /&gt;
Les commentaires dans les codes source sont en anglais.&lt;br /&gt;
&lt;br /&gt;
J&#039;ai intégré dans le logiciel une nouvelle fonction de test automatique vérifiant le fonctionnement correct du testeur. Le test automatique comprend aussi une routine de calibrage.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden. Ein 16 MHz Quarz ist auch verwendbar, wenn die Software in der Makefile angepasst ist.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software can be configured to run without any changes on the hardware developed by Markus F.&lt;br /&gt;
&lt;br /&gt;
But a few modifications still make sense:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. To this purpose the fuses have to be set. A 16 MHz quartz may also be used if the software is adapted through the Makefile option.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turns on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF. Where necessary resisitor R7 should be decreased to 3.3 kΩ. The circuit diagram and further detail is to be found in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The reasons and details concerning these changes as well as further hints about new implementations are explained in the hardware section of my PDF documentation. ATmega168 or ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to the 1.1V internal reference. The ATmega8 has a 2.56V internal reference which is inferior for measurements below 1V. The ATmega8 can be replaced by a ATmega168/328 without changes to the hardware. Here is the part from the [https://www.mikrocontroller.net/wikifiles/thumb/6/64/TransistorTesterVC1.png/779px-TransistorTesterVC1.png circuit diagram] that is responsible for the measurements.&lt;br /&gt;
&lt;br /&gt;
The circuits for the battery supply and the automatic shutdown are not shown by this circuit diagram.&lt;br /&gt;
&lt;br /&gt;
You could go without the components marked in red, but they may enhance the precision of the measurements. Those marked in green are modifications to the original design by Markus F.&lt;br /&gt;
The Eagle CAD files by Asko B. for three variants can be found in the discussion thread at http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
This is the article about the first version of the transistor tester by Markus F.: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (Français) ==&lt;br /&gt;
&lt;br /&gt;
En pricipe le logiciel peut être configuré de manière à tourner sans modifications sur le hardware présenté par Markus F. (voir ci-dessous).&lt;br /&gt;
&lt;br /&gt;
Quelques modifications sont pourtant utiles :&lt;br /&gt;
&lt;br /&gt;
* Le processeur devrait être piloté par une horloge de 8 MHz, de préférence avec un quartz externe. A cette fin il faut modifier les fusibles (&amp;quot;fuses&amp;quot;) du processeur ATmega. Un quartz de 16 MHz peut être utilisé sous condition de configurer le logiciel en conséquence par l&#039;intermédiaire du Makefile.&lt;br /&gt;
* Une résistance &amp;quot;pull up&amp;quot; d&#039;environ 27 kΩ devrait être ajoutée entre le pin 13 (PD7) du ATmega et l&#039;alimentation VCC.&lt;br /&gt;
* Le condensateur 100 nF au pin 21 (AREF) peut être supprimé ou, mieux, être remplacé par un condensateur 1 nF.&lt;br /&gt;
* Si la mise en marche électronique du testeur cause problème, il faut au moins réduire la valeur du condensateur C2 à la base du transistor T1 à 10 nF et, le cas échéant, réduire la valeur de la résistance R7 à 3,3 kΩ. Le schéma complet et des détails à cet égard se trouvent dans la documentation pdf.&lt;br /&gt;
&lt;br /&gt;
Les raisons pour ces modifications ainsi que des indications supplémentaires sont détaillées au chapitre &amp;quot;Hardware&amp;quot; de ma documentation pdf. L&#039;utilisation d&#039;un processeur ATmega168 ou ATmega328 est recommandée, parce qu&#039;en cas de besoin la fonction &amp;quot;auto-scale&amp;quot; du convertisseur analogique-numérique (ADC) passe de la référence de 5 V (VCC) vers la tension de référence interne. La référence interne du ATmega8 est de 2,56 V, alors que celle des autres processeurs est de 1,1 Volt. Avec 1,1 V on atteint une meilleure résolution du convertisseur ADC lors de la mesure de tensions en dessous de 1 Volt.&lt;br /&gt;
Le processeur ATmega8 peut être remplacé par un ATmega168 ou ATmega328 sans aucune modification du schéma du testeur!&lt;br /&gt;
Voici la partie du [https://www.mikrocontroller.net/wikifiles/thumb/6/64/TransistorTesterVC1.png/779px-TransistorTesterVC1.png schéma] responsable pour les mesures.&lt;br /&gt;
&lt;br /&gt;
Les circuits pour l&#039;alimentation par batterie et l&#039;arrêt automatique ne sont pas représentés sur ce schéma.&lt;br /&gt;
&lt;br /&gt;
Les composants marqués en rouge ne sont pas indispensables, mais ils peuvent contribuer à améliorer la précision des mesures. Les composants marqués en vert sont changés par rapport au projet original de Markus F.&lt;br /&gt;
Les fichiers CAD au format Eagle pour trois variantes mis à disposition par Asko B. se trouvent dans le fil de discussion sous l&#039;adresse :&lt;br /&gt;
http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Voici l&#039;article concernant le première version du testeur de transistors par Markus F. :[[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Dokumentation ist nun auf github abrufbar.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Mikrocontroller-net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können mit dem Kommando &amp;quot;git clone https://github.com/Mikrocontroller-net/transistortester&amp;quot;&lt;br /&gt;
eine vollständige Kopie des Archivs in ein neu erstelltes transistortester Verzeichnis herunterladen.&lt;br /&gt;
Im Arbeitsverzeichnis transistortester kann man mit &amp;quot;git checkout&amp;quot; die Kopie auf den letzten Stand bringen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/russian/ttester_rus112k.pdf инструкции (русский) Версия 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Затем щелкаем в папке правой кнопкой мыши, выбираем SVN Checkout, вводим следующий адрес  [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] и получаем свежую рабочию копию репозитория.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
You can get the most up-to-date versions of software and documentation now at&lt;br /&gt;
[https://github.com/Mikrocontroller-net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Users can download the full archiv with &amp;quot;git clone https://github.com/Mikrocontroller-net/transistortester&amp;quot;&lt;br /&gt;
into a new created transistortester directory.&lt;br /&gt;
You can update your local copy in the working directory transistortester with&lt;br /&gt;
the command &amp;quot;git checkout&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Français) ==&lt;br /&gt;
&lt;br /&gt;
La version actuelle du logiciel ainsi que la documentation sont dosponibles à tout moment au [https://www.mikrocontroller.net/svnbrowser/transistortester/ repositoire SVN].&lt;br /&gt;
&lt;br /&gt;
La documentation se trouve sous&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttinfo_ger112k.pdf Description succinte (allemand) version 1.12k (2017-02-18)] et&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttester_ger112k.pdf Mode d&#039;emploi détaillé (allemand) version 1.12k (2017-02-18)]&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs peuvent télécharger le répertoire choisi comme &amp;quot;GNU tarball&amp;quot; via [https://www.mikrocontroller.net/svnbrowser/transistortester/ svnbrowser]. &lt;br /&gt;
Après sélection du répertoire souhaité, il suffit de cliquer le lien &amp;quot;Download GNU tarball&amp;quot; qui se trouve en-dessous de la liste des repertoires/fichiers.&lt;br /&gt;
&lt;br /&gt;
Pour ouvrir le fichier ainsi téléchargé &amp;quot;transistortester*.tar.gz&amp;quot;, les utilisateurs sous Windows ont besoin d&#039;un logiciel approprié, comme p. ex. l&#039;application freeware [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Après le déballage de l&#039;archive transistortester*.tar.gz, les répertoires et fichiers sélectionnés pour le téléchargement se trouvent sur le disque de l&#039;ordinateur local.&lt;br /&gt;
Un accès direct aux fichiers via le svnbrowser n&#039;est pas possible!&lt;br /&gt;
&lt;br /&gt;
Il existe une méthode alternative pour accéder au contenu du repositoire SVN : c&#039;est l&#039;installation du plug-in TortoiseSVN de l&#039;explorateur de Windows. &lt;br /&gt;
L&#039;accès direct aux fichiers du repositoire SVN est alors possible via l&#039;explorateur sous &amp;quot;svn://mikrocontroller.net/transistortester&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs sous Linux peuvent accéder directement au repositoire à l&#039;aide de l&#039;application svn.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if it is done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed.&lt;br /&gt;
&lt;br /&gt;
== Hint to Cloners and Sellers ==&lt;br /&gt;
Dear Transistortester Cloners and Sellers!&lt;br /&gt;
&lt;br /&gt;
We don&#039;t mind if you produce and sell clones of the Transistortester. It&lt;br /&gt;
provides an inexpensive great little tool for electronics enthusiasts&lt;br /&gt;
and beginners, but PLEASE note the links to the project&#039;s webpage,&lt;br /&gt;
source repo and documentation. You would add more value by giving users&lt;br /&gt;
that information to be able to update the firmware and to understand all&lt;br /&gt;
the features. If you do any modifications to the firmware, please send&lt;br /&gt;
us a copy for the repo. And if you would send us your Transistortester&lt;br /&gt;
clones, we would be able to keep the firmware as compatible as possible.&lt;br /&gt;
Don&#039;t forget, this is an OSHW project!&lt;br /&gt;
&lt;br /&gt;
Best regards,&lt;br /&gt;
Transistortester team&lt;br /&gt;
&lt;br /&gt;
亲爱的晶体管测试仪复制品生产商和卖家:&lt;br /&gt;
&lt;br /&gt;
如果您生产和销售晶体管测试仪的复制品，我们不会介意。它可以为电子爱好者和初学者提供一个便宜的小工具，但销售时请注意提供项目网页的链结，源代码和文档。&lt;br /&gt;
通过链结向用户提供能够更新固件和了解所有功能的信息来增加产品的价值。如果您对固件进行任何修改，请向我们发送一份备份。如果您向我们发送晶体管测试仪的样品，&lt;br /&gt;
我们将能够保持固件尽可能兼容。别忘了，这是一个OSHW(开源硬件)项目！&lt;br /&gt;
&lt;br /&gt;
送上最好的祝福，&lt;br /&gt;
晶体管测试团队&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Messtechniker&#039;&#039;&#039; || || Fernsteuerfuktion für die &amp;quot;m&amp;quot;-Version (Markus).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=104030</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=104030"/>
		<updated>2021-03-01T10:24:26Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Downloads (deutsch) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168, ATmega328 or ATmega644 and ATmega1284 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 or 4x20 characters.&lt;br /&gt;
* Also a graphical display with the ST7565, NT7108 or ST7920 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible. You can also connect color displays with ILI9341 or ILI9163 controller.&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins for universal use.&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC.&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* If the processor has at least 32K flash memory, you can use the samplingADC method from Pieter-Tjerk to get a resolution of up to 0.01 pF for capacitors with lower capacity than 100 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* If your processor has at least 32K flash, you can use the samplingADC method to measure lesser inductances with a parallel capacitor of known capacity. The resonant frequency and the computed inductance value is shown and additionally the quality factor. &lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 20 nF is built in. The resolution is 0.01 Ohm. For lower capacity values the accuracy of ESR result becomes worse.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Introduktion (dansk) ==&lt;br /&gt;
(Det originale (tidligere) design kan nås via denne link: http://www.mikrocontroller.net/articles/AVR-Transistortester )&lt;br /&gt;
&lt;br /&gt;
Videreudviklet design af Karl-Heinz Kübbeler, se denne [https://www.mikrocontroller.net/topic/248078 forumtråd], de fleste forumbrugere kan også forstå og svare på engelsk.&lt;br /&gt;
&lt;br /&gt;
Jeg (Karl-Heinz Kübbeler) har videreført projektet &#039;&#039;transistortester&#039;&#039; fra Markus Frejek og hovedsageligt videreudviklet softwaren. På grund af dens forbedrede egenskaber, blev navnet &#039;&#039;komponenttester&#039;&#039; foreslået. Jeg ser selv, at dens hovedformål er, at bestemme transistortype og dennes parametre, som udviklet af Markus Frejek.&lt;br /&gt;
&lt;br /&gt;
De vigtigste egenskaber er:&lt;br /&gt;
&lt;br /&gt;
* Fungerer med mikrocontrollerne ATmega8, ATmega168, ATmega328 eller også med ATmega644, ATmega1284.&lt;br /&gt;
* Viser resultater på en udlæsningsenhed (LCD) med 2x16 eller 4x20 tegn.&lt;br /&gt;
* Det er også muligt at anvende grafik udlæsningsenhederne med controllerne ST7565, NT7108 eller ST7920. Det er også muligt at anvende OLED udlæsningsenheder med controller SSD1306 og kommunikation via databus grænsefladerne SPI eller I2C. Det er også muligt at anvende farvegrafik udlæsningsenheder med controllerne ILI9341 eller ILI9163.&lt;br /&gt;
* Én-tast-operation med automatisk sluk.&lt;br /&gt;
* Apparatet har tre måleporte (testtilslutninger, (måle)pinde).&lt;br /&gt;
* Automatisk detektering af NPN, PNP, N-kanal og P-kanal MOSFET, JFET, dioder og små tyristorer, TRIAC.&lt;br /&gt;
* Automatisk detektering af komponentben, hvilket betyder at komponentens ben kan tilsluttes måleportene vilkårligt.&lt;br /&gt;
* Måling af hFE (beta) og basis-emitter-spændingsfald for bipolære transistorer (BJT), incl. for Darlington-transistorer.&lt;br /&gt;
* Automatisk detektering af beskyttelsesdioder i bipolære transistorer og MOSFETs.&lt;br /&gt;
* Bipolære transistorer bliver detekteret som en transistor med en parasitisk transistor (NPNp = NPN + parasitisk PNP).&lt;br /&gt;
* Op til to resistorer kan måles med en opløsning ned til 0,1 ohm. Måleområdet dækker op til 50 Mohm (Megaohm). Resistorer under 10 ohm bliver målt på samme måde som en ESR-måling og med en opløsning på 0,01 ohm hvis en ATmega168/328 anvendes. Bemærk: [[Auflösung und Genauigkeit|Opløsning er ikke nøjagtighed]].&lt;br /&gt;
* Kondensatorers kapacitans i intervallet 35pF (pikofarad) til 100mF (millifarad) kan måles med en opløsning ned til 1 pF. Man skal sikre sig at kondensatoren er afladet inden tilslutning til måleportene.&lt;br /&gt;
* Hvis processoren har mindst 32K flash-hukommelse, kan Pieter-Tjerks samplingADC metode anvendes til at få en opløsning ned til 0,01 pF for kondensatorer med lavere kapacitans end 100 pF.&lt;br /&gt;
* Resistorer og kondensatorer vil blive vist med deres respektive symboler, måleporte og værdier.&lt;br /&gt;
* Op til to dioder vil også blive vist med deres korrekt vendte symboler, måleporte og spændingsfald.&lt;br /&gt;
* Hvis komponenten er en enkelt diode, vil dens parasitiske kapacitans blive målt - og fra version 1.08k vil dens lækstrøm også blive målt.&lt;br /&gt;
* Med ATmega168/328 er selvkalibrering mulig for nul-kapacitans, nul-resistans og andre parametre.&lt;br /&gt;
* Med ATmega168/328 kan spoler detekteres og deres induktanser måles, hvis i intervallet 0,01 mH til 20 H.&lt;br /&gt;
* Hvis processoren har mindst 32K flash-hukommelse, kan samplingADC metoden anvendes til at måle mindre induktanser med en parallel kondensator med kendt kapacitansværdi. Resonansfrekvensen, den beregnede induktansværdi vises og godheden. &lt;br /&gt;
* Med ATmega168/328 kan en kondensators ESR (&#039;&#039;Equivalent Series Resistance&#039;&#039;) måles for kapacitanser større end 20 nF. Opløsningen er 0,01 Ohm. For lavere kapacitanser bliver ESR nøjagtigheden dårligere.&lt;br /&gt;
* Med ATmega168/328 og kondensatorer over 5 nF kan Vtab undersøges efter ladepulser. Via denne metode kan kondensatorens godhed estimeres.&lt;br /&gt;
* Med ATmega328 kan en menufunktion nås med et langt tastetryk (&amp;gt; 0,5 sekund). Et kort tastetryk skifter til næste funktion. Et langt tastetryk starter funktionen. Her er listen af indbyggede funktioner indtil videre:&lt;br /&gt;
** Frekvensmåling på port PD4. Denne port anvendes også til udlæsningsenheden (LCD) og vil blive ændret til input (høj-Z) under målingen. Frekvensen måles over 1 sekund. Hvis frekvensen er under 25 kHz, måles middeltidsperioder istedet for at øge nøjagtigheden. Opløsningen går ned til 0,001 mHz (milliHertz).&lt;br /&gt;
** Spændingsmåling på port PC3, hvis den ikke anvendes til seriel output. Ds ATmega328 har 32 ben (PLCC), kan ADC6 eller ADC7 også anvendes. En 10:1 spændingsdeler anvendes, så spændinger op til 50 V kan måles. Med en yderligere DC-DC-konverter, kan zenerdioder også måles.&lt;br /&gt;
** Frekvensgenerering på port TP2. Over 680 ohm resistoren, der er forbundet til port PB2, kan et signal med en valgt frekvens fra 1 Hz til 2 MHz fås fra port TP2. Port TP1 er jord. (?: Det tyske og engelske tekstafsnit kunne ikke forstås)&lt;br /&gt;
** Variabel PWM (&#039;&#039;pulse width modulation&#039;&#039;) med fast frekvens på port TP2. 10-bit tæller. Port TP1 er jord. Kort tastetryk øger pulsbredden med 1%, langt tastetryk med 10%.&lt;br /&gt;
** Der er en alternativ mulig metode at måle kapacitans og ESR på. Kapacitanser på 2 µF til 50 mF kan sædvanligvis måles, mens kondensatoren sidder i kredsløbet. Man skal sikre sig at kondensatoren er afladet inden tilslutning til måleportene.&lt;br /&gt;
&lt;br /&gt;
Man kan læse detaljeret information med måleeksempler i PDF-dokumentationen på engelsk og tysk. En russisk oversættelse er også tilgængelig. PDFernes links er i denne sides download afsnit.&lt;br /&gt;
&lt;br /&gt;
== Introduction (Français) ==&lt;br /&gt;
&lt;br /&gt;
Projet d&#039;origine : http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Perfectionné par l&#039;auteur Karl-Heinz Kübbeler, voir le [https://www.mikrocontroller.net/topic/248078 forum de discussion afférent].&lt;br /&gt;
&lt;br /&gt;
J&#039;ai continué à développer le projet de Markus Frejek et plus spécifiquement le logiciel. Sur la base des caractéristiques améliorées certains ont proposé de l&#039;appeler testeur de composants. Personnellement, je considère pourtant comme propriéte éminente la détermination automatique du type et des caractéristiques des transistors, telle que développée par Markus Frejek.&lt;br /&gt;
&lt;br /&gt;
J&#039;aimerais citer ici les caractéristiques les plus importantes :&lt;br /&gt;
&lt;br /&gt;
* Utilisation des processeurs ATmega8, ATmega168, ATmega328 ou alors ATmega644 et ATmega1284.&lt;br /&gt;
* Affichage des résultats mesurés par un afficheur LCD de 2x16 ou 4x20 caractères.&lt;br /&gt;
* Au lieu d&#039;un afficheur LCD à 2x16 caractères, on peut aussi utiliser un afficheur graphique sur la base d&#039;un contrôleur ST7565, NT7108 ou ST7920. Le raccordement d&#039;un afficheur OLED à contrôleur SSD1306 via interface SPI ou I2C est possible. Les afficheurs en couleur à contrôleur ILI9341 ou ILI9163 peuvent également être utilisés.&lt;br /&gt;
* Utilisation par touche unique avec coupure automatique temporisée.&lt;br /&gt;
* L&#039;appareil possède trois ports de test universels (Pins Test TP1, TP2 et TP3).&lt;br /&gt;
* Détermination automatique du type des transistors bipolaires NPN et PNP, des MOSFETs à canal N ou P, des JFETs, des diodes ainsi que des thyristors et TRIACs à faible puissance.&lt;br /&gt;
* Détermination automatique du schéma de raccordement des composants, les composants pouvant être connectés de façon quelconque.&lt;br /&gt;
* Mesure du facteur d&#039;amplification de courant (hfe) et de la tension base-émetteur des transistors bipolaires, y inclus les transistors Darlington.&lt;br /&gt;
* Détection automatique d&#039;une diode protectrice intégrée aux transistors bipolaires et MOSFETs.&lt;br /&gt;
* Dans certains cas un transistor parasitaire peut être détecté lors du test de transistors avec diode protectrice (NPNp = NPN + PNP parasitaire).&lt;br /&gt;
* Jusqu&#039;à deux résistances peuvent être mesurées simultanément avec une résolution de 0,1 Ohm. La plage de mesure dépasse les 50 MOhm. Lors de l&#039;utilisation d&#039;un processeur ATmega168/328 les résistances en-dessous de 10 Ohm sont mesurées par la méthode ESR (résistance série) avec une résolution de 0.01 Ohm.&lt;br /&gt;
* Les condensateurs sont mesurés dans une plage de 35 pF à 100 mF avec une résolution de 1 pF.&lt;br /&gt;
* Lorsque la taille de la mémoire Flash est de 32 K, les condensateurs en dessous de 100 pF peuvent être mesurés par la méthode SamplingADC de [https://wwwhome.ewi.utwente.nl/~ptdeboer/ Pieter-Tjerk] avec une résolution jusqu&#039;à 0.01 pF.&lt;br /&gt;
* Les résistances et condensateurs sont affichés avec leur symbole, entouré du numéro des bornes de raccordement.&lt;br /&gt;
* Les valeurs résistances et condensateurs sont affichées avec 4 chiffres décimaux dans la dimension correcte.&lt;br /&gt;
* Dans le cas de diodes détachées, l&#039;appareil effectue aussi la mesure des valeurs de la capacité et (à partir de la version 1.08k) du courant de fuite en direction inverse.&lt;br /&gt;
* Jusqu&#039;à deux diodes sont également affichées avec leur symbole en observant la direction de passage du courant. Les symboles sont entourés des numéros des bornes de raccordement. La valeur du seuil de tension est également affichée.&lt;br /&gt;
* Le processeur ATmega168/328 prévoit un mode &amp;quot;self test&amp;quot; (test auto) permettant un calibrage de la capacité respectivent de la résistance à vide ainsi que d&#039;autres paramètres. &lt;br /&gt;
* Le processeur ATmega168/328 permet aussi la détection et la mesure d&#039;inductivités supérieures à 0.01 mH jusqu&#039;à plus de 20 H.&lt;br /&gt;
* Avec une mémoire Flash minimale de 32 K il est possible, moyennant la connexion parallèle d&#039;un condensateur de capacité connue, de mesurer des inductivités de faible valeur par la méthode SamplingADC. Sont affichés, en outre de la fréquence de résonnance, la valeur calculée de l&#039;inductivité et le facteur de perte.&lt;br /&gt;
* Le processeur ATmega168/328 permet une mesure par la méthode ESR (résistance série équivalente ou Equivalent Series Resistance) des condensteurs d&#039;au moins 20 nF avec une résolution de 0.01 Ohm. Notez cependant que la précision des résultats est moindre pour les faibles valeurs de capacité.&lt;br /&gt;
* Le processeur ATmega168/328 mesure la perte de tension Vloss des condensateurs supérieurs à 5 nF en analysant la tenue en tension après une impulsion de charge. Ceci permet d&#039;estimer le facteur de perte des condensateurs.&lt;br /&gt;
* Des fonctions supplémentaires sont disponibles avec un processeur ATmega328. Un menu peut être activé moyennant une pression de la touche d&#039;une durée supérieure à 0.5 s. Les fonctions spéciales peuvent alors être choisies dans une liste. Une pression de courte durée affiche la fonction suivante de la liste. Une pression de longue durée lance la fonction affichée. Ci-dessous les fonctions supplémentaires implémentées à présent :&lt;br /&gt;
** Mesure de fréquences au pin PD4, utilsé en même temps pour le raccordement de l&#039;afficheur LCD. Pour la mesure, le pin est configuré en tant qu&#039;entrée. La fréquence appliquée est d&#039;abord comptée pendant une seconde. Si la fréquence est inférieure à 25 kHz, la période moyenne est mesurée. Sur base de la période la fréquence est calculée avec une résolution allant jusqu&#039;à 0.001 mHz.&lt;br /&gt;
** Mesure d&#039;une tension externe via le pin PC3, sous condition que celui-ci ne soit pas utilisé comme port de sortie sériel. Lors de l&#039;utilisation d&#039;un ATmega328 en boitier PLCC à 32 pins un des pins ADC6 ou ADC7 peut être affecté à la mesure de tension. Comme un diviseur de tension 10:1 est prévu, des tensions de 0 à 50 V peuvent être mesurées. Une extension du circuit (converisseur DC-DC) permet alors de mesurer des diodes Zener.&lt;br /&gt;
** Générateur de tension au Port TP2. Par l&#039;intermédiaire de la résistance de 680 Ohm raccordée au pin PB2, un signal avec une fréquence variable entre 1 Hz et 2 MHz peut être émis via le port TP2. Le port TP1 est alors raccordé à la masse.&lt;br /&gt;
** Générateur d&#039;impulsions au port TP2 à fréquence fixe et rapport de la largeur d&#039;impulsion variable. Dans cette fonction, le compteur 1 est utilisé comme compteur à 10 bits. Le port TP1 est raccordé à la masse. La largeur d&#039;impulsion peut être augmentée de 1% par une pression courte de la touche, et de 10% par une pression longue.&lt;br /&gt;
** Une variante de la fonction de mesure de la capacité et de l&#039;ESR permet de mesurer des condensateurs de 2 µF à 50 mF dans leur circuit. A cette fin ceux-ci seront raccordés aux pins Test TP1 et TP3. Il est particulièrement important que les condensateurs ainsi mesurés n&#039;ont plus aucune charge résiduelle.&lt;br /&gt;
&lt;br /&gt;
Lorsque l&#039;option POWER_OFF était activée au niveau du fichier de configuration (Makefile), les fonctions supplémentaires tout comme la fonction de dialogue elle même sont limitées dans le temps.&lt;br /&gt;
Pour des informations plus détaillées voir la documentation au format pdf, en langue allemande ou anglaise. Une traduction russe de la documentation est également disponible.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Software (Français) ==&lt;br /&gt;
&lt;br /&gt;
Le logiciel a été développé sur la base du travail de Markus F.&lt;br /&gt;
La partie concernant la mesure des condensateurs a été réécrite complétement et la mesure des résistances a été revisée de façon considérable. En cas de difficultés ou de problèmes il y a lieu de me contacter par mail ou via le forum de discussions. Pour être en mesure de lever les problèmes je dois d&#039;abord les connaître.&lt;br /&gt;
&lt;br /&gt;
Dans ma documentation au format pdf, en langue allemande ou anglaise, j&#039;ai décrit des détails supplémentaires, les différentes procédures de mesure ainsi que des exemples de résultats. L&#039;on y trouve aussi des indications pour la configuration du logiciel à l&#039;aide des paramètres et options du fichier &amp;quot;Makefile&amp;quot;.&lt;br /&gt;
Les commentaires dans les codes source sont en anglais.&lt;br /&gt;
&lt;br /&gt;
J&#039;ai intégré dans le logiciel une nouvelle fonction de test automatique vérifiant le fonctionnement correct du testeur. Le test automatique comprend aussi une routine de calibrage.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden. Ein 16 MHz Quarz ist auch verwendbar, wenn die Software in der Makefile angepasst ist.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software can be configured to run without any changes on the hardware developed by Markus F.&lt;br /&gt;
&lt;br /&gt;
But a few modifications still make sense:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. To this purpose the fuses have to be set. A 16 MHz quartz may also be used if the software is adapted through the Makefile option.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turns on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF. Where necessary resisitor R7 should be decreased to 3.3 kΩ. The circuit diagram and further detail is to be found in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The reasons and details concerning these changes as well as further hints about new implementations are explained in the hardware section of my PDF documentation. ATmega168 or ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to the 1.1V internal reference. The ATmega8 has a 2.56V internal reference which is inferior for measurements below 1V. The ATmega8 can be replaced by a ATmega168/328 without changes to the hardware. Here is the part from the [https://www.mikrocontroller.net/wikifiles/thumb/6/64/TransistorTesterVC1.png/779px-TransistorTesterVC1.png circuit diagram] that is responsible for the measurements.&lt;br /&gt;
&lt;br /&gt;
The circuits for the battery supply and the automatic shutdown are not shown by this circuit diagram.&lt;br /&gt;
&lt;br /&gt;
You could go without the components marked in red, but they may enhance the precision of the measurements. Those marked in green are modifications to the original design by Markus F.&lt;br /&gt;
The Eagle CAD files by Asko B. for three variants can be found in the discussion thread at http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
This is the article about the first version of the transistor tester by Markus F.: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (Français) ==&lt;br /&gt;
&lt;br /&gt;
En pricipe le logiciel peut être configuré de manière à tourner sans modifications sur le hardware présenté par Markus F. (voir ci-dessous).&lt;br /&gt;
&lt;br /&gt;
Quelques modifications sont pourtant utiles :&lt;br /&gt;
&lt;br /&gt;
* Le processeur devrait être piloté par une horloge de 8 MHz, de préférence avec un quartz externe. A cette fin il faut modifier les fusibles (&amp;quot;fuses&amp;quot;) du processeur ATmega. Un quartz de 16 MHz peut être utilisé sous condition de configurer le logiciel en conséquence par l&#039;intermédiaire du Makefile.&lt;br /&gt;
* Une résistance &amp;quot;pull up&amp;quot; d&#039;environ 27 kΩ devrait être ajoutée entre le pin 13 (PD7) du ATmega et l&#039;alimentation VCC.&lt;br /&gt;
* Le condensateur 100 nF au pin 21 (AREF) peut être supprimé ou, mieux, être remplacé par un condensateur 1 nF.&lt;br /&gt;
* Si la mise en marche électronique du testeur cause problème, il faut au moins réduire la valeur du condensateur C2 à la base du transistor T1 à 10 nF et, le cas échéant, réduire la valeur de la résistance R7 à 3,3 kΩ. Le schéma complet et des détails à cet égard se trouvent dans la documentation pdf.&lt;br /&gt;
&lt;br /&gt;
Les raisons pour ces modifications ainsi que des indications supplémentaires sont détaillées au chapitre &amp;quot;Hardware&amp;quot; de ma documentation pdf. L&#039;utilisation d&#039;un processeur ATmega168 ou ATmega328 est recommandée, parce qu&#039;en cas de besoin la fonction &amp;quot;auto-scale&amp;quot; du convertisseur analogique-numérique (ADC) passe de la référence de 5 V (VCC) vers la tension de référence interne. La référence interne du ATmega8 est de 2,56 V, alors que celle des autres processeurs est de 1,1 Volt. Avec 1,1 V on atteint une meilleure résolution du convertisseur ADC lors de la mesure de tensions en dessous de 1 Volt.&lt;br /&gt;
Le processeur ATmega8 peut être remplacé par un ATmega168 ou ATmega328 sans aucune modification du schéma du testeur!&lt;br /&gt;
Voici la partie du [https://www.mikrocontroller.net/wikifiles/thumb/6/64/TransistorTesterVC1.png/779px-TransistorTesterVC1.png schéma] responsable pour les mesures.&lt;br /&gt;
&lt;br /&gt;
Les circuits pour l&#039;alimentation par batterie et l&#039;arrêt automatique ne sont pas représentés sur ce schéma.&lt;br /&gt;
&lt;br /&gt;
Les composants marqués en rouge ne sont pas indispensables, mais ils peuvent contribuer à améliorer la précision des mesures. Les composants marqués en vert sont changés par rapport au projet original de Markus F.&lt;br /&gt;
Les fichiers CAD au format Eagle pour trois variantes mis à disposition par Asko B. se trouvent dans le fil de discussion sous l&#039;adresse :&lt;br /&gt;
http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Voici l&#039;article concernant le première version du testeur de transistors par Markus F. :[[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Dokumentation ist nun auf github abrufbar.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Mikrocontroller-net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können mit dem Kommando &amp;quot;git clone https://github.com/Mikrocontroller-net/transistortester&amp;quot;&lt;br /&gt;
eine vollständige Kopie des Archivs in ein neu erstelltes transistortester Verzeichnis herunterladen.&lt;br /&gt;
Im Arbeitsverzeichnis transistortester kann man mit &amp;quot;git checkout&amp;quot; die Kopie auf den letzten Stand bringen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/russian/ttester_rus112k.pdf инструкции (русский) Версия 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Затем щелкаем в папке правой кнопкой мыши, выбираем SVN Checkout, вводим следующий адрес  [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] и получаем свежую рабочию копию репозитория.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
The most up-to-date versions of software and documentation is obtainable in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|Short description (english) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/english/ttester_eng112k.pdf Manual (English) Version 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Français) ==&lt;br /&gt;
&lt;br /&gt;
La version actuelle du logiciel ainsi que la documentation sont dosponibles à tout moment au [https://www.mikrocontroller.net/svnbrowser/transistortester/ repositoire SVN].&lt;br /&gt;
&lt;br /&gt;
La documentation se trouve sous&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttinfo_ger112k.pdf Description succinte (allemand) version 1.12k (2017-02-18)] et&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttester_ger112k.pdf Mode d&#039;emploi détaillé (allemand) version 1.12k (2017-02-18)]&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs peuvent télécharger le répertoire choisi comme &amp;quot;GNU tarball&amp;quot; via [https://www.mikrocontroller.net/svnbrowser/transistortester/ svnbrowser]. &lt;br /&gt;
Après sélection du répertoire souhaité, il suffit de cliquer le lien &amp;quot;Download GNU tarball&amp;quot; qui se trouve en-dessous de la liste des repertoires/fichiers.&lt;br /&gt;
&lt;br /&gt;
Pour ouvrir le fichier ainsi téléchargé &amp;quot;transistortester*.tar.gz&amp;quot;, les utilisateurs sous Windows ont besoin d&#039;un logiciel approprié, comme p. ex. l&#039;application freeware [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Après le déballage de l&#039;archive transistortester*.tar.gz, les répertoires et fichiers sélectionnés pour le téléchargement se trouvent sur le disque de l&#039;ordinateur local.&lt;br /&gt;
Un accès direct aux fichiers via le svnbrowser n&#039;est pas possible!&lt;br /&gt;
&lt;br /&gt;
Il existe une méthode alternative pour accéder au contenu du repositoire SVN : c&#039;est l&#039;installation du plug-in TortoiseSVN de l&#039;explorateur de Windows. &lt;br /&gt;
L&#039;accès direct aux fichiers du repositoire SVN est alors possible via l&#039;explorateur sous &amp;quot;svn://mikrocontroller.net/transistortester&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs sous Linux peuvent accéder directement au repositoire à l&#039;aide de l&#039;application svn.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if it is done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed.&lt;br /&gt;
&lt;br /&gt;
== Hint to Cloners and Sellers ==&lt;br /&gt;
Dear Transistortester Cloners and Sellers!&lt;br /&gt;
&lt;br /&gt;
We don&#039;t mind if you produce and sell clones of the Transistortester. It&lt;br /&gt;
provides an inexpensive great little tool for electronics enthusiasts&lt;br /&gt;
and beginners, but PLEASE note the links to the project&#039;s webpage,&lt;br /&gt;
source repo and documentation. You would add more value by giving users&lt;br /&gt;
that information to be able to update the firmware and to understand all&lt;br /&gt;
the features. If you do any modifications to the firmware, please send&lt;br /&gt;
us a copy for the repo. And if you would send us your Transistortester&lt;br /&gt;
clones, we would be able to keep the firmware as compatible as possible.&lt;br /&gt;
Don&#039;t forget, this is an OSHW project!&lt;br /&gt;
&lt;br /&gt;
Best regards,&lt;br /&gt;
Transistortester team&lt;br /&gt;
&lt;br /&gt;
亲爱的晶体管测试仪复制品生产商和卖家:&lt;br /&gt;
&lt;br /&gt;
如果您生产和销售晶体管测试仪的复制品，我们不会介意。它可以为电子爱好者和初学者提供一个便宜的小工具，但销售时请注意提供项目网页的链结，源代码和文档。&lt;br /&gt;
通过链结向用户提供能够更新固件和了解所有功能的信息来增加产品的价值。如果您对固件进行任何修改，请向我们发送一份备份。如果您向我们发送晶体管测试仪的样品，&lt;br /&gt;
我们将能够保持固件尽可能兼容。别忘了，这是一个OSHW(开源硬件)项目！&lt;br /&gt;
&lt;br /&gt;
送上最好的祝福，&lt;br /&gt;
晶体管测试团队&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Messtechniker&#039;&#039;&#039; || || Fernsteuerfuktion für die &amp;quot;m&amp;quot;-Version (Markus).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102312</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102312"/>
		<updated>2020-08-11T05:10:30Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Zweites Beispiel ATtiny84 mit RC-Oszillator, Autobaud und Ein-Pin serieller Schnittstelle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
* LFUSE : Gibt einen Wunschwert für die Low Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* HFUSE : Gibt einen Wunschwert für die High Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* EFUSE : Gibt einen Wunschwert für die Extendet Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einem USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG (AVR-ISP2) wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; ohne die Angabe eines Ports reichen.&lt;br /&gt;
&lt;br /&gt;
== Tipps für die Benutzung der Optiboot Erzeugung ==&lt;br /&gt;
&lt;br /&gt;
Es ist sinnvoll, zunächst mit einer Standardeinstellung für einen der AVR-Prozessoren zu beginnen und dabei die Bildschirmausgabe zu prüfen, ob die Voreinstellungen passen.&lt;br /&gt;
So erzeugt beispielsweise &#039;&#039;&#039;make atmega8&#039;&#039;&#039; einen Bootloader für den ATmega8 Mikrocontroller. Aus der Bildschirmausgabe kann man erkennen, daß der Bootloader für einen 16 MHz Betrieb mit einer Baudrate von 115200 der seriellen Schnittstelle konfiguriert wurde. Die benutzten Pins für die serielle Kommunikation (RX und TX) werden ebenso aufgezählt wie der benutzte Pin für eine Kontroll-LED (PB5).&lt;br /&gt;
Mit zusätzlichen Optionen in der &#039;&#039;&#039;make&#039;&#039;&#039; Zeile kann man die Einstellungen dann ändern und mit einem erneuten Durchlauf das Bildschirmprotokoll wieder prüfen. Dabei kann man auch  die Größe des erzeugten Bootloaders im Auge behalten. Wenn eine passende Konfiguration gefunden ist, kann man den optiboot mit dem zusätzlichen Parameter ISP=1 bei korrekt angeschlossenem ISP Programmer mit dem Programm avrdude installieren.&lt;br /&gt;
&lt;br /&gt;
=== Erstes Beispiel mit ATmega8 ohne Quarz ===&lt;br /&gt;
Wenn der ATmega8 ohne Quarz betrieben werden soll, muß die Standardeinstellung der Low Fuse geändert werden z.B. auf LFUSE=E4 für den internen RC Taktgenerator. Dann passen aber sowohl die voreingestellte Taktrate als auch die Baudrate nicht mehr.&lt;br /&gt;
Also sollte der korrekte Aufruf für die Erzeugung des passenden Bootloaders dann &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=57600&#039;&#039;&#039; lauten.  Dieser Bootloader sollte jetzt auch ohne Quarzbetrieb laufen. Vorraussetzung ist aber, daß die Arbeitsfrequenz von 8 MHz auch relativ genau eingehalten wird. &lt;br /&gt;
Sollte das nicht der Fall sein, gibt es nun zwei Möglichkeiten, das Problem zu lösen. &lt;br /&gt;
* Die erste Möglichkeit nutzt die Fähigkeit der AVR-Prozessoren, den RC-Oszillator abzustimmen. Für die Optiboot-Erzeugung kann das mit der Option OSCCAL_CORR genutzt werden. Dazu ist aber eine Möglichkeit zur Kontrolle der Arbeitsfrequenz erforderlich wie ein Frequenzzähler oder ein Oszilloskop.  Da dieser Prozessor aber auch keine Möglichkeit hat, die Taktfrequenz auf einem Ausgabepin herauszuführen, müsste man ein Testprogramm für die Kontrolle der Frequenz schreiben. Der Bootloader optiboot hat aber auch eine nicht weiter dokumentierte Option TEST_OUTPUT, mit der der Bootloader nach dem Start nichts anderes macht, als fortwährend das gleiche Zeichen U auf den seriellen Ausgabepin auszugeben. So wäre zwar der Abgleich der Oszillator-Frequenz möglich, das ist aber doch sehr mühsam und  muß natürlich für jedes Exemplar erneut wiederholt werden.&lt;br /&gt;
* Die zweite Möglichkeit nutzt eine ganz andere Fähigkeit des optiboot, die automatische Baudraten-Anpassung. Hier wird die Übertragungszeit der seriellen Bits des ersten empfangenen Zeichens ausgemessen und dabei die passende Baudrate eingestellt. Das können wir als nächstes mit &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=32&#039;&#039;&#039; ausprobieren. Hier teilt uns die Bildschirmausgabe mit, daß eine Baudrate zwischen 244 und 80k möglich ist. Doch leider braucht das Programm jetzt 518 Bytes und damit würde es 1024 Bytes Flash Speicher belegen. Der Bootloader würde zwar laufen, aber es müssen nur 6 Byte eingespart werden, um mit der Hälfte des Speichers auszukommen.  Mit der BAUD_RATE=22 für das Messen von nur 2 Bits statt 4 Bits würde man nur 4 Byte sparen und das wäre auch schon die sparsamste Variante der Baudratenmessung. Nun gibt es aber noch drei weitere Möglichkeiten Platz zu  sparen. Man könnte auf die Fähigkeit zum Beschreiben des EEproms verzichten (SUPPORT_EEPROM=0), auf das LED-Blinken beim Start verzichten (LED_START_FLASHES=0) oder auf das Löschen der Flash-Speicherseite vor dem Datenempfang (NO_EARLY_PAGE_ERASE=1) verzichten. Alle drei Möglichkeiten führen zum Erfolg, kosten aber auch Funktion. Ein ebenfalls möglicher Kompromiss wäre nur einmal Blinken (LED_START_FLASHES=1) oder auf die Überwachung des seriellen Eingangs beim Blinken zu verzichten (LED_START_FLASHES=-3). Man kann auch das Blinken ganz abwählen (LED_START_FLASHES=0) und statt dessen die LED_DATA_FLASH Funktion benutzen. Was auch immer man wählt, die 6 Byte sind leicht einzusparen ohne viel an Funktion einzubüßen. Der Aufwand ist überschaubar und mehr Speicher wird bei sorgfältiger Konfiguration auch nicht belegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Zweites Beispiel ATtiny84 mit RC-Oszillator, Autobaud und Ein-Pin serieller Schnittstelle ===&lt;br /&gt;
&lt;br /&gt;
Da der Standardbetrieb mit Quarz vorgesehen ist, müssen wir zunächst der RC-Oszillatorbetrieb mit einer Vorgabe für die Low Fuse  starten wie &#039;&#039;&#039;make attiny84 LFUSE=E2 F_CPU=8000000 BAUD_RATE=32&#039;&#039;&#039;. Hier erfahren wir aus dem Bildschirmprotokoll, daß 10 Flash Speicherseiten für den Bootloader benutzt werden. Ein spezieller Bootbereich ist für diesen Prozessor nicht vorhanden. Deshalb braucht hier auch die Option VIRTUAL_BOOT_PARTITION nicht angegeben zu werden. Für die serielle Schnittstelle würden hier die Pinne A3 und A4 von der Software benutzt. Ein UART ist ja auch nicht vorhanden beim ATtiny84. Wir wollten ja aber nur einen Pin für die serielle Kommunikation benutzen. Das ist einfach möglich durch die Benennung des gleichen Wunschpins für TX und RX. Also muß der Aufruf &#039;&#039;&#039;make attiny84 LFUSE=E2 F_CPU=8000000 BAUD_RATE=32  UART_RX=A4 UART_TX=A4&#039;&#039;&#039; lauten. Wenn man keine blinkende Kontroll-LED haben möchte, kann man die mit LED_START_FLASHES=0 abwählen. Weniger Speicherseiten werden dadurch aber nicht belegt. Für den Betrieb der seriellen Schnittstelle mit nur einem Pin muß man durch eine Zusatzschaltung dafür sorgen, daß die Echos des Sendesignals TXD des PCs zum Empfangssignal RXD des PCs unterdrückt werden. Bei dem von avrdude verwendeten STK500 Protokoll wird im Halbduplexbetrieb gearbeitet. Es sendet im Regelfall immer nur eine Seite zur gleichen Zeit. Wenn die PC-Seite sendet, werden die Daten zum AVR über den 1k Widerstand weitergeleitet. Wenn der AVR dann die Antwort sendet, ist der TX Pegel des PCs im Ruhezustand, also 5V. Der 1k Widerstand dient dann als Pullup Widerstand für die TX Funktion des AVR, der nur die 0V Pegel aktiv schaltet. Beide gezeigten Schaltungen leiten die 0V Daten  des AVR leicht verzögert über die CMOS Gatter zum RX-Pin des PCs weiter. Wenn der PC selber den 0V Pegel sendet, wird entweder über den zweiten NAND Gatter Eingang (Pin 6) oder über die Dioden der zweiten Schaltung die Rückmeldung des 0-Pegels zum RX-Pin des PCs verhindert. Damit auch keine Impulse an den Schaltflanken durchkommen, wird bei der ersten Schaltung der 0V Pegel nur leicht verzögert und die Rückkehr zum 5V Pegel deutlich länger verzögert. Die 0V Verzögerung muß dabei kleiner sein als die Gatterverzögerung des ersten NAND Gatters. Bei der zweiten Schaltung sperrt eine Diode das 0V Signal direkt, die zweite Diode sperrt mit dem durch zwei Inverter und zusätzlichem RC-Glied verzögerten 0V Signal. Dadurch ist ein Betrieb des unveränderten avrdude möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Echo Unterdrückung für Ein-Pin Betrieb der seriellen Schnittstelle.svg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alternativ ist auch eine Schaltung mit dem 6-Fach Inverter 74HC14 möglich, der ebenfalls Schmitt Trigger Eingänge besitzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Echo Unterdrückung für Ein-Pin Betrieb der seriellen Schnittstelle mit 74HC14.svg]]&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
=== Das vierte Beispiel erzeugt einen Bootloader für eine ATtiny84 ===&lt;br /&gt;
 make attiny84&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 8000000 Hz (8.00 Mhz) Betrieb mit Baudrate 57600 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR attiny84 erstellen:&lt;br /&gt;
 LED-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 RX-Pin PA3 benutzt Pin 10-PDIP14 2-QFN20, mit Spezialfunktionen: PCINT3 T0 ADC3.&lt;br /&gt;
 TX-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=attiny84  -fno-diagnostics-show-caret -DBAUD_RATE=57600 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DVIRTUAL_BOOT_PARTITION=1  -DLED=pA4 -DUART=00 -DSOFT_UART=01 -DUART_RX=pA3 -DUART_TX=pA4 -DF_CPU=8000000 -DHFUSE=hexDD -DLFUSE=hexFF -DBOOT_PAGE_LEN=64 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 57600,  SoftUART_Real: 57553, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x1D80 = 7552&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
  &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     580	      0	      0	    580	    244	optiboot.elf&lt;br /&gt;
 Benötigt 10 Flash Seiten, je 64 Bytes, das ist 7.8% des Flash Speichers &lt;br /&gt;
 Keine Boot Seiten vorhanden!&lt;br /&gt;
&lt;br /&gt;
=== Zwei Beispiele für eine fehlerhafte LFUSE Einstellung ===&lt;br /&gt;
&lt;br /&gt;
Im ersten Beispiel paßt die Betriebsfrequenz 16 MHz nicht zu dem gewählten RC-Oszillator Betrieb. Korrekt wäre ein Aufruf wie &#039;&#039;&#039;make atmega328p LFUSE=E2 F_CPU=8000000 BAUD_RATE=38400&#039;&#039;&#039;. Hier soll aber gezeigt werden, daß beim Erstellen des Bootloaders versucht wird, Fehler zu vermeiden.&lt;br /&gt;
 &lt;br /&gt;
 make atmega328p LFUSE=E2&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexE2 -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:212:5: Fehler: #error &amp;quot;Int RC mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
In nächsten Beispiel paßt die Betriebsfrequenz nicht zu dem Quarzbetrieb mit dem /8 Vorteiler. Korrekt wäre hier ein Kommando wie &#039;&#039;&#039;make atmega329p LFUSE=7F F_CPU=1000000 BAUD_RATE=9600&#039;&#039;&#039;. Aber hier wieder zur Demonstration der falsche Aufruf:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p LFUSE=7F&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hex7F -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:254:5: Fehler: #error &amp;quot;LP Crystal mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
=== Bootloader für Arduino-Nano mit automatischer Baudraten-Anpassung inklusive avrdude Aufruf ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 ISP=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers &lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
 &lt;br /&gt;
 ####### Start von program_target.sh für atmega328p #############&lt;br /&gt;
    Die Fuses in program_target.sh sind gesetzt auf lfuse=0xFF, hfuse=0xDE, efuse=0xFD&lt;br /&gt;
 Bootloader HFUSE wird auf 0xDE gesetzt, OK!&lt;br /&gt;
 BootLoader Startadresse ist gesetzt auf 0x7E00, 32256&lt;br /&gt;
 ##### Lösche den atmega328p und setze die Fuses&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 200 -p atmega328p -P usb -b 115200 -q -q -e -u  -U efuse:w:0xFD:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m&lt;br /&gt;
 ##### Schreibe den optiboot Bootloader auf atmega328p und setze die Lock Bits&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 1.50 -p atmega328p -P usb -b 115200 -D -U flash:w:optiboot_atmega328p.hex:i -U lock:w:0xef:m&lt;br /&gt;
&lt;br /&gt;
 avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: Device signature = 0x1e950f (probably m328p)&lt;br /&gt;
 avrdude: reading input file &amp;quot;optiboot_atmega328p.hex&amp;quot;&lt;br /&gt;
 avrdude: writing flash (32768 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 32768 bytes of flash written&lt;br /&gt;
 avrdude: verifying flash memory against optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: load data flash data from input file optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: input file optiboot_atmega328p.hex contains 32768 bytes&lt;br /&gt;
 avrdude: reading on-chip flash data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 32768 bytes of flash verified&lt;br /&gt;
 avrdude: reading input file &amp;quot;0xef&amp;quot;&lt;br /&gt;
 avrdude: writing lock (1 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.01s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 1 bytes of lock written&lt;br /&gt;
 avrdude: verifying lock memory against 0xef:&lt;br /&gt;
 avrdude: load data lock data from input file 0xef:&lt;br /&gt;
 avrdude: input file 0xef contains 1 bytes&lt;br /&gt;
 avrdude: reading on-chip lock data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 1 bytes of lock verified&lt;br /&gt;
&lt;br /&gt;
 avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)&lt;br /&gt;
&lt;br /&gt;
 avrdude done.  Thank you.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102311</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102311"/>
		<updated>2020-08-11T05:08:11Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Zweites Beispiel ATtiny84 mit RC-Oszillator, Autobaud und Ein-Pin serieller Schnittstelle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
* LFUSE : Gibt einen Wunschwert für die Low Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* HFUSE : Gibt einen Wunschwert für die High Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* EFUSE : Gibt einen Wunschwert für die Extendet Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einem USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG (AVR-ISP2) wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; ohne die Angabe eines Ports reichen.&lt;br /&gt;
&lt;br /&gt;
== Tipps für die Benutzung der Optiboot Erzeugung ==&lt;br /&gt;
&lt;br /&gt;
Es ist sinnvoll, zunächst mit einer Standardeinstellung für einen der AVR-Prozessoren zu beginnen und dabei die Bildschirmausgabe zu prüfen, ob die Voreinstellungen passen.&lt;br /&gt;
So erzeugt beispielsweise &#039;&#039;&#039;make atmega8&#039;&#039;&#039; einen Bootloader für den ATmega8 Mikrocontroller. Aus der Bildschirmausgabe kann man erkennen, daß der Bootloader für einen 16 MHz Betrieb mit einer Baudrate von 115200 der seriellen Schnittstelle konfiguriert wurde. Die benutzten Pins für die serielle Kommunikation (RX und TX) werden ebenso aufgezählt wie der benutzte Pin für eine Kontroll-LED (PB5).&lt;br /&gt;
Mit zusätzlichen Optionen in der &#039;&#039;&#039;make&#039;&#039;&#039; Zeile kann man die Einstellungen dann ändern und mit einem erneuten Durchlauf das Bildschirmprotokoll wieder prüfen. Dabei kann man auch  die Größe des erzeugten Bootloaders im Auge behalten. Wenn eine passende Konfiguration gefunden ist, kann man den optiboot mit dem zusätzlichen Parameter ISP=1 bei korrekt angeschlossenem ISP Programmer mit dem Programm avrdude installieren.&lt;br /&gt;
&lt;br /&gt;
=== Erstes Beispiel mit ATmega8 ohne Quarz ===&lt;br /&gt;
Wenn der ATmega8 ohne Quarz betrieben werden soll, muß die Standardeinstellung der Low Fuse geändert werden z.B. auf LFUSE=E4 für den internen RC Taktgenerator. Dann passen aber sowohl die voreingestellte Taktrate als auch die Baudrate nicht mehr.&lt;br /&gt;
Also sollte der korrekte Aufruf für die Erzeugung des passenden Bootloaders dann &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=57600&#039;&#039;&#039; lauten.  Dieser Bootloader sollte jetzt auch ohne Quarzbetrieb laufen. Vorraussetzung ist aber, daß die Arbeitsfrequenz von 8 MHz auch relativ genau eingehalten wird. &lt;br /&gt;
Sollte das nicht der Fall sein, gibt es nun zwei Möglichkeiten, das Problem zu lösen. &lt;br /&gt;
* Die erste Möglichkeit nutzt die Fähigkeit der AVR-Prozessoren, den RC-Oszillator abzustimmen. Für die Optiboot-Erzeugung kann das mit der Option OSCCAL_CORR genutzt werden. Dazu ist aber eine Möglichkeit zur Kontrolle der Arbeitsfrequenz erforderlich wie ein Frequenzzähler oder ein Oszilloskop.  Da dieser Prozessor aber auch keine Möglichkeit hat, die Taktfrequenz auf einem Ausgabepin herauszuführen, müsste man ein Testprogramm für die Kontrolle der Frequenz schreiben. Der Bootloader optiboot hat aber auch eine nicht weiter dokumentierte Option TEST_OUTPUT, mit der der Bootloader nach dem Start nichts anderes macht, als fortwährend das gleiche Zeichen U auf den seriellen Ausgabepin auszugeben. So wäre zwar der Abgleich der Oszillator-Frequenz möglich, das ist aber doch sehr mühsam und  muß natürlich für jedes Exemplar erneut wiederholt werden.&lt;br /&gt;
* Die zweite Möglichkeit nutzt eine ganz andere Fähigkeit des optiboot, die automatische Baudraten-Anpassung. Hier wird die Übertragungszeit der seriellen Bits des ersten empfangenen Zeichens ausgemessen und dabei die passende Baudrate eingestellt. Das können wir als nächstes mit &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=32&#039;&#039;&#039; ausprobieren. Hier teilt uns die Bildschirmausgabe mit, daß eine Baudrate zwischen 244 und 80k möglich ist. Doch leider braucht das Programm jetzt 518 Bytes und damit würde es 1024 Bytes Flash Speicher belegen. Der Bootloader würde zwar laufen, aber es müssen nur 6 Byte eingespart werden, um mit der Hälfte des Speichers auszukommen.  Mit der BAUD_RATE=22 für das Messen von nur 2 Bits statt 4 Bits würde man nur 4 Byte sparen und das wäre auch schon die sparsamste Variante der Baudratenmessung. Nun gibt es aber noch drei weitere Möglichkeiten Platz zu  sparen. Man könnte auf die Fähigkeit zum Beschreiben des EEproms verzichten (SUPPORT_EEPROM=0), auf das LED-Blinken beim Start verzichten (LED_START_FLASHES=0) oder auf das Löschen der Flash-Speicherseite vor dem Datenempfang (NO_EARLY_PAGE_ERASE=1) verzichten. Alle drei Möglichkeiten führen zum Erfolg, kosten aber auch Funktion. Ein ebenfalls möglicher Kompromiss wäre nur einmal Blinken (LED_START_FLASHES=1) oder auf die Überwachung des seriellen Eingangs beim Blinken zu verzichten (LED_START_FLASHES=-3). Man kann auch das Blinken ganz abwählen (LED_START_FLASHES=0) und statt dessen die LED_DATA_FLASH Funktion benutzen. Was auch immer man wählt, die 6 Byte sind leicht einzusparen ohne viel an Funktion einzubüßen. Der Aufwand ist überschaubar und mehr Speicher wird bei sorgfältiger Konfiguration auch nicht belegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Zweites Beispiel ATtiny84 mit RC-Oszillator, Autobaud und Ein-Pin serieller Schnittstelle ===&lt;br /&gt;
&lt;br /&gt;
Da der Standardbetrieb mit Quarz vorgesehen ist, müssen wir zunächst der RC-Oszillatorbetrieb mit einer Vorgabe für die Low Fuse  starten wie &#039;&#039;&#039;make attiny84 LFUSE=E2 F_CPU=8000000 BAUD_RATE=32&#039;&#039;&#039;. Hier erfahren wir aus dem Bildschirmprotokoll, daß 10 Flash Speicherseiten für den Bootloader benutzt werden. Ein spezieller Bootbereich ist für diesen Prozessor nicht vorhanden. Deshalb braucht hier auch die Option VIRTUAL_BOOT_PARTITION nicht angegeben zu werden. Für die serielle Schnittstelle würden hier die Pinne A3 und A4 von der Software benutzt. Ein UART ist ja auch nicht vorhanden beim ATtiny84. Wir wollten ja aber nur einen Pin für die serielle Kommunikation benutzen. Das ist einfach möglich durch die Benennung des gleichen Wunschpins für TX und RX. Also muß der Aufruf &#039;&#039;&#039;make attiny84 LFUSE=E2 F_CPU=8000000 BAUD_RATE=32  UART_RX=A4 UART_TX=A4&#039;&#039;&#039; lauten. Wenn man keine blinkende Kontroll-LED haben möchte, kann man die mit LED_START_FLASHES=0 abwählen. Weniger Speicherseiten werden dadurch aber nicht belegt. Für den Betrieb der seriellen Schnittstelle mit nur einem Pin muß man durch eine Zusatzschaltung dafür sorgen, daß die Echos des Sendesignals TXD des PCs zum Empfangssignal RXD des PCs unterdrückt werden. Bei dem von avrdude verwendeten STK500 Protokoll wird im Halbduplexbetrieb gearbeitet. Es sendet im Regelfall immer nur eine Seite zur gleichen Zeit. Wenn die PC-Seite sendet, werden die Daten zum AVR über den 1k Widerstand weitergeleitet. Wenn der AVR dann die Antwort sendet, ist der TX Pegel des PCs im Ruhezustand, also 5V. Der 1k Widerstand dient dann als Pullup Widerstand für die TX Funktion des AVR, der nur die 0V Pegel aktiv schaltet. Beide gezeigten Schaltungen leiten die 0V Daten  des AVR leicht verzögert über die CMOS Gatter zum RX-Pin des PCs weiter. Wenn der PC selber den 0V Pegel sendet, wird entweder über den zweiten NAND Gatter Eingang (Pin 6) oder über die Dioden der zweiten Schaltung die Rückmeldung des 0-Pegels zum RX-Pin des PCs verhindert. Damit auch keine Impulse an den Schaltflanken durchkommen, wird bei der ersten Schaltung der 0V Pegel nur leicht verzögert und die Rückkehr zum 5V Pegel deutlich länger verzögert. Die 0V Verzögerung muß dabei kleiner sein als die Gatterverzögerung des ersten NAND Gatters. Bei der zweiten Schaltung sperrt eine Diode das 0V Signal direkt, die zweite Diode sperrt mit dem durch zwei Inverter verzögerten 0V Signal. Dadurch ist ein Betrieb des unveränderten avrdude möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Echo Unterdrückung für Ein-Pin Betrieb der seriellen Schnittstelle.svg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alternativ ist auch eine Schaltung mit dem 6-Fach Inverter 74HC14 möglich, der ebenfalls Schmitt Trigger Eingänge besitzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Echo Unterdrückung für Ein-Pin Betrieb der seriellen Schnittstelle mit 74HC14.svg]]&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
=== Das vierte Beispiel erzeugt einen Bootloader für eine ATtiny84 ===&lt;br /&gt;
 make attiny84&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 8000000 Hz (8.00 Mhz) Betrieb mit Baudrate 57600 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR attiny84 erstellen:&lt;br /&gt;
 LED-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 RX-Pin PA3 benutzt Pin 10-PDIP14 2-QFN20, mit Spezialfunktionen: PCINT3 T0 ADC3.&lt;br /&gt;
 TX-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=attiny84  -fno-diagnostics-show-caret -DBAUD_RATE=57600 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DVIRTUAL_BOOT_PARTITION=1  -DLED=pA4 -DUART=00 -DSOFT_UART=01 -DUART_RX=pA3 -DUART_TX=pA4 -DF_CPU=8000000 -DHFUSE=hexDD -DLFUSE=hexFF -DBOOT_PAGE_LEN=64 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 57600,  SoftUART_Real: 57553, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x1D80 = 7552&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
  &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     580	      0	      0	    580	    244	optiboot.elf&lt;br /&gt;
 Benötigt 10 Flash Seiten, je 64 Bytes, das ist 7.8% des Flash Speichers &lt;br /&gt;
 Keine Boot Seiten vorhanden!&lt;br /&gt;
&lt;br /&gt;
=== Zwei Beispiele für eine fehlerhafte LFUSE Einstellung ===&lt;br /&gt;
&lt;br /&gt;
Im ersten Beispiel paßt die Betriebsfrequenz 16 MHz nicht zu dem gewählten RC-Oszillator Betrieb. Korrekt wäre ein Aufruf wie &#039;&#039;&#039;make atmega328p LFUSE=E2 F_CPU=8000000 BAUD_RATE=38400&#039;&#039;&#039;. Hier soll aber gezeigt werden, daß beim Erstellen des Bootloaders versucht wird, Fehler zu vermeiden.&lt;br /&gt;
 &lt;br /&gt;
 make atmega328p LFUSE=E2&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexE2 -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:212:5: Fehler: #error &amp;quot;Int RC mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
In nächsten Beispiel paßt die Betriebsfrequenz nicht zu dem Quarzbetrieb mit dem /8 Vorteiler. Korrekt wäre hier ein Kommando wie &#039;&#039;&#039;make atmega329p LFUSE=7F F_CPU=1000000 BAUD_RATE=9600&#039;&#039;&#039;. Aber hier wieder zur Demonstration der falsche Aufruf:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p LFUSE=7F&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hex7F -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:254:5: Fehler: #error &amp;quot;LP Crystal mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
=== Bootloader für Arduino-Nano mit automatischer Baudraten-Anpassung inklusive avrdude Aufruf ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 ISP=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers &lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
 &lt;br /&gt;
 ####### Start von program_target.sh für atmega328p #############&lt;br /&gt;
    Die Fuses in program_target.sh sind gesetzt auf lfuse=0xFF, hfuse=0xDE, efuse=0xFD&lt;br /&gt;
 Bootloader HFUSE wird auf 0xDE gesetzt, OK!&lt;br /&gt;
 BootLoader Startadresse ist gesetzt auf 0x7E00, 32256&lt;br /&gt;
 ##### Lösche den atmega328p und setze die Fuses&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 200 -p atmega328p -P usb -b 115200 -q -q -e -u  -U efuse:w:0xFD:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m&lt;br /&gt;
 ##### Schreibe den optiboot Bootloader auf atmega328p und setze die Lock Bits&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 1.50 -p atmega328p -P usb -b 115200 -D -U flash:w:optiboot_atmega328p.hex:i -U lock:w:0xef:m&lt;br /&gt;
&lt;br /&gt;
 avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: Device signature = 0x1e950f (probably m328p)&lt;br /&gt;
 avrdude: reading input file &amp;quot;optiboot_atmega328p.hex&amp;quot;&lt;br /&gt;
 avrdude: writing flash (32768 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 32768 bytes of flash written&lt;br /&gt;
 avrdude: verifying flash memory against optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: load data flash data from input file optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: input file optiboot_atmega328p.hex contains 32768 bytes&lt;br /&gt;
 avrdude: reading on-chip flash data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 32768 bytes of flash verified&lt;br /&gt;
 avrdude: reading input file &amp;quot;0xef&amp;quot;&lt;br /&gt;
 avrdude: writing lock (1 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.01s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 1 bytes of lock written&lt;br /&gt;
 avrdude: verifying lock memory against 0xef:&lt;br /&gt;
 avrdude: load data lock data from input file 0xef:&lt;br /&gt;
 avrdude: input file 0xef contains 1 bytes&lt;br /&gt;
 avrdude: reading on-chip lock data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 1 bytes of lock verified&lt;br /&gt;
&lt;br /&gt;
 avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)&lt;br /&gt;
&lt;br /&gt;
 avrdude done.  Thank you.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102301</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102301"/>
		<updated>2020-07-28T10:20:31Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Zweites Beispiel ATtiny84 mit RC-Oszillator, Autobaud und Ein-Pin serieller Schnittstelle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
* LFUSE : Gibt einen Wunschwert für die Low Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* HFUSE : Gibt einen Wunschwert für die High Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* EFUSE : Gibt einen Wunschwert für die Extendet Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einem USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG (AVR-ISP2) wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; ohne die Angabe eines Ports reichen.&lt;br /&gt;
&lt;br /&gt;
== Tipps für die Benutzung der Optiboot Erzeugung ==&lt;br /&gt;
&lt;br /&gt;
Es ist sinnvoll, zunächst mit einer Standardeinstellung für einen der AVR-Prozessoren zu beginnen und dabei die Bildschirmausgabe zu prüfen, ob die Voreinstellungen passen.&lt;br /&gt;
So erzeugt beispielsweise &#039;&#039;&#039;make atmega8&#039;&#039;&#039; einen Bootloader für den ATmega8 Mikrocontroller. Aus der Bildschirmausgabe kann man erkennen, daß der Bootloader für einen 16 MHz Betrieb mit einer Baudrate von 115200 der seriellen Schnittstelle konfiguriert wurde. Die benutzten Pins für die serielle Kommunikation (RX und TX) werden ebenso aufgezählt wie der benutzte Pin für eine Kontroll-LED (PB5).&lt;br /&gt;
Mit zusätzlichen Optionen in der &#039;&#039;&#039;make&#039;&#039;&#039; Zeile kann man die Einstellungen dann ändern und mit einem erneuten Durchlauf das Bildschirmprotokoll wieder prüfen. Dabei kann man auch  die Größe des erzeugten Bootloaders im Auge behalten. Wenn eine passende Konfiguration gefunden ist, kann man den optiboot mit dem zusätzlichen Parameter ISP=1 bei korrekt angeschlossenem ISP Programmer mit dem Programm avrdude installieren.&lt;br /&gt;
&lt;br /&gt;
=== Erstes Beispiel mit ATmega8 ohne Quarz ===&lt;br /&gt;
Wenn der ATmega8 ohne Quarz betrieben werden soll, muß die Standardeinstellung der Low Fuse geändert werden z.B. auf LFUSE=E4 für den internen RC Taktgenerator. Dann passen aber sowohl die voreingestellte Taktrate als auch die Baudrate nicht mehr.&lt;br /&gt;
Also sollte der korrekte Aufruf für die Erzeugung des passenden Bootloaders dann &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=57600&#039;&#039;&#039; lauten.  Dieser Bootloader sollte jetzt auch ohne Quarzbetrieb laufen. Vorraussetzung ist aber, daß die Arbeitsfrequenz von 8 MHz auch relativ genau eingehalten wird. &lt;br /&gt;
Sollte das nicht der Fall sein, gibt es nun zwei Möglichkeiten, das Problem zu lösen. &lt;br /&gt;
* Die erste Möglichkeit nutzt die Fähigkeit der AVR-Prozessoren, den RC-Oszillator abzustimmen. Für die Optiboot-Erzeugung kann das mit der Option OSCCAL_CORR genutzt werden. Dazu ist aber eine Möglichkeit zur Kontrolle der Arbeitsfrequenz erforderlich wie ein Frequenzzähler oder ein Oszilloskop.  Da dieser Prozessor aber auch keine Möglichkeit hat, die Taktfrequenz auf einem Ausgabepin herauszuführen, müsste man ein Testprogramm für die Kontrolle der Frequenz schreiben. Der Bootloader optiboot hat aber auch eine nicht weiter dokumentierte Option TEST_OUTPUT, mit der der Bootloader nach dem Start nichts anderes macht, als fortwährend das gleiche Zeichen U auf den seriellen Ausgabepin auszugeben. So wäre zwar der Abgleich der Oszillator-Frequenz möglich, das ist aber doch sehr mühsam und  muß natürlich für jedes Exemplar erneut wiederholt werden.&lt;br /&gt;
* Die zweite Möglichkeit nutzt eine ganz andere Fähigkeit des optiboot, die automatische Baudraten-Anpassung. Hier wird die Übertragungszeit der seriellen Bits des ersten empfangenen Zeichens ausgemessen und dabei die passende Baudrate eingestellt. Das können wir als nächstes mit &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=32&#039;&#039;&#039; ausprobieren. Hier teilt uns die Bildschirmausgabe mit, daß eine Baudrate zwischen 244 und 80k möglich ist. Doch leider braucht das Programm jetzt 518 Bytes und damit würde es 1024 Bytes Flash Speicher belegen. Der Bootloader würde zwar laufen, aber es müssen nur 6 Byte eingespart werden, um mit der Hälfte des Speichers auszukommen.  Mit der BAUD_RATE=22 für das Messen von nur 2 Bits statt 4 Bits würde man nur 4 Byte sparen und das wäre auch schon die sparsamste Variante der Baudratenmessung. Nun gibt es aber noch drei weitere Möglichkeiten Platz zu  sparen. Man könnte auf die Fähigkeit zum Beschreiben des EEproms verzichten (SUPPORT_EEPROM=0), auf das LED-Blinken beim Start verzichten (LED_START_FLASHES=0) oder auf das Löschen der Flash-Speicherseite vor dem Datenempfang (NO_EARLY_PAGE_ERASE=1) verzichten. Alle drei Möglichkeiten führen zum Erfolg, kosten aber auch Funktion. Ein ebenfalls möglicher Kompromiss wäre nur einmal Blinken (LED_START_FLASHES=1) oder auf die Überwachung des seriellen Eingangs beim Blinken zu verzichten (LED_START_FLASHES=-3). Man kann auch das Blinken ganz abwählen (LED_START_FLASHES=0) und statt dessen die LED_DATA_FLASH Funktion benutzen. Was auch immer man wählt, die 6 Byte sind leicht einzusparen ohne viel an Funktion einzubüßen. Der Aufwand ist überschaubar und mehr Speicher wird bei sorgfältiger Konfiguration auch nicht belegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Zweites Beispiel ATtiny84 mit RC-Oszillator, Autobaud und Ein-Pin serieller Schnittstelle ===&lt;br /&gt;
&lt;br /&gt;
Da der Standardbetrieb mit Quarz vorgesehen ist, müssen wir zunächst der RC-Oszillatorbetrieb mit einer Vorgabe für die Low Fuse  starten wie &#039;&#039;&#039;make attiny84 LFUSE=E2 F_CPU=8000000 BAUD_RATE=32&#039;&#039;&#039;. Hier erfahren wir aus dem Bildschirmprotokoll, daß 10 Flash Speicherseiten für den Bootloader benutzt werden. Ein spezieller Bootbereich ist für diesen Prozessor nicht vorhanden. Deshalb braucht hier auch die Option VIRTUAL_BOOT_PARTITION nicht angegeben zu werden. Für die serielle Schnittstelle würden hier die Pinne A3 und A4 von der Software benutzt. Ein UART ist ja auch nicht vorhanden beim ATtiny84. Wir wollten ja aber nur einen Pin für die serielle Kommunikation benutzen. Das ist einfach möglich durch die Benennung des gleichen Wunschpins für TX und RX. Also muß der Aufruf &#039;&#039;&#039;make attiny84 LFUSE=E2 F_CPU=8000000 BAUD_RATE=32  UART_RX=A4 UART_TX=A4&#039;&#039;&#039; lauten. Wenn man keine blinkende Kontroll-LED haben möchte, kann man die mit LED_START_FLASHES=0 abwählen. Weniger Speicherseiten werden dadurch aber nicht belegt. Für den Betrieb der seriellen Schnittstelle mit nur einem Pin muß man durch eine Zusatzschaltung dafür sorgen, daß die Echos des Sendesignals TXD des PCs zum Empfangssignal RXD des PCs unterdrückt werden. Die hier gezeigte Schaltung unterdrückt die Null-Pegel der von der PC-Seite gesendeten Daten. Die Daten des AVR werden aber leicht verzögert weitergeleitet. Dadurch ist ein Betrieb des unveränderten avrdude möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Echo Unterdrückung für Ein-Pin Betrieb der seriellen Schnittstelle.svg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alternativ ist auch eine Schaltung mit dem 6-Fach Inverter 74HC14 möglich, der ebenfalls Schmitt Trigger Eingänge besitzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Echo Unterdrückung für Ein-Pin Betrieb der seriellen Schnittstelle mit 74HC14.svg]]&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
=== Das vierte Beispiel erzeugt einen Bootloader für eine ATtiny84 ===&lt;br /&gt;
 make attiny84&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 8000000 Hz (8.00 Mhz) Betrieb mit Baudrate 57600 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR attiny84 erstellen:&lt;br /&gt;
 LED-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 RX-Pin PA3 benutzt Pin 10-PDIP14 2-QFN20, mit Spezialfunktionen: PCINT3 T0 ADC3.&lt;br /&gt;
 TX-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=attiny84  -fno-diagnostics-show-caret -DBAUD_RATE=57600 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DVIRTUAL_BOOT_PARTITION=1  -DLED=pA4 -DUART=00 -DSOFT_UART=01 -DUART_RX=pA3 -DUART_TX=pA4 -DF_CPU=8000000 -DHFUSE=hexDD -DLFUSE=hexFF -DBOOT_PAGE_LEN=64 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 57600,  SoftUART_Real: 57553, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x1D80 = 7552&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
  &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     580	      0	      0	    580	    244	optiboot.elf&lt;br /&gt;
 Benötigt 10 Flash Seiten, je 64 Bytes, das ist 7.8% des Flash Speichers &lt;br /&gt;
 Keine Boot Seiten vorhanden!&lt;br /&gt;
&lt;br /&gt;
=== Zwei Beispiele für eine fehlerhafte LFUSE Einstellung ===&lt;br /&gt;
&lt;br /&gt;
Im ersten Beispiel paßt die Betriebsfrequenz 16 MHz nicht zu dem gewählten RC-Oszillator Betrieb. Korrekt wäre ein Aufruf wie &#039;&#039;&#039;make atmega328p LFUSE=E2 F_CPU=8000000 BAUD_RATE=38400&#039;&#039;&#039;. Hier soll aber gezeigt werden, daß beim Erstellen des Bootloaders versucht wird, Fehler zu vermeiden.&lt;br /&gt;
 &lt;br /&gt;
 make atmega328p LFUSE=E2&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexE2 -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:212:5: Fehler: #error &amp;quot;Int RC mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
In nächsten Beispiel paßt die Betriebsfrequenz nicht zu dem Quarzbetrieb mit dem /8 Vorteiler. Korrekt wäre hier ein Kommando wie &#039;&#039;&#039;make atmega329p LFUSE=7F F_CPU=1000000 BAUD_RATE=9600&#039;&#039;&#039;. Aber hier wieder zur Demonstration der falsche Aufruf:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p LFUSE=7F&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hex7F -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:254:5: Fehler: #error &amp;quot;LP Crystal mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
=== Bootloader für Arduino-Nano mit automatischer Baudraten-Anpassung inklusive avrdude Aufruf ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 ISP=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers &lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
 &lt;br /&gt;
 ####### Start von program_target.sh für atmega328p #############&lt;br /&gt;
    Die Fuses in program_target.sh sind gesetzt auf lfuse=0xFF, hfuse=0xDE, efuse=0xFD&lt;br /&gt;
 Bootloader HFUSE wird auf 0xDE gesetzt, OK!&lt;br /&gt;
 BootLoader Startadresse ist gesetzt auf 0x7E00, 32256&lt;br /&gt;
 ##### Lösche den atmega328p und setze die Fuses&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 200 -p atmega328p -P usb -b 115200 -q -q -e -u  -U efuse:w:0xFD:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m&lt;br /&gt;
 ##### Schreibe den optiboot Bootloader auf atmega328p und setze die Lock Bits&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 1.50 -p atmega328p -P usb -b 115200 -D -U flash:w:optiboot_atmega328p.hex:i -U lock:w:0xef:m&lt;br /&gt;
&lt;br /&gt;
 avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: Device signature = 0x1e950f (probably m328p)&lt;br /&gt;
 avrdude: reading input file &amp;quot;optiboot_atmega328p.hex&amp;quot;&lt;br /&gt;
 avrdude: writing flash (32768 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 32768 bytes of flash written&lt;br /&gt;
 avrdude: verifying flash memory against optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: load data flash data from input file optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: input file optiboot_atmega328p.hex contains 32768 bytes&lt;br /&gt;
 avrdude: reading on-chip flash data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 32768 bytes of flash verified&lt;br /&gt;
 avrdude: reading input file &amp;quot;0xef&amp;quot;&lt;br /&gt;
 avrdude: writing lock (1 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.01s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 1 bytes of lock written&lt;br /&gt;
 avrdude: verifying lock memory against 0xef:&lt;br /&gt;
 avrdude: load data lock data from input file 0xef:&lt;br /&gt;
 avrdude: input file 0xef contains 1 bytes&lt;br /&gt;
 avrdude: reading on-chip lock data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 1 bytes of lock verified&lt;br /&gt;
&lt;br /&gt;
 avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)&lt;br /&gt;
&lt;br /&gt;
 avrdude done.  Thank you.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Echo_Unterdr%C3%BCckung_f%C3%BCr_Ein-Pin_Betrieb_der_seriellen_Schnittstelle_mit_74HC14.svg&amp;diff=102300</id>
		<title>Datei:Echo Unterdrückung für Ein-Pin Betrieb der seriellen Schnittstelle mit 74HC14.svg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Echo_Unterdr%C3%BCckung_f%C3%BCr_Ein-Pin_Betrieb_der_seriellen_Schnittstelle_mit_74HC14.svg&amp;diff=102300"/>
		<updated>2020-07-28T10:17:46Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Für das Benutzen einer seriellen Schnittstelle mit Ein-Pin Betrieb für einen Bootloader müssen die Echos der vom PC gesendeten Daten unterdrückt werden. Diese Schaltung verhindert das Weiterleiten eines 0 Pegels, wenn der Sendepegel des PCs auf 0 geschaltet ist.&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102299</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102299"/>
		<updated>2020-07-28T10:07:23Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Zweites Beispiel ATtiny84 mit RC-Oszillator, Autobaud und Ein-Pin serieller Schnittstelle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
* LFUSE : Gibt einen Wunschwert für die Low Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* HFUSE : Gibt einen Wunschwert für die High Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* EFUSE : Gibt einen Wunschwert für die Extendet Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einem USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG (AVR-ISP2) wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; ohne die Angabe eines Ports reichen.&lt;br /&gt;
&lt;br /&gt;
== Tipps für die Benutzung der Optiboot Erzeugung ==&lt;br /&gt;
&lt;br /&gt;
Es ist sinnvoll, zunächst mit einer Standardeinstellung für einen der AVR-Prozessoren zu beginnen und dabei die Bildschirmausgabe zu prüfen, ob die Voreinstellungen passen.&lt;br /&gt;
So erzeugt beispielsweise &#039;&#039;&#039;make atmega8&#039;&#039;&#039; einen Bootloader für den ATmega8 Mikrocontroller. Aus der Bildschirmausgabe kann man erkennen, daß der Bootloader für einen 16 MHz Betrieb mit einer Baudrate von 115200 der seriellen Schnittstelle konfiguriert wurde. Die benutzten Pins für die serielle Kommunikation (RX und TX) werden ebenso aufgezählt wie der benutzte Pin für eine Kontroll-LED (PB5).&lt;br /&gt;
Mit zusätzlichen Optionen in der &#039;&#039;&#039;make&#039;&#039;&#039; Zeile kann man die Einstellungen dann ändern und mit einem erneuten Durchlauf das Bildschirmprotokoll wieder prüfen. Dabei kann man auch  die Größe des erzeugten Bootloaders im Auge behalten. Wenn eine passende Konfiguration gefunden ist, kann man den optiboot mit dem zusätzlichen Parameter ISP=1 bei korrekt angeschlossenem ISP Programmer mit dem Programm avrdude installieren.&lt;br /&gt;
&lt;br /&gt;
=== Erstes Beispiel mit ATmega8 ohne Quarz ===&lt;br /&gt;
Wenn der ATmega8 ohne Quarz betrieben werden soll, muß die Standardeinstellung der Low Fuse geändert werden z.B. auf LFUSE=E4 für den internen RC Taktgenerator. Dann passen aber sowohl die voreingestellte Taktrate als auch die Baudrate nicht mehr.&lt;br /&gt;
Also sollte der korrekte Aufruf für die Erzeugung des passenden Bootloaders dann &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=57600&#039;&#039;&#039; lauten.  Dieser Bootloader sollte jetzt auch ohne Quarzbetrieb laufen. Vorraussetzung ist aber, daß die Arbeitsfrequenz von 8 MHz auch relativ genau eingehalten wird. &lt;br /&gt;
Sollte das nicht der Fall sein, gibt es nun zwei Möglichkeiten, das Problem zu lösen. &lt;br /&gt;
* Die erste Möglichkeit nutzt die Fähigkeit der AVR-Prozessoren, den RC-Oszillator abzustimmen. Für die Optiboot-Erzeugung kann das mit der Option OSCCAL_CORR genutzt werden. Dazu ist aber eine Möglichkeit zur Kontrolle der Arbeitsfrequenz erforderlich wie ein Frequenzzähler oder ein Oszilloskop.  Da dieser Prozessor aber auch keine Möglichkeit hat, die Taktfrequenz auf einem Ausgabepin herauszuführen, müsste man ein Testprogramm für die Kontrolle der Frequenz schreiben. Der Bootloader optiboot hat aber auch eine nicht weiter dokumentierte Option TEST_OUTPUT, mit der der Bootloader nach dem Start nichts anderes macht, als fortwährend das gleiche Zeichen U auf den seriellen Ausgabepin auszugeben. So wäre zwar der Abgleich der Oszillator-Frequenz möglich, das ist aber doch sehr mühsam und  muß natürlich für jedes Exemplar erneut wiederholt werden.&lt;br /&gt;
* Die zweite Möglichkeit nutzt eine ganz andere Fähigkeit des optiboot, die automatische Baudraten-Anpassung. Hier wird die Übertragungszeit der seriellen Bits des ersten empfangenen Zeichens ausgemessen und dabei die passende Baudrate eingestellt. Das können wir als nächstes mit &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=32&#039;&#039;&#039; ausprobieren. Hier teilt uns die Bildschirmausgabe mit, daß eine Baudrate zwischen 244 und 80k möglich ist. Doch leider braucht das Programm jetzt 518 Bytes und damit würde es 1024 Bytes Flash Speicher belegen. Der Bootloader würde zwar laufen, aber es müssen nur 6 Byte eingespart werden, um mit der Hälfte des Speichers auszukommen.  Mit der BAUD_RATE=22 für das Messen von nur 2 Bits statt 4 Bits würde man nur 4 Byte sparen und das wäre auch schon die sparsamste Variante der Baudratenmessung. Nun gibt es aber noch drei weitere Möglichkeiten Platz zu  sparen. Man könnte auf die Fähigkeit zum Beschreiben des EEproms verzichten (SUPPORT_EEPROM=0), auf das LED-Blinken beim Start verzichten (LED_START_FLASHES=0) oder auf das Löschen der Flash-Speicherseite vor dem Datenempfang (NO_EARLY_PAGE_ERASE=1) verzichten. Alle drei Möglichkeiten führen zum Erfolg, kosten aber auch Funktion. Ein ebenfalls möglicher Kompromiss wäre nur einmal Blinken (LED_START_FLASHES=1) oder auf die Überwachung des seriellen Eingangs beim Blinken zu verzichten (LED_START_FLASHES=-3). Man kann auch das Blinken ganz abwählen (LED_START_FLASHES=0) und statt dessen die LED_DATA_FLASH Funktion benutzen. Was auch immer man wählt, die 6 Byte sind leicht einzusparen ohne viel an Funktion einzubüßen. Der Aufwand ist überschaubar und mehr Speicher wird bei sorgfältiger Konfiguration auch nicht belegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Zweites Beispiel ATtiny84 mit RC-Oszillator, Autobaud und Ein-Pin serieller Schnittstelle ===&lt;br /&gt;
&lt;br /&gt;
Da der Standardbetrieb mit Quarz vorgesehen ist, müssen wir zunächst der RC-Oszillatorbetrieb mit einer Vorgabe für die Low Fuse  starten wie &#039;&#039;&#039;make attiny84 LFUSE=E2 F_CPU=8000000 BAUD_RATE=32&#039;&#039;&#039;. Hier erfahren wir aus dem Bildschirmprotokoll, daß 10 Flash Speicherseiten für den Bootloader benutzt werden. Ein spezieller Bootbereich ist für diesen Prozessor nicht vorhanden. Deshalb braucht hier auch die Option VIRTUAL_BOOT_PARTITION nicht angegeben zu werden. Für die serielle Schnittstelle würden hier die Pinne A3 und A4 von der Software benutzt. Ein UART ist ja auch nicht vorhanden beim ATtiny84. Wir wollten ja aber nur einen Pin für die serielle Kommunikation benutzen. Das ist einfach möglich durch die Benennung des gleichen Wunschpins für TX und RX. Also muß der Aufruf &#039;&#039;&#039;make attiny84 LFUSE=E2 F_CPU=8000000 BAUD_RATE=32  UART_RX=A4 UART_TX=A4&#039;&#039;&#039; lauten. Wenn man keine blinkende Kontroll-LED haben möchte, kann man die mit LED_START_FLASHES=0 abwählen. Weniger Speicherseiten werden dadurch aber nicht belegt. Für den Betrieb der seriellen Schnittstelle mit nur einem Pin muß man durch eine Zusatzschaltung dafür sorgen, daß die Echos des Sendesignals TXD des PCs zum Empfangssignal RXD des PCs unterdrückt werden. Die hier gezeigte Schaltung unterdrückt die Null-Pegel der von der PC-Seite gesendeten Daten. Die Daten des AVR werden aber leicht verzögert weitergeleitet. Dadurch ist ein Betrieb des unveränderten avrdude möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Echo Unterdrückung für Ein-Pin Betrieb der seriellen Schnittstelle.svg]]&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
=== Das vierte Beispiel erzeugt einen Bootloader für eine ATtiny84 ===&lt;br /&gt;
 make attiny84&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 8000000 Hz (8.00 Mhz) Betrieb mit Baudrate 57600 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR attiny84 erstellen:&lt;br /&gt;
 LED-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 RX-Pin PA3 benutzt Pin 10-PDIP14 2-QFN20, mit Spezialfunktionen: PCINT3 T0 ADC3.&lt;br /&gt;
 TX-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=attiny84  -fno-diagnostics-show-caret -DBAUD_RATE=57600 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DVIRTUAL_BOOT_PARTITION=1  -DLED=pA4 -DUART=00 -DSOFT_UART=01 -DUART_RX=pA3 -DUART_TX=pA4 -DF_CPU=8000000 -DHFUSE=hexDD -DLFUSE=hexFF -DBOOT_PAGE_LEN=64 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 57600,  SoftUART_Real: 57553, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x1D80 = 7552&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
  &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     580	      0	      0	    580	    244	optiboot.elf&lt;br /&gt;
 Benötigt 10 Flash Seiten, je 64 Bytes, das ist 7.8% des Flash Speichers &lt;br /&gt;
 Keine Boot Seiten vorhanden!&lt;br /&gt;
&lt;br /&gt;
=== Zwei Beispiele für eine fehlerhafte LFUSE Einstellung ===&lt;br /&gt;
&lt;br /&gt;
Im ersten Beispiel paßt die Betriebsfrequenz 16 MHz nicht zu dem gewählten RC-Oszillator Betrieb. Korrekt wäre ein Aufruf wie &#039;&#039;&#039;make atmega328p LFUSE=E2 F_CPU=8000000 BAUD_RATE=38400&#039;&#039;&#039;. Hier soll aber gezeigt werden, daß beim Erstellen des Bootloaders versucht wird, Fehler zu vermeiden.&lt;br /&gt;
 &lt;br /&gt;
 make atmega328p LFUSE=E2&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexE2 -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:212:5: Fehler: #error &amp;quot;Int RC mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
In nächsten Beispiel paßt die Betriebsfrequenz nicht zu dem Quarzbetrieb mit dem /8 Vorteiler. Korrekt wäre hier ein Kommando wie &#039;&#039;&#039;make atmega329p LFUSE=7F F_CPU=1000000 BAUD_RATE=9600&#039;&#039;&#039;. Aber hier wieder zur Demonstration der falsche Aufruf:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p LFUSE=7F&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hex7F -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:254:5: Fehler: #error &amp;quot;LP Crystal mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
=== Bootloader für Arduino-Nano mit automatischer Baudraten-Anpassung inklusive avrdude Aufruf ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 ISP=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers &lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
 &lt;br /&gt;
 ####### Start von program_target.sh für atmega328p #############&lt;br /&gt;
    Die Fuses in program_target.sh sind gesetzt auf lfuse=0xFF, hfuse=0xDE, efuse=0xFD&lt;br /&gt;
 Bootloader HFUSE wird auf 0xDE gesetzt, OK!&lt;br /&gt;
 BootLoader Startadresse ist gesetzt auf 0x7E00, 32256&lt;br /&gt;
 ##### Lösche den atmega328p und setze die Fuses&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 200 -p atmega328p -P usb -b 115200 -q -q -e -u  -U efuse:w:0xFD:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m&lt;br /&gt;
 ##### Schreibe den optiboot Bootloader auf atmega328p und setze die Lock Bits&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 1.50 -p atmega328p -P usb -b 115200 -D -U flash:w:optiboot_atmega328p.hex:i -U lock:w:0xef:m&lt;br /&gt;
&lt;br /&gt;
 avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: Device signature = 0x1e950f (probably m328p)&lt;br /&gt;
 avrdude: reading input file &amp;quot;optiboot_atmega328p.hex&amp;quot;&lt;br /&gt;
 avrdude: writing flash (32768 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 32768 bytes of flash written&lt;br /&gt;
 avrdude: verifying flash memory against optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: load data flash data from input file optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: input file optiboot_atmega328p.hex contains 32768 bytes&lt;br /&gt;
 avrdude: reading on-chip flash data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 32768 bytes of flash verified&lt;br /&gt;
 avrdude: reading input file &amp;quot;0xef&amp;quot;&lt;br /&gt;
 avrdude: writing lock (1 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.01s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 1 bytes of lock written&lt;br /&gt;
 avrdude: verifying lock memory against 0xef:&lt;br /&gt;
 avrdude: load data lock data from input file 0xef:&lt;br /&gt;
 avrdude: input file 0xef contains 1 bytes&lt;br /&gt;
 avrdude: reading on-chip lock data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 1 bytes of lock verified&lt;br /&gt;
&lt;br /&gt;
 avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)&lt;br /&gt;
&lt;br /&gt;
 avrdude done.  Thank you.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Echo_Unterdr%C3%BCckung_f%C3%BCr_Ein-Pin_Betrieb_der_seriellen_Schnittstelle.svg&amp;diff=102298</id>
		<title>Datei:Echo Unterdrückung für Ein-Pin Betrieb der seriellen Schnittstelle.svg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Echo_Unterdr%C3%BCckung_f%C3%BCr_Ein-Pin_Betrieb_der_seriellen_Schnittstelle.svg&amp;diff=102298"/>
		<updated>2020-07-28T09:43:18Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Für den Betrieb eines Bootloaders mit serieller Schnittstelle mit nur einem Pin muß das Echo der vom PC gesendeten Daten unterdrückt werden. Dies ist eine mögliche Schaltung mit NAND Gattern und Schmitt-Trigger Eingängen. Es wird verhindert, daß der 0 Pegel des TXD-Ausgangs zum RXD Eingang gelangt. Die Sendesignale des Bootloaders werden leicht verzögert durchgelassen.&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102297</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102297"/>
		<updated>2020-07-28T09:16:32Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Erstes Beispiel mit ATmega8 ohne Quarz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
* LFUSE : Gibt einen Wunschwert für die Low Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* HFUSE : Gibt einen Wunschwert für die High Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* EFUSE : Gibt einen Wunschwert für die Extendet Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einem USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG (AVR-ISP2) wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; ohne die Angabe eines Ports reichen.&lt;br /&gt;
&lt;br /&gt;
== Tipps für die Benutzung der Optiboot Erzeugung ==&lt;br /&gt;
&lt;br /&gt;
Es ist sinnvoll, zunächst mit einer Standardeinstellung für einen der AVR-Prozessoren zu beginnen und dabei die Bildschirmausgabe zu prüfen, ob die Voreinstellungen passen.&lt;br /&gt;
So erzeugt beispielsweise &#039;&#039;&#039;make atmega8&#039;&#039;&#039; einen Bootloader für den ATmega8 Mikrocontroller. Aus der Bildschirmausgabe kann man erkennen, daß der Bootloader für einen 16 MHz Betrieb mit einer Baudrate von 115200 der seriellen Schnittstelle konfiguriert wurde. Die benutzten Pins für die serielle Kommunikation (RX und TX) werden ebenso aufgezählt wie der benutzte Pin für eine Kontroll-LED (PB5).&lt;br /&gt;
Mit zusätzlichen Optionen in der &#039;&#039;&#039;make&#039;&#039;&#039; Zeile kann man die Einstellungen dann ändern und mit einem erneuten Durchlauf das Bildschirmprotokoll wieder prüfen. Dabei kann man auch  die Größe des erzeugten Bootloaders im Auge behalten. Wenn eine passende Konfiguration gefunden ist, kann man den optiboot mit dem zusätzlichen Parameter ISP=1 bei korrekt angeschlossenem ISP Programmer mit dem Programm avrdude installieren.&lt;br /&gt;
&lt;br /&gt;
=== Erstes Beispiel mit ATmega8 ohne Quarz ===&lt;br /&gt;
Wenn der ATmega8 ohne Quarz betrieben werden soll, muß die Standardeinstellung der Low Fuse geändert werden z.B. auf LFUSE=E4 für den internen RC Taktgenerator. Dann passen aber sowohl die voreingestellte Taktrate als auch die Baudrate nicht mehr.&lt;br /&gt;
Also sollte der korrekte Aufruf für die Erzeugung des passenden Bootloaders dann &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=57600&#039;&#039;&#039; lauten.  Dieser Bootloader sollte jetzt auch ohne Quarzbetrieb laufen. Vorraussetzung ist aber, daß die Arbeitsfrequenz von 8 MHz auch relativ genau eingehalten wird. &lt;br /&gt;
Sollte das nicht der Fall sein, gibt es nun zwei Möglichkeiten, das Problem zu lösen. &lt;br /&gt;
* Die erste Möglichkeit nutzt die Fähigkeit der AVR-Prozessoren, den RC-Oszillator abzustimmen. Für die Optiboot-Erzeugung kann das mit der Option OSCCAL_CORR genutzt werden. Dazu ist aber eine Möglichkeit zur Kontrolle der Arbeitsfrequenz erforderlich wie ein Frequenzzähler oder ein Oszilloskop.  Da dieser Prozessor aber auch keine Möglichkeit hat, die Taktfrequenz auf einem Ausgabepin herauszuführen, müsste man ein Testprogramm für die Kontrolle der Frequenz schreiben. Der Bootloader optiboot hat aber auch eine nicht weiter dokumentierte Option TEST_OUTPUT, mit der der Bootloader nach dem Start nichts anderes macht, als fortwährend das gleiche Zeichen U auf den seriellen Ausgabepin auszugeben. So wäre zwar der Abgleich der Oszillator-Frequenz möglich, das ist aber doch sehr mühsam und  muß natürlich für jedes Exemplar erneut wiederholt werden.&lt;br /&gt;
* Die zweite Möglichkeit nutzt eine ganz andere Fähigkeit des optiboot, die automatische Baudraten-Anpassung. Hier wird die Übertragungszeit der seriellen Bits des ersten empfangenen Zeichens ausgemessen und dabei die passende Baudrate eingestellt. Das können wir als nächstes mit &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=32&#039;&#039;&#039; ausprobieren. Hier teilt uns die Bildschirmausgabe mit, daß eine Baudrate zwischen 244 und 80k möglich ist. Doch leider braucht das Programm jetzt 518 Bytes und damit würde es 1024 Bytes Flash Speicher belegen. Der Bootloader würde zwar laufen, aber es müssen nur 6 Byte eingespart werden, um mit der Hälfte des Speichers auszukommen.  Mit der BAUD_RATE=22 für das Messen von nur 2 Bits statt 4 Bits würde man nur 4 Byte sparen und das wäre auch schon die sparsamste Variante der Baudratenmessung. Nun gibt es aber noch drei weitere Möglichkeiten Platz zu  sparen. Man könnte auf die Fähigkeit zum Beschreiben des EEproms verzichten (SUPPORT_EEPROM=0), auf das LED-Blinken beim Start verzichten (LED_START_FLASHES=0) oder auf das Löschen der Flash-Speicherseite vor dem Datenempfang (NO_EARLY_PAGE_ERASE=1) verzichten. Alle drei Möglichkeiten führen zum Erfolg, kosten aber auch Funktion. Ein ebenfalls möglicher Kompromiss wäre nur einmal Blinken (LED_START_FLASHES=1) oder auf die Überwachung des seriellen Eingangs beim Blinken zu verzichten (LED_START_FLASHES=-3). Man kann auch das Blinken ganz abwählen (LED_START_FLASHES=0) und statt dessen die LED_DATA_FLASH Funktion benutzen. Was auch immer man wählt, die 6 Byte sind leicht einzusparen ohne viel an Funktion einzubüßen. Der Aufwand ist überschaubar und mehr Speicher wird bei sorgfältiger Konfiguration auch nicht belegt.&lt;br /&gt;
&lt;br /&gt;
=== Zweites Beispiel ATtiny84 mit RC-Oszillator, Autobaud und Ein-Pin serieller Schnittstelle ===&lt;br /&gt;
&lt;br /&gt;
Da der Standardbetrieb mit Quarz vorgesehen ist, müssen wir zunächst der RC-Oszillatorbetrieb mit einer Vorgabe für die Low Fuse  starten wie &#039;&#039;&#039;make attiny84 LFUSE=E2 F_CPU=8000000 BAUD_RATE=32&#039;&#039;&#039;. Hier erfahren wir aus dem Bildschirmprotokoll, daß 10 Flash Speicherseiten für den Bootloader benutzt werden. Ein spezieller Bootbereich ist für diesen Prozessor nicht vorhanden. Deshalb braucht hier auch die Option VIRTUAL_BOOT_PARTITION nicht angegeben zu werden. Für die serielle Schnittstelle würden hier die Pinne A3 und A4 von der Software benutzt. Ein UART ist ja auch nicht vorhanden beim ATtiny84. Wir wollten ja aber nur einen Pin für die serielle Kommunikation benutzen. Das ist einfach möglich durch die Benennung des gleichen Wunschpins für TX und RX. Also muß der Aufruf &#039;&#039;&#039;make attiny84 LFUSE=E2 F_CPU=8000000 BAUD_RATE=32  UART_RX=A4 UART_TX=A4&#039;&#039;&#039; lauten. Wenn man keine blinkende Kontroll-LED haben möchte, kann man die mit LED_START_FLASHES=0 abwählen. Weniger Speicherseiten werden dadurch aber nicht belegt. Für den Betrieb der seriellen Schnittstelle mit nur einem Pin muß man durch eine Zusatzschaltung dafür sorgen, daß die Echos des Sendesignals TXD des PCs zum Empfangssignal RXD des PCs unterdrückt werden.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
=== Das vierte Beispiel erzeugt einen Bootloader für eine ATtiny84 ===&lt;br /&gt;
 make attiny84&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 8000000 Hz (8.00 Mhz) Betrieb mit Baudrate 57600 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR attiny84 erstellen:&lt;br /&gt;
 LED-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 RX-Pin PA3 benutzt Pin 10-PDIP14 2-QFN20, mit Spezialfunktionen: PCINT3 T0 ADC3.&lt;br /&gt;
 TX-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=attiny84  -fno-diagnostics-show-caret -DBAUD_RATE=57600 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DVIRTUAL_BOOT_PARTITION=1  -DLED=pA4 -DUART=00 -DSOFT_UART=01 -DUART_RX=pA3 -DUART_TX=pA4 -DF_CPU=8000000 -DHFUSE=hexDD -DLFUSE=hexFF -DBOOT_PAGE_LEN=64 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 57600,  SoftUART_Real: 57553, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x1D80 = 7552&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
  &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     580	      0	      0	    580	    244	optiboot.elf&lt;br /&gt;
 Benötigt 10 Flash Seiten, je 64 Bytes, das ist 7.8% des Flash Speichers &lt;br /&gt;
 Keine Boot Seiten vorhanden!&lt;br /&gt;
&lt;br /&gt;
=== Zwei Beispiele für eine fehlerhafte LFUSE Einstellung ===&lt;br /&gt;
&lt;br /&gt;
Im ersten Beispiel paßt die Betriebsfrequenz 16 MHz nicht zu dem gewählten RC-Oszillator Betrieb. Korrekt wäre ein Aufruf wie &#039;&#039;&#039;make atmega328p LFUSE=E2 F_CPU=8000000 BAUD_RATE=38400&#039;&#039;&#039;. Hier soll aber gezeigt werden, daß beim Erstellen des Bootloaders versucht wird, Fehler zu vermeiden.&lt;br /&gt;
 &lt;br /&gt;
 make atmega328p LFUSE=E2&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexE2 -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:212:5: Fehler: #error &amp;quot;Int RC mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
In nächsten Beispiel paßt die Betriebsfrequenz nicht zu dem Quarzbetrieb mit dem /8 Vorteiler. Korrekt wäre hier ein Kommando wie &#039;&#039;&#039;make atmega329p LFUSE=7F F_CPU=1000000 BAUD_RATE=9600&#039;&#039;&#039;. Aber hier wieder zur Demonstration der falsche Aufruf:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p LFUSE=7F&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hex7F -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:254:5: Fehler: #error &amp;quot;LP Crystal mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
=== Bootloader für Arduino-Nano mit automatischer Baudraten-Anpassung inklusive avrdude Aufruf ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 ISP=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers &lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
 &lt;br /&gt;
 ####### Start von program_target.sh für atmega328p #############&lt;br /&gt;
    Die Fuses in program_target.sh sind gesetzt auf lfuse=0xFF, hfuse=0xDE, efuse=0xFD&lt;br /&gt;
 Bootloader HFUSE wird auf 0xDE gesetzt, OK!&lt;br /&gt;
 BootLoader Startadresse ist gesetzt auf 0x7E00, 32256&lt;br /&gt;
 ##### Lösche den atmega328p und setze die Fuses&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 200 -p atmega328p -P usb -b 115200 -q -q -e -u  -U efuse:w:0xFD:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m&lt;br /&gt;
 ##### Schreibe den optiboot Bootloader auf atmega328p und setze die Lock Bits&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 1.50 -p atmega328p -P usb -b 115200 -D -U flash:w:optiboot_atmega328p.hex:i -U lock:w:0xef:m&lt;br /&gt;
&lt;br /&gt;
 avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: Device signature = 0x1e950f (probably m328p)&lt;br /&gt;
 avrdude: reading input file &amp;quot;optiboot_atmega328p.hex&amp;quot;&lt;br /&gt;
 avrdude: writing flash (32768 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 32768 bytes of flash written&lt;br /&gt;
 avrdude: verifying flash memory against optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: load data flash data from input file optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: input file optiboot_atmega328p.hex contains 32768 bytes&lt;br /&gt;
 avrdude: reading on-chip flash data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 32768 bytes of flash verified&lt;br /&gt;
 avrdude: reading input file &amp;quot;0xef&amp;quot;&lt;br /&gt;
 avrdude: writing lock (1 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.01s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 1 bytes of lock written&lt;br /&gt;
 avrdude: verifying lock memory against 0xef:&lt;br /&gt;
 avrdude: load data lock data from input file 0xef:&lt;br /&gt;
 avrdude: input file 0xef contains 1 bytes&lt;br /&gt;
 avrdude: reading on-chip lock data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 1 bytes of lock verified&lt;br /&gt;
&lt;br /&gt;
 avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)&lt;br /&gt;
&lt;br /&gt;
 avrdude done.  Thank you.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102291</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102291"/>
		<updated>2020-07-26T08:50:27Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Zwei Beispiele für eine fehlerhafte LFUSE Einstellung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
* LFUSE : Gibt einen Wunschwert für die Low Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* HFUSE : Gibt einen Wunschwert für die High Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* EFUSE : Gibt einen Wunschwert für die Extendet Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einem USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG (AVR-ISP2) wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; ohne die Angabe eines Ports reichen.&lt;br /&gt;
&lt;br /&gt;
== Tipps für die Benutzung der Optiboot Erzeugung ==&lt;br /&gt;
&lt;br /&gt;
Es ist sinnvoll, zunächst mit einer Standardeinstellung für einen der AVR-Prozessoren zu beginnen und dabei die Bildschirmausgabe zu prüfen, ob die Voreinstellungen passen.&lt;br /&gt;
So erzeugt beispielsweise &#039;&#039;&#039;make atmega8&#039;&#039;&#039; einen Bootloader für den ATmega8 Mikrocontroller. Aus der Bildschirmausgabe kann man erkennen, daß der Bootloader für einen 16 MHz Betrieb mit einer Baudrate von 115200 der seriellen Schnittstelle konfiguriert wurde. Die benutzten Pins für die serielle Kommunikation (RX und TX) werden ebenso aufgezählt wie der benutzte Pin für eine Kontroll-LED (PB5).&lt;br /&gt;
Mit zusätzlichen Optionen in der &#039;&#039;&#039;make&#039;&#039;&#039; Zeile kann man die Einstellungen dann ändern und mit einem erneuten Durchlauf das Bildschirmprotokoll wieder prüfen. Dabei kann man auch  die Größe des erzeugten Bootloaders im Auge behalten. Wenn eine passende Konfiguration gefunden ist, kann man den optiboot mit dem zusätzlichen Parameter ISP=1 bei korrekt angeschlossenem ISP Programmer mit dem Programm avrdude installieren.&lt;br /&gt;
&lt;br /&gt;
=== Erstes Beispiel mit ATmega8 ohne Quarz ===&lt;br /&gt;
Wenn der ATmega8 ohne Quarz betrieben werden soll, muß die Standardeinstellung der Low Fuse geändert werden z.B. auf LFUSE=E4 für den internen RC Taktgenerator. Dann passen aber sowohl die voreingestellte Taktrate als auch die Baudrate nicht mehr.&lt;br /&gt;
Also sollte der korrekte Aufruf für die Erzeugung des passenden Bootloaders dann &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=57600&#039;&#039;&#039; lauten.  Dieser Bootloader sollte jetzt auch ohne Quarzbetrieb laufen. Vorraussetzung ist aber, daß die Arbeitsfrequenz von 8 MHz auch relativ genau eingehalten wird. &lt;br /&gt;
Sollte das nicht der Fall sein, gibt es nun zwei Möglichkeiten, das Problem zu lösen. &lt;br /&gt;
* Die erste Möglichkeit nutzt die Fähigkeit der AVR-Prozessoren, den RC-Oszillator abzustimmen. Für die Optiboot-Erzeugung kann das mit der Option OSCCAL_CORR genutzt werden. Dazu ist aber eine Möglichkeit zur Kontrolle der Arbeitsfrequenz erforderlich wie ein Frequenzzähler oder ein Oszilloskop.  Da dieser Prozessor aber auch keine Möglichkeit hat, die Taktfrequenz auf einem Ausgabepin herauszuführen, müsste man ein Testprogramm für die Kontrolle der Frequenz schreiben. Der Bootloader optiboot hat aber auch eine nicht weiter dokumentierte Option TEST_OUTPUT, mit der der Bootloader nach dem Start nichts anderes macht, als fortwährend das gleiche Zeichen U auf den seriellen Ausgabepin auszugeben. So wäre zwar der Abgleich der Oszillator-Frequenz möglich, das ist aber doch sehr mühsam und  muß natürlich für jedes Exemplar erneut wiederholt werden.&lt;br /&gt;
* Die zweite Möglichkeit nutzt eine ganz andere Fähigkeit des optiboot, die automatische Baudraten-Anpassung. Hier wird die Übertragungszeit der seriellen Bits des ersten empfangenen Zeichens ausgemessen und dabei die passende Baudrate eingestellt. Das können wir als nächstes mit &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=32&#039;&#039;&#039; ausprobieren. Hier teilt uns die Bildschirmausgabe mit, daß eine Baudrate zwischen 244 und 80k möglich ist. Doch leider braucht das Programm jetzt 518 Bytes und damit würde es 1024 Bytes Flash Speicher belegen. Der Bootloader würde zwar laufen, aber es müssen nur 6 Byte eingespart werden, um mit der Hälfte des Speichers auszukommen.  Mit der BAUD_RATE=22 für das Messen von nur 2 Bits statt 4 Bits würde man nur 4 Byte sparen und das wäre auch schon die sparsamste Variante der Baudratenmessung. Nun gibt es aber noch drei weitere Möglichkeiten Platz zu  sparen. Man könnte auf die Fähigkeit zum Beschreiben des EEproms verzichten (SUPPORT_EEPROM=0), auf das LED-Blinken beim Start verzichten (LED_START_FLASHES=0) oder auf das Löschen der Flash-Speicherseite vor dem Datenempfang (NO_EARLY_PAGE_ERASE=1) verzichten. Alle drei Möglichkeiten führen zum Erfolg, kosten aber auch Funktion. Ein ebenfalls möglicher Kompromiss wäre nur einmal Blinken (LED_START_FLASHES=1) oder auf die Überwachung des seriellen Eingangs beim Blinken zu verzichten (LED_START_FLASHES=-3). Man kann auch das Blinken ganz abwählen (LED_START_FLASHES=0) und statt dessen die LED_DATA_FLASH Funktion benutzen. Was auch immer man wählt, die 6 Byte sind leicht einzusparen ohne viel an Funktion einzubüßen. Der Aufwand ist überschaubar und mehr Speicher wird bei sorgfältiger Konfiguration auch nicht belegt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
=== Das vierte Beispiel erzeugt einen Bootloader für eine ATtiny84 ===&lt;br /&gt;
 make attiny84&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 8000000 Hz (8.00 Mhz) Betrieb mit Baudrate 57600 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR attiny84 erstellen:&lt;br /&gt;
 LED-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 RX-Pin PA3 benutzt Pin 10-PDIP14 2-QFN20, mit Spezialfunktionen: PCINT3 T0 ADC3.&lt;br /&gt;
 TX-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=attiny84  -fno-diagnostics-show-caret -DBAUD_RATE=57600 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DVIRTUAL_BOOT_PARTITION=1  -DLED=pA4 -DUART=00 -DSOFT_UART=01 -DUART_RX=pA3 -DUART_TX=pA4 -DF_CPU=8000000 -DHFUSE=hexDD -DLFUSE=hexFF -DBOOT_PAGE_LEN=64 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 57600,  SoftUART_Real: 57553, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x1D80 = 7552&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
  &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     580	      0	      0	    580	    244	optiboot.elf&lt;br /&gt;
 Benötigt 10 Flash Seiten, je 64 Bytes, das ist 7.8% des Flash Speichers &lt;br /&gt;
 Keine Boot Seiten vorhanden!&lt;br /&gt;
&lt;br /&gt;
=== Zwei Beispiele für eine fehlerhafte LFUSE Einstellung ===&lt;br /&gt;
&lt;br /&gt;
Im ersten Beispiel paßt die Betriebsfrequenz 16 MHz nicht zu dem gewählten RC-Oszillator Betrieb. Korrekt wäre ein Aufruf wie &#039;&#039;&#039;make atmega328p LFUSE=E2 F_CPU=8000000 BAUD_RATE=38400&#039;&#039;&#039;. Hier soll aber gezeigt werden, daß beim Erstellen des Bootloaders versucht wird, Fehler zu vermeiden.&lt;br /&gt;
 &lt;br /&gt;
 make atmega328p LFUSE=E2&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexE2 -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:212:5: Fehler: #error &amp;quot;Int RC mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
In nächsten Beispiel paßt die Betriebsfrequenz nicht zu dem Quarzbetrieb mit dem /8 Vorteiler. Korrekt wäre hier ein Kommando wie &#039;&#039;&#039;make atmega329p LFUSE=7F F_CPU=1000000 BAUD_RATE=9600&#039;&#039;&#039;. Aber hier wieder zur Demonstration der falsche Aufruf:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p LFUSE=7F&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hex7F -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:254:5: Fehler: #error &amp;quot;LP Crystal mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
=== Bootloader für Arduino-Nano mit automatischer Baudraten-Anpassung inklusive avrdude Aufruf ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 ISP=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers &lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
 &lt;br /&gt;
 ####### Start von program_target.sh für atmega328p #############&lt;br /&gt;
    Die Fuses in program_target.sh sind gesetzt auf lfuse=0xFF, hfuse=0xDE, efuse=0xFD&lt;br /&gt;
 Bootloader HFUSE wird auf 0xDE gesetzt, OK!&lt;br /&gt;
 BootLoader Startadresse ist gesetzt auf 0x7E00, 32256&lt;br /&gt;
 ##### Lösche den atmega328p und setze die Fuses&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 200 -p atmega328p -P usb -b 115200 -q -q -e -u  -U efuse:w:0xFD:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m&lt;br /&gt;
 ##### Schreibe den optiboot Bootloader auf atmega328p und setze die Lock Bits&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 1.50 -p atmega328p -P usb -b 115200 -D -U flash:w:optiboot_atmega328p.hex:i -U lock:w:0xef:m&lt;br /&gt;
&lt;br /&gt;
 avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: Device signature = 0x1e950f (probably m328p)&lt;br /&gt;
 avrdude: reading input file &amp;quot;optiboot_atmega328p.hex&amp;quot;&lt;br /&gt;
 avrdude: writing flash (32768 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 32768 bytes of flash written&lt;br /&gt;
 avrdude: verifying flash memory against optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: load data flash data from input file optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: input file optiboot_atmega328p.hex contains 32768 bytes&lt;br /&gt;
 avrdude: reading on-chip flash data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 32768 bytes of flash verified&lt;br /&gt;
 avrdude: reading input file &amp;quot;0xef&amp;quot;&lt;br /&gt;
 avrdude: writing lock (1 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.01s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 1 bytes of lock written&lt;br /&gt;
 avrdude: verifying lock memory against 0xef:&lt;br /&gt;
 avrdude: load data lock data from input file 0xef:&lt;br /&gt;
 avrdude: input file 0xef contains 1 bytes&lt;br /&gt;
 avrdude: reading on-chip lock data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 1 bytes of lock verified&lt;br /&gt;
&lt;br /&gt;
 avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)&lt;br /&gt;
&lt;br /&gt;
 avrdude done.  Thank you.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102290</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102290"/>
		<updated>2020-07-26T08:15:27Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Tipps für die Benutzung der Optiboot Erzeugung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
* LFUSE : Gibt einen Wunschwert für die Low Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* HFUSE : Gibt einen Wunschwert für die High Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* EFUSE : Gibt einen Wunschwert für die Extendet Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einem USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG (AVR-ISP2) wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; ohne die Angabe eines Ports reichen.&lt;br /&gt;
&lt;br /&gt;
== Tipps für die Benutzung der Optiboot Erzeugung ==&lt;br /&gt;
&lt;br /&gt;
Es ist sinnvoll, zunächst mit einer Standardeinstellung für einen der AVR-Prozessoren zu beginnen und dabei die Bildschirmausgabe zu prüfen, ob die Voreinstellungen passen.&lt;br /&gt;
So erzeugt beispielsweise &#039;&#039;&#039;make atmega8&#039;&#039;&#039; einen Bootloader für den ATmega8 Mikrocontroller. Aus der Bildschirmausgabe kann man erkennen, daß der Bootloader für einen 16 MHz Betrieb mit einer Baudrate von 115200 der seriellen Schnittstelle konfiguriert wurde. Die benutzten Pins für die serielle Kommunikation (RX und TX) werden ebenso aufgezählt wie der benutzte Pin für eine Kontroll-LED (PB5).&lt;br /&gt;
Mit zusätzlichen Optionen in der &#039;&#039;&#039;make&#039;&#039;&#039; Zeile kann man die Einstellungen dann ändern und mit einem erneuten Durchlauf das Bildschirmprotokoll wieder prüfen. Dabei kann man auch  die Größe des erzeugten Bootloaders im Auge behalten. Wenn eine passende Konfiguration gefunden ist, kann man den optiboot mit dem zusätzlichen Parameter ISP=1 bei korrekt angeschlossenem ISP Programmer mit dem Programm avrdude installieren.&lt;br /&gt;
&lt;br /&gt;
=== Erstes Beispiel mit ATmega8 ohne Quarz ===&lt;br /&gt;
Wenn der ATmega8 ohne Quarz betrieben werden soll, muß die Standardeinstellung der Low Fuse geändert werden z.B. auf LFUSE=E4 für den internen RC Taktgenerator. Dann passen aber sowohl die voreingestellte Taktrate als auch die Baudrate nicht mehr.&lt;br /&gt;
Also sollte der korrekte Aufruf für die Erzeugung des passenden Bootloaders dann &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=57600&#039;&#039;&#039; lauten.  Dieser Bootloader sollte jetzt auch ohne Quarzbetrieb laufen. Vorraussetzung ist aber, daß die Arbeitsfrequenz von 8 MHz auch relativ genau eingehalten wird. &lt;br /&gt;
Sollte das nicht der Fall sein, gibt es nun zwei Möglichkeiten, das Problem zu lösen. &lt;br /&gt;
* Die erste Möglichkeit nutzt die Fähigkeit der AVR-Prozessoren, den RC-Oszillator abzustimmen. Für die Optiboot-Erzeugung kann das mit der Option OSCCAL_CORR genutzt werden. Dazu ist aber eine Möglichkeit zur Kontrolle der Arbeitsfrequenz erforderlich wie ein Frequenzzähler oder ein Oszilloskop.  Da dieser Prozessor aber auch keine Möglichkeit hat, die Taktfrequenz auf einem Ausgabepin herauszuführen, müsste man ein Testprogramm für die Kontrolle der Frequenz schreiben. Der Bootloader optiboot hat aber auch eine nicht weiter dokumentierte Option TEST_OUTPUT, mit der der Bootloader nach dem Start nichts anderes macht, als fortwährend das gleiche Zeichen U auf den seriellen Ausgabepin auszugeben. So wäre zwar der Abgleich der Oszillator-Frequenz möglich, das ist aber doch sehr mühsam und  muß natürlich für jedes Exemplar erneut wiederholt werden.&lt;br /&gt;
* Die zweite Möglichkeit nutzt eine ganz andere Fähigkeit des optiboot, die automatische Baudraten-Anpassung. Hier wird die Übertragungszeit der seriellen Bits des ersten empfangenen Zeichens ausgemessen und dabei die passende Baudrate eingestellt. Das können wir als nächstes mit &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=32&#039;&#039;&#039; ausprobieren. Hier teilt uns die Bildschirmausgabe mit, daß eine Baudrate zwischen 244 und 80k möglich ist. Doch leider braucht das Programm jetzt 518 Bytes und damit würde es 1024 Bytes Flash Speicher belegen. Der Bootloader würde zwar laufen, aber es müssen nur 6 Byte eingespart werden, um mit der Hälfte des Speichers auszukommen.  Mit der BAUD_RATE=22 für das Messen von nur 2 Bits statt 4 Bits würde man nur 4 Byte sparen und das wäre auch schon die sparsamste Variante der Baudratenmessung. Nun gibt es aber noch drei weitere Möglichkeiten Platz zu  sparen. Man könnte auf die Fähigkeit zum Beschreiben des EEproms verzichten (SUPPORT_EEPROM=0), auf das LED-Blinken beim Start verzichten (LED_START_FLASHES=0) oder auf das Löschen der Flash-Speicherseite vor dem Datenempfang (NO_EARLY_PAGE_ERASE=1) verzichten. Alle drei Möglichkeiten führen zum Erfolg, kosten aber auch Funktion. Ein ebenfalls möglicher Kompromiss wäre nur einmal Blinken (LED_START_FLASHES=1) oder auf die Überwachung des seriellen Eingangs beim Blinken zu verzichten (LED_START_FLASHES=-3). Man kann auch das Blinken ganz abwählen (LED_START_FLASHES=0) und statt dessen die LED_DATA_FLASH Funktion benutzen. Was auch immer man wählt, die 6 Byte sind leicht einzusparen ohne viel an Funktion einzubüßen. Der Aufwand ist überschaubar und mehr Speicher wird bei sorgfältiger Konfiguration auch nicht belegt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
=== Das vierte Beispiel erzeugt einen Bootloader für eine ATtiny84 ===&lt;br /&gt;
 make attiny84&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 8000000 Hz (8.00 Mhz) Betrieb mit Baudrate 57600 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR attiny84 erstellen:&lt;br /&gt;
 LED-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 RX-Pin PA3 benutzt Pin 10-PDIP14 2-QFN20, mit Spezialfunktionen: PCINT3 T0 ADC3.&lt;br /&gt;
 TX-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=attiny84  -fno-diagnostics-show-caret -DBAUD_RATE=57600 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DVIRTUAL_BOOT_PARTITION=1  -DLED=pA4 -DUART=00 -DSOFT_UART=01 -DUART_RX=pA3 -DUART_TX=pA4 -DF_CPU=8000000 -DHFUSE=hexDD -DLFUSE=hexFF -DBOOT_PAGE_LEN=64 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 57600,  SoftUART_Real: 57553, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x1D80 = 7552&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
  &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     580	      0	      0	    580	    244	optiboot.elf&lt;br /&gt;
 Benötigt 10 Flash Seiten, je 64 Bytes, das ist 7.8% des Flash Speichers &lt;br /&gt;
 Keine Boot Seiten vorhanden!&lt;br /&gt;
&lt;br /&gt;
=== Zwei Beispiele für eine fehlerhafte LFUSE Einstellung ===&lt;br /&gt;
&lt;br /&gt;
Im ersten Beispiel paßt die Betriebsfrequenz 16 MHz nicht zu dem gewählten RC-Oszillator Betrieb&lt;br /&gt;
 &lt;br /&gt;
 make atmega328p LFUSE=E2&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexE2 -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:212:5: Fehler: #error &amp;quot;Int RC mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
In nächsten Beispiel paßt die Betriebsfrequenz nicht zu dem Quarzbetrieb mit dem /8 Vorteiler.&lt;br /&gt;
&lt;br /&gt;
 make atmega328p LFUSE=7F&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hex7F -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:254:5: Fehler: #error &amp;quot;LP Crystal mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
=== Bootloader für Arduino-Nano mit automatischer Baudraten-Anpassung inklusive avrdude Aufruf ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 ISP=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers &lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
 &lt;br /&gt;
 ####### Start von program_target.sh für atmega328p #############&lt;br /&gt;
    Die Fuses in program_target.sh sind gesetzt auf lfuse=0xFF, hfuse=0xDE, efuse=0xFD&lt;br /&gt;
 Bootloader HFUSE wird auf 0xDE gesetzt, OK!&lt;br /&gt;
 BootLoader Startadresse ist gesetzt auf 0x7E00, 32256&lt;br /&gt;
 ##### Lösche den atmega328p und setze die Fuses&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 200 -p atmega328p -P usb -b 115200 -q -q -e -u  -U efuse:w:0xFD:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m&lt;br /&gt;
 ##### Schreibe den optiboot Bootloader auf atmega328p und setze die Lock Bits&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 1.50 -p atmega328p -P usb -b 115200 -D -U flash:w:optiboot_atmega328p.hex:i -U lock:w:0xef:m&lt;br /&gt;
&lt;br /&gt;
 avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: Device signature = 0x1e950f (probably m328p)&lt;br /&gt;
 avrdude: reading input file &amp;quot;optiboot_atmega328p.hex&amp;quot;&lt;br /&gt;
 avrdude: writing flash (32768 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 32768 bytes of flash written&lt;br /&gt;
 avrdude: verifying flash memory against optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: load data flash data from input file optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: input file optiboot_atmega328p.hex contains 32768 bytes&lt;br /&gt;
 avrdude: reading on-chip flash data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 32768 bytes of flash verified&lt;br /&gt;
 avrdude: reading input file &amp;quot;0xef&amp;quot;&lt;br /&gt;
 avrdude: writing lock (1 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.01s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 1 bytes of lock written&lt;br /&gt;
 avrdude: verifying lock memory against 0xef:&lt;br /&gt;
 avrdude: load data lock data from input file 0xef:&lt;br /&gt;
 avrdude: input file 0xef contains 1 bytes&lt;br /&gt;
 avrdude: reading on-chip lock data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 1 bytes of lock verified&lt;br /&gt;
&lt;br /&gt;
 avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)&lt;br /&gt;
&lt;br /&gt;
 avrdude done.  Thank you.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102289</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102289"/>
		<updated>2020-07-25T11:55:08Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Kurzanleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
* LFUSE : Gibt einen Wunschwert für die Low Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* HFUSE : Gibt einen Wunschwert für die High Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* EFUSE : Gibt einen Wunschwert für die Extendet Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einem USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG (AVR-ISP2) wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; ohne die Angabe eines Ports reichen.&lt;br /&gt;
&lt;br /&gt;
== Tipps für die Benutzung der Optiboot Erzeugung ==&lt;br /&gt;
&lt;br /&gt;
Es ist sinnvoll, zunächst mit einer Standardeinstellung für einen der AVR-Prozessoren zu beginnen und dabei die Bildschirmausgabe zu prüfen, ob die Voreinstellungen passen.&lt;br /&gt;
So erzeugt beispielsweise &#039;&#039;&#039;make atmeg8&#039;&#039;&#039; einen Bootloader for den ATmega8 Mikrocontroller. Aus der Bildschirmausgabe kann man erkennen, daß der Bootloader für einen 16 MHz Betrieb mit einer Baudrate von 115200 der seriellen Schnittstelle konfiguriert wurde. Die benutzten Pins für die serielle Kommunikation (RX und TX) werden ebenso aufgezählt wie der benutzte Pin für eine Kontroll-LED (PB5).&lt;br /&gt;
Mit zusätzlichen Optionen in der &#039;&#039;&#039;make&#039;&#039;&#039; Zeile kann man die Einstellungen dann ändern und mit einem erneuten Durchlauf das Bildschirmprotokoll wieder prüfen. Dabei kann man auch  die Größe des erzeugten Bootloaders im Auge behalten. Wenn eine passende Konfiguration gefunden ist, kann man den optiboot mit dem zusätzlichen Parameter ISP=1 bei korrekt angeschlossenem ISP Programmer mit dem Programm avrdude installieren.&lt;br /&gt;
&lt;br /&gt;
=== Erstes Beispiel mit ATmega8 ohne Quarz ===&lt;br /&gt;
Wenn der ATmega8 ohne Quarz betrieben werden soll, muß die Standardeinstellung der Low Fuse geändert werden z.B. auf LFUSE=E4 für den internen RC Taktgenerator. Dann passen aber sowohl die voreingestellte Taktrate als auch die Baudrate nicht mehr.&lt;br /&gt;
Also sollte der korrekte Aufruf für die Erzeugung des passenden Bootloaders dann &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=57600&#039;&#039;&#039; lauten.  Dieser Bootloader sollte jetzt auch ohne Quarzbetrieb laufen. Vorraussetzung ist aber, daß die Arbeitsfrequenz von 8 MHz auch relativ genau eingehalten wird. &lt;br /&gt;
Sollte das nicht der Fall sein, gibt es nun zwei Möglichkeiten, das Problem zu lösen. &lt;br /&gt;
* Die erste Möglichkeit nutzt die Fähigkeit der AVR-Prozessoren, den RC-Oszillator abzustimmen. Für die Optiboot-Erzeugung kann das mit der Option OSCCAL_CORR genutzt werden. Dazu ist aber eine Möglichkeit zur Kontrolle der Arbeitsfrequenz erforderlich wie ein Frequenzzähler oder ein Oszilloskop.  Da dieser Prozessor aber auch keine Möglichkeit hat, die Taktfrequenz auf einem Ausgabepin herauszuführen, müsste man ein Testprogramm für die Kontrolle der Frequenz schreiben. Der Bootloader optiboot hat aber auch eine nicht weiter dokumentierte Option TEST_OUTPUT, mit der der Bootloader nach dem Start nichts anderes macht, als fortwährend das gleiche Zeichen U auf den seriellen Ausgabepin auszugeben. So wäre zwar der Abgleich der Oszillator-Frequenz möglich, das ist aber doch sehr mühsam und  muß natürlich für jedes Exemplar erneut wiederholt werden.&lt;br /&gt;
* Die zweite Möglichkeit nutzt eine ganz andere Fähigkeit des optiboot, die automatische Baudraten-Anpassung. Hier wird die Übertragungszeit der seriellen Bits des ersten empfangenen Zeichens ausgemessen und dabei die passende Baudrate eingestellt. Das können wir als nächstes mit &#039;&#039;&#039;make atmega8 LFUSE=E4 F_CPU=8000000 BAUD_RATE=32&#039;&#039;&#039; ausprobieren. Hier teilt uns die Bildschirmausgabe mit, daß eine Baudrate zwischen 244 und 80k möglich ist. Doch leider braucht das Programm jetzt 518 Bytes und damit würde es 1024 Bytes Flash Speicher belegen. Der Bootloader würde zwar laufen, aber es müssen nur 6 Byte eingespart werden, um mit der Hälfte des Speichers auszukommen.  Mit der BAUD_RATE=22 für das Messen von nur 2 Bits statt 4 Bits würde man nur 4 Byte sparen und das wäre auch schon die sparsamste Variante der Baudratenmessung. Nun gibt es aber noch drei weitere Möglichkeiten Platz zu  sparen. Man könnte auf die Fähigkeit zum Beschreiben des EEproms verzichten (SUPPORT_EEPROM=0), auf das LED-Blinken beim Start verzichten (LED_START_FLASHES=0) oder auf das Löschen der Flash-Speicherseite vor dem Datenempfang (NO_EARLY_PAGE_ERASE=1) verzichten. Alle drei Möglichkeiten führen zum Erfolg, kosten aber auch Funktion. Ein ebenfalls möglicher Kompromiss wäre nur einmal Blinken (LED_START_FLASHES=1) oder auf die Überwachung des seriellen Eingangs beim Blinken zu verzichten (LED_START_FLASHES=-3). Man kann auch das Blinken ganz abwählen (LED_START_FLASHES=0) und statt dessen die LED_DATA_FLASH Funktion benutzen. Was auch immer man wählt, die 6 Byte sind leicht einzusparen ohne viel an Funktion einzubüßen. Der Aufwand ist überschaubar und mehr Speicher wird bei sorgfältiger Konfiguration auch nicht belegt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
=== Das vierte Beispiel erzeugt einen Bootloader für eine ATtiny84 ===&lt;br /&gt;
 make attiny84&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 8000000 Hz (8.00 Mhz) Betrieb mit Baudrate 57600 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR attiny84 erstellen:&lt;br /&gt;
 LED-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 RX-Pin PA3 benutzt Pin 10-PDIP14 2-QFN20, mit Spezialfunktionen: PCINT3 T0 ADC3.&lt;br /&gt;
 TX-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=attiny84  -fno-diagnostics-show-caret -DBAUD_RATE=57600 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DVIRTUAL_BOOT_PARTITION=1  -DLED=pA4 -DUART=00 -DSOFT_UART=01 -DUART_RX=pA3 -DUART_TX=pA4 -DF_CPU=8000000 -DHFUSE=hexDD -DLFUSE=hexFF -DBOOT_PAGE_LEN=64 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 57600,  SoftUART_Real: 57553, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x1D80 = 7552&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
  &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     580	      0	      0	    580	    244	optiboot.elf&lt;br /&gt;
 Benötigt 10 Flash Seiten, je 64 Bytes, das ist 7.8% des Flash Speichers &lt;br /&gt;
 Keine Boot Seiten vorhanden!&lt;br /&gt;
&lt;br /&gt;
=== Zwei Beispiele für eine fehlerhafte LFUSE Einstellung ===&lt;br /&gt;
&lt;br /&gt;
Im ersten Beispiel paßt die Betriebsfrequenz 16 MHz nicht zu dem gewählten RC-Oszillator Betrieb&lt;br /&gt;
 &lt;br /&gt;
 make atmega328p LFUSE=E2&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexE2 -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:212:5: Fehler: #error &amp;quot;Int RC mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
In nächsten Beispiel paßt die Betriebsfrequenz nicht zu dem Quarzbetrieb mit dem /8 Vorteiler.&lt;br /&gt;
&lt;br /&gt;
 make atmega328p LFUSE=7F&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hex7F -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:254:5: Fehler: #error &amp;quot;LP Crystal mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
=== Bootloader für Arduino-Nano mit automatischer Baudraten-Anpassung inklusive avrdude Aufruf ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 ISP=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers &lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
 &lt;br /&gt;
 ####### Start von program_target.sh für atmega328p #############&lt;br /&gt;
    Die Fuses in program_target.sh sind gesetzt auf lfuse=0xFF, hfuse=0xDE, efuse=0xFD&lt;br /&gt;
 Bootloader HFUSE wird auf 0xDE gesetzt, OK!&lt;br /&gt;
 BootLoader Startadresse ist gesetzt auf 0x7E00, 32256&lt;br /&gt;
 ##### Lösche den atmega328p und setze die Fuses&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 200 -p atmega328p -P usb -b 115200 -q -q -e -u  -U efuse:w:0xFD:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m&lt;br /&gt;
 ##### Schreibe den optiboot Bootloader auf atmega328p und setze die Lock Bits&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 1.50 -p atmega328p -P usb -b 115200 -D -U flash:w:optiboot_atmega328p.hex:i -U lock:w:0xef:m&lt;br /&gt;
&lt;br /&gt;
 avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: Device signature = 0x1e950f (probably m328p)&lt;br /&gt;
 avrdude: reading input file &amp;quot;optiboot_atmega328p.hex&amp;quot;&lt;br /&gt;
 avrdude: writing flash (32768 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 32768 bytes of flash written&lt;br /&gt;
 avrdude: verifying flash memory against optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: load data flash data from input file optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: input file optiboot_atmega328p.hex contains 32768 bytes&lt;br /&gt;
 avrdude: reading on-chip flash data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 32768 bytes of flash verified&lt;br /&gt;
 avrdude: reading input file &amp;quot;0xef&amp;quot;&lt;br /&gt;
 avrdude: writing lock (1 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.01s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 1 bytes of lock written&lt;br /&gt;
 avrdude: verifying lock memory against 0xef:&lt;br /&gt;
 avrdude: load data lock data from input file 0xef:&lt;br /&gt;
 avrdude: input file 0xef contains 1 bytes&lt;br /&gt;
 avrdude: reading on-chip lock data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 1 bytes of lock verified&lt;br /&gt;
&lt;br /&gt;
 avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)&lt;br /&gt;
&lt;br /&gt;
 avrdude done.  Thank you.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102288</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102288"/>
		<updated>2020-07-24T21:43:48Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Zwei Beispiele für eine fehlerhafte LFUSE Einstellung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
* LFUSE : Gibt einen Wunschwert für die Low Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* HFUSE : Gibt einen Wunschwert für die High Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* EFUSE : Gibt einen Wunschwert für die Extendet Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einem USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG (AVR-ISP2) wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; ohne die Angabe eines Ports reichen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
=== Das vierte Beispiel erzeugt einen Bootloader für eine ATtiny84 ===&lt;br /&gt;
 make attiny84&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 8000000 Hz (8.00 Mhz) Betrieb mit Baudrate 57600 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR attiny84 erstellen:&lt;br /&gt;
 LED-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 RX-Pin PA3 benutzt Pin 10-PDIP14 2-QFN20, mit Spezialfunktionen: PCINT3 T0 ADC3.&lt;br /&gt;
 TX-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=attiny84  -fno-diagnostics-show-caret -DBAUD_RATE=57600 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DVIRTUAL_BOOT_PARTITION=1  -DLED=pA4 -DUART=00 -DSOFT_UART=01 -DUART_RX=pA3 -DUART_TX=pA4 -DF_CPU=8000000 -DHFUSE=hexDD -DLFUSE=hexFF -DBOOT_PAGE_LEN=64 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 57600,  SoftUART_Real: 57553, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x1D80 = 7552&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
  &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     580	      0	      0	    580	    244	optiboot.elf&lt;br /&gt;
 Benötigt 10 Flash Seiten, je 64 Bytes, das ist 7.8% des Flash Speichers &lt;br /&gt;
 Keine Boot Seiten vorhanden!&lt;br /&gt;
&lt;br /&gt;
=== Zwei Beispiele für eine fehlerhafte LFUSE Einstellung ===&lt;br /&gt;
&lt;br /&gt;
Im ersten Beispiel paßt die Betriebsfrequenz 16 MHz nicht zu dem gewählten RC-Oszillator Betrieb&lt;br /&gt;
 &lt;br /&gt;
 make atmega328p LFUSE=E2&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexE2 -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:212:5: Fehler: #error &amp;quot;Int RC mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
In nächsten Beispiel paßt die Betriebsfrequenz nicht zu dem Quarzbetrieb mit dem /8 Vorteiler.&lt;br /&gt;
&lt;br /&gt;
 make atmega328p LFUSE=7F&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hex7F -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:254:5: Fehler: #error &amp;quot;LP Crystal mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
=== Bootloader für Arduino-Nano mit automatischer Baudraten-Anpassung inklusive avrdude Aufruf ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 ISP=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers &lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
 &lt;br /&gt;
 ####### Start von program_target.sh für atmega328p #############&lt;br /&gt;
    Die Fuses in program_target.sh sind gesetzt auf lfuse=0xFF, hfuse=0xDE, efuse=0xFD&lt;br /&gt;
 Bootloader HFUSE wird auf 0xDE gesetzt, OK!&lt;br /&gt;
 BootLoader Startadresse ist gesetzt auf 0x7E00, 32256&lt;br /&gt;
 ##### Lösche den atmega328p und setze die Fuses&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 200 -p atmega328p -P usb -b 115200 -q -q -e -u  -U efuse:w:0xFD:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m&lt;br /&gt;
 ##### Schreibe den optiboot Bootloader auf atmega328p und setze die Lock Bits&lt;br /&gt;
 avrdude  -C ./avrdude.conf -c avrisp2 -B 1.50 -p atmega328p -P usb -b 115200 -D -U flash:w:optiboot_atmega328p.hex:i -U lock:w:0xef:m&lt;br /&gt;
&lt;br /&gt;
 avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: Device signature = 0x1e950f (probably m328p)&lt;br /&gt;
 avrdude: reading input file &amp;quot;optiboot_atmega328p.hex&amp;quot;&lt;br /&gt;
 avrdude: writing flash (32768 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 32768 bytes of flash written&lt;br /&gt;
 avrdude: verifying flash memory against optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: load data flash data from input file optiboot_atmega328p.hex:&lt;br /&gt;
 avrdude: input file optiboot_atmega328p.hex contains 32768 bytes&lt;br /&gt;
 avrdude: reading on-chip flash data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 32768 bytes of flash verified&lt;br /&gt;
 avrdude: reading input file &amp;quot;0xef&amp;quot;&lt;br /&gt;
 avrdude: writing lock (1 bytes):&lt;br /&gt;
&lt;br /&gt;
 Writing | ################################################## | 100% 0.01s&lt;br /&gt;
&lt;br /&gt;
 avrdude: 1 bytes of lock written&lt;br /&gt;
 avrdude: verifying lock memory against 0xef:&lt;br /&gt;
 avrdude: load data lock data from input file 0xef:&lt;br /&gt;
 avrdude: input file 0xef contains 1 bytes&lt;br /&gt;
 avrdude: reading on-chip lock data:&lt;br /&gt;
&lt;br /&gt;
 Reading | ################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
 avrdude: verifying ...&lt;br /&gt;
 avrdude: 1 bytes of lock verified&lt;br /&gt;
&lt;br /&gt;
 avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)&lt;br /&gt;
&lt;br /&gt;
 avrdude done.  Thank you.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102287</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102287"/>
		<updated>2020-07-24T15:27:09Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Das vierte Beispiel erzeugt einen Bootloader für eine ATtiny84 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
* LFUSE : Gibt einen Wunschwert für die Low Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* HFUSE : Gibt einen Wunschwert für die High Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* EFUSE : Gibt einen Wunschwert für die Extendet Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einem USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG (AVR-ISP2) wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; ohne die Angabe eines Ports reichen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
=== Das vierte Beispiel erzeugt einen Bootloader für eine ATtiny84 ===&lt;br /&gt;
 make attiny84&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 8000000 Hz (8.00 Mhz) Betrieb mit Baudrate 57600 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR attiny84 erstellen:&lt;br /&gt;
 LED-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 RX-Pin PA3 benutzt Pin 10-PDIP14 2-QFN20, mit Spezialfunktionen: PCINT3 T0 ADC3.&lt;br /&gt;
 TX-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=attiny84  -fno-diagnostics-show-caret -DBAUD_RATE=57600 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DVIRTUAL_BOOT_PARTITION=1  -DLED=pA4 -DUART=00 -DSOFT_UART=01 -DUART_RX=pA3 -DUART_TX=pA4 -DF_CPU=8000000 -DHFUSE=hexDD -DLFUSE=hexFF -DBOOT_PAGE_LEN=64 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 57600,  SoftUART_Real: 57553, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x1D80 = 7552&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
  &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     580	      0	      0	    580	    244	optiboot.elf&lt;br /&gt;
 Benötigt 10 Flash Seiten, je 64 Bytes, das ist 7.8% des Flash Speichers &lt;br /&gt;
 Keine Boot Seiten vorhanden!&lt;br /&gt;
&lt;br /&gt;
=== Zwei Beispiele für eine fehlerhafte LFUSE Einstellung ===&lt;br /&gt;
&lt;br /&gt;
Im ersten Beispiel paßt die Betriebsfrequenz 16 MHz nicht zu dem gewählten RC-Oszillator Betrieb&lt;br /&gt;
 &lt;br /&gt;
 make atmega328p LFUSE=E2&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexE2 -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:212:5: Fehler: #error &amp;quot;Int RC mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
In nächsten Beispiel paßt die Betriebsfrequenz nicht zu dem Quarzbetrieb mit dem /8 Vorteiler.&lt;br /&gt;
&lt;br /&gt;
 make atmega328p LFUSE=7F&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hex7F -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
 In file included from optiboot.S:277:0:&lt;br /&gt;
 check_fuses.h:254:5: Fehler: #error &amp;quot;LP Crystal mode, wrong Lfuse setting for this frequency (ATmega...8)!&amp;quot; &lt;br /&gt;
 Makefile:1191: recipe for target &#039;hex_file&#039; failed&lt;br /&gt;
 make: *** [hex_file] Error 1&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102286</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102286"/>
		<updated>2020-07-24T15:09:59Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Optionen für die optiboot Makefile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
* LFUSE : Gibt einen Wunschwert für die Low Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* HFUSE : Gibt einen Wunschwert für die High Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
* EFUSE : Gibt einen Wunschwert für die Extendet Fuse des AVR an. Erlaubt ist nur die Angabe von zwei Hex Zeichen.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einem USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG (AVR-ISP2) wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; ohne die Angabe eines Ports reichen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
=== Das vierte Beispiel erzeugt einen Bootloader für eine ATtiny84 ===&lt;br /&gt;
 make attiny84&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 8000000 Hz (8.00 Mhz) Betrieb mit Baudrate 57600 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR attiny84 erstellen:&lt;br /&gt;
 LED-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 RX-Pin PA3 benutzt Pin 10-PDIP14 2-QFN20, mit Spezialfunktionen: PCINT3 T0 ADC3.&lt;br /&gt;
 TX-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=attiny84  -fno-diagnostics-show-caret -DBAUD_RATE=57600 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DVIRTUAL_BOOT_PARTITION=1  -DLED=pA4 -DUART=00 -DSOFT_UART=01 -DUART_RX=pA3 -DUART_TX=pA4 -DF_CPU=8000000 -DHFUSE=hexDD -DLFUSE=hexFF -DBOOT_PAGE_LEN=64 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 57600,  SoftUART_Real: 57553, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x1D80 = 7552&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
  &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     580	      0	      0	    580	    244	optiboot.elf&lt;br /&gt;
 Benötigt 10 Flash Seiten, je 64 Bytes, das ist 7.8% des Flash Speichers &lt;br /&gt;
 Keine Boot Seiten vorhanden!&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102285</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102285"/>
		<updated>2020-07-23T23:11:32Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einem USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG (AVR-ISP2) wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; ohne die Angabe eines Ports reichen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
=== Das vierte Beispiel erzeugt einen Bootloader für eine ATtiny84 ===&lt;br /&gt;
 make attiny84&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 8000000 Hz (8.00 Mhz) Betrieb mit Baudrate 57600 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR attiny84 erstellen:&lt;br /&gt;
 LED-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 RX-Pin PA3 benutzt Pin 10-PDIP14 2-QFN20, mit Spezialfunktionen: PCINT3 T0 ADC3.&lt;br /&gt;
 TX-Pin PA4 benutzt Pin 9-PDIP14 1-QFN20, mit Spezialfunktionen: PCINT4 T1 SCL USCK ADC4.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=attiny84  -fno-diagnostics-show-caret -DBAUD_RATE=57600 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DVIRTUAL_BOOT_PARTITION=1  -DLED=pA4 -DUART=00 -DSOFT_UART=01 -DUART_RX=pA3 -DUART_TX=pA4 -DF_CPU=8000000 -DHFUSE=hexDD -DLFUSE=hexFF -DBOOT_PAGE_LEN=64 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 57600,  SoftUART_Real: 57553, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x1D80 = 7552&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
  &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     580	      0	      0	    580	    244	optiboot.elf&lt;br /&gt;
 Benötigt 10 Flash Seiten, je 64 Bytes, das ist 7.8% des Flash Speichers &lt;br /&gt;
 Keine Boot Seiten vorhanden!&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102284</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102284"/>
		<updated>2020-07-23T23:05:06Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Kurzanleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einem USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG (AVR-ISP2) wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; ohne die Angabe eines Ports reichen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102283</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102283"/>
		<updated>2020-07-23T22:54:53Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einer USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; reichen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102282</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102282"/>
		<updated>2020-07-23T22:54:18Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
Eine komplette Beschreibung der Untersuchungen und der verwendeten Methoden findet man in&lt;br /&gt;
deutscher Sprache im Unterverzeichnis Doku/german und in englischer Sprache im Verzeichnis&lt;br /&gt;
Doku/english mit dem Dateinamen Bootloader.pdf.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einer USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; reichen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102281</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102281"/>
		<updated>2020-07-23T22:45:05Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einer USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; reichen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash Speichers&lt;br /&gt;
 BOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102280</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102280"/>
		<updated>2020-07-23T22:43:54Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Das zweite Beispiel benutzt die automatische Baudratenanpassung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einer USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; reichen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das dritte Bespiel benutzt die automatische Baudratenanpassung mit Software UART ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1 NO_EARLY_PAGE_ERASE=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DNO_EARLY_PAGE_ERASE=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8) &lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
Hier wurde die Option NO_EARLY_PAGE_ERASE benutzt, um Flash Speicher einzusparen. Ohne diese Option wäre das Ergebnis so:&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0 SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen: &lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52 -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 SoftUART Minimum 10302 Baud, Difference surely less than 4% up to 163.2 kBaud, Fast 8-Bit loop with N*6 cycles&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7C00 = 31744&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     520	      0	      0	    520	    208	optiboot.elf&lt;br /&gt;
 Benötigt 2 Boot Seiten, je 512 Bytes, das ist 3.1% des Flash SpeichersBOOTSZ=2, das bedeutet 2 Boot Seiten&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102279</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102279"/>
		<updated>2020-07-23T22:34:07Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Kurzanleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einer USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; reichen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Bootloadererzeugung ==&lt;br /&gt;
&lt;br /&gt;
=== Das erste Beispiel benutzt eine Software für die serielle Kommunikation. ===&lt;br /&gt;
 make atmega328p SOFT_UART=1&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit Baudrate 115200 und EEprom Unterstützung konfiguriert.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 LED-Pin PB5 benutzt Pin 19-PDIP28 17-TQFP32, mit Spezialfunktionen: SCK PCINT5.&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD.&lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DSUPPORT_EEPROM=1 -DLED=pB5 -DUART=00 -DSOFT_UART=01 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 BAUD RATE CHECK: Desired: 115200,  SoftUART_Real: 115107, Delay: 116*1, Difference=-.07%&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     506	      0	      0	    506	    1fa	optiboot.elf&lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
 BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
=== Das zweite Beispiel benutzt die automatische Baudratenanpassung ===&lt;br /&gt;
&lt;br /&gt;
 make atmega328p BAUD_RATE=52 LED_START_FLASHES=0&lt;br /&gt;
 &lt;br /&gt;
 Optiboot für 16000000 Hz (16.00 Mhz) Betrieb mit automatischer Baudrate und EEprom Unterstützung konfiguriert.&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Starte optiboot für AVR atmega328p erstellen:&lt;br /&gt;
 RX-Pin PD0 benutzt Pin 2-PDIP28 30-TQFP32, mit Spezialfunktionen: PCINT16 RXD. &lt;br /&gt;
 TX-Pin PD1 benutzt Pin 3-PDIP28 31-TQFP32, mit Spezialfunktionen: PCINT17 TXD.&lt;br /&gt;
 avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p  -fno-diagnostics-show-caret -DBAUD_RATE=52  -DLED_START_FLASHES=0 -DSUPPORT_EEPROM=1 -DLED=p -DUART=00 -DSOFT_UART=0 -DUART_RX=pD0 -DUART_TX=pD1 -DF_CPU=16000000 -DHFUSE=hexDE -DLFUSE=hexFF -DBOOT_PAGE_LEN=512 -DVerboseLev=2 -c -o optiboot.o optiboot.S&lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 Simple Baudrate measurement with time limit implemented in optiboot! (4-bit, Clk/8)&lt;br /&gt;
 UART Minimum 488 Baud, Difference surely less than 4% up to 160.0 kBaud&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # # &lt;br /&gt;
 Urlader Startadresse: 0x7E00 = 32256&lt;br /&gt;
 # # # # # # # # # # # # # # # # # # # # # #&lt;br /&gt;
 &lt;br /&gt;
    text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
     498	      0	      0	    498	    1f2	optiboot.elf &lt;br /&gt;
 Benötigt 1 Boot Seite mit 512 Bytes, das ist 1.5% des Flash Speichers&lt;br /&gt;
BOOTSZ=3, das bedeutet 1 Boot Seite&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102278</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102278"/>
		<updated>2020-07-23T22:11:31Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Optionen für die optiboot Makefile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einer USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; reichen.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102277</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102277"/>
		<updated>2020-07-23T22:05:36Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Kurzanleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.                                                                         1,5&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mit dem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einer USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux entweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; reichen.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102276</id>
		<title>AVR Bootloader optiboot Assemblerversion</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Bootloader_optiboot_Assemblerversion&amp;diff=102276"/>
		<updated>2020-07-23T22:00:56Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: Die Seite wurde neu angelegt: „== Einleitung == Der optiboot Bootloader wurde in der Sprache C von Peter Knight und Bill Westfield entwickelt. Die Version 6.2 wurde als Basis für die hier b…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Der optiboot Bootloader wurde in der Sprache C von Peter Knight und&lt;br /&gt;
Bill Westfield entwickelt. Die Version 6.2 wurde als Basis&lt;br /&gt;
für die hier beschriebene überarbeitete Assembler Version benutzt.&lt;br /&gt;
Der optiboot Bootloader wurde nicht völlig neu entwickelt,&lt;br /&gt;
sondern lediglich optimiert und weiter entwickelt.&lt;br /&gt;
Es werden Teile des STK500 Kommunikations-Protokols benutzt,&lt;br /&gt;
die in der AVR061 Dokumentation von Atmel veröffentlicht wurde.&lt;br /&gt;
Das komplette Programm wurde in die AVR-Assemblersprache umgeschrieben und&lt;br /&gt;
die Erzeugung der .hex Datei in einen bash Shell Script verlegt.&lt;br /&gt;
Dabei wird die Programmlänge automatisch weiterverarbeitet und damit die Startadresse&lt;br /&gt;
des Bootloaders sowie die Fuses des ATmega passend eingestellt.&lt;br /&gt;
Ziel für diesen Schritt war hautpsächlich, einen Bootloader zu erhalten,&lt;br /&gt;
der auch dann in 512 Byte Flash Speicher paßt, wenn die Fähigkeit&lt;br /&gt;
zum EEprom Beschreiben integriert ist.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften der Assemblerversion von optiboot ==&lt;br /&gt;
&lt;br /&gt;
Um viele Fallstricke bei der Erzeugung eines lauffähigen Bootloaders zu umgehen,&lt;br /&gt;
wurde die Erzeugung der Bootloader Datei weitgehend automatisiert.&lt;br /&gt;
Zusätzlich werden Einstellungen auch geprüft und die Erzeugung mit&lt;br /&gt;
einer entsprechenden Fehlermeldung abgebrochen,&lt;br /&gt;
wenn beispielweise die gewählte Betriebsfrequenz (AVR_FREQ) nicht zu der&lt;br /&gt;
mit den Fuses (CKSEL,CKDIV8) eingestellten Möglichkeiten für den Takt paßt.&lt;br /&gt;
Ein Empfang von Programmdaten für optiboot ist derzeit nur über eine serielle Schnittstelle möglich.&lt;br /&gt;
&lt;br /&gt;
Hier sind einige der Fähigkeiten des optiboot Programms aufgelistet:&lt;br /&gt;
&lt;br /&gt;
* Unterstützt eine große Zahl von AVRs, wobei fast alle auf Funktion getestet wurden.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt das Laden von Daten in den EEprom Speicher.&lt;br /&gt;
&lt;br /&gt;
* Passt in den meisten Fällen in 512 Byte Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
* Die Anpassung der Programmgröße und die Änderung der notwendigen Fuses wird automatisch vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* Die von der Programmgröße und dem AVR Modell abhängige Startaddresse wird automatisch berechnet und auf dem Bildschirm angezeigt.&lt;br /&gt;
   &lt;br /&gt;
* Alle beim jeweiligen AVR-Prozessor vorhandenen seriellen Schnittstellen können frei gewählt werden. Als Standard wird immer das erste UART benutzt.&lt;br /&gt;
&lt;br /&gt;
* Kann die serielle Schnittstelle über Software emulieren.  Damit werden auch ATtiny Prozessoren ohne UART unterstützt.  Außerdem können die TX und RX Pins bei SOFT_UART völlig frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Bei der SOFT_UART Lösung kann die serielle Kommunikation auch über nur einen AVR Pin durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann eine automatische Baudraten-Anpassung vornehmen. Dabei wird die Baudzeit aus dem ersten empfangenen Datenbyte gemessen. Verschiedene Methoden der Baudzeit-Messung können dabei ausgewählt werden. Wenn der so konfigurierte optiboot noch in 512 Byte Flash passen soll, muß die LED Blink Funktion beim Programmstart abgewählt werden.&lt;br /&gt;
&lt;br /&gt;
* Kann auch für AVRs ohne Bootloader Unterstützung benutzt werden. Diese VIRTUAL_BOOT_PARTITION Fähigkeit kann natürlich auch für AVRs benutzt werden, die die Bootloader Unterstützung besitzen. Das optiboot Programm wird dabei größer, kann aber dann auf jeder Flash-Speicher Seite starten.&lt;br /&gt;
&lt;br /&gt;
* Läßt eine angeschlossene LED standardmäßig drei mal blinken (LED_START_FLASHES=3). Bei eintreffenden seriellen Daten wird das Blinken aber sofort abgebrochen.&lt;br /&gt;
&lt;br /&gt;
* Anstelle des LED-Blinkens beim Start kann man auch die LED aufleuchten lassen, wenn auf serielle Daten gewartet wird (LED_DATA_FLASH=1). Auch ein Dauerleuchten der LED kann mit LED_DATA_FLASH=4 gewählt werden. Dabei geht die LED erst durch den Watchdog-Reset wieder aus.&lt;br /&gt;
&lt;br /&gt;
* Die Länge des erzeugten Programms ist nur abhängig vom gewählten AVR-Prozessor und den ausgesuchten Optionen. Die Version des avr-gcc Kompilers spielt keine Rolle wenn die Assembler Quellen benutzt werden. Dies macht eine nachträgliche Kontrolle (Verify) des installierten Bootloaders einfacher, selbst mit einem anderen PC.&lt;br /&gt;
&lt;br /&gt;
* Unterstützt die Anpassung der Oszillator-Frequenz für den AVR internen RC-Oszillator. Dadurch ist auch in Problemfällen die Benutzung eines Bootloaders mit fester Baudrate möglich.&lt;br /&gt;
&lt;br /&gt;
* Das Laden des optiboot Programms in den jeweiligen AVR Prozessor kann automatisch mit dem Programm avrdude und einem angeschlossenem ISP-Programmer erfolgen. Dazu ist nur die zusätzliche Eingabe von ISP=1 beim make Aufruf erforderlich. Die zusätzliche Eingabe ISP=2 würde eine Verifikation mit avrdude bewirken. Mit ISP=3 wird der gesamte Programmspeicher (Flash) des angeschlossenen AVR ausgelesen. Mit ISP=4 wird der gesamte EEprom-Speicher des angeschlossenen AVR ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Fähigkeiten beziehen sich nur auf den Herstellungsprozess des Bootloaders:&lt;br /&gt;
&lt;br /&gt;
* Für die Erzeugung des optiboot Bootloaders können wahlweise auch angepaßte C-Quellen benutzt werden. Die meisten Funktionen sind auch hier möglich. Natürlich wird das erzeugte optiboot Programm größer!&lt;br /&gt;
  &lt;br /&gt;
* Der Umfang der Bildschirmausgabe bei der Erzeugung von optiboot kann mit der Systemvariablen VerboseLev verändert werden. Der Wert kann zwischen 1 und 4 liegen, wobei 2 der Standardwert ist.&lt;br /&gt;
&lt;br /&gt;
* Die Bildschirmausgabe kann mit der Systemvariablen WITH_COLORS=1 bunter gestaltet werden. Mit WITH_COLORS=2 wird reiner Text ausgegeben.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms wird in einer Bash Script Datei gesteuert, wobei die Text-Datei avr_params.def die notwendigen Daten für alle unterstützten AVR-Prozessoren liefert. In dieser avr_params.def Datei sind auch für jeden unterstützten Prozessor Standard-Werte für die Fuses, Arbeitsfrequenz und Baudrate festgelegt.&lt;br /&gt;
&lt;br /&gt;
* Die für die jeweiligen Prozessoren verfügbaren Pinbelegungen findet die Script Datei in dem avr_pins Verzeichnis in einer passenden Datei. Hier werden bei Bedarf auch Standardwerte für die von SOFT_UART benutzten Pins und für die LED gefunden.&lt;br /&gt;
&lt;br /&gt;
* Die Erzeugung des optiboot Programms läuft unter Linux mit installierten avr Paketen. Eine Erzeugung unter Windows10 ist möglich, wenn zusätzlich zum Arduino Paket Programmpakete installiert sind, die die bei der Erzeugung erforderlichen Programme wie bash, bc, echo und andere zur Verfügung stellt. Geprüft habe ich das Cygwin64 Paket auf einen Windows10 Laptop mit vorher installierten Arduino Paket.&lt;br /&gt;
&lt;br /&gt;
* Die bei der Programmerzeugung gewählten Parameter werden sowohl am Ende einer .lst Datei als auch in einer .log Datei festgehalten.&lt;br /&gt;
&lt;br /&gt;
== Optionen für die optiboot Makefile ==&lt;br /&gt;
&lt;br /&gt;
Die optiboot hex Datei wird über einen make Aufruf erzeugt, der den gewünschen Zielprozessor oder eine der Platinen als Parameter angibt. Dazu können auch verschiedene Optionen für die Erzeugung angegeben werden, die hier aufgelistet werden:&lt;br /&gt;
&lt;br /&gt;
* F_CPU : Teilt dem Programm die Taktrate des Prozessors mit. Die Angabe erfolgt in Hz (Schwingungen pro Sekunde). Das Beispiel F_CPU=8000000 gibt eine Frequenz von 8 MHz an.&lt;br /&gt;
&lt;br /&gt;
* BAUD_RATE : Gibt die Baud-Rate für die serielle Kommunikation an. Es werden immer 8 Datenbits ohne Parity verwendet. Werte &amp;lt;100 aktivieren eine Messung and Anpassung der Baudrate mit verschiedenen Verfahren. Der Vorteil der automatischen Anpassung besteht darin, daß man problemlos auf eine niedrigere Baudrate ausweichen kann, wenn Probleme mit einer hohen Baudrate auftauchen.&lt;br /&gt;
&lt;br /&gt;
* SOFT_UART : Wählt Software-Lösung für die serielle Kommunikation.&lt;br /&gt;
&lt;br /&gt;
* UART_RX : Gibt den Port und die Bitnummer für die seriellen Empfangsdaten an. Das Beispiel UART_RX=D0 nimmt Bit 0 des D Ports für den seriellen Eingang.&lt;br /&gt;
&lt;br /&gt;
* UART_TX : Gibt den Port und die Bitnummer für die seriellen Sendedaten an. Das Beispiel UART_TX=D1 nimmt Bit 1 des D Ports für den seriellen Ausgang.&lt;br /&gt;
&lt;br /&gt;
* UART : Wählt eine serielle Schnittstelle des Chips für die Kommunikation. Eine Auswahl setzt das Vorhandensein mehrerer Schnittstellen voraus, funktioniert dann aber auch mit SOFT_UART.&lt;br /&gt;
&lt;br /&gt;
* INVERSE_UART : Invertiert die Pegel von RX und TX Signalen. Die Option kann nur bei Software UART benutzt werden.&lt;br /&gt;
&lt;br /&gt;
* LED_START_FLASHES : Wählt die Anzahl der Blink-Zyklen für die Kontroll-LED. Bei 1 oder -1 wird nur einmal geblinkt ohne Wiederholung. Negative Vorgaben bedeuten, daß in der Programmschleife das RX Bit der seriellen Schnittstelle nicht überwacht wird. Bei positiven Werten wird die Binkschleife sofort abgebrochen, sobald eingehende RX-Daten festgestellt werden. Bitte beachten Sie,daß das Blinken den Start des Anwenderprogramms verzögert.&lt;br /&gt;
&lt;br /&gt;
* LED : Wählt das Port-Bit für die  Kontroll-LED. Beim Beispiel LED=B3 würde eine an das Bit 3 des Port B angeschlossene LED blinken.&lt;br /&gt;
&lt;br /&gt;
* LED_DATA_FLASH : Die Kontroll-LED leuchtet während des Wartens auf Empfangsdaten der seriellen Kommunikation, wenn der Wert auf 1 gesetzt wird. Ein Wert von 4 bewirkt, daß die LED nur beim Start einmalig eingeschaltet wird. Hiermit kann man auch erkennen, daß der Bootloader gestartet wurde und es wird viel weniger Platz im Programmspeicher gebraucht.&lt;br /&gt;
&lt;br /&gt;
Weitere Optionen sind meist nur für Software-Untersuchungen, die Frequenzkalibration des RC-Generators und für Prozessoren ohne Bootloader-Bereich interessant.&lt;br /&gt;
&lt;br /&gt;
* TIMEOUT_MS : Diese Option gibt eine Zeitschranke in Millisekunden vor für den Empfang von Boot-Daten. Nach dieser Zeit wird der Bootvorgang abgebrochen und versucht, das Anwenderprogramm zu starten. Mögliche Werte für TIMEOUT_MS sind 500, 1000, 2000, 4000 und 8000. Der tatsächlich mögliche Wert kann je nach Prozessor auf 2 Sekunden begrenzt sein. Wenn kein TIMEOUT_MS angegeben wird, wird die Zeitschranke auf 1 Sekunde gesetzt.&lt;br /&gt;
&lt;br /&gt;
* SUPPORT_EEPROM : Wählt für das Bootloader-Programm die Lese- und Schreib-Funktion für EEproms. Wenn als Quelle das Assembler-Programm gewählt wurde, ist die EEprom Unterstützung ohne gesetzte Option eingeschaltet, kann aber abgeschaltet werden, wenn die SUPPORT_EEPROM Option auf 0 gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
* C_SOURCE : Wählt als Programmquelle das C-Programm anstelle des Assembler-Programms (0 = Assembler). Die Assembler Version benötigt weniger Speicherplatzund unterstützt alle Funktionen. Bei der C-Quelle muß die Funktion SUPPORT_EEPROM extra  eingeschaltet werden (Standard = aus).&lt;br /&gt;
&lt;br /&gt;
* BIGBOOT : Wählt zusätzlichen Speicherverbrauch für das Bootloader-Programm. Das dient nur zum Test der automatischen Anpassung an die Programmgröße in dem Bash-Script.&lt;br /&gt;
* VIRTUAL_BOOT_PARTITION : Ändert die Programmdaten eines Anwenderprogramms so ab, daß der Bootloader beim Reset angesprochen wird. Für den Start des Anwenderprogramms wird ein anderer Interrupt-Vektor benutzt.&lt;br /&gt;
&lt;br /&gt;
* save_vect_num : Wählt eine Interrupt-Vektornummer für die VIRTUAL_BOOT_PARTITION Methode aus.&lt;br /&gt;
&lt;br /&gt;
* OSCCAL_CORR : Mit der Option OSCCAL_CORR kann der interne RC-Generator des AVR abgeglichen werden. Ist bei Quarz-Betrieb oder externem Takt unwirksam! Der Korrekturwert wird vom voreingestellten OSCCAL Byte abgezogen. Bei positivem Korrekturwert wird die Frequenz normalerweise niedriger. Da die erzeugte Baud-Rate direkt vom Prozessortakt abhängt, ist ein richtig eingestellter Prozessortakt für eine erfolgreiche serielle Kommunikation wichtig. Normalerweise sollte ein Wert zwischen -20 und +20 ausreichen.&lt;br /&gt;
&lt;br /&gt;
* NO_EARLY_PAGE_ERASE : Verhindert das Löschen der Flash Seite bevor die Daten über die serielle Schnittstelle empfangen sind. Da das Löschen sonst parallel zum Datenempfang abläuft, ist das programmieren des Flashs mit dieser Option um etwa 30% langsamer. Da der normalerweise auch durchgeführte Datenvergleich (verify) etwa genau so viel Zeit braucht, ist der Zeitverlust nicht so erheblich. Dafür spart man beim optiboot Bootloader etwa 14 Bytes Platz in der Bootloader-Seite, was wegen der AVR-Technik in der Praxis auch eine Halbierung des Platzbedarfs bedeuten kann.                                                                         1,5&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung ==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen Sie mit dem Arbeitsverzeichnis in das optiboot Verzeichnis wechseln (Change Directory -- cd).&lt;br /&gt;
Hier können Sie sich die Optionen mit &#039;&#039;&#039;make&#039;&#039; oder mit &#039;&#039;&#039;make help&#039;&#039;&#039; anzeigen lassen. Eine Liste der unterstützten AVR Prozessoren&lt;br /&gt;
erhalten sie mit &#039;&#039;&#039;make pl&#039;&#039;. &lt;br /&gt;
Zum Erzeugen einer optiboot hex Datei müssen Sie einen der unterstützten Prozessoren als Parameter beim make Aufruf angeben. Ein &#039;&#039;&#039;make atmega328p&#039;&#039;&#039; erzeugt eine Bootloader Datei mitdem Namen optiboot_atmega328p.hex. Daneben werden auch noch die Dateien optiboot_atmega328p.lst und optiboot_atmega328p.log erzeugt. In der .log Datei werden die gewählten Optionen festgehalten, die .lst wird durch Disassemblieren der .elf Datei erzeugt. Beim Erzeugen der .hex Datei werden Informationen auf dem Bildschirm ausgegeben, die besonders bei angewählten Optionen beachtet werden sollten.&lt;br /&gt;
&lt;br /&gt;
Zum Übertragen des Bootloaders zum AVR-Zielprozessor wird das Programm avrdude benutzt, wenn zusätzlich die Option ISP=1 angegeben wird. Je nach angeschlossenem ISP-Programmer muß auch noch der Port für avrdude (ISPPORT) eingestellt werden.&lt;br /&gt;
Neuere Programmer benutzen oft eine serielle Schnittstelle, die an einer USB-Gerät hängt. Diese seriellen Schnittstellen haben unter Linux enweder den Namen /dev/ttyUSBx oder /dev/ttyACMx. Bei Windows haben serielle Schnittstellen einen COMx Namen. Das x steht jeweils für eine vom System vergebene Ziffer. &lt;br /&gt;
Für einen angeschlossenen Diamex ISP-PRog-NG wäre das bei Linux z.B. /dev/ttyACM0, so daß ein vollständiger Aufruf  zum Installieren des Bootloaders &#039;&#039;&#039;make atmega328p ISP=1 ISPPORT=/dev/ttyACM0&#039;&#039;&#039; heißen kann. Als ISPPORT ist &#039;&#039;&#039;usb&#039;&#039;&#039; voreingestellt, was für einen Diamex ALL-AVR ISP-Programmer (ERFOS AVRISP MkII Clone) passen würde. Für diesen Typ Programmer würde also das Kommando &#039;&#039;&#039;make atmega328p ISP=1&#039;&#039;&#039; reichen.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Da diese Bootloader-Version zusammen mit dem Transistortester Projekt entstanden ist, befinden sich die Quellen und die Dokomentation im Unterverzeichnis bootloaders des Transistortester Projekts. Damit ist ein Zugriff mit dem Svnbrowser  auf https://www.mikrocontroller.net/svnbrowser/transistortester/bootloaders/ möglich. Hier kann auch ein GNU tarball eines vorher angewählten Verzeichnis runtergeladen werden. Mit Linux ist natürlich auch ein Zugriff direkt mit subversion möglich (svn checkout svn://www.mikrocontroller.net/transistortester/bootloaders).&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=99907</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=99907"/>
		<updated>2018-10-17T19:50:00Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Verzeichnisstruktur des SVN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168, ATmega328 or ATmega644 and ATmega1284 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 or 4x20 characters.&lt;br /&gt;
* Also a graphical display with the ST7565, NT7108 or ST7920 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible. You can also connect color displays with ILI9341 or ILI9163 controller.&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins for universal use.&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC.&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* If the processor has at least 32K flash memory, you can use the samplingADC method from Pieter-Tjerk to get a resolution of up to 0.01 pF for capacitors with lower capacity than 100 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* If your processor has at least 32K flash, you can use the samplingADC method to measure lesser inductances with a parallel capacitor of known capacity. The resonant frequency and the computed inductance value is shown and additionally the quality factor. &lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 20 nF is built in. The resolution is 0.01 Ohm. For lower capacity values the accuracy of ESR result becomes worse.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Introduktion (dansk) ==&lt;br /&gt;
(Det originale (tidligere) design kan nås via denne link: http://www.mikrocontroller.net/articles/AVR-Transistortester )&lt;br /&gt;
&lt;br /&gt;
Videreudviklet design af Karl-Heinz Kübbeler, se denne [https://www.mikrocontroller.net/topic/248078 forumtråd], de fleste forumbrugere kan også forstå og svare på engelsk.&lt;br /&gt;
&lt;br /&gt;
Jeg (Karl-Heinz Kübbeler) har videreført projektet &#039;&#039;transistortester&#039;&#039; fra Markus Frejek og hovedsageligt videreudviklet softwaren. På grund af dens forbedrede egenskaber, blev navnet &#039;&#039;komponenttester&#039;&#039; foreslået. Jeg ser selv, at dens hovedformål er, at bestemme transistortype og dennes parametre, som udviklet af Markus Frejek.&lt;br /&gt;
&lt;br /&gt;
De vigtigste egenskaber er:&lt;br /&gt;
&lt;br /&gt;
* Fungerer med mikrocontrollerne ATmega8, ATmega168, ATmega328 eller også med ATmega644, ATmega1284.&lt;br /&gt;
* Viser resultater på en udlæsningsenhed (LCD) med 2x16 eller 4x20 tegn.&lt;br /&gt;
* Det er også muligt at anvende grafik udlæsningsenhederne med controllerne ST7565, NT7108 eller ST7920. Det er også muligt at anvende OLED udlæsningsenheder med controller SSD1306 og kommunikation via databus grænsefladerne SPI eller I2C. Det er også muligt at anvende farvegrafik udlæsningsenheder med controllerne ILI9341 eller ILI9163.&lt;br /&gt;
* Én-tast-operation med automatisk sluk.&lt;br /&gt;
* Apparatet har tre måleporte (testtilslutninger, (måle)pinde).&lt;br /&gt;
* Automatisk detektering af NPN, PNP, N-kanal og P-kanal MOSFET, JFET, dioder og små tyristorer, TRIAC.&lt;br /&gt;
* Automatisk detektering af komponentben, hvilket betyder at komponentens ben kan tilsluttes måleportene vilkårligt.&lt;br /&gt;
* Måling af hFE (beta) og basis-emitter-spændingsfald for bipolære transistorer (BJT), incl. for Darlington-transistorer.&lt;br /&gt;
* Automatisk detektering af beskyttelsesdioder i bipolære transistorer og MOSFETs.&lt;br /&gt;
* Bipolære transistorer bliver detekteret som en transistor med en parasitisk transistor (NPNp = NPN + parasitisk PNP).&lt;br /&gt;
* Op til to resistorer kan måles med en opløsning ned til 0,1 ohm. Måleområdet dækker op til 50 Mohm (Megaohm). Resistorer under 10 ohm bliver målt på samme måde som en ESR-måling og med en opløsning på 0,01 ohm hvis en ATmega168/328 anvendes. Bemærk: [[Auflösung und Genauigkeit|Opløsning er ikke nøjagtighed]].&lt;br /&gt;
* Kondensatorers kapacitans i intervallet 35pF (pikofarad) til 100mF (millifarad) kan måles med en opløsning ned til 1 pF. Man skal sikre sig at kondensatoren er afladet inden tilslutning til måleportene.&lt;br /&gt;
* Hvis processoren har mindst 32K flash-hukommelse, kan Pieter-Tjerks samplingADC metode anvendes til at få en opløsning ned til 0,01 pF for kondensatorer med lavere kapacitans end 100 pF.&lt;br /&gt;
* Resistorer og kondensatorer vil blive vist med deres respektive symboler, måleporte og værdier.&lt;br /&gt;
* Op til to dioder vil også blive vist med deres korrekt vendte symboler, måleporte og spændingsfald.&lt;br /&gt;
* Hvis komponenten er en enkelt diode, vil dens parasitiske kapacitans blive målt - og fra version 1.08k vil dens lækstrøm også blive målt.&lt;br /&gt;
* Med ATmega168/328 er selvkalibrering mulig for nul-kapacitans, nul-resistans og andre parametre.&lt;br /&gt;
* Med ATmega168/328 kan spoler detekteres og deres induktanser måles, hvis i intervallet 0,01 mH til 20 H.&lt;br /&gt;
* Hvis processoren har mindst 32K flash-hukommelse, kan samplingADC metoden anvendes til at måle mindre induktanser med en parallel kondensator med kendt kapacitansværdi. Resonansfrekvensen, den beregnede induktansværdi vises og godheden. &lt;br /&gt;
* Med ATmega168/328 kan en kondensators ESR (&#039;&#039;Equivalent Series Resistance&#039;&#039;) måles for kapacitanser større end 20 nF. Opløsningen er 0,01 Ohm. For lavere kapacitanser bliver ESR nøjagtigheden dårligere.&lt;br /&gt;
* Med ATmega168/328 og kondensatorer over 5 nF kan Vtab undersøges efter ladepulser. Via denne metode kan kondensatorens godhed estimeres.&lt;br /&gt;
* Med ATmega328 kan en menufunktion nås med et langt tastetryk (&amp;gt; 0,5 sekund). Et kort tastetryk skifter til næste funktion. Et langt tastetryk starter funktionen. Her er listen af indbyggede funktioner indtil videre:&lt;br /&gt;
** Frekvensmåling på port PD4. Denne port anvendes også til udlæsningsenheden (LCD) og vil blive ændret til input (høj-Z) under målingen. Frekvensen måles over 1 sekund. Hvis frekvensen er under 25 kHz, måles middeltidsperioder istedet for at øge nøjagtigheden. Opløsningen går ned til 0,001 mHz (milliHertz).&lt;br /&gt;
** Spændingsmåling på port PC3, hvis den ikke anvendes til seriel output. Ds ATmega328 har 32 ben (PLCC), kan ADC6 eller ADC7 også anvendes. En 10:1 spændingsdeler anvendes, så spændinger op til 50 V kan måles. Med en yderligere DC-DC-konverter, kan zenerdioder også måles.&lt;br /&gt;
** Frekvensgenerering på port TP2. Over 680 ohm resistoren, der er forbundet til port PB2, kan et signal med en valgt frekvens fra 1 Hz til 2 MHz fås fra port TP2. Port TP1 er jord. (?: Det tyske og engelske tekstafsnit kunne ikke forstås)&lt;br /&gt;
** Variabel PWM (&#039;&#039;pulse width modulation&#039;&#039;) med fast frekvens på port TP2. 10-bit tæller. Port TP1 er jord. Kort tastetryk øger pulsbredden med 1%, langt tastetryk med 10%.&lt;br /&gt;
** Der er en alternativ mulig metode at måle kapacitans og ESR på. Kapacitanser på 2 µF til 50 mF kan sædvanligvis måles, mens kondensatoren sidder i kredsløbet. Man skal sikre sig at kondensatoren er afladet inden tilslutning til måleportene.&lt;br /&gt;
&lt;br /&gt;
Man kan læse detaljeret information med måleeksempler i PDF-dokumentationen på engelsk og tysk. En russisk oversættelse er også tilgængelig. PDFernes links er i denne sides download afsnit.&lt;br /&gt;
&lt;br /&gt;
== Introduction (Français) ==&lt;br /&gt;
&lt;br /&gt;
Projet d&#039;origine : http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Perfectionné par l&#039;auteur Karl-Heinz Kübbeler, voir le [https://www.mikrocontroller.net/topic/248078 forum de discussion afférent].&lt;br /&gt;
&lt;br /&gt;
J&#039;ai continué à développer le projet de Markus Frejek et plus spécifiquement le logiciel. Sur la base des caractéristiques améliorées certains ont proposé de l&#039;appeler testeur de composants. Personnellement, je considère pourtant comme propriéte éminente la détermination automatique du type et des caractéristiques des transistors, telle que développée par Markus Frejek.&lt;br /&gt;
&lt;br /&gt;
J&#039;aimerais citer ici les caractéristiques les plus importantes :&lt;br /&gt;
&lt;br /&gt;
* Utilisation des processeurs ATmega8, ATmega168, ATmega328 ou alors ATmega644 et ATmega1284.&lt;br /&gt;
* Affichage des résultats mesurés par un afficheur LCD de 2x16 ou 4x20 caractères.&lt;br /&gt;
* Au lieu d&#039;un afficheur LCD à 2x16 caractères, on peut aussi utiliser un afficheur graphique sur la base d&#039;un contrôleur ST7565, NT7108 ou ST7920. Le raccordement d&#039;un afficheur OLED à contrôleur SSD1306 via interface SPI ou I2C est possible. Les afficheurs en couleur à contrôleur ILI9341 ou ILI9163 peuvent également être utilisés.&lt;br /&gt;
* Utilisation par touche unique avec coupure automatique temporisée.&lt;br /&gt;
* L&#039;appareil possède trois ports de test universels (Pins Test TP1, TP2 et TP3).&lt;br /&gt;
* Détermination automatique du type des transistors bipolaires NPN et PNP, des MOSFETs à canal N ou P, des JFETs, des diodes ainsi que des thyristors et TRIACs à faible puissance.&lt;br /&gt;
* Détermination automatique du schéma de raccordement des composants, les composants pouvant être connectés de façon quelconque.&lt;br /&gt;
* Mesure du facteur d&#039;amplification de courant (hfe) et de la tension base-émetteur des transistors bipolaires, y inclus les transistors Darlington.&lt;br /&gt;
* Détection automatique d&#039;une diode protectrice intégrée aux transistors bipolaires et MOSFETs.&lt;br /&gt;
* Dans certains cas un transistor parasitaire peut être détecté lors du test de transistors avec diode protectrice (NPNp = NPN + PNP parasitaire).&lt;br /&gt;
* Jusqu&#039;à deux résistances peuvent être mesurées simultanément avec une résolution de 0,1 Ohm. La plage de mesure dépasse les 50 MOhm. Lors de l&#039;utilisation d&#039;un processeur ATmega168/328 les résistances en-dessous de 10 Ohm sont mesurées par la méthode ESR (résistance série) avec une résolution de 0.01 Ohm.&lt;br /&gt;
* Les condensateurs sont mesurés dans une plage de 35 pF à 100 mF avec une résolution de 1 pF.&lt;br /&gt;
* Lorsque la taille de la mémoire Flash est de 32 K, les condensateurs en dessous de 100 pF peuvent être mesurés par la méthode SamplingADC de [https://wwwhome.ewi.utwente.nl/~ptdeboer/ Pieter-Tjerk] avec une résolution jusqu&#039;à 0.01 pF.&lt;br /&gt;
* Les résistances et condensateurs sont affichés avec leur symbole, entouré du numéro des bornes de raccordement.&lt;br /&gt;
* Les valeurs résistances et condensateurs sont affichées avec 4 chiffres décimaux dans la dimension correcte.&lt;br /&gt;
* Dans le cas de diodes détachées, l&#039;appareil effectue aussi la mesure des valeurs de la capacité et (à partir de la version 1.08k) du courant de fuite en direction inverse.&lt;br /&gt;
* Jusqu&#039;à deux diodes sont également affichées avec leur symbole en observant la direction de passage du courant. Les symboles sont entourés des numéros des bornes de raccordement. La valeur du seuil de tension est également affichée.&lt;br /&gt;
* Le processeur ATmega168/328 prévoit un mode &amp;quot;self test&amp;quot; (test auto) permettant un calibrage de la capacité respectivent de la résistance à vide ainsi que d&#039;autres paramètres. &lt;br /&gt;
* Le processeur ATmega168/328 permet aussi la détection et la mesure d&#039;inductivités supérieures à 0.01 mH jusqu&#039;à plus de 20 H.&lt;br /&gt;
* Avec une mémoire Flash minimale de 32 K il est possible, moyennant la connexion parallèle d&#039;un condensateur de capacité connue, de mesurer des inductivités de faible valeur par la méthode SamplingADC. Sont affichés, en outre de la fréquence de résonnance, la valeur calculée de l&#039;inductivité et le facteur de perte.&lt;br /&gt;
* Le processeur ATmega168/328 permet une mesure par la méthode ESR (résistance série équivalente ou Equivalent Series Resistance) des condensteurs d&#039;au moins 20 nF avec une résolution de 0.01 Ohm. Notez cependant que la précision des résultats est moindre pour les faibles valeurs de capacité.&lt;br /&gt;
* Le processeur ATmega168/328 mesure la perte de tension Vloss des condensateurs supérieurs à 5 nF en analysant la tenue en tension après une impulsion de charge. Ceci permet d&#039;estimer le facteur de perte des condensateurs.&lt;br /&gt;
* Des fonctions supplémentaires sont disponibles avec un processeur ATmega328. Un menu peut être activé moyennant une pression de la touche d&#039;une durée supérieure à 0.5 s. Les fonctions spéciales peuvent alors être choisies dans une liste. Une pression de courte durée affiche la fonction suivante de la liste. Une pression de longue durée lance la fonction affichée. Ci-dessous les fonctions supplémentaires implémentées à présent :&lt;br /&gt;
** Mesure de fréquences au pin PD4, utilsé en même temps pour le raccordement de l&#039;afficheur LCD. Pour la mesure, le pin est configuré en tant qu&#039;entrée. La fréquence appliquée est d&#039;abord comptée pendant une seconde. Si la fréquence est inférieure à 25 kHz, la période moyenne est mesurée. Sur base de la période la fréquence est calculée avec une résolution allant jusqu&#039;à 0.001 mHz.&lt;br /&gt;
** Mesure d&#039;une tension externe via le pin PC3, sous condition que celui-ci ne soit pas utilisé comme port de sortie sériel. Lors de l&#039;utilisation d&#039;un ATmega328 en boitier PLCC à 32 pins un des pins ADC6 ou ADC7 peut être affecté à la mesure de tension. Comme un diviseur de tension 10:1 est prévu, des tensions de 0 à 50 V peuvent être mesurées. Une extension du circuit (converisseur DC-DC) permet alors de mesurer des diodes Zener.&lt;br /&gt;
** Générateur de tension au Port TP2. Par l&#039;intermédiaire de la résistance de 680 Ohm raccordée au pin PB2, un signal avec une fréquence variable entre 1 Hz et 2 MHz peut être émis via le port TP2. Le port TP1 est alors raccordé à la masse.&lt;br /&gt;
** Générateur d&#039;impulsions au port TP2 à fréquence fixe et rapport de la largeur d&#039;impulsion variable. Dans cette fonction, le compteur 1 est utilisé comme compteur à 10 bits. Le port TP1 est raccordé à la masse. La largeur d&#039;impulsion peut être augmentée de 1% par une pression courte de la touche, et de 10% par une pression longue.&lt;br /&gt;
** Une variante de la fonction de mesure de la capacité et de l&#039;ESR permet de mesurer des condensateurs de 2 µF à 50 mF dans leur circuit. A cette fin ceux-ci seront raccordés aux pins Test TP1 et TP3. Il est particulièrement important que les condensateurs ainsi mesurés n&#039;ont plus aucune charge résiduelle.&lt;br /&gt;
&lt;br /&gt;
Lorsque l&#039;option POWER_OFF était activée au niveau du fichier de configuration (Makefile), les fonctions supplémentaires tout comme la fonction de dialogue elle même sont limitées dans le temps.&lt;br /&gt;
Pour des informations plus détaillées voir la documentation au format pdf, en langue allemande ou anglaise. Une traduction russe de la documentation est également disponible.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Software (Français) ==&lt;br /&gt;
&lt;br /&gt;
Le logiciel a été développé sur la base du travail de Markus F.&lt;br /&gt;
La partie concernant la mesure des condensateurs a été réécrite complétement et la mesure des résistances a été revisée de façon considérable. En cas de difficultés ou de problèmes il y a lieu de me contacter par mail ou via le forum de discussions. Pour être en mesure de lever les problèmes je dois d&#039;abord les connaître.&lt;br /&gt;
&lt;br /&gt;
Dans ma documentation au format pdf, en langue allemande ou anglaise, j&#039;ai décrit des détails supplémentaires, les différentes procédures de mesure ainsi que des exemples de résultats. L&#039;on y trouve aussi des indications pour la configuration du logiciel à l&#039;aide des paramètres et options du fichier &amp;quot;Makefile&amp;quot;.&lt;br /&gt;
Les commentaires dans les codes source sont en anglais.&lt;br /&gt;
&lt;br /&gt;
J&#039;ai intégré dans le logiciel une nouvelle fonction de test automatique vérifiant le fonctionnement correct du testeur. Le test automatique comprend aussi une routine de calibrage.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden. Ein 16 MHz Quarz ist auch verwendbar, wenn die Software in der Makefile angepasst ist.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software can be configured to run without any changes on the hardware developed by Markus F.&lt;br /&gt;
&lt;br /&gt;
But a few modifications still make sense:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. To this purpose the fuses have to be set. A 16 MHz quartz may also be used if the software is adapted through the Makefile option.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turns on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF. Where necessary resisitor R7 should be decreased to 3.3 kΩ. The circuit diagram and further detail is to be found in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The reasons and details concerning these changes as well as further hints about new implementations are explained in the hardware section of my PDF documentation. ATmega168 or ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to the 1.1V internal reference. The ATmega8 has a 2.56V internal reference which is inferior for measurements below 1V. The ATmega8 can be replaced by a ATmega168/328 without changes to the hardware. Here is the part from the [https://www.mikrocontroller.net/wikifiles/thumb/6/64/TransistorTesterVC1.png/779px-TransistorTesterVC1.png circuit diagram] that is responsible for the measurements.&lt;br /&gt;
&lt;br /&gt;
The circuits for the battery supply and the automatic shutdown are not shown by this circuit diagram.&lt;br /&gt;
&lt;br /&gt;
You could go without the components marked in red, but they may enhance the precision of the measurements. Those marked in green are modifications to the original design by Markus F.&lt;br /&gt;
The Eagle CAD files by Asko B. for three variants can be found in the discussion thread at http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
This is the article about the first version of the transistor tester by Markus F.: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (Français) ==&lt;br /&gt;
&lt;br /&gt;
En pricipe le logiciel peut être configuré de manière à tourner sans modifications sur le hardware présenté par Markus F. (voir ci-dessous).&lt;br /&gt;
&lt;br /&gt;
Quelques modifications sont pourtant utiles :&lt;br /&gt;
&lt;br /&gt;
* Le processeur devrait être piloté par une horloge de 8 MHz, de préférence avec un quartz externe. A cette fin il faut modifier les fusibles (&amp;quot;fuses&amp;quot;) du processeur ATmega. Un quartz de 16 MHz peut être utilisé sous condition de configurer le logiciel en conséquence par l&#039;intermédiaire du Makefile.&lt;br /&gt;
* Une résistance &amp;quot;pull up&amp;quot; d&#039;environ 27 kΩ devrait être ajoutée entre le pin 13 (PD7) du ATmega et l&#039;alimentation VCC.&lt;br /&gt;
* Le condensateur 100 nF au pin 21 (AREF) peut être supprimé ou, mieux, être remplacé par un condensateur 1 nF.&lt;br /&gt;
* Si la mise en marche électronique du testeur cause problème, il faut au moins réduire la valeur du condensateur C2 à la base du transistor T1 à 10 nF et, le cas échéant, réduire la valeur de la résistance R7 à 3,3 kΩ. Le schéma complet et des détails à cet égard se trouvent dans la documentation pdf.&lt;br /&gt;
&lt;br /&gt;
Les raisons pour ces modifications ainsi que des indications supplémentaires sont détaillées au chapitre &amp;quot;Hardware&amp;quot; de ma documentation pdf. L&#039;utilisation d&#039;un processeur ATmega168 ou ATmega328 est recommandée, parce qu&#039;en cas de besoin la fonction &amp;quot;auto-scale&amp;quot; du convertisseur analogique-numérique (ADC) passe de la référence de 5 V (VCC) vers la tension de référence interne. La référence interne du ATmega8 est de 2,56 V, alors que celle des autres processeurs est de 1,1 Volt. Avec 1,1 V on atteint une meilleure résolution du convertisseur ADC lors de la mesure de tensions en dessous de 1 Volt.&lt;br /&gt;
Le processeur ATmega8 peut être remplacé par un ATmega168 ou ATmega328 sans aucune modification du schéma du testeur!&lt;br /&gt;
Voici la partie du [https://www.mikrocontroller.net/wikifiles/thumb/6/64/TransistorTesterVC1.png/779px-TransistorTesterVC1.png schéma] responsable pour les mesures.&lt;br /&gt;
&lt;br /&gt;
Les circuits pour l&#039;alimentation par batterie et l&#039;arrêt automatique ne sont pas représentés sur ce schéma.&lt;br /&gt;
&lt;br /&gt;
Les composants marqués en rouge ne sont pas indispensables, mais ils peuvent contribuer à améliorer la précision des mesures. Les composants marqués en vert sont changés par rapport au projet original de Markus F.&lt;br /&gt;
Les fichiers CAD au format Eagle pour trois variantes mis à disposition par Asko B. se trouvent dans le fil de discussion sous l&#039;adresse :&lt;br /&gt;
http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Voici l&#039;article concernant le première version du testeur de transistors par Markus F. :[[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Doku lässt sich immer im SVN abrufen.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger112k.pdf|Kurzbeschreibung (deutsch) Version 1.12k (2017-01-20)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttester_ger112k.pdf Anleitung (deutsch) Version 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/russian/ttester_rus112k.pdf инструкции (русский) Версия 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Затем щелкаем в папке правой кнопкой мыши, выбираем SVN Checkout, вводим следующий адрес  [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] и получаем свежую рабочию копию репозитория.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
The most up-to-date versions of software and documentation is obtainable in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|Short description (english) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/english/ttester_eng112k.pdf Manual (English) Version 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Français) ==&lt;br /&gt;
&lt;br /&gt;
La version actuelle du logiciel ainsi que la documentation sont dosponibles à tout moment au [https://www.mikrocontroller.net/svnbrowser/transistortester/ repositoire SVN].&lt;br /&gt;
&lt;br /&gt;
La documentation se trouve sous&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttinfo_ger112k.pdf Description succinte (allemand) version 1.12k (2017-02-18)] et&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttester_ger112k.pdf Mode d&#039;emploi détaillé (allemand) version 1.12k (2017-02-18)]&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs peuvent télécharger le répertoire choisi comme &amp;quot;GNU tarball&amp;quot; via [https://www.mikrocontroller.net/svnbrowser/transistortester/ svnbrowser]. &lt;br /&gt;
Après sélection du répertoire souhaité, il suffit de cliquer le lien &amp;quot;Download GNU tarball&amp;quot; qui se trouve en-dessous de la liste des repertoires/fichiers.&lt;br /&gt;
&lt;br /&gt;
Pour ouvrir le fichier ainsi téléchargé &amp;quot;transistortester*.tar.gz&amp;quot;, les utilisateurs sous Windows ont besoin d&#039;un logiciel approprié, comme p. ex. l&#039;application freeware [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Après le déballage de l&#039;archive transistortester*.tar.gz, les répertoires et fichiers sélectionnés pour le téléchargement se trouvent sur le disque de l&#039;ordinateur local.&lt;br /&gt;
Un accès direct aux fichiers via le svnbrowser n&#039;est pas possible!&lt;br /&gt;
&lt;br /&gt;
Il existe une méthode alternative pour accéder au contenu du repositoire SVN : c&#039;est l&#039;installation du plug-in TortoiseSVN de l&#039;explorateur de Windows. &lt;br /&gt;
L&#039;accès direct aux fichiers du repositoire SVN est alors possible via l&#039;explorateur sous &amp;quot;svn://mikrocontroller.net/transistortester&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs sous Linux peuvent accéder directement au repositoire à l&#039;aide de l&#039;application svn.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if it is done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed.&lt;br /&gt;
&lt;br /&gt;
== Hint to Cloners and Sellers ==&lt;br /&gt;
Dear Transistortester Cloners and Sellers!&lt;br /&gt;
&lt;br /&gt;
We don&#039;t mind if you produce and sell clones of the Transistortester. It&lt;br /&gt;
provides an inexpensive great little tool for electronics enthusiasts&lt;br /&gt;
and beginners, but PLEASE note the links to the project&#039;s webpage,&lt;br /&gt;
source repo and documentation. You would add more value by giving users&lt;br /&gt;
that information to be able to update the firmware and to understand all&lt;br /&gt;
the features. If you do any modifications to the firmware, please send&lt;br /&gt;
us a copy for the repo. And if you would send us your Transistortester&lt;br /&gt;
clones, we would be able to keep the firmware as compatible as possible.&lt;br /&gt;
Don&#039;t forget, this an OSHW project!&lt;br /&gt;
&lt;br /&gt;
Best regards,&lt;br /&gt;
Transistortester team&lt;br /&gt;
&lt;br /&gt;
亲爱的晶体管测试仪复制品生产商和卖家:&lt;br /&gt;
&lt;br /&gt;
如果您生产和销售晶体管测试仪的复制品，我们不会介意。它可以为电子爱好者和初学者提供一个便宜的小工具，但销售时请注意提供项目网页的链结，源代码和文档。&lt;br /&gt;
通过链结向用户提供能够更新固件和了解所有功能的信息来增加产品的价值。如果您对固件进行任何修改，请向我们发送一份备份。如果您向我们发送晶体管测试仪的样品，&lt;br /&gt;
我们将能够保持固件尽可能兼容。别忘了，这是一个OSHW(开源硬件)项目！&lt;br /&gt;
&lt;br /&gt;
送上最好的祝福，&lt;br /&gt;
晶体管测试团队&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Messtechniker&#039;&#039;&#039; || || Fernsteuerfuktion für die &amp;quot;m&amp;quot;-Version (Markus).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=96963</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=96963"/>
		<updated>2017-08-09T08:07:15Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Downloads (your-language) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168, ATmega328 or ATmega644 and ATmega1284 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 or 4x20 characters.&lt;br /&gt;
* Also a graphical display with the ST7565, NT7108 or ST7920 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible. You can also connect color displays with ILI9341 or ILI9163 controller&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins for universal use.&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* If the processor has at least 32K flash memory, you can use the samplingADC method from Pieter-Tjerk to get a resolution of up to 0.01 pF for capacitors with lower capacity than 100 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* If your processor has at least 32K flash, you can use the samplingADC method to measure lesser inductances with a parallel capacitor of known capacity. The resonant frequency and the computed inductance value is shown and additionally the quality factor. &lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 20 nF is built in. The resolution is 0.01 Ohm. For lower capacity values the accuracy of ESR result become more worth.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Introduction (Français) ==&lt;br /&gt;
&lt;br /&gt;
Projet d&#039;origine : http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Perfectionné par l&#039;auteur Karl-Heinz Kübbeler, voir le [https://www.mikrocontroller.net/topic/248078 forum de discussion afférent].&lt;br /&gt;
&lt;br /&gt;
J&#039;ai continué à développer le projet de Markus Frejek et plus spécifiquement le logiciel. Sur la base des caractéristiques améliorées certains ont proposé de l&#039;appeler testeur de composants. Personnellement, je considère pourtant comme propriéte éminente la détermination automatique du type et des caractéristiques des transistors, telle que développée par Markus Frejek.&lt;br /&gt;
&lt;br /&gt;
J&#039;aimerais citer ici les caractéristiques les plus importantes :&lt;br /&gt;
&lt;br /&gt;
* Utilisation des processeurs ATmega8, ATmega168, ATmega328 ou alors ATmega644 et ATmega1284.&lt;br /&gt;
* Affichage des résultats mesurés par un afficheur LCD de 2x16 ou 4x20 caractères.&lt;br /&gt;
* Au lieu d&#039;un afficheur LCD à 2x16 caractères, on peut aussi utiliser un afficheur graphique sur la base d&#039;un contrôleur ST7565, NT7108 oder ST7920. Le raccordement d&#039;un afficheur OLED à contrôleur SSD1306 via interface SPI ou I2C est possible. Les afficheurs en couleur à contrôleur ILI9341 ou ILI9163 peuvent également être utilisés.&lt;br /&gt;
* Utilisation par touche unique avec coupure automatique temporisée.&lt;br /&gt;
* L&#039;appareil possède trois ports de test universels (Pins Test TP1, TP2 et TP3).&lt;br /&gt;
* Détermination automatique du type des transistors bipolaires NPN et PNP, des MOSFETs à canal N ou P, des JFETs, des diodes ainsi que des thyristors et TRIACs à faible puissance.&lt;br /&gt;
* Détermination automatique du schéma de raccordement des composants, les composants pouvant être connectés de façon quelconque.&lt;br /&gt;
* Mesure du facteur d&#039;amplification de courant (hfe) et de la tension base-émetteur des transistors bipolaires, y inclus les transistors Darlington.&lt;br /&gt;
* Détection automatique d&#039;une diode protectrice intégrée aux transistors bipolaires et MOSFETs.&lt;br /&gt;
* Dans certains cas un transistor parasitaire peut être détecté lors du test de transistors avec diode protectrice (NPNp = NPN + PNP parasitaire).&lt;br /&gt;
* Jusqu&#039;à deux résistances peuvent être mesurées simultanément avec une résolution de 0,1 Ohm. La plage de mesure dépasse les 50 MOhm. Lors de l&#039;utilisation d&#039;un processeur ATmega168/328 les résistances en-dessous de 10 Ohm sont mesurées par la méthode ESR (résistance série) avec une résolution de 0.01 Ohm.&lt;br /&gt;
* Les condensateurs sont mesurés dans une plage de 35 pF à 100 mF avec une résolution de 1 pF.&lt;br /&gt;
* Lorsque la taille de la mémoire Flash est de 32 K, les condensateurs en dessous de 100 pF peuvent être mesurés par la méthode SamplingADC de [https://wwwhome.ewi.utwente.nl/~ptdeboer/ Pieter-Tjerk] avec une résolution jusqu&#039;à 0.01 pF.&lt;br /&gt;
* Les résistances et condensateurs sont affichés avec leur symbole, entouré du numéro des bornes de raccordement.&lt;br /&gt;
* Les valeurs résistances et condensateurs sont affichées avec 4 chiffres décimaux dans la dimension correcte.&lt;br /&gt;
* Dans le cas de diodes détachées, l&#039;appareil effectue aussi la mesure des valeurs de la capacité et (à partir de la version 1.08k) du courant de fuite en direction inverse.&lt;br /&gt;
* Jusqu&#039;à deux diodes sont également affichées avec leur symbole en observant la direction de passage du courant. Les symboles sont entourés des numéros des bornes de raccordement. La valeur du seuil de tension est également affichée.&lt;br /&gt;
* Le processeur ATmega168/328 prévoit un mode &amp;quot;self test&amp;quot; (test auto) permettant un calibrage de la capacité respectivent de la résistance à vide ainsi que d&#039;autres paramètres. &lt;br /&gt;
* Le processeur ATmega168/328 permet aussi la détection et la mesure d&#039;inductivités supérieures à 0.01 mH jusqu&#039;à plus de 20 H.&lt;br /&gt;
* Avec une mémoire Flash minimale de 32 K il est possible, moyennant la connexion parallèle d&#039;un condensateur de capacité connue, de mesurer des inductivités de faible valeur par la méthode SamplingADC. Sont affichés, en outre de la fréquence de résonnance, la valeur calculée de l&#039;inductivité et le facteur de perte.&lt;br /&gt;
* Le processeur ATmega168/328 permet une mesure par la méthode ESR (résistance série équivalente ou Equivalent Series Resistance) des condensteurs d&#039;au moins 20 nF avec une résolution de 0.01 Ohm. Notez cependant que la précision des résultats est moindre pour les faibles valeurs de capacité.&lt;br /&gt;
* Le processeur ATmega168/328 mesure la perte de tension Vloss des condensateurs supérieurs à 5 nF en analysant la tenue en tension après une impulsion de charge. Ceci permet d&#039;estimer le facteur de perte des condensateurs.&lt;br /&gt;
* Des fonctions supplémentaires sont disponibles avec un processeur ATmega328. Un menu peut être activé moyennant une pression de la touche d&#039;une durée supérieure à 0.5 s. Les fonctions spéciales peuvent alors être choisies dans une liste. Une pression de courte durée affiche la fonction suivante de la liste. Une pression de longue durée lance la fonction affichée. Ci-dessous les fonctions supplémentaires implémentées à présent :&lt;br /&gt;
** Mesure de fréquences au pin PD4, utilsé en même temps pour le raccordement de l&#039;afficheur LCD. Pour la mesure, le pin est configuré en tant qu&#039;entrée. La fréquence appliquée est d&#039;abord comptée pendant une seconde. Si la fréquence est inférieure à 25 kHz, la période moyenne est mesurée. Sur base de la période la fréquence est calculée avec une résolution allant jusqu&#039;à 0.001 mHz.&lt;br /&gt;
** Mesure d&#039;une tension externe via le pin PC3, sous condition que celui-ci ne soit pas utilisé comme port de sortie sériel. Lors de l&#039;utilisation d&#039;un ATmega328 en boitier PLCC à 32 pins un des pins ADC6 ou ADC7 peut être affecté à la mesure de tension. Comme un diviseur de tension 10:1 est prévu, des tensions de 0 à 50 V peuvent être mesurées. Une extension du circuit (converisseur DC-DC) permet alors de mesurer des diodes Zener.&lt;br /&gt;
** Générateur de tension au Port TP2. Par l&#039;intermédiaire de la résistance de 680 Ohm raccordée au pin PB2, un signal avec une fréquence variable entre 1 Hz et 2 MHz peut être émis via le port TP2. Le port TP1 est alors raccordé à la masse.&lt;br /&gt;
** Générateur d&#039;impulsions au port TP2 à fréquence fixe et rapport de la largeur d&#039;impulsion variable. Dans cette fonction, le compteur 1 est utilisé comme compteur à 10 bits. Le port TP1 est raccordé à la masse. La largeur d&#039;impulsion peut être augmentée de 1% par une pression courte de la touche, et de 10% par une pression longue.&lt;br /&gt;
** Une variante de la fonction de mesure de la capacité et de l&#039;ESR permet de mesurer des condensateurs de 2 µF à 50 mF dans leur circuit. A cette fin ceux-ci seront raccordés aux pins Test TP1 et TP3. Il est particulièrement important que les condensateurs ainsi mesurés n&#039;ont plus aucune charge résiduelle.&lt;br /&gt;
&lt;br /&gt;
Lorsque l&#039;option POWER_OFF était activée au niveau du fichier de configuration (Makefile), les fonctions supplémentaires tout comme la fonction de dialogue elle même sont limitées dans le temps.&lt;br /&gt;
Pour des informations plus détaillées voir la documentation au format pdf, en langue allemande ou anglaise. Une traduction russe de la documentation est également disponible.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Software (Français) ==&lt;br /&gt;
&lt;br /&gt;
Le logiciel a été développé sur la base du travail de Markus F.&lt;br /&gt;
La partie concernant la mesure des condensateurs a été réécrite complétement et la mesure des résistances a été revisée de façon considérable. En cas de difficultés ou de problèmes il y a lieu de me contacter par mail ou via le forum de discussions. Pour être en mesure de lever les problèmes je dois d&#039;abord les connaître.&lt;br /&gt;
&lt;br /&gt;
Dans ma documentation au format pdf, en langue allemande ou anglaise, j&#039;ai décrit des détails supplémentaires, les différentes procédures de mesure ainsi que des exemples de résultats. L&#039;on y trouve aussi des indications pour la configuration du logiciel à l&#039;aide des paramètres et options du fichier &amp;quot;Makefile&amp;quot;.&lt;br /&gt;
Les commentaires dans les codes source sont en anglais.&lt;br /&gt;
&lt;br /&gt;
J&#039;ai intégré dans le logiciel une nouvelle fonction de test automatique vérifiant le fonctionnement correct du testeur. Le test automatique comprend aussi une routine de calibrage.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden. Ein 16 MHz Quarz ist auch verwendbar, wenn die Software in der Makefile angepasst ist.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software can be configured to run without any changes on the hardware developed by Markus F.&lt;br /&gt;
&lt;br /&gt;
But a few modifications still make sense:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. To this purpose the fuses have to be set. A 16 MHz quartz may also be used if the software is adapted through the Makefile option.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turns on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF. Where necessary resisitor R7 should be decreased to 3.3 kΩ. The circuit diagram and further detail is to be found in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The reasons and details concerning these changes as well as further hints about new implementations are explained in the hardware section of my PDF documentation. ATmega168 or ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to the 1.1V internal reference. The ATmega8 has a 2.56V internal reference which is inferior for measurements below 1V. The ATmega8 can be replaced by a ATmega168/328 without changes to the hardware. Here is the part from the [https://www.mikrocontroller.net/wikifiles/thumb/6/64/TransistorTesterVC1.png/779px-TransistorTesterVC1.png circuit diagram] that is responsible for the measurements.&lt;br /&gt;
&lt;br /&gt;
The circuits for the battery supply and the automatic shutdown are not shown by this circuit diagram.&lt;br /&gt;
&lt;br /&gt;
You could go without the components marked in red, but they may enhance the precision of the measurements. Those marked in green are modifications to the original design by Markus F.&lt;br /&gt;
The Eagle CAD files by Asko B. for three variants can be found in the discussion thread at http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
This is the article about the first version of the transistor tester by Markus F.: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (Français) ==&lt;br /&gt;
&lt;br /&gt;
En pricipe le logiciel peut être configuré de manière à tourner sans modifications sur le hardware présenté par Markus F. (voir ci-dessous).&lt;br /&gt;
&lt;br /&gt;
Quelques modifications sont pourtant utiles :&lt;br /&gt;
&lt;br /&gt;
* Le processeur devrait être piloté par une horloge de 8 MHz, de préférence avec un quartz externe. A cette fin il faut modifier les fusibles (&amp;quot;fuses&amp;quot;) du processeur ATmega. Un quartz de 16 MHz peut être utilisé sous condition de configurer le logiciel en conséquence par l&#039;intermédiaire du Makefile.&lt;br /&gt;
* Une résistance &amp;quot;pull up&amp;quot; d&#039;environ 27 kΩ devrait être ajoutée entre le pin 13 (PD7) du ATmega et l&#039;alimentation VCC.&lt;br /&gt;
* Le condensateur 100 nF au pin 21 (AREF) peut être supprimé ou, mieux, être remplacé par un condensateur 1 nF.&lt;br /&gt;
* Si la mise en marche électronique du testeur cause problème, il faut au moins réduire la valeur du condensateur C2 à la base du transistor T1 à 10 nF et, le cas échéant, réduire la valeur de la résistance R7 à 3,3 kΩ. Le schéma complet et des détails à cet égard se trouvent dans la documentation pdf.&lt;br /&gt;
&lt;br /&gt;
Les raisons pour ces modifications ainsi que des indications supplémentaires sont détaillées au chapitre &amp;quot;Hardware&amp;quot; de ma documentation pdf. L&#039;utilisation d&#039;un processeur ATmega168 ou ATmega328 est recommandée, parce qu&#039;en cas de besoin la fonction &amp;quot;auto-scale&amp;quot; du convertisseur analogique-numérique (ADC) passe de la référence de 5 V (VCC) vers la tension de référence interne. La référence interne du ATmega8 est de 2,56 V, alors que celle des autres processeurs est de 1,1 Volt. Avec 1,1 V on atteint une meilleure résolution du convertisseur ADC lors de la mesure de tensions en dessous de 1 Volt.&lt;br /&gt;
Le processeur ATmega8 peut être remplacé par un ATmega168 ou ATmega328 sans aucune modification du schéma du testeur!&lt;br /&gt;
Voici la partie du [https://www.mikrocontroller.net/wikifiles/thumb/6/64/TransistorTesterVC1.png/779px-TransistorTesterVC1.png schéma] responsable pour les mesures.&lt;br /&gt;
&lt;br /&gt;
Les circuits pour l&#039;alimentation par batterie et l&#039;arrêt automatique ne sont pas représentés sur ce schéma.&lt;br /&gt;
&lt;br /&gt;
Les composants marqués en rouge ne sont pas indispensables, mais ils peuvent contribuer à améliorer la précision des mesures. Les composants marqués en vert sont changés par rapport au projet original de Markus F.&lt;br /&gt;
Les fichiers CAD au format Eagle pour trois variantes mis à disposition par Asko B. se trouvent dans le fil de discussion sous l&#039;adresse :&lt;br /&gt;
http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Voici l&#039;article concernant le première version du testeur de transistors par Markus F. :[[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Doku lässt sich immer im SVN abrufen.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger112k.pdf|Kurzbeschreibung (deutsch) Version 1.12k (2017-01-20)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttester_ger112k.pdf Anleitung (deutsch) Version 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/russian/ttester_rus112k.pdf инструкции (русский) Версия 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Затем щелкаем в папке правой кнопкой мыши, выбираем SVN Checkout, вводим следующий адрес  [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] и получаем свежую рабочию копию репозитория.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
The most up-to-date versions of software and documentation is obtainable in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|Short description (english) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/english/ttester_eng112k.pdf Manual (English) Version 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Français) ==&lt;br /&gt;
&lt;br /&gt;
La version actuelle du logiciel ainsi que la documentation sont dosponibles à tout moment au [https://www.mikrocontroller.net/svnbrowser/transistortester/ repositoire SVN].&lt;br /&gt;
&lt;br /&gt;
La documentation se trouve sous [https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttinfo_ger112k.pdf Description succinte (allemand) version 1.12k (2017-02-18)]&lt;br /&gt;
et&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttester_ger112k.pdf Mode d&#039;emploi détaillé (allemand) version 1.12k (2017-02-18)]&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs peuvent télécharger le répertoire choisi comme &amp;quot;GNU tarball&amp;quot; via [https://www.mikrocontroller.net/svnbrowser/transistortester/ svnbrowser]. &lt;br /&gt;
Après sélection du répertoire souhaité, il suffit de cliquer le lien &amp;quot;Download GNU tarball&amp;quot; qui se trouve en-dessous de la liste des repertoires/fichiers.&lt;br /&gt;
&lt;br /&gt;
Pour ouvrir le fichier ainsi téléchargé &amp;quot;transistortester*.tar.gz&amp;quot;, les utilisateurs sous Windows ont besoin d&#039;un logiciel approprié, comme p. ex. l&#039;application freeware [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Après le déballage de l&#039;archive transistortester*.tar.gz, les répertoires et fichiers sélectionnés pour le téléchargement se trouvent sur le disque de l&#039;ordinateur local.&lt;br /&gt;
Un accès direct aux fichiers via le svnbrowser n&#039;est pas possible!&lt;br /&gt;
&lt;br /&gt;
Il existe une méthode alternative pour accéder au contenu du repositoire SVN : c&#039;est l&#039;installation du plug-in TortoiseSVN de l&#039;explorateur de Windows. &lt;br /&gt;
L&#039;accès direct aux fichiers du repositoire SVN est alors possible via l&#039;explorateur sous &amp;quot;svn://mikrocontroller.net/transistortester&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs sous Linux peuvent accéder directement au repositoire à l&#039;aide de l&#039;application svn.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if it is done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed.&lt;br /&gt;
&lt;br /&gt;
== Hint to Cloners and Sellers ==&lt;br /&gt;
Dear Transistortester Cloners and Sellers!&lt;br /&gt;
&lt;br /&gt;
We don&#039;t mind if you produce and sell clones of the Transistortester. It&lt;br /&gt;
provides an inexpensive great little tool for electronics enthusiasts&lt;br /&gt;
and beginners, but PLEASE note the links to the project&#039;s webpage,&lt;br /&gt;
source repo and documentation. You would add more value by giving users&lt;br /&gt;
that information to be able to update the firmware and to understand all&lt;br /&gt;
the features. If you do any modifications to the firmware, please send&lt;br /&gt;
us a copy for the repo. And if you would send us your Transistortester&lt;br /&gt;
clones, we would be able to keep the firmware as compatible as possible.&lt;br /&gt;
Don&#039;t forget, this an OSHW project!&lt;br /&gt;
&lt;br /&gt;
Best regards,&lt;br /&gt;
Transistortester team&lt;br /&gt;
&lt;br /&gt;
亲爱的晶体管测试仪复制品生产商和卖家:&lt;br /&gt;
&lt;br /&gt;
如果您生产和销售晶体管测试仪的复制品，我们不会介意。它可以为电子爱好者和初学者提供一个便宜的小工具，但销售时请注意提供项目网页的链结，源代码和文档。&lt;br /&gt;
通过链结向用户提供能够更新固件和了解所有功能的信息来增加产品的价值。如果您对固件进行任何修改，请向我们发送一份备份。如果您向我们发送晶体管测试仪的样品，&lt;br /&gt;
我们将能够保持固件尽可能兼容。别忘了，这是一个OSHW(开源硬件)项目！&lt;br /&gt;
&lt;br /&gt;
送上最好的祝福，&lt;br /&gt;
晶体管测试团队&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94968</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94968"/>
		<updated>2017-01-20T16:23:21Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: Version 1.12k&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168, ATmega328 or ATmega644 and ATmega1284 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 or 4x20 characters.&lt;br /&gt;
* Also a graphical display with the ST7565, NT7108 or ST7920 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible. You can also connect color displays with ILI9341 or ILI9163 controller&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins for universal use.&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* If the processor has at least 32K flash memory, you can use the samplingADC method from Pieter-Tjerk to get a resolution of up to 0.01 pF for capacitors with lower capacity than 100 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* If your processor has at least 32K flash, you can use the samplingADC method to measure lesser inductances with a parallel capacitor of known capacity. The resonant frequency and the computed inductance value is shown and additionally the quality factor. &lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 20 nF is built in. The resolution is 0.01 Ohm. For lower capacity values the accuracy of ESR result become more worth.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden. Ein 16 MHz Quarz ist auch verwendbar, wenn die Software in der Makefile angepasst ist.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software runs with only minor changes on the hardware developed by Markus F:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. Therefore the fuses have to be set. A 16 MHz quartz can also be used, if the software is adapted with the Makefile option.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turnes on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF and where necessary resisitor R7 decreased to 3.3 kΩ. The schematic and further detail is in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The ATmega168 and ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to 1.1V internal reference. The ATmega8 has a 2.56V reference which is inferior for measurements below 1V.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Doku lässt sich immer im SVN abrufen.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger112k.pdf|Kurzbeschreibung (deutsch) Version 1.12k (2017-01-20)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttester_ger112k.pdf Anleitung (deutsch) Version 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/russian/ttester_rus112k.pdf инструкции (русский) Версия 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
The most up-to-date versions of software and documentation is obtainable in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|Short description (english) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/english/ttester_eng12k.pdf Manual (English) Version 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if its done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed therefore.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94967</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94967"/>
		<updated>2017-01-20T13:48:47Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: Version 1.12k&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168, ATmega328 or ATmega644 and ATmega1284 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 or 4x20 characters.&lt;br /&gt;
* Also a graphical display with the ST7565, NT7108 or ST7920 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible. You can also connect color displays with ILI9341 or ILI9163 controller&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins for universal use.&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* If the processor has at least 32K flash memory, you can use the samplingADC method from Pieter-Tjerk to get a resolution of up to 0.01 pF for capacitors with lower capacity than 100 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* If your processor has at least 32K flash, you can use the samplingADC method to measure lesser inductances with a parallel capacitor of known capacity. The resonant frequency and the computed inductance value is shown and additionally the quality factor. &lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 20 nF is built in. The resolution is 0.01 Ohm. For lower capacity values the accuracy of ESR result become more worth.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden. Ein 16 MHz Quarz ist auch verwendbar, wenn die Software in der Makefile angepasst ist.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software runs with only minor changes on the hardware developed by Markus F:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. Therefore the fuses have to be set. A 16 MHz quartz can also be used, if the software is adapted with the Makefile option.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turnes on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF and where necessary resisitor R7 decreased to 3.3 kΩ. The schematic and further detail is in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The ATmega168 and ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to 1.1V internal reference. The ATmega8 has a 2.56V reference which is inferior for measurements below 1V.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Doku lässt sich immer im SVN abrufen.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger112k.pdf|Kurzbeschreibung (deutsch) Version 1.12k (2017-01-20)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttester_ger112k.pdf Anleitung (deutsch) Version 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/russian/ttester_rus112k.pdf инструкции (русский) Версия 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
The most up-to-date versions of software and documentation is obtainable in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|Short description (english) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/english/ttester_eng12k.pdf Manual (English) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if its done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed therefore.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94966</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94966"/>
		<updated>2017-01-20T13:45:45Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: Version 1.12k&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168, ATmega328 or ATmega644 and ATmega1284 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 or 4x20 characters.&lt;br /&gt;
* Also a graphical display with the ST7565, NT7108 or ST7920 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible. You can also connect color displays with ILI9341 or ILI9163 controller&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins for universal use.&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* If the processor has at least 32K flash memory, you can use the samplingADC method from Pieter-Tjerk to get a resolution of up to 0.01 pF for capacitors with lower capacity than 100 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* If your processor has at least 32K flash, you can use the samplingADC method to measure lesser inductances with a parallel capacitor of known capacity. The resonant frequency and the computed inductance value is shown and additionally the quality factor. &lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 20 nF is built in. The resolution is 0.01 Ohm. For lower capacity values the accuracy of ESR result become more worth.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden. Ein 16 MHz Quarz ist auch verwendbar, wenn die Software in der Makefile angepasst ist.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software runs with only minor changes on the hardware developed by Markus F:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. Therefore the fuses have to be set. A 16 MHz quartz can also be used, if the software is adapted with the Makefile option.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turnes on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF and where necessary resisitor R7 decreased to 3.3 kΩ. The schematic and further detail is in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The ATmega168 and ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to 1.1V internal reference. The ATmega8 has a 2.56V reference which is inferior for measurements below 1V.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Doku lässt sich immer im SVN abrufen.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger112k.pdf|Kurzbeschreibung (deutsch) Version 1.12k (2017-01-20)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttester_ger112k.pdf Anleitung (deutsch) Version 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/russian/ttester_rus112k.pdf инструкции (русский) Версия 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
The most up-to-date versions of software and documentation is obtainable in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|Short description (english) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|Manual (English) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-en-1.12k-dev.pdf Manual (English) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if its done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed therefore.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94965</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94965"/>
		<updated>2017-01-20T13:40:25Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: Version 1.12k&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168, ATmega328 or ATmega644 and ATmega1284 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 or 4x20 characters.&lt;br /&gt;
* Also a graphical display with the ST7565, NT7108 or ST7920 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible. You can also connect color displays with ILI9341 or ILI9163 controller&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins for universal use.&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* If the processor has at least 32K flash memory, you can use the samplingADC method from Pieter-Tjerk to get a resolution of up to 0.01 pF for capacitors with lower capacity than 100 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* If your processor has at least 32K flash, you can use the samplingADC method to measure lesser inductances with a parallel capacitor of known capacity. The resonant frequency and the computed inductance value is shown and additionally the quality factor. &lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 20 nF is built in. The resolution is 0.01 Ohm. For lower capacity values the accuracy of ESR result become more worth.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden. Ein 16 MHz Quarz ist auch verwendbar, wenn die Software in der Makefile angepasst ist.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software runs with only minor changes on the hardware developed by Markus F:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. Therefore the fuses have to be set. A 16 MHz quartz can also be used, if the software is adapted with the Makefile option.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turnes on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF and where necessary resisitor R7 decreased to 3.3 kΩ. The schematic and further detail is in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The ATmega168 and ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to 1.1V internal reference. The ATmega8 has a 2.56V reference which is inferior for measurements below 1V.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Doku lässt sich immer im SVN abrufen.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger112k.pdf|Kurzbeschreibung (deutsch) Version 1.12k (2017-01-20)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttester_ger112k.pdf Anleitung (deutsch) Version 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_rus111k.pdf|инструкции (русский) Версия 1.11k (2015-02-07)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-ru-1.12k-dev.pdf инструкции (русский) Версия 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
The most up-to-date versions of software and documentation is obtainable in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|Short description (english) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|Manual (English) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-en-1.12k-dev.pdf Manual (English) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if its done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed therefore.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94964</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94964"/>
		<updated>2017-01-20T13:39:41Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: Version 1.12k&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168, ATmega328 or ATmega644 and ATmega1284 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 or 4x20 characters.&lt;br /&gt;
* Also a graphical display with the ST7565, NT7108 or ST7920 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible. You can also connect color displays with ILI9341 or ILI9163 controller&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins for universal use.&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* If the processor has at least 32K flash memory, you can use the samplingADC method from Pieter-Tjerk to get a resolution of up to 0.01 pF for capacitors with lower capacity than 100 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* If your processor has at least 32K flash, you can use the samplingADC method to measure lesser inductances with a parallel capacitor of known capacity. The resonant frequency and the computed inductance value is shown and additionally the quality factor. &lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 20 nF is built in. The resolution is 0.01 Ohm. For lower capacity values the accuracy of ESR result become more worth.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden. Ein 16 MHz Quarz ist auch verwendbar, wenn die Software in der Makefile angepasst ist.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software runs with only minor changes on the hardware developed by Markus F:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. Therefore the fuses have to be set. A 16 MHz quartz can also be used, if the software is adapted with the Makefile option.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turnes on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF and where necessary resisitor R7 decreased to 3.3 kΩ. The schematic and further detail is in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The ATmega168 and ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to 1.1V internal reference. The ATmega8 has a 2.56V reference which is inferior for measurements below 1V.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Doku lässt sich immer im SVN abrufen.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger112k.pdf|Kurzbeschreibung (deutsch) Version 1.12k (2017-01-20)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_ger112k.pdf|Anleitung (deutsch) Version 1.12k (2017-01-20)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/svn2github/transistortester/tree/master/Doku/tags/german/ttester_ger112k.pdf Anleitung (deutsch) Version 1.12k (2017-01-20)]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_rus111k.pdf|инструкции (русский) Версия 1.11k (2015-02-07)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-ru-1.12k-dev.pdf инструкции (русский) Версия 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
The most up-to-date versions of software and documentation is obtainable in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|Short description (english) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|Manual (English) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-en-1.12k-dev.pdf Manual (English) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if its done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed therefore.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94963</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94963"/>
		<updated>2017-01-20T13:27:25Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Hardware (English) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168, ATmega328 or ATmega644 and ATmega1284 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 or 4x20 characters.&lt;br /&gt;
* Also a graphical display with the ST7565, NT7108 or ST7920 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible. You can also connect color displays with ILI9341 or ILI9163 controller&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins for universal use.&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* If the processor has at least 32K flash memory, you can use the samplingADC method from Pieter-Tjerk to get a resolution of up to 0.01 pF for capacitors with lower capacity than 100 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* If your processor has at least 32K flash, you can use the samplingADC method to measure lesser inductances with a parallel capacitor of known capacity. The resonant frequency and the computed inductance value is shown and additionally the quality factor. &lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 20 nF is built in. The resolution is 0.01 Ohm. For lower capacity values the accuracy of ESR result become more worth.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden. Ein 16 MHz Quarz ist auch verwendbar, wenn die Software in der Makefile angepasst ist.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software runs with only minor changes on the hardware developed by Markus F:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. Therefore the fuses have to be set. A 16 MHz quartz can also be used, if the software is adapted with the Makefile option.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turnes on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF and where necessary resisitor R7 decreased to 3.3 kΩ. The schematic and further detail is in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The ATmega168 and ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to 1.1V internal reference. The ATmega8 has a 2.56V reference which is inferior for measurements below 1V.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Doku lässt sich immer im SVN abrufen.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger112k.pdf|Kurzbeschreibung (deutsch) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_ger111k.pdf|Anleitung (deutsch) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-de-1.12k-dev.pdf Anleitung (deutsch) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_rus111k.pdf|инструкции (русский) Версия 1.11k (2015-02-07)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-ru-1.12k-dev.pdf инструкции (русский) Версия 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
The most up-to-date versions of software and documentation is obtainable in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|Short description (english) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|Manual (English) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-en-1.12k-dev.pdf Manual (English) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if its done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed therefore.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94962</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94962"/>
		<updated>2017-01-20T13:25:17Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Hardware (deutsch) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168, ATmega328 or ATmega644 and ATmega1284 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 or 4x20 characters.&lt;br /&gt;
* Also a graphical display with the ST7565, NT7108 or ST7920 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible. You can also connect color displays with ILI9341 or ILI9163 controller&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins for universal use.&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* If the processor has at least 32K flash memory, you can use the samplingADC method from Pieter-Tjerk to get a resolution of up to 0.01 pF for capacitors with lower capacity than 100 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* If your processor has at least 32K flash, you can use the samplingADC method to measure lesser inductances with a parallel capacitor of known capacity. The resonant frequency and the computed inductance value is shown and additionally the quality factor. &lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 20 nF is built in. The resolution is 0.01 Ohm. For lower capacity values the accuracy of ESR result become more worth.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden. Ein 16 MHz Quarz ist auch verwendbar, wenn die Software in der Makefile angepasst ist.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software runs with only minor changes on the hardware developed by Markus F:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. Therefore the fuses have to be set.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turnes on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF and where necessary resisitor R7 decreased to 3.3 kΩ. The schematic and further detail is in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The ATmega168 and ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to 1.1V internal reference. The ATmega8 has a 2.56V reference which is inferior for measurements below 1V.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Doku lässt sich immer im SVN abrufen.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger112k.pdf|Kurzbeschreibung (deutsch) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_ger111k.pdf|Anleitung (deutsch) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-de-1.12k-dev.pdf Anleitung (deutsch) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_rus111k.pdf|инструкции (русский) Версия 1.11k (2015-02-07)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-ru-1.12k-dev.pdf инструкции (русский) Версия 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
The most up-to-date versions of software and documentation is obtainable in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|Short description (english) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|Manual (English) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-en-1.12k-dev.pdf Manual (English) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if its done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed therefore.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94961</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94961"/>
		<updated>2017-01-20T13:22:47Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Introduction (English) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168, ATmega328 or ATmega644 and ATmega1284 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 or 4x20 characters.&lt;br /&gt;
* Also a graphical display with the ST7565, NT7108 or ST7920 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible. You can also connect color displays with ILI9341 or ILI9163 controller&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins for universal use.&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* If the processor has at least 32K flash memory, you can use the samplingADC method from Pieter-Tjerk to get a resolution of up to 0.01 pF for capacitors with lower capacity than 100 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* If your processor has at least 32K flash, you can use the samplingADC method to measure lesser inductances with a parallel capacitor of known capacity. The resonant frequency and the computed inductance value is shown and additionally the quality factor. &lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 20 nF is built in. The resolution is 0.01 Ohm. For lower capacity values the accuracy of ESR result become more worth.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software runs with only minor changes on the hardware developed by Markus F:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. Therefore the fuses have to be set.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turnes on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF and where necessary resisitor R7 decreased to 3.3 kΩ. The schematic and further detail is in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The ATmega168 and ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to 1.1V internal reference. The ATmega8 has a 2.56V reference which is inferior for measurements below 1V.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Doku lässt sich immer im SVN abrufen.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger112k.pdf|Kurzbeschreibung (deutsch) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_ger111k.pdf|Anleitung (deutsch) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-de-1.12k-dev.pdf Anleitung (deutsch) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_rus111k.pdf|инструкции (русский) Версия 1.11k (2015-02-07)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-ru-1.12k-dev.pdf инструкции (русский) Версия 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
The most up-to-date versions of software and documentation is obtainable in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|Short description (english) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|Manual (English) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-en-1.12k-dev.pdf Manual (English) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if its done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed therefore.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94960</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94960"/>
		<updated>2017-01-20T13:02:34Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Einleitung (deutsch) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168, ATmega328 oder auch ATmega644 und ATmega1284 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen oder 4x20 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565, NT7108 oder ST7920 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich. Farbdisplays mit ILI9341 oder ILI9163 Controller können ebenfalls verwendet werden.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird in einigen Fällen ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Wenn 32K Flash Speicher verfügbar sind, können mit der SamplingADC Methode von Pieter-Tjerk Kondensatoren unter 100pF mit einer Auflösung von bis zu 0.01 pF gemessen werden.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Mit mindestens 32K Flash Speicher können durch einen parallel geschalteten Kondensator bekannter Kapazität auch kleine Induktivitäten mit der SamplingADC Methode gemessen werden. Es wird neben der Schwingfrequenz der errechnete Induktivitätswert und die Güte ausgegeben. &lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 20 nF mit einer Auflösung von 0.01 Ohm integriert. Bei kleinen Kapazitätswerten wird die Genauigkeit der Messung allerdings schlechter.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber besonders darauf geachtet werden, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168 and ATmega328 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 characters.&lt;br /&gt;
* Also a graphical display with the ST7565 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible.&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 90 nF is built in. The resolution is 0.01 Ohm.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software runs with only minor changes on the hardware developed by Markus F:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. Therefore the fuses have to be set.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turnes on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF and where necessary resisitor R7 decreased to 3.3 kΩ. The schematic and further detail is in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The ATmega168 and ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to 1.1V internal reference. The ATmega8 has a 2.56V reference which is inferior for measurements below 1V.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Doku lässt sich immer im SVN abrufen.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger112k.pdf|Kurzbeschreibung (deutsch) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_ger111k.pdf|Anleitung (deutsch) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-de-1.12k-dev.pdf Anleitung (deutsch) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_rus111k.pdf|инструкции (русский) Версия 1.11k (2015-02-07)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-ru-1.12k-dev.pdf инструкции (русский) Версия 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
The most up-to-date versions of software and documentation is obtainable in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|Short description (english) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|Manual (English) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-en-1.12k-dev.pdf Manual (English) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if its done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed therefore.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94940</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=94940"/>
		<updated>2017-01-19T09:55:14Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: Rücknahme des Wortes Transistor an unsinniger Stelle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler, siehe diesen [https://www.mikrocontroller.net/topic/248078 Diskussionsfaden]&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168 und ATmega328 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors (hfe) und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer [[Auflösung und Genauigkeit|Auflösung]] von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 90 nF mit einer Auflösung von 0.01 Ohm integriert.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer aus einer Liste einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber immer sichergestellt sein, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Introduction (English) ==&lt;br /&gt;
Original design: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Refined design by Karl-Heinz Kübbeler, see this [https://www.mikrocontroller.net/topic/248078 thread], most people there will also understand and answer in English.&lt;br /&gt;
&lt;br /&gt;
I (Karl-Heinz Kübbeler) have carried on the &#039;&#039;transistor tester&#039;&#039; from Markus Frejek and mainly refined the software.&lt;br /&gt;
Because of its improved performance the name component tester was suggested, but I myself see its purpose mainly in determination of the transistor type and its parameters.&lt;br /&gt;
&lt;br /&gt;
These are the characteristics:&lt;br /&gt;
&lt;br /&gt;
* Works with ATmega8, ATmega168 and ATmega328 processors.&lt;br /&gt;
* Shows results in a LCD of 2x16 characters.&lt;br /&gt;
* Also a graphical display with the ST7565 controller is possible. Also a OLED display with the SSD1306 controller and communication via SPI or I2C interface is possible.&lt;br /&gt;
* One-key-operation with automatic power off.&lt;br /&gt;
* Three test pins&lt;br /&gt;
* Automated detection of NPN, PNP, N- and P-channel MOSFET, JFET, diodes und small thyristors, TRIAC&lt;br /&gt;
* Automated detection of pin assignment, this means the device-under-test can be connected to the tester in any order.&lt;br /&gt;
* Measurement of hFE and base-emitter-voltage for bipolar junction transistors, also for Darlingtons.&lt;br /&gt;
* Automated detection of protection diodes in bipolar junction transistors and MOSFETs.&lt;br /&gt;
* Bipolar junction transistors are detected as a transistor with a parasitic transistor (NPNp = NPN + parasitic PNP).&lt;br /&gt;
* Up to two resistors will be measured with a resolution down to 0.1 ohm. The measurement range is up to 50 Mohm (Megaohm). Resistors below 10 ohm will be measured with the ESR approach and a resolution of 0.01 ohm if a ATmega168/328 is used. Beware: [[Auflösung und Genauigkeit|resolution is not accuracy]].&lt;br /&gt;
* Capacitors in the range 35pF (picofarad) to 100mF (millifarad) can be measured with a resolution down to 1 pF.&lt;br /&gt;
* Resistors and capacitors will be displayed with their respective symbol, pin number and value.&lt;br /&gt;
* Up to two diodes will also be displayed with their correctly aligned symbol, pin number and voltage drop.&lt;br /&gt;
* If it&#039;s a single diode, the parasitic capacitance and reverse current will also be measured.&lt;br /&gt;
* For ATmega168/328 a self calibration of zero-capacitance, zero-resistance and other parameters is possible.&lt;br /&gt;
* For ATmega168/328 also inductances of 0.01 mH to 20 H can be detected and measured.&lt;br /&gt;
* for ATmega168/328 a measurement of ESR (Equivalent Series Resistance) of capacitors greater than 90 nF is built in. The resolution is 0.01 Ohm.&lt;br /&gt;
* For ATmega168/328 Vloss of capacitors greater 5 nF is examined. With this it is possible to estimate its Q-factor.&lt;br /&gt;
* For ATmega328 a menu function can be reached with a long key press (&amp;gt; 0.5 s). A short key press switches to the next function. A long key press starts the function. The list of built-in functions until now:&lt;br /&gt;
** Frequency measurement at pin PD4. This pin is also used for the LCD and will be switched to input (High-Z) for the measurement. The frequency is measured for 1 second. If it is below 25 kHz, the period will be measured to improve accuracy. Resolution goes down to 0.001 mHz.&lt;br /&gt;
** Voltage measurement at pin PC3, if it is not used for serial output. Since ATmega328 has 32 pins (PLCC), also ADC6 or ADC7 can be used. A 10:1 divider is used, so voltages up to 50 V can be measured. With an additional DC-DC converter, Zener diodes can also be measured.&lt;br /&gt;
** Frequency generation at port TP2. A 680 ohm resistor connected to pin PB2 can be used to generate a signal with 1 Hz to 2 MHz at port TP2. Port TP1 is ground.&lt;br /&gt;
** Variable PWM (pulse width modulation) with fixed frequency at port TP2. 10-Bit counter. Port TP1 is ground. Short press increases pulse width by 1 %, long press by 10 %.&lt;br /&gt;
** There is a separate capacitance and ESR measurement available. Capacitors of 2 µF to 50 mF can usually be measured in-circuit. You have to ensure beforehand that the capacitor is not holding a charge anymore.&lt;br /&gt;
&lt;br /&gt;
You can read detailed information with measurement examples in the PDF-documentation in English and German. A Russian translation is also available. The PDFs are linked in the download sections of this page.&lt;br /&gt;
&lt;br /&gt;
== Software (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Software (English) ==&lt;br /&gt;
&lt;br /&gt;
The software was developed based on the work of Mark F.&lt;br /&gt;
The capacitor measurement was completely rewritten, and the resistance measurement substantially revised.&lt;br /&gt;
If you have difficulties or problems, notify me via e-mail or the discussion section (thread);&lt;br /&gt;
I can only help if I know about the problems.&lt;br /&gt;
&lt;br /&gt;
For further details, descriptions of the measurement methods, and sample results, see the PDF documentation (German and English versions).&lt;br /&gt;
It also contains information about configuring the software with Makefile parameters and options.&lt;br /&gt;
The source code comments are in English.&lt;br /&gt;
&lt;br /&gt;
The software has a new self-test function, which also does calibration.&lt;br /&gt;
&lt;br /&gt;
== Hardware (deutsch) ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kΩ sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kΩ reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Hardware (English) ==&lt;br /&gt;
&lt;br /&gt;
The new software runs with only minor changes on the hardware developed by Markus F:&lt;br /&gt;
&lt;br /&gt;
* The processor clock should run with 8 MHz, preferably with a external quartz. Therefore the fuses have to be set.&lt;br /&gt;
* A pull up resistor of 27 kΩ should be added between pin 13 (PD7) of the ATmega and VCC.&lt;br /&gt;
* The 100 nF capacitor at pin 21 (AREF) should be removed or even better be replaced with a 1 nF one.&lt;br /&gt;
* If the tester turnes on unreliably, the capacitor C2 at the base of transistor T1 should be decreased to 10 nF and where necessary resisitor R7 decreased to 3.3 kΩ. The schematic and further detail is in the PDF documentation.&lt;br /&gt;
&lt;br /&gt;
The ATmega168 and ATmega328 processors are recommended, because the ADC auto-scale function allows to switch from the 5V reference to 1.1V internal reference. The ATmega8 has a 2.56V reference which is inferior for measurements below 1V.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Die aktuelle Version von Software und Doku lässt sich immer im SVN abrufen.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger112k.pdf|Kurzbeschreibung (deutsch) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_ger111k.pdf|Anleitung (deutsch) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-de-1.12k-dev.pdf Anleitung (deutsch) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus112k.pdf|краткое описание (русский) Версия 1.11k (2016-03-14)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_rus111k.pdf|инструкции (русский) Версия 1.11k (2015-02-07)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-ru-1.12k-dev.pdf инструкции (русский) Версия 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser невозможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (English) ==&lt;br /&gt;
The most up-to-date versions of software and documentation is obtainable in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|Short description (english) Version 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|Manual (English) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/akaJes/transistortester/raw/master/Doku/tags/ttester-en-1.12k-dev.pdf Manual (English) Version 1.12k (2016-11-18)]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para descomprimir el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de descomprimir el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
El acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de acceder al respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, acceder SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有文档和软件都可以在SVN上找到。&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng112k.pdf|简述（英文版） 1.11k (2015-10-09)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|手册（英文版） 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法1 &#039;&#039;&#039;&lt;br /&gt;
在[https://www.mikrocontroller.net/svnbrowser/transistortester/ SVN浏览器]中进入你要下载的目录，点击&#039;&#039;&#039;Download GNU tarball&#039;&#039;&#039;就可以下载到这个目录的压缩包。使用你喜欢的压缩软件解压这个压缩包，就能得到你想要的文件了。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 方法2 &#039;&#039;&#039;&lt;br /&gt;
使用SVN软件直接Checkout这个SVN库就行。如果你是Windows用户，你可能需要安装TortoiseSVN来进行这个操作。&lt;br /&gt;
&lt;br /&gt;
SVN地址是 svn://mikrocontroller.net/transistortester&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
Feel free to put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if its done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed therefore.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR&amp;diff=91075</id>
		<title>AVR</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR&amp;diff=91075"/>
		<updated>2016-01-10T11:26:42Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Projekte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die AVR-[[Mikrocontroller]] von [http://www.atmel.com Atmel] sind wegen ihrer übersichtlichen internen Struktur, der [[ISP | In-System-Programmierbarkeit]], und der Vielzahl von kostenlosen Programmen zur Softwareentwicklung (Assembler, Compiler) beliebt. Diese Eigenschaften und der Umstand, dass viele Typen in einfach handhabbaren DIL-Gehäusen (DIP) verfügbar sind, machen den AVR zum idealen Mikrocontroller für Anfänger. &lt;br /&gt;
&lt;br /&gt;
Über die Bedeutung des Namens &amp;quot;AVR&amp;quot; gibt es verschiedene Ansichten; manche meinen er sei eine Abkürzung für &#039;&#039;&#039;A&#039;&#039;&#039;dvanced &#039;&#039;&#039;V&#039;&#039;&#039;irtual [[RISC|&#039;&#039;&#039;R&#039;&#039;&#039;ISC]], andere vermuten dass der Name aus den Anfangsbuchstaben der Namen der Entwickler (&#039;&#039;&#039;A&#039;&#039;&#039;lf Egin Bogen und &#039;&#039;&#039;V&#039;&#039;&#039;egard Wollan &#039;&#039;&#039;R&#039;&#039;&#039;ISC) zusammengesetzt wurde. Laut Atmel ist der Name bedeutungslos.&lt;br /&gt;
&lt;br /&gt;
==Architektur==&lt;br /&gt;
&lt;br /&gt;
Die Architektur ist eine 8-Bit-[[Harvard-Architektur]], das heißt, es gibt getrennte Busse zum Programmspeicher ([[Speicher#Flash-ROM |Flash-ROM]], dieser ist 16 bit breit) und Schreib-Lese-Speicher ([[Speicher#RAM |RAM]]). Programmcode kann ausschließlich aus dem Programmspeicher ausgeführt werden. Weiterhin sind die Adressräume unabhängig (d.h. beide Speicher besitzen eigene Adressbereiche, die sich wertemäßig überschneiden können). Bei der Programmierung in Assembler und einigen C-Compilern bedeutet dies, dass sich Konstanten aus dem ROM nicht mit dem gleichen Code laden lassen wie Daten aus dem RAM. Abgesehen davon ist der Aufbau des Controllers recht übersichtlich und birgt wenige Fallstricke.&lt;br /&gt;
&lt;br /&gt;
* 32 größtenteils gleichwertige Register&lt;br /&gt;
* davon 1–3 16-bit-Zeigerregister (paarweise)&lt;br /&gt;
* ca. 110 Befehle, die meist 1–2 Taktzyklen dauern&lt;br /&gt;
* Taktfrequenz bis 32 MHz&lt;br /&gt;
* Betriebsspannung von 1,8 – 5,5 V&lt;br /&gt;
* Speicher&lt;br /&gt;
**1–256 kB [[Speicher#Flash-ROM | Flash-ROM]]&lt;br /&gt;
**0–4 kB [[Speicher#EEPROM | EEPROM]]&lt;br /&gt;
**0–16 kB [[speicher#RAM | RAM]]&lt;br /&gt;
* Peripherie: [[AD-Wandler]] 10 bit, 8- und 16-Bit-[[Timer]] mit [[PWM]], [[SPI]], [[I²C]] (TWI), [[UART]], Analog-[[Komparator]], [[Watchdog]]&lt;br /&gt;
* [[Speicher#Mit_XMEM-Interface | 64kB Externer SRAM]] (ATmega128, ATmega64,  ATmega8515/162); (Bei den XMEGAs bis zu 16 MB (128 Mbit) externer SDRAM)&lt;br /&gt;
* [[JTAG]] bei den größeren ATmegas&lt;br /&gt;
* [[debugWire]] bei den neueren AVRs&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
* [[AVR-Studio]]: Kostenlose Enwicklungsumgebung mit Simulator&lt;br /&gt;
* [http://www.atmel.com/tools/atmelstudio.aspx Atmel Studio 6]: Kostenlose Enwicklungsumgebung mit Simulator&lt;br /&gt;
* [http://sourceforge.net/projects/kontrollerlab/ KontrollerLab]: Kostenlose Entwicklungsumgebung für KDE&lt;br /&gt;
* [http://corpsman.de/index.php?doc=projekte/klab Klab]: Kostenlose Entwicklungsumgebung für KDE/GTK2/Win32 (als FPC/Lazarus Quellcode verfügbar, Nachbau von KontrollerLab)&lt;br /&gt;
* [http://www.microsoft.com/germany/Express/product/visualcplusplusexpress.aspx Microsoft Visual C++ Express]: Kostenlose Enwicklungsumgebung (Win),über makefile&lt;br /&gt;
* [http://netbeans.org Netbeans]: Plugin-basierte, kostenlose Entwicklungsumgebung (Windows, Mac, Linux, und Solaris). [http://mattzz.dyndns.org/wiki/bin/view/Projects/ArduinoAndNetbeans  Hier] findet sich ein Howto für das Setup von AVR (z.B. für Arduino)&lt;br /&gt;
* [[AVR Eclipse]]: Plugin-basierte kostenlose Entwicklungsumgebung (Win, Linux, Mac)&lt;br /&gt;
* [[Code::Blocks]]: Freie Entwicklungsumgebung (Win, Linux, Mac), die auch für AVR-Projekte Unterstützung anbietet&lt;br /&gt;
* [[AVR-GCC]]: freier und kostenloser C-Compiler&lt;br /&gt;
* [http://www.mikroe.com/mikropascal/avr Mikropascal] mit einer eingeschränkten kostenlosen Testversion&lt;br /&gt;
* [[LunaAVR]]: Kostenlose, objektbasierte Basic/Pascal-ähnliche Programmiersprache und Entwicklungsumgebung mit Compiler/Assembler und Disassembler (Win, Linux, Mac). http://avr.myluna.de&lt;br /&gt;
* [http://sourceforge.net/projects/avra/ AVRA]: freier und kostenloser AVR-Assembler&lt;br /&gt;
* [http://www.mcselec.com/bascom-avr.htm Bascom AVR] beliebter Basic-Compiler&lt;br /&gt;
* [http://www.e-lab.de AVRCo Pascal Compiler]&lt;br /&gt;
* [http://sourceforge.net/projects/avr-ada/ AVR-Ada]: freier und kostenloser Ada-Compiler mit einigen Treibern und (sehr) knapper Laufzeitbibliothek (RTS)&lt;br /&gt;
* [http://amforth.sourceforge.net/ amforth]:  interaktiver und erweiterbarer Kommandointerpreter für AVR unter GNU Lizenz (Open Source)&lt;br /&gt;
* [[SJC]]: Experimenteller Java-Compiler unter GPL mit AVR-Unterstützung&lt;br /&gt;
* [http://www.atnel.pl/mkAVRCalculator_build_57en.rar mkAvrCalculator]: User friendly fuse bits calculator and GUI for avrdude&lt;br /&gt;
&lt;br /&gt;
== Programmiergeräte ==&lt;br /&gt;
&lt;br /&gt;
Siehe Hauptartikel [[AVR In System Programmer]].&lt;br /&gt;
&lt;br /&gt;
== Boards &amp;amp; Starterkits ==&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch die Artikel in der [[:Kategorie:AVR-Boards|Kategorie AVR-Boards]] und den Artikel zur [[AVR_In_System_Programmer|AVR Programmierung]].&lt;br /&gt;
&lt;br /&gt;
* [[STK200]]&lt;br /&gt;
* [[STK500]]&lt;br /&gt;
* [[STK600]]&lt;br /&gt;
* AVR-ISP / [[AVR_In_System_Programmer#Atmel_AVRISP_MKII|AVRISP mkII]]&lt;br /&gt;
* [[AVR Dragon]]&lt;br /&gt;
* [[AVR Butterfly]]&lt;br /&gt;
* [[AVR Raven]]&lt;br /&gt;
* AVR JTAG-ICE&lt;br /&gt;
&lt;br /&gt;
* [[AVR-ISP-Stick]]&lt;br /&gt;
* [http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=64&amp;amp;products_id=126 RN-Control]&lt;br /&gt;
* [http://www.conrad.de/ce/de/product/791564/Set-C-Control-PRO-AVR32-Bit-Unit-Applicationboard?ref=list C-Control PRO] (AVR32)&lt;br /&gt;
* [http://shop.myavr.de/Systemboards%20und%20Programmer/myAVR%20Board%20MK3%2064K.htm?sp=article.sp.php&amp;amp;artID=100064 myAVR Board]&lt;br /&gt;
* [http://www.pollin.de/shop/dt/NTE5OTExOTk-/Bausaetze_Module/Lernpakete_Elektronik/Lernpaket_AVR_Mikrocontroller_in_C_programmieren.html Pollin-Starterkit]&lt;br /&gt;
* [http://www.ehajo.de/Bausaetze/aTeVaL aTeVaL-Board] – Nachfolger des bekannten Pollin Evalboards. ISP-mkii-Klon &amp;amp; Seriell/USB-Wandler via USB. Testhardware auf der Platine: Taster, LED, Summer, Potis, ...&lt;br /&gt;
* [http://www.lochraster.org/rumpus Rumpus von lochraster.org] ist ein günstiges und gut dokumentiertes Starterkit mit Atmega 168&lt;br /&gt;
* [http://www.das-labor.org/wiki/Laborboard  Laborboard von das-labor.org] – Bauplan Lochrasterplatine mit Atmega32&lt;br /&gt;
* [http://nibo.nicai-systems.de Roboterbausatz NIBO 2] – autonomer Roboter mit einem ATmega128 und einem ATmega88 / [http://nibobee.nicai-systems.de Roboterbausatz NIBObee] – Roboter für Einsteiger mit ATmega16 und integriertem USB-Programmer&lt;br /&gt;
* [http://www.nerdkits.com Nerdkit – Starterkit inkl. Doku]&lt;br /&gt;
* [http://arduino.cc/ Arduino] – Ein modulares System mit verschiedenen Entwicklungsboards (insbesondere auch eins mit ATmega1280, dem mit den vielen dünnen Beinchen), das aufgrund der Nutzung einer JAVA-IDE und &amp;quot;Wiring&amp;quot; besonders einfach zu nutzen ist. Es gibt verschiedene Clones unter Namen wie Freeduino, Seeeduino etc., auch den Lilypad zum Einnähen in Kleidung und Verschaltung mittels leitender Fäden. Die neueren Versionen können über einen standardmäßig mit ausgelieferten Bootloader ohne sonstige Hardware direkt über USB bespielt werden.&lt;br /&gt;
* [[Modulares Board]]&lt;br /&gt;
* [http://www.aevum-mechatronik.de/shop/shop/USER_ARTIKEL_HANDLING_AUFRUF.php?von_suchresultat=true&amp;amp;Ziel_ID=805&amp;amp;Kategorie_ID=148 Modularis-Einsteigerset]&lt;br /&gt;
* [http://weigu.lu/b/mices2 mices2] – Entwicklungsboard zum [http://www.weigu.lu/a Gratis Assembler Kurs]. Integriertes Programmiergerät (USB, avrisp mk2 kompatibel). Spannungsvrsorgung über USB. Platine einseitig, leicht zu bestücken. Viele Schnittstellen (1-Wire, I2C, EIA232 ...), D/A-Wandler, Mikrofonschaltung., Audioverstärker ...&lt;br /&gt;
* [https://guloshop.de/shop/Mikrocontroller-Programmierung/::45.html gulostart] – [[Steckbrett|Steckplatinen]]-basiertes Lernpaket / Einsteiger-Set mit ausführlicher Anleitung. Verwendet ausschließlich [http://de.wikipedia.org/wiki/Open_source Open-Source-Software], kann fast alle DIP-ATtiny/ATmega programmieren. Für USB-Schnittstelle.&lt;br /&gt;
* [http://corpsman.de/index.php?doc=atmel/atmegaboard Atmegaboard] Eagle Daten für ein Testboard zur Nutzung 2er Atmegas gleichzeitig. Weitere Adapterplatinen sowie Source Code sind ebenfalls verfügbar.&lt;br /&gt;
* [http://matrixstorm.com/avr/tinyusbboard/ tinyUSBboard] – Ein sehr sehr preiswertes, Arduino und BASCOM kompatibles Board mit onboard USB Interface und [http://matrixstorm.com/avr/tinyusbboard/#firmwaresotherbootloader auswechelbarem Bootloader].&lt;br /&gt;
* [https://www.olimex.com/Products/AVR/ verschiedene Boards von Olimex]&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
Siehe dazu auch die Artikel in der [[:Kategorie:AVR-Projekte|Kategorie AVR-Projekte]].&lt;br /&gt;
&lt;br /&gt;
* [http://www.electronicsplanet.ch/mikrocontroller/source-code/ATmega8/ATmega8-index.htm 20 C-Code Beispiele für den ATmega8]&lt;br /&gt;
* [[PWM_foxlight]] – LED Lampe mit PWM&lt;br /&gt;
* [[Digitaler Funktionsgenerator]]&lt;br /&gt;
* [[Midi Rekorder mit MMC/SD-Karte]]&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]]&lt;br /&gt;
* [[Pulsuhrempfänger mit AVR Butterfly]]&lt;br /&gt;
* [[DCF77-Funkwecker mit AVR]]&lt;br /&gt;
* [[Fahrradcomputer]]&lt;br /&gt;
* [[Einfacher und billiger Webserver mit AtMega32]]&lt;br /&gt;
* [[AVR RFM12]]&lt;br /&gt;
* [[RF SOAP]] USB / AtMega88 / RFM12, optional LiPo Akku mit Lader&lt;br /&gt;
* [http://www.andreadrian.de/schach/#Selbstbau_Schachcomputer_SHAH Selbstbau Schachcomputer SHAH mit ATMega88V]&lt;br /&gt;
* [[Giess-o-mat]] – vollautomatische Blumengießanlage&lt;br /&gt;
* [http://www.zipfelmaus.com/led-flitzer/ POV-LED mit ATmega8, USB und Beschleunigungssensor]&lt;br /&gt;
* [http://g-heinrichs.de/attiny/ ATtiny-Mikrokontroller für Schulbedarf]&lt;br /&gt;
* [http://www.weigu.lu/b Kleine USB-Bibliothek (C, BASCOM und Assembler) für ATMEL-USB-AVRs]&lt;br /&gt;
* [http://volkszaehler.org/ Ein tolles Smartmeter mit kompletter Middleware!]&lt;br /&gt;
* [http://youtu.be/FoUycAYQEzM Snake auf einer LED Matrix]&lt;br /&gt;
* [[AVR_Transistortester]] - Universeller Bauteiletester&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR-Tutorial]]&lt;br /&gt;
* [[AVR-GCC-Tutorial]]&lt;br /&gt;
* http://www.avr-asm-tutorial.net&lt;br /&gt;
* http://www.electronicsplanet.ch/mikrocontroller/avr-tutorial-c/avr-tutorial-c.htm Kurzanleitung zum Einrichten des STK500 und dem AVR Studio 4&lt;br /&gt;
* [http://www.weigu.lu/a weigu.lu/a]: Gratis Assembler Kurs (pdf). Mehrere hundert Seiten mit vielen neuen Grafiken. Besonders zum Selbststudium geeignet. Es existiert auch ein [http://www.weigu.lu/b/mices2 Entwicklungsboard] zum Kurs.&lt;br /&gt;
* http://www.avr-modelleisenbahn.de/controller/index.htm Datenbuch ATmega8 und Xmega384 mit Beispielen in Assembler (alles deutsch).&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
 	&lt;br /&gt;
* I.Klöckl AVR - Mikrocontroller. MegaAVR® - Entwicklung, Anwendung und Peripherie ISBN 978-3-11-040768-6 (De Gruyter 2015) [http://www.degruyter.com/view/product/449202 Verlags-Webseite]&lt;br /&gt;
* C.Kühnel Programmieren der AVR RISC Mikrocontroller mit BASCOM-AVR ISBN 3898119378 (2000) ISBN 3907857046 (2.Aufl.2004) ISBN 978-3-907857-14-4 (3. überarbeitete und erweiterte Auflage 2010)&lt;br /&gt;
* R.Mittermayr AVR-RISC: Embedded Software selbst entwickeln Franzis 2008 ISBN 3772341071&lt;br /&gt;
* F.Schäffer AVR: Hardware und C-Programmierung in der Praxis Elektor 2008 ISBN 3895762008 [http://www.blafusel.de/books/avr.html Webseite des Autors, Codebeispiele und Leseprobe]&lt;br /&gt;
* G.Schmitt Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie...Oldenbourg 4.Aufl.2008  ISBN 3486587900 ISBN 3486580167 (2006) ISBN 3486577174 (2005) [http://www.oldenbourg-wissenschaftsverlag.de/olb/de/1.c.1495224.de Verlags-Webseite mit Buchauszügen]&lt;br /&gt;
* M.Schwabl-Schmidt Programmiertechniken für AVR-Mikrocontroller Elektor 2008 ISBN 3895761761 [http://www.schwabl-schmidt.de/index.php/buecher Webseite des Autors]&lt;br /&gt;
* M.Schwabl-Schmidt Systemprogrammierung für AVR-Mikrocontroller Elektor 2009 ISBN 3895762180&lt;br /&gt;
* W.Trampert Messen,Steuern und Regeln mit AVR Mikrocontrollern Franzis 2004 ISBN 3772342981&lt;br /&gt;
* W.Trampert AVR-RISC Mikrocontroller Franzis ISBN 3772354769 (2003) ISBN 3772354742 (2002) ISBN 3772354750 (2000)&lt;br /&gt;
* P.Urbanek Embedded Systems: Ein umfassendes Grundlagenwerk ... (2007) ISBN 3981123018 [http://www.ulb.tu-darmstadt.de/tocs/188146911.pdf Inhaltsverzeichnis]&lt;br /&gt;
* S./F.Volpe AVR-Mikrocontroller-Praxis Elektor 2001 ISBN 3895760633&lt;br /&gt;
* R.Walter AVR-Mikrocontroller-Lehrbuch 3. Auflage Denkholz 2009 ISBN 9783981189445 [http://www.rowalt.de/mc/avr/avrbuch/index.htm Webseite des Autors, Buch-Download in geringer Auflösung]&lt;br /&gt;
&lt;br /&gt;
== Tipps &amp;amp; Hinweise ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR Typen]] – Die verschiedenen Typen (AT90S, ATmega, ATtiny)&lt;br /&gt;
* [[AVR Checkliste]] – Liste mit Hinweisen zur Lösung üblicher Probleme&lt;br /&gt;
* [http://blog.coldtobi.de/1_coldtobis_blog/archive/87_little_endianess_guide_for_atmel_avr.html (Little) Endianess Guide for Atmel AVR] Übersicht über die Endianess der AVR und AVR32&lt;br /&gt;
* [[AVR Fuses|Fuse-Bits]] – Das Setzen der Fuse-Bits ist ein berüchtigter Fallstrick bei den AVRs; vor dem Rumspielen damit unbedingt diese Hinweise lesen!&lt;br /&gt;
* [[AVR In System Programmer]] – Programmierhardware&lt;br /&gt;
* [[Pony-Prog Tutorial]] – Hinweise zur Programmiersoftware PonyProg&lt;br /&gt;
* [[AVRDUDE]] – Programmiersoftware für die Kommandozeile&lt;br /&gt;
* [[AVR-GCC-Codeoptimierung]] – Wie man mehr aus dem Controller herausholen kann, ohne ein Assembler-Guru sein zu muessen.&lt;br /&gt;
* [[AVR Softwarepool]] – Verschiedene Softwaremodule und Codeschnippsel aus der Codesammlung&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://revision3.com/systm/avr101 AVR101] – systm Videocast von Revision3 Internet Television (engl.).&lt;br /&gt;
&lt;br /&gt;
Weitere Verweise (Links) auf externe Informationen und Projekte finden sich in der &#039;&#039;&#039;[[Linksammlung#AVR|Linksammlung]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Anmerkungen ===&lt;br /&gt;
&amp;lt;!-- Dieser Teil sollte in einen anderen Artikel --&amp;gt;&lt;br /&gt;
Es gibt nur wenige Typen mit D/A-Wandler (z.B. AT90PWM2); hierfür benutze man PWM oder externe Bausteine.&lt;br /&gt;
&lt;br /&gt;
Die Takterzeugung ist bei AVRs recht einfach gehalten. So gibt es bei den meisten Modellen keine internen PLLs um „krumme“ Prozessor- oder Peripherietaktfrequenzen zu erzeugen, noch ist der Peripherie-Takt vom Prozessortakt abkoppelbar. Einige AVR verfügen über eine PLL, um damit z.B. einen Timer mit Frequenzen über der Systemfrequenz zu takten oder höhere Systemfrequenz aus niederfrequenteren Taktquellen zu erzeugen (vgl. u.a. Datenblätter ATtiny85 und ATtiny861). Die Baudrate serieller Schnittstellen lässt sich nicht gebrochen einstellen, so dass gegebenenfalls ein zur Baudrate passender Quarz oder Resonator zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Für die serielle Programmierung des Flash-Speichers sind 4 Datenleitungen erforderlich und die Taktversorgung muss sicher gestellt sein. Es ist darauf zu achten, dass bei Einstellung der Taktquelle (Fuses) auch die vorhandene Taktquelle ausgewählt wird. Für die Hochvolt-Programmierung (so genannt wegen 12 V am RESET-Anschluss) werden je nach Chip nur 3 Signalleitungen (kleinere ATtinys) oder sehr viele Leitungen benötigt (ATmegas und große ATtinys). Einige Modelle verfügen über eine Debugwire-Schnittstelle, für die im Betrieb zwei Leitungen ausreichen.&lt;br /&gt;
&lt;br /&gt;
Nicht zu verwechseln ist die 8-bit-AVR-Serie mit AVR32. Letztere ist eine 32-bit-Architektur mit recht viel Ähnlichkeit zu Controllern auf Basis eines ARM-Cores. Controller der ATxmega-Serie verfügen über mehr Funktionen als die &amp;quot;traditionellen&amp;quot; AVR (z.B. DMA- und Eventsystem, 12Bit A-D-Wandler). ATxmega sind jedoch für 3,3V-Betrieb ausgelegt und ausschließlich in SMD-Bauform erhältlich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Mikrocontroller]]&lt;br /&gt;
[[Category:AVR| ]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=89780</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=89780"/>
		<updated>2015-09-20T11:09:52Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168 und ATmega328 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer Auflösung von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 90 nF mit einer Auflösung von 0.01 Ohm integriert.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer aus einer Liste einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber immer sichergestellt sein, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kOhm sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kOhm reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen zur neuen Version ==&lt;br /&gt;
Der Thread mit meinen älteren Software-Versionen und einigen Problemfällen sowie Hardware-Vorschlägen ist unter [https://www.mikrocontroller.net/topic/248078#new https://www.mikrocontroller.net/topic/248078#new] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Alle Versionen von der Software und der Doku sind im SVN gespeichert.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger111k.pdf|Kurzbeschreibung (deutsch) Version 1.11k (2015-01-30)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_ger111k.pdf|Anleitung (deutsch) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können auch direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus111k.pdf|краткое описание (русский) Версия 1.11k (2015-01-11)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_rus111k.pdf|инструкции (русский) Версия 1.11k (2015-02-07)]]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser не возможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (english) ==&lt;br /&gt;
All versions of the software and documentation are saved in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng111k.pdf|Short description (english) Version 1.11k (2015-01-05)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|Manual (english) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can also access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para desempacar el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de desempacar el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
Acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de accesar el respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, accesar SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有版本的软件和文档都保存在SVN。&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/wikifiles/0/0b/Ttinfo_eng111k.pdf 短描述（英文版）1.11k（2015—01—05）]&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/wikifiles/8/8f/Ttester_eng111k.pdf 手册（英文版）1.11k（2015—02—08）]&lt;br /&gt;
&lt;br /&gt;
用户可以在当前选定的目录下载“GNU包”。svnbrowser https://www.mikrocontroller.net/svnbrowser/transistortester/  。&lt;br /&gt;
&lt;br /&gt;
Windows用户需要额外的工具，下载transistortester*tar.gz 文件后用7-Zip解压，解包后，你会得到一个可选择的目录，把它复制在您自己的电脑。直接访问不用再在svnbrowser浏览了！&lt;br /&gt;
&lt;br /&gt;
另一种方式来获得的数据访问SVN TortoiseSVN的插件是安装在Windows资源管理器。安装后，你可以访问数据和mikrocontroller.net transistortester svn://mikrocontroller.net/transistortester.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
我想在这里列出的主要特点：&lt;br /&gt;
&lt;br /&gt;
采用ATmega8，atmega168和atmega328处理器。&lt;br /&gt;
&lt;br /&gt;
测量结果显示在一个2x16字符的LCD。&lt;br /&gt;
而液晶2x16字符图形显示也可以是ST7565控制器使用。一个OLED显示器包括一个ssd1306 SPI或I2C总线接口控制器是可行的。&lt;br /&gt;
&lt;br /&gt;
一键测量操作，延时自动关闭电源。关断电流只有20nA，支持电池操作。&lt;br /&gt;
&lt;br /&gt;
该装置具有三个meßports（通用测试针）。&lt;br /&gt;
&lt;br /&gt;
自动检测PNP和NPN型双极晶体管，N、P沟道MOSFET，JFET场效应管，二极管，双二极管，可控硅，电阻，电容，电感。自动检测引脚定义。&lt;br /&gt;
&lt;br /&gt;
自动检测引脚占用的器件组成，可任意连接。&lt;br /&gt;
&lt;br /&gt;
测量的stromverstärkungsfaktors和基极发射极电压双极晶体管，包括darlingtontransistoren。&lt;br /&gt;
&lt;br /&gt;
一种自动检测schutzdiode双极晶体管和MOSFET的。&lt;br /&gt;
&lt;br /&gt;
在双极晶体管的寄生晶体管的检测（schutzdiode一NPNP = +寄生NPN PNP）。&lt;br /&gt;
&lt;br /&gt;
在一到两个电阻测量分辨率达0.1欧姆的测量，通过测量范围至50兆欧。在10欧姆的电阻值为atmega168／328与ESR方法显示分辨率0.01Ω&lt;br /&gt;
&lt;br /&gt;
电容器可以连接到测量领域的一个35pf 100mf分辨率达1 pF的。&lt;br /&gt;
&lt;br /&gt;
电阻器和电容器的符号被发现了，被anschlußpin号码。&lt;br /&gt;
&lt;br /&gt;
电阻和电容器的值到4位小数的显示在正确的尺寸。&lt;br /&gt;
&lt;br /&gt;
最多两个二极管进行显示的symboldarstellung flußrichtungsrichtig包围anschlußpin flußspannung号码和额外的指示。&lt;br /&gt;
&lt;br /&gt;
此外，在个别二极管和kapazitätswert版本也1.08k特大电流方向测量。&lt;br /&gt;
&lt;br /&gt;
为atmega168／328是nullkapazität标定的另一个参数，nullwiderstandes和内建自测试的分支成为可能。&lt;br /&gt;
&lt;br /&gt;
也可以为atmega168 /电感约328 0.01mh～20H检测和测量。&lt;br /&gt;
&lt;br /&gt;
为atmega168／328一ESR（等效串联电阻）测量电容器超过90的NF和分辨率0.01欧姆的集成。&lt;br /&gt;
&lt;br /&gt;
为atmega168／328将电容器5对spannungsverlust vloss ladepuls NF后进行了研究。因此，电容器的善良的估计。&lt;br /&gt;
&lt;br /&gt;
为有一个atmega328菜单功能的按键，一个较长（大于0.5）可以调用其他功能，从一个列表中的可能。一个短的下一个按键显示的功能。一个较长的显示按键启动功能。下面的功能：内置的名单，到目前为止&lt;br /&gt;
&lt;br /&gt;
频率测量在PD4销，也为后续使用的液晶显示器。销用于检测在收到启动。最初的1秒钟的频率计数。如果在25千赫的频率处，也将这一时期的平均频率计算和测量分辨率可达0.001兆赫。&lt;br /&gt;
&lt;br /&gt;
在PC3引脚电压测量，如果未使用的串行输出。在atmega328（32引脚PLCC）也可以联合或adc7引脚使用。1分频器有一个入口可以使用到50V的电压测量。一个放大电路（直流-直流转换器zenerdioden）也可以被测量。&lt;br /&gt;
&lt;br /&gt;
在frequenzerzeugung 2端口。对铅引脚在680欧姆的电阻可以连接与一个信号从一个列表中的可调频率从1 Hz至2 MHz，在端口2输出。该港口是连接到块1。&lt;br /&gt;
&lt;br /&gt;
脉冲宽度调制和脉冲宽度可调的固定频率在2端口。表1用于这些功能的10位计数器使用。该港口是连接到块1。短脉冲宽度可以通过按键的按键通过较长的1%和10%的增加。&lt;br /&gt;
&lt;br /&gt;
与一个单独的容量和ESR测量在TP1和TP3连接电容器可以容纳约2µf至50mf电路中通常也被测量。这应始终确保没有更多的表示电容器。&lt;br /&gt;
&lt;br /&gt;
额外的功能，如dialogfunktion zeitbegrenzt甚至当电源关闭，_选项在配置文件（文件）是打开的。更详细的信息，可以在meßbeispielen PDF文档在德语和英语的阅读。同样，俄罗斯的翻译文件是可用的。&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=89779</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=89779"/>
		<updated>2015-09-20T11:07:48Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168 und ATmega328 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer Auflösung von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 90 nF mit einer Auflösung von 0.01 Ohm integriert.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer aus einer Liste einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber immer sichergestellt sein, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
==============Please see this===========================================================================================&lt;br /&gt;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I don&#039;t know how to contact you, these words are also translation software to do.&lt;br /&gt;
This transistor tester is quite interesting, and I made a OLED SSD1306 display version. Address: http://bbs.yleee.com.cn/thread-41093-1-1.html. If you can contact me through the forum that would be the best。&lt;br /&gt;
&lt;br /&gt;
There has A lot of unsolved problems found in the 2015.9.18 test.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1:Battery_check.c, M644 chip automatically shut down a problem,&lt;br /&gt;
&lt;br /&gt;
Problem ----PORTD = 0; power off //switch&lt;br /&gt;
&lt;br /&gt;
solve----ON_PORT &amp;amp;= ~ (1&amp;lt;&amp;lt;ON_PIN); //switch power off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2:function_menu.c, cap_corr problem, the encoder is defined the same and too complicated.&lt;br /&gt;
&lt;br /&gt;
WITH_ROTARY_SWITCH #ifdef&lt;br /&gt;
If (rotary.incre &amp;gt; FAST_ROTATION) break fast rotation ends setting of Korr&lt;br /&gt;
&lt;br /&gt;
problem ----//if (rotary.count &amp;gt; = 0) {&lt;br /&gt;
&lt;br /&gt;
solve----korr - = rotary.count; / / increase the Korr by rotary.count&lt;br /&gt;
&lt;br /&gt;
problem ----//} {else&lt;br /&gt;
&lt;br /&gt;
problem ----//korr = rotary.count; / / decrease the Korr by rotary.count&lt;br /&gt;
&lt;br /&gt;
problem ----//}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3：The voltage test mode is not ideal, and the measurement is larger than 2.5V.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4:DisplayValue.c, the proposed - voltage takes two decimal places&lt;br /&gt;
&lt;br /&gt;
Display_mV ----void (XX uint16_t, ll uint8_t) {&lt;br /&gt;
&lt;br /&gt;
If (ll = = 2)&lt;br /&gt;
&lt;br /&gt;
DisplayValue ((long) XX, -3, ll+1,&#039;V&#039;);&lt;br /&gt;
&lt;br /&gt;
Else&lt;br /&gt;
&lt;br /&gt;
DisplayValue ((long) XX, -3, ll,&#039;V&#039;);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5: can you start the Chinese language module.&lt;br /&gt;
&lt;br /&gt;
Thanks for providing such a good tool for free.&lt;br /&gt;
&lt;br /&gt;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kOhm sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kOhm reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen zur neuen Version ==&lt;br /&gt;
Der Thread mit meinen älteren Software-Versionen und einigen Problemfällen sowie Hardware-Vorschlägen ist unter [https://www.mikrocontroller.net/topic/248078#new https://www.mikrocontroller.net/topic/248078#new] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Alle Versionen von der Software und der Doku sind im SVN gespeichert.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger111k.pdf|Kurzbeschreibung (deutsch) Version 1.11k (2015-01-30)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_ger111k.pdf|Anleitung (deutsch) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können auch direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus111k.pdf|краткое описание (русский) Версия 1.11k (2015-01-11)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_rus111k.pdf|инструкции (русский) Версия 1.11k (2015-02-07)]]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser не возможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (english) ==&lt;br /&gt;
All versions of the software and documentation are saved in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng111k.pdf|Short description (english) Version 1.11k (2015-01-05)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|Manual (english) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can also access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para desempacar el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de desempacar el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
Acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de accesar el respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, accesar SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039;, ktorý sa nachádza na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je možné kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039; stiahnuť kompletný obsah aktuálne zobrazeného adresára.&lt;br /&gt;
&lt;br /&gt;
Na rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použiť bezplatný software &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie pluginu &#039;&#039;TortoiseSVN&#039;&#039; pre Windows Explorer. Potom je možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== 下载 (中文) ==&lt;br /&gt;
&lt;br /&gt;
所有版本的软件和文档都保存在SVN。&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/wikifiles/0/0b/Ttinfo_eng111k.pdf 短描述（英文版）1.11k（2015—01—05）]&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/wikifiles/8/8f/Ttester_eng111k.pdf 手册（英文版）1.11k（2015—02—08）]&lt;br /&gt;
&lt;br /&gt;
用户可以在当前选定的目录下载“GNU包”。svnbrowser https://www.mikrocontroller.net/svnbrowser/transistortester/  。&lt;br /&gt;
&lt;br /&gt;
Windows用户需要额外的工具，下载transistortester*tar.gz 文件后用7-Zip解压，解包后，你会得到一个可选择的目录，把它复制在您自己的电脑。直接访问不用再在svnbrowser浏览了！&lt;br /&gt;
&lt;br /&gt;
另一种方式来获得的数据访问SVN TortoiseSVN的插件是安装在Windows资源管理器。安装后，你可以访问数据和mikrocontroller.net transistortester svn://mikrocontroller.net/transistortester.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
我想在这里列出的主要特点：&lt;br /&gt;
&lt;br /&gt;
采用ATmega8，atmega168和atmega328处理器。&lt;br /&gt;
&lt;br /&gt;
测量结果显示在一个2x16字符的LCD。&lt;br /&gt;
而液晶2x16字符图形显示也可以是ST7565控制器使用。一个OLED显示器包括一个ssd1306 SPI或I2C总线接口控制器是可行的。&lt;br /&gt;
&lt;br /&gt;
一键测量操作，延时自动关闭电源。关断电流只有20nA，支持电池操作。&lt;br /&gt;
&lt;br /&gt;
该装置具有三个meßports（通用测试针）。&lt;br /&gt;
&lt;br /&gt;
自动检测PNP和NPN型双极晶体管，N、P沟道MOSFET，JFET场效应管，二极管，双二极管，可控硅，电阻，电容，电感。自动检测引脚定义。&lt;br /&gt;
&lt;br /&gt;
自动检测引脚占用的器件组成，可任意连接。&lt;br /&gt;
&lt;br /&gt;
测量的stromverstärkungsfaktors和基极发射极电压双极晶体管，包括darlingtontransistoren。&lt;br /&gt;
&lt;br /&gt;
一种自动检测schutzdiode双极晶体管和MOSFET的。&lt;br /&gt;
&lt;br /&gt;
在双极晶体管的寄生晶体管的检测（schutzdiode一NPNP = +寄生NPN PNP）。&lt;br /&gt;
&lt;br /&gt;
在一到两个电阻测量分辨率达0.1欧姆的测量，通过测量范围至50兆欧。在10欧姆的电阻值为atmega168／328与ESR方法显示分辨率0.01Ω&lt;br /&gt;
&lt;br /&gt;
电容器可以连接到测量领域的一个35pf 100mf分辨率达1 pF的。&lt;br /&gt;
&lt;br /&gt;
电阻器和电容器的符号被发现了，被anschlußpin号码。&lt;br /&gt;
&lt;br /&gt;
电阻和电容器的值到4位小数的显示在正确的尺寸。&lt;br /&gt;
&lt;br /&gt;
最多两个二极管进行显示的symboldarstellung flußrichtungsrichtig包围anschlußpin flußspannung号码和额外的指示。&lt;br /&gt;
&lt;br /&gt;
此外，在个别二极管和kapazitätswert版本也1.08k特大电流方向测量。&lt;br /&gt;
&lt;br /&gt;
为atmega168／328是nullkapazität标定的另一个参数，nullwiderstandes和内建自测试的分支成为可能。&lt;br /&gt;
&lt;br /&gt;
也可以为atmega168 /电感约328 0.01mh～20H检测和测量。&lt;br /&gt;
&lt;br /&gt;
为atmega168／328一ESR（等效串联电阻）测量电容器超过90的NF和分辨率0.01欧姆的集成。&lt;br /&gt;
&lt;br /&gt;
为atmega168／328将电容器5对spannungsverlust vloss ladepuls NF后进行了研究。因此，电容器的善良的估计。&lt;br /&gt;
&lt;br /&gt;
为有一个atmega328菜单功能的按键，一个较长（大于0.5）可以调用其他功能，从一个列表中的可能。一个短的下一个按键显示的功能。一个较长的显示按键启动功能。下面的功能：内置的名单，到目前为止&lt;br /&gt;
&lt;br /&gt;
频率测量在PD4销，也为后续使用的液晶显示器。销用于检测在收到启动。最初的1秒钟的频率计数。如果在25千赫的频率处，也将这一时期的平均频率计算和测量分辨率可达0.001兆赫。&lt;br /&gt;
&lt;br /&gt;
在PC3引脚电压测量，如果未使用的串行输出。在atmega328（32引脚PLCC）也可以联合或adc7引脚使用。1分频器有一个入口可以使用到50V的电压测量。一个放大电路（直流-直流转换器zenerdioden）也可以被测量。&lt;br /&gt;
&lt;br /&gt;
在frequenzerzeugung 2端口。对铅引脚在680欧姆的电阻可以连接与一个信号从一个列表中的可调频率从1 Hz至2 MHz，在端口2输出。该港口是连接到块1。&lt;br /&gt;
&lt;br /&gt;
脉冲宽度调制和脉冲宽度可调的固定频率在2端口。表1用于这些功能的10位计数器使用。该港口是连接到块1。短脉冲宽度可以通过按键的按键通过较长的1%和10%的增加。&lt;br /&gt;
&lt;br /&gt;
与一个单独的容量和ESR测量在TP1和TP3连接电容器可以容纳约2µf至50mf电路中通常也被测量。这应始终确保没有更多的表示电容器。&lt;br /&gt;
&lt;br /&gt;
额外的功能，如dialogfunktion zeitbegrenzt甚至当电源关闭，_选项在配置文件（文件）是打开的。更详细的信息，可以在meßbeispielen PDF文档在德语和英语的阅读。同样，俄罗斯的翻译文件是可用的。&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LCD&amp;diff=88679</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LCD&amp;diff=88679"/>
		<updated>2015-05-20T19:12:21Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: Ergänzung Nokia1100 Display&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;L&#039;&#039;&#039;iquid &#039;&#039;&#039;C&#039;&#039;&#039;rystal &#039;&#039;&#039;D&#039;&#039;&#039;isplays, kurz LCDs, bestehen aus einer großen Fläche von Flüssigkristallen, die unter Einwirkung eines elektrischen Feldes die Polarisationsebene des Lichts drehen. Wird ein solches Display von bereits polarisiertem Licht durchleuchtet, dann erscheinen diese Kristalle mehr oder weniger hell oder dunkel. Die angelegte Spannung ist sehr gering, es muss sich aber um eine Wechselspannung handeln, da eine Gleichspannung die Kristalle zersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Beleuchtung ===&lt;br /&gt;
Die Beleuchtung eines LCDs kann durch verschiedene Möglichkeiten erfolgen.&lt;br /&gt;
Kleine Displays (&amp;lt;25cm bzw. 10&amp;quot; Diagonale) werden mittlerweile fast ausschließlich mit LEDs beleuchtet.&lt;br /&gt;
Größere haben oft noch CCFL-Röhren, wobei auch hier leistungsstarke LEDs auf dem Vormarsch sind, da die Röhren hohe Spannungen benötigen und diese den Aufbau verkomplizieren (Röhrendicke, Inverter, HF-Felder, ...)&lt;br /&gt;
&lt;br /&gt;
Manchmal findet man auch EL(Elektrolumineszenz)-Folien, die aufgrund ihrer vergleichsweise geringen Lichtausbeute (bei weißer Leuchtfarbe) fast nur bei monochromen Displays anzutreffen sind.&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
Die gängigen Schnittstellen zu einem LCD-Controller sind ein 8bit, 4bit oder serielles Interface.&lt;br /&gt;
&lt;br /&gt;
Bei vielen &amp;quot;8bit&amp;quot;-LCDs ist es möglich, bei der Konfiguration festzulegen, dass auf 4bit Datenleitungen jeweils 2 nibble hintereinander gesendet werden. Dies spart Anschlüsse auf der Datensteuerungseinheit (PC, µC, etc). Bei 4-Bit-Ansteuerung darauf achten, dass die Datenpins 4-7 und nicht die Datenpins 0-3 des Displays an den µC angeschlossen werden müssen!&lt;br /&gt;
&lt;br /&gt;
=== Touchscreen ===&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;Touchscreen-LCD&#039;&#039; oder &#039;&#039;Monitor&#039;&#039; existiert als vorgefertigte Einzeleinheit nicht. Wird das unter dem Marketingwort Touchscreen erworbene Produkt zerlegt, bleibt die Eingabeeinheit Touchpanel und die Ausgabeeinheit LCD-Screen übrig. &lt;br /&gt;
&lt;br /&gt;
Jeder &#039;&#039;Touchscreen&#039;&#039; besteht aus einem Monitor, der mit einer transparenten Matrix überzogen wurde, die Berührungen an einen Controller weitergibt, der sie in Koordinaten übersetzt und das Anzeigegerät so zum Eingabegerät macht.&lt;br /&gt;
&lt;br /&gt;
Die aus zwei (sich bei Berührung elektrisch veränderndernden) Matrixflächen bestehende Kunststofffläche wird von Systemarchitekten und Mikrocontroller.net-Besuchern beim Einbau des LCD&#039;s in das Endprodukt über die anstelle einer Maus mit Berührungen durch Gegenstände oder eines Fingers zu bedienenden Fläche platziert.&lt;br /&gt;
&lt;br /&gt;
Das Internet gibt Aufschluss über die für die geplante Anwendung geeignete Touchpanel-Technologie und den für die benötigte Schnittstelle zu verwendenden Controller.&lt;br /&gt;
&lt;br /&gt;
Ein Selbstbauvorschlag und Links zu einigen kommerziellen Lösungen findet sich [http://www.mikrocontroller.net/topic/6455#41382 hier].&lt;br /&gt;
&lt;br /&gt;
=== Hacks ===&lt;br /&gt;
&lt;br /&gt;
Eine bei Handybastlern bekannte Spielerei ist das Abziehen der Polarisationsfolie vom LCD und dem um 90° gedrehten Aufkleben der alten oder einer neuen Folie. Dies führt zu einem hardwaremäßigen Invertieren der LCD Anzeige.&lt;br /&gt;
&lt;br /&gt;
Übliche Text-LCD-Module sind für den Betrieb an 5V vorgesehen. Will man sie an einen Mikrocontroller mit 3V IO-Pegel anschließen, wäre eigentlich ein Pegelwandler nötig. Es gibt jedoch einen Trick, um das LCD direkt an 3V betreiben zu können. Dazu muss man wissen, dass das Problem nicht die Versorgung des Controllers auf dem LCD-Modul (der HD44780 ist ab 2,7V spezifiziert), sondern die Erzeugung der Kontrastspannung für die Anzeige ist. Selbst wenn man den Kontrastpin auf Masse legt, ist unterhalb von etwa 4V nichts mehr zu erkennen. Dies führt zu folgender Lösung: die Spannung muss noch kleiner werden, also negativ! Man legt also eine Spannung im Bereich von -1 bis -2V am Kontrastpin an. Mit dieser Methode funktionieren manche LCDs schon ab etwa 2V.&lt;br /&gt;
&lt;br /&gt;
== Ansteuerroutinen Handy LCDs ==&lt;br /&gt;
&lt;br /&gt;
Es gibt noch eine bei Bastlern vergleichsweise beliebte Alternative zu den &amp;quot;normal&amp;quot; gekauften LCDs. Hier werden Ersatz-LCDs bestimmter Handytypen hergenommen und per µC angesteuert. Dadurch hat man einige Vorteile: Die Controller sind oft (eigentlich immer) bereits integriert, die Größe des gesamten Systems ist meist minimal und die LCDs sind teilweise unverschämt günstig im Vergleich zu KSS0066er oder HD44780er LCDs. Als Beispiel: Ein 132x176 Pixel LCD mit 60k Farben (!) für das Siemens S65 Handy kostet inzwischen bei Ebay um die 10 Euro zzgl. Versand und die benötigte Ansteuerung dazu hat einen Materialwert von maximal nochmal 10 Euro. Das kann man mit gekauften LCDs oder TFTs bei Reichelt &amp;amp; Co. nicht mehr vergleichen. Allerdings erkauft man sich auch ein paar Nachteile: Es gibt teilweise (noch) keine sauberen Companionboards. Das resultiert vor Allem dann in Arbeit, wenn die LCDs mehrere Spannungen zum Laufen benötigen (oft +10V und +3,3V) oder spezielle Anschlüsse von Nöten sind (SMD-Adapter bspw.) und man somit um eine eigens entwickelte Platine schwer herumkommt. Allerdings beschäftigen sich viele Leute damit, von daher wird man oft etwas kopieren können. Als eine Auswahl an beliebten Handy-LCDs hier eine Auflistung von Displays, mit denen oft gearbeitet wird (daher findet man hier auch massenhaft Infos im Forum).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Vorlage Display ===     &lt;br /&gt;
 resolution   : pixel&lt;br /&gt;
 display area : &lt;br /&gt;
 colours      : &lt;br /&gt;
 Controller   :&lt;br /&gt;
 backlight    : &lt;br /&gt;
 adj contrast : &lt;br /&gt;
 Link         : &lt;br /&gt;
 Datei        : &lt;br /&gt;
&lt;br /&gt;
===NOKIA 1100===&lt;br /&gt;
 resolution   : 96 x 65 pixel&lt;br /&gt;
 display area : &lt;br /&gt;
 colours      : 1&lt;br /&gt;
 Controller   :PCF8814&lt;br /&gt;
 backlight    : &lt;br /&gt;
 adj contrast : instruction&lt;br /&gt;
 Link         : [http://www.sunbizhosting.com/~spiral/1100/ Nokia 1100 LCD Pic interface]&lt;br /&gt;
 Datei        :&lt;br /&gt;
&lt;br /&gt;
=== NOKIA 7110 ===&lt;br /&gt;
 resolution   : 96 x 65 pixel&lt;br /&gt;
 display area : &lt;br /&gt;
 colours      : 1&lt;br /&gt;
 Controller   : SED1565&lt;br /&gt;
 backlight    : &lt;br /&gt;
 adj contrast : &lt;br /&gt;
 Link         : [http://module.ro/nokia_7110.html http://module.ro/nokia_7110.html]&lt;br /&gt;
 Datei        : [[Media: Nokia7110 Lcd library (SED1565).pdf]]&lt;br /&gt;
 Library      :                            Datum:&lt;br /&gt;
 Pinout       : [[Media: Nokia 7110 LCD pin outputs.JPG]]&lt;br /&gt;
&lt;br /&gt;
=== NOKIA 3310 ===&lt;br /&gt;
&lt;br /&gt;
 resolution   : 84 x 48 pixel&lt;br /&gt;
 display area : 30 x 22 mm&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
 colours      : 1&lt;br /&gt;
 controller   : Philips PCD8544&lt;br /&gt;
 backlight    : extern&lt;br /&gt;
 adj contrast : extern (V&amp;lt;sub&amp;gt;LCD1&amp;lt;/sub&amp;gt;)&lt;br /&gt;
 Link         : [http://www.jtronics.de/avr-projekte.html Lcd Ansteuerung in &amp;quot;C&amp;quot; von http://www.jtronics.de - sehr gut]&lt;br /&gt;
 Link         : [http://www.mikrocontroller.net/topic/25039  Nokia 3310]&lt;br /&gt;
 Link         : [http://www.mikrocontroller.net/topic/14817 NOKIA 3310 LCD in BAS]&lt;br /&gt;
 Link         : [http://tinkerish.com/blog/?tag=nokia-3310-lcd.html http://tinkerish.com/blog/?tag=nokia-3310-lcd]&lt;br /&gt;
 Link         : [http://www.lcdinterfacing.info/Nokia-3310-LCD-Interface.php http://www.lcdinterfacing.info/Nokia-3310-LCD-Interface.php]&lt;br /&gt;
 Link         : [http://www.radiolocman.com/shem/schematics.html?di=44132 Nokia 3310 Lcd Thermometer Using DS18B20]&lt;br /&gt;
&lt;br /&gt;
=== NOKIA 3510i ===  &lt;br /&gt;
 resolution   : 97x65 pixel&lt;br /&gt;
 display area : &lt;br /&gt;
 colours      : 256, 4096&lt;br /&gt;
 controller   : S1D15G14&lt;br /&gt;
 backlight    :&lt;br /&gt;
 adj contrast : &lt;br /&gt;
 Datei        : [[Media:Nokia 3510i LCD.pdf|Nokia 3510i LCD.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== NOKIA 6100 ===&lt;br /&gt;
&lt;br /&gt;
 resolution   : 130x130 pixel&lt;br /&gt;
 display area : 27 x 27 mm&lt;br /&gt;
 colours      : 256, 4096   (4096 colours supported since v 1.97.8)&lt;br /&gt;
 controller   : Epson S1D15G10 (meist grüner connector) oder Philips &lt;br /&gt;
                (PCF8833 oder LDS176 meist brauner connector)&lt;br /&gt;
 backlight    : yes&lt;br /&gt;
 adj contrast : yes&lt;br /&gt;
 Link         : [http://www.mikrocontroller.net/topic/12208 Nokia 6100 Ansteuerung in C]&lt;br /&gt;
 Link         : [http://www.mikrocontroller.net/topic/12218 Nokia 6100 Grafiklibrary die Zweite]&lt;br /&gt;
 Link         : [http://www.sparkfun.com/commerce/product_info.php?products_id=8683 http://www.sparkfun.com/ NOKIA 6100 PHILLIPS &amp;amp; EPSON]&lt;br /&gt;
 Link         : [http://www.ccsinfo.com/forum/viewtopic.php?t=26461 NOKIA 6100 EPSON]&lt;br /&gt;
 Link         : [http://serdisplib.sourceforge.net/ser/nokcol_15g10.html http://serdisplib.sourceforge.net/Epson]&lt;br /&gt;
 Pinout       : [[Media: Nokia 5100, 6100, 6610, 6800, 7210, 7250, 8910i LCD Pins.JPG|Nokia 5100, 6100, 6610, 6800, 7210, 7250, 8910i LCD Pins.JPG]]&lt;br /&gt;
 Library      : [[Media:HAGEN - Nokia 6100 Grafiklibrary 2.2 - 16.09.2004.zip|HAGEN - Nokia 6100 Grafiklibrary 2.2 - 16.09.2004.zip]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nokia 6100&#039;&#039;&#039; &amp;amp; kompatible: 132x132 Pixel mit 4096 Farben und ebenfalls SPI. Ein sehr beliebtes Display, mit dem sich ebenfalls sehr viele beschäftigen. Einziges Hauptproblem: Es gibt zwei unterschiedliche Controller ([http://www.e-dsp.com/controlling-a-color-graphic-lcd-epson-s1d15g10-controller-with-an-atmel-avr-atmega32l/ Epson S1D15G10] und [http://thomaspfeifer.net/nokia_6100_display.htm Philips PCF8833]) für dasselbe Display, die allerdings nicht kompatibel angesteuert werden! Von daher ist Vorsicht geboten. Zu kaufen gibt es die Displays ab etwa 15€. Man benötigt unter Umständen noch einen SMD-Adapter, den es für etwa 4€ gibt (je nach gekaufter Anzahl). Infos gibts hier: [http://serdisplib.sourceforge.net/ser/nokcol_15g10.html serdisp6100] [http://www.sparkfun.com/commerce/product_info.php?products_id=569 sparkfun] [http://thomaspfeifer.net/nokia_6100_display.htm ThomasPfeifer] und (wie sollte es anders sein) natürlich direkt vor Ort: [http://www.mikrocontroller.net/topic/12218#new Forumsbeitrag]&lt;br /&gt;
&lt;br /&gt;
UPDATE 17.10.2007: Neuerdings ist ein zusätzlicher (und damit dritter) Controllerchip recht beliebt geworden: Epson S1D15G17 (also G17 statt G10). Das Tolle hierbei: Dieser ist zu keinem der anderen Controller voll kompatibel, sondern teilt sich nur einige Befehle. Und zudem gibts bisher noch sehr wenig Infos zu diesem Controller. Also noch mehr aufpassen beim Kauf bzw. dem Ansteuern!&lt;br /&gt;
&lt;br /&gt;
=== NOKIA N95 ===&lt;br /&gt;
&lt;br /&gt;
 resolution   : 240 x 320 pixel&lt;br /&gt;
 display area : 40 x 55 mm&lt;br /&gt;
 colours      : 16.7 Mio.&lt;br /&gt;
 controller   :&lt;br /&gt;
 backlight    : &lt;br /&gt;
 adj contrast : &lt;br /&gt;
 Link         : [http://www.mikrocontroller.net/topic/142447 NOKIA N95 Display]&lt;br /&gt;
 Datei        :&lt;br /&gt;
&lt;br /&gt;
=== SIEMENS S65 ===&lt;br /&gt;
&lt;br /&gt;
 resolution   : 132 x 176 pixel&lt;br /&gt;
 display area : &lt;br /&gt;
 colours      : 65.536&lt;br /&gt;
 controller   :&lt;br /&gt;
 backlight    : &lt;br /&gt;
 adj contrast : &lt;br /&gt;
 Link         : [http://www.mikrocontroller.net/topic/31403 The Siemens S65 132x176, 65536 color display with AVR]&lt;br /&gt;
 Link         : [http://www.superkranz.de/christian/S65_Display/DisplayIndex.html http://www.superkranz.de/christian/S65_Display]&lt;br /&gt;
 Datei        : &lt;br /&gt;
 Info         : Es kann sein, dass die oben verlinkte Library beim kompilieren mit dem Fehler&lt;br /&gt;
                &amp;quot;glcd_init.asm:91: Error: number must be positive and less than 32&amp;quot; abbricht.&lt;br /&gt;
                Eine Lösung wird in diesem Forenbeitrag gegeben: [http://www.mikrocontroller.net/topic/157911]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Siemens S65&#039;&#039;&#039; &amp;amp; kompatible: 132x176 Pixel mit 60k Farben und wiederum SPI. Ein vergleichsweise neues LCD, das erst seit etwa ein/zwei Jahren erfolgreich angesteuert wird, obwohl man nicht einmal den verbauten Controller kennt! Re-Engineering sei Dank! Dieses Display gibt es momentan noch unverschämt günstig für etwa 10€, nur die benötigten Spannungen machen Kopfweh (10V für die HG-Beleuchtung und 2,8V für den LCD-Controller). Das Display ist wirklich vergleichsweise groß (das Größte aller hier vorgestellten) und auch noch aus einer größeren Entfernung wunderbar zu lesen/sehen. Einziges Problem: Da pro Pixel zwei volle Bytes gesendet werden müssen, benötigt ein komplett zu beschriftender Bildschirm mit 8 MHz SPI etwa 50 ms für einen Refresh. Das sieht man bspw. bei einem Übergang von schwarz auf weiß schon relativ deutlich.&lt;br /&gt;
&lt;br /&gt;
 LS020&lt;br /&gt;
 Datei        : &lt;br /&gt;
&lt;br /&gt;
=== SIEMENS M55 ===&lt;br /&gt;
 resolution   : 101 x 80 pixel&lt;br /&gt;
 display area : &lt;br /&gt;
 colours      : 4096&lt;br /&gt;
 controller   :&lt;br /&gt;
 backlight    : yes&lt;br /&gt;
 adj contrast :  &lt;br /&gt;
 Link         : [http://www.mikrocontroller.net/topic/83267 Siemens M55 Display Datenblatt Ansteuerung]&lt;br /&gt;
                [http://www.drzasiek.cba.pl/m55.php www.drzasiek.cba.pl/m55.rar (von hier stammt Dateilink)]&lt;br /&gt;
 Datei        : [http://www.drzasiek.cba.pl/m55.rar m55.rar - drzasiek.cba.pl]&lt;br /&gt;
&lt;br /&gt;
=== Sonstige Displays ===&lt;br /&gt;
&lt;br /&gt;
 Pinout       : [[Media:Nokia 3410 LCD Pinouts.JPG|Nokia 3410 LCD Pinouts.JPG]]&lt;br /&gt;
 Pinout       : [[Media:Nokia 6310 lcd pinouts.JPG|Nokia 6310 lcd pinouts.JPG]]&lt;br /&gt;
 Pinout       : [[Media:Nokia 8310 LCD Pinouts.JPG|Nokia 8310 LCD Pinouts.JPG]]&lt;br /&gt;
&lt;br /&gt;
* [http://rossum.posterous.com/screen-play-lots-of-other-screens-for-microco rossum.posterous.com] - Nokia 6100, 6101, 1600, 2760&lt;br /&gt;
&lt;br /&gt;
* [http://colonelk.freeshell.org/s-a60/ Siemens A60]&lt;br /&gt;
&lt;br /&gt;
Eine andere Strategie, an meist recht gute TFT-Displays zu kommen: Kleine Digitale Bilderrahmen (&amp;quot;DPF&amp;quot;) als Schlüsselanhänger. Diese liefern normalerweise Displays mit 128x128 Auflösung, es gibt aber auch grössere Varianten für den Schreibtisch im 320x240-Format. Die Bezugsquellen ändern sich allerdings laufend, einigermassen aktuelle Information findet sich unter dem [http://picframe.spritesserver.nl/wiki/index.php/DPF_with_AppoTech_AX206 Spriteserver DPF wiki].&lt;br /&gt;
&lt;br /&gt;
Die meisten dieser Displays sind per Parallel-Interface (uC-Interface) ansprechbar, d.h. 8 bit Daten bidirektional, weitere Steuerleitungen: R/W, A0, #CS. Falls das Display aus dem DPF nicht ausgebaut, sondern einfach nur ein USB-fähiges LCD-Display gewünscht ist, lässt sich die Firmware auch modifizieren. Dazu gibt es unter obigem Link weitere Informationen.&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
&lt;br /&gt;
Direkt hinter der Dot-Matrix sitzen nur ein paar Treiber, die auch die Leitungen bündeln. Das Interface daran bietet keine &amp;quot;Intelligenz&amp;quot;, es werden Signale für Vertical Sync / Horizontal Sync (also Spalten/Zeilenumbruch) sowie ein Clock Signal benötigt. Es werden nacheinander alle Pixel gescant und über eine Signalleitung an/aus mitgeteilt. Da deshalb ein konstanter (hoher) Datenfluss und ein nicht geringer Speicher (Framebuffer) benötigt wird, ist es für Mikrocontroller eher weniger geeignet. &lt;br /&gt;
&lt;br /&gt;
Zur Ansteuerung von LCDs gibt es spezielle LCD Controller, fertige Module mit Controller und einige Prozessoren mit integrierter Ansteuerung (z.&amp;amp;nbsp;B. aus der [[MSP430]]-Serie, oder [[AVR]] wie der ATmega169 ). LCD-Module mit eingebautem Controller lassen sich meist einfach mit einem [[Mikrocontroller]] ansteuern. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Text (character) LCDs&#039;&#039;&#039; verwenden meistens den &#039;&#039;&#039;[[HD44780]]&#039;&#039;&#039; oder einen kompatiblen Controller (z.B [[KS0066]]). Das [[KS0066]] Timing und die Init-Sequenz weichen stark vom Timing des HD44780 ab! Es gibt gute Application Notes zu Displays (mit KS0066) von Hitachi. 1x16 LCDs werden oft wie 2x8 betrieben! D.h. es ist ein &#039;Zeilenwechsel&#039; an Position (z.&amp;amp;nbsp;B. 0x40) nötig. Bei manchen Text-LCDs ist mit &#039;&#039;&#039;selbstdefinierten Zeichen&#039;&#039;&#039; eine [[Pseudo-Graphische LCD-Ansteuerung]] möglich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Grafik (graphic) LCDs&#039;&#039;&#039; verwenden z.&amp;amp;nbsp;B. den [[T6963]], den [[SED1330]] oder den [[KS0108]] Controller.&lt;br /&gt;
&lt;br /&gt;
Bei LCDs ohne eigenen Controller (Laptop-LCDs z.&amp;amp;nbsp;B.) ist die direkte Ansteuerung sehr schwierig (weil zeitkritisch), allerdings lässt sich in manchen Fällen ein Standard-Controller nachrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn die Ansteuerung des Displays gemeistert wurde, muss als nächstes die höheren Grafikfunktionen (Pixel an/aus, Linie, Rechteck, Kreis,...) gemeistert werden. Die entsprechenden Funktionen zum [[Rastern]] sind für µC recht resourcenfressend. Auch das abspeichern kompletter Bitmaps im ROM ist bei größeren Displays nicht wirklich praktikabel so das die Anbindung an ein größeren Speicher meistens Not tut.&lt;br /&gt;
&lt;br /&gt;
== Display Controller Datenblätter ==&lt;br /&gt;
&lt;br /&gt;
 Datasheet    : [[Media:Datasheet_LDS176.pdf|Datasheet_LDS176.pdf‎]]&lt;br /&gt;
 Datasheet    : [[Media:Datasheet_S1D15G00_REV1_0.pdf|Datasheet_S1D15G00_REV1_0.pdf]]&lt;br /&gt;
 Datasheet    : [[Media:Datasheet_S1D15G14E.pdf|Datasheet_S1D15G14E.pdf]]&lt;br /&gt;
 Datasheet    : [[Media:Epson_S1D13305.pdf|Datasheet_Epson_S1D13305.pdf]]&lt;br /&gt;
 Datasheet    : [[Media:Datasheet_HM628128D.pdf|Datasheet_HM628128D.pdf]]&lt;br /&gt;
 Datasheet    : [[Media:Datasheet_SED1330F-1335F-1336F.pdf]]&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
=== Projekte mit Text-LCD ===&lt;br /&gt;
&lt;br /&gt;
* [[AVR-Tutorial: LCD]]&lt;br /&gt;
* [[AVR-GCC-Tutorial/LCD-Ansteuerung]]&lt;br /&gt;
* [[Projekt LCD an Parallelport]]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/79609#664268] (A) KS0066U oder Ähnliche &lt;br /&gt;
--- LCD Treiber]&lt;br /&gt;
* [[Tinykon]] - Menüsystem für LCD oder [[UART]]&lt;br /&gt;
&lt;br /&gt;
=== Projekte mit Grafik-LCD ===&lt;br /&gt;
* [http://www.jtronics.de/avr-projekte.html Bibliothek für Nokia 3310 Lcd Ansteuerung in &amp;quot;C&amp;quot; von http://www.jtronics.de - sehr gut]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Ansteuerung_Handy_Displays.html Ansteuerung_Handy_Displays]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-4-160854.html LCD Controller für 640x480 LCD mit mega8515] von Benedikt.&lt;br /&gt;
* [http://www.embeddedlightning.com/ugui/ µGUI - Universal-Grafikbibliothek für LCDs / OLEDs / TFTs / EPDs ] von Achim Döbler.&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-4-422387.html Fontgenerator] zum Erstellen eigener Schriftarten (LCD) von Hauke Radtki. ([[Java]], [[T6963]]c)&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-4-306961.html LCD Library T6963c] angepasst auf [[AVR-GCC]] von Nico Sachs und Florian.&lt;br /&gt;
* [[Projekt T6963-LCD-Ansteuerung]]&lt;br /&gt;
* [http://thomaspfeifer.net/nokia_6100_display.htm Ansteuerung eines Nokia LCDs mit einem AVR-Controller]  von Thomas Pfeifer&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/79738#665417 Digitaler Bilderrahmen mit mega8 S65 Display und SD-Karte] von Matthias Bode&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/81793#683135 Pollin E0855-2 SED1530-Treiber] von Mark Meise (AVR-GCC)&lt;br /&gt;
* [http://www.siwawi.arubi.uni-kl.de/avr_projects/glcd2/index.html Interfacing Atmel AVR with Graphics Liquid Crystal Displays (GLCDs)] (SED1520)&lt;br /&gt;
* [http://pic-projekte.de/ PIC-Projekte.de] Ansteuern eines KS0107 (KS0108) Grafik LCD Displays in ASM mit PIC&lt;br /&gt;
*[http://pic-projekte.de/wordpress/?p=320 Ansteuerungsroutinen für ein EA DOGL Display für PIC Mikrocontroller] www.PIC-Projekte.de&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://pic-projekte.de/ PIC-Projekte.de] Gut geschriebene LCD und GLCD Tutorials&lt;br /&gt;
* [http://sandiding.tripod.com/Bertys.html Berty&#039;s Home Page] mit vielen Pinouts von Handy LCDs&lt;br /&gt;
* [http://www.geocities.com/dinceraydin/lcd/index.html LCD Info] von Dincer Aydin (Englisch).&lt;br /&gt;
* [http://www.geocities.com/dinceraydin/djlcdsim/djlcdsim.html Dincer&#039;s Text LCD Simulator V 1.021]  (Online, Javascript erforderlich).&lt;br /&gt;
* [http://www.geocities.com/dinceraydin/djgfxlcdsim/djgfxlcdsim.html Dincer&#039;s Graphic LCD Simulator V 1.01] (Online, Javascript erforderlich).&lt;br /&gt;
* [http://www.pacificdisplay.com/lcd_ics.htm Übersicht LCD-Controller und Treiber-ICs] bei Pacific Display Devices. (Englisch)&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.tianma.com/controller.php Übersicht LCD-Controller] bei Tianma. (Englisch)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [http://www.sprut.de/electronic/lcd/index.htm Dot-Matrix LCD&#039;s] von Jörg &#039;&#039;sprut&#039;&#039; Bredendiek &lt;br /&gt;
* [http://www.lcd-module.de/knowhow.html LCD - Know How]&lt;br /&gt;
* [http://passworld.co.jp/ForumMSP430/viewforum.php?f=2 Graphic LCDs for Microcontroller] (PassWorld YK, Englisch - Japanisch)&lt;br /&gt;
* [http://www.oocities.com/p9019/lcd.html LCD Pinouts] by Scott Johnson  &lt;br /&gt;
* [http://web.archive.org/web/20080804232047/http://www.myke.com/lcd.htm LCD Interfacing Reference Page] (HD44780) bei (www.archive.org)&lt;br /&gt;
* [http://techref.massmind.org/techref/microchip/pwmvee.htm Vee (negative power supply) (for LCD etc...) from PIC PWM] - Vorschlag zum Erzeugen der geringen, negativen Kontrastspannung bei manchen LCD per µC/PWM und Ladungspumpe.&lt;br /&gt;
* [http://www.edn.com/article/CA6505569.html?spacedesc=designideas&amp;amp;industryid=44217 Microcontroller drives LCD with just one wire] - EDN Design Idea von Noureddine Benabadji, 12/3/07 (PIC10F)&lt;br /&gt;
* [http://www.elvand.com/en/index.php?option=com_content&amp;amp;task=view&amp;amp;id=15&amp;amp;Itemid=40 LCD Font Generator (LFG)] von elvand.com (Freeware)&lt;br /&gt;
* [http://homepages.tesco.net/~steve.lawther/steve/t6963c.htm Toshiba  T6963C Controller based Displays]&lt;br /&gt;
* [http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;t=61156 Using the KS0713/S6B1713/ST7565 LCD driver chips] - Tutorial bei www.avrfreaks.net (kostenkose Registrierung erforderlich)&lt;br /&gt;
* [http://fluessigkristalle.com/index.htm Flüssigkristalle und Flüssigkristallanzeigen] - Infos für Lehrende und Lernende inkl. Selbstbauanleitungen von Dr. Feodor Oestreicher.&lt;br /&gt;
* [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2608&amp;amp;page=1&amp;amp;param=en532061 Grafische Bibliothek mit Touchscreen Unterstützung]&lt;br /&gt;
* [http://www.vdr-wiki.de/wiki/index.php/Display#Graphische_LCD-Displays Graphische_LCD-Displays im VDR Wiki]&lt;br /&gt;
* [http://www.microvga.com/conio-lib uVGA-CONIO-LIB: MicroVGA-TEXT conio Library]&lt;br /&gt;
* [http://hackaday.com/2009/09/29/how-to-generate-font-and-picture-header-files/ How to generate font and picture header files] auf hackaday.com&lt;br /&gt;
* [http://www.muGUI.de/ Font and Bitmap Generator] - Umfangreiche SW zur Erstellung von Programmcode aus Bitmaps und Fonts für uC auf www.muGUI.de.&lt;br /&gt;
[[Category:Bauteile]]&lt;br /&gt;
[[Category:LCD| ]]&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wie kann ich etwas auf einem LCD ausgeben?&#039;&#039;&#039; &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Gute Frage! Eine Methode ist sich als Einzelkämpfer durchzubeißen. Dabei helfen Datenblätter und Handbücher sowie die Suche nach Tutorials, Forenbeiträgen und ähnlichen Projekten. Oder man fragt in einem Forum. Dabei steigen die Erfolgsaussichten auf eine hilfreiche Antwort enorm, wenn man seine Hausaufgaben gemacht hat. Also Links zu Datenblättern angeben! Schaltplan beilegen! Vorhandenen Sourcecode beilegen! ...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wie kann ich Zahlen auf LCD/UART ausgeben?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siehe die Artikel zur allgemeinen [[FAQ#Wie_kann_ich_Zahlen_auf_LCD.2FUART_ausgeben.3F| FAQ]] und zur [[Festkommaarithmetik]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Egal was ich mache auf dem Display erscheinen keine Zeichen! Was ist los?&#039;&#039;&#039; &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Möglicherweise ist einfach nur der Kontrast unpassend eingestellt. &lt;br /&gt;
&lt;br /&gt;
Es gibt auch LCDs (s. unten), die eine negative Kontrastspannung benötigen ([http://www.mikrocontroller.net/topic/81596#681507 Forenbeitrag von Thorsten]); näheres kann das Datenblatt klären. Man kann u.U. die benötigte negative Kontrastspannung von einem freien Anschluss am TTL-RS232 Pegelwandler nehmen ([http://www.mikrocontroller.net/topic/121074#1097636 Forenbeitrag von P. M.]).&lt;br /&gt;
&lt;br /&gt;
Liste bekannter LCDs mit &#039;&#039;&#039;negativer Kontrastspannung&#039;&#039;&#039;:&lt;br /&gt;
* Pollin: LCD-Modul YL162-90 / Best.Nr. 120 060 ([http://www.pollin.de/shop/downloads/D120060D.PDF D120060D.PDF])&lt;br /&gt;
* Pollin: POWERTIP PC1602LRM-LSO-C&lt;br /&gt;
* Pollin: LCD-Modul EPSON ECM-A0428 ([http://www.pollin.de/shop/dt/MTA3OTc4OTk-/Bauelemente/Aktive_Bauelemente/Displays/LCD_Modul_EPSON_ECM_A0428.html Link])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;R/W Leitung vom Text-LCD ist fix mit GND verbunden und die Ansteuerung mit der LCD/AVR-Library von Peter Fleury funktioniert nicht! Was ist los?&#039;&#039;&#039; &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Die Fleury Library erwartet, dass R/W nicht fix ist, sondern vom Programm gesteuert werden kann. Das muss auch so sein, denn Peter liest das Busy Flag aus, um Warteschleifen zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LCD Displaytech 204B (von Reichelt)...&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/topic/99028#2081386 Forenbeitrag von Klaus]:&lt;br /&gt;
Beim EA DIP204B-4NLW Display mit dem KS0073 drauf ist bei der Initialisierung folgendes zu beachten, sonst funktioniert die Sache nicht und das Display bleibt im 2 Zeilenmodus.&lt;br /&gt;
&lt;br /&gt;
* Die Adressen für die Zeilenanfang sind etwas anders.&lt;br /&gt;
# Zeile 00h&lt;br /&gt;
# Zeile 20h&lt;br /&gt;
# Zeile 40h&lt;br /&gt;
# Zeile 60h&lt;br /&gt;
&lt;br /&gt;
* Es gibt ein Erweiterungsbit RE 0x24 und das muss man zwingend setzen bevor dann in den 4-Bit-Modus geschaltet wird mit 0x09.&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=88594</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=88594"/>
		<updated>2015-05-10T19:18:41Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Verzeichnisstruktur des SVN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168 und ATmega328 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer Auflösung von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 90 nF mit einer Auflösung von 0.01 Ohm integriert.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer aus einer Liste einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber immer sichergestellt sein, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kOhm sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kOhm reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen zur neuen Version ==&lt;br /&gt;
Der Thread mit meinen älteren Software-Versionen und einigen Problemfällen sowie Hardware-Vorschlägen ist unter [https://www.mikrocontroller.net/topic/248078#new https://www.mikrocontroller.net/topic/248078#new] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Alle Versionen von der Software und der Doku sind im SVN gespeichert.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_ger111k.pdf|Kurzbeschreibung (deutsch) Version 1.11k (2015-01-30)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_ger111k.pdf|Anleitung (deutsch) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können auch direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_rus111k.pdf|краткое описание (русский) Версия 1.11k (2015-01-11)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_rus111k.pdf|инструкции (русский) Версия 1.11k (2015-02-07)]]&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser не возможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (english) ==&lt;br /&gt;
All versions of the software and documentation are saved in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
[[Media:ttinfo_eng111k.pdf|Short description (english) Version 1.11k (2015-01-05)]]&lt;br /&gt;
&lt;br /&gt;
[[Media:ttester_eng111k.pdf|Manual (english) Version 1.11k (2015-02-08)]]&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can also access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para desempacar el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de desempacar el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
Acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de accesar el respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, accesar SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039; nachádzajúceho sa na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je  umožnené užívateľom si stiahnuť kompletný obsah aktuálne zobrazeného adresára kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použitím bezplatného softwaru &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie &#039;&#039;TortoiseSVN&#039;&#039; pluginu pre Windows Explorer. Následne je potom možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
You can put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if its done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed therefore.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T3_T4_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T3 oder T4 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_T5_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische T5 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=88449</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=88449"/>
		<updated>2015-04-29T21:14:50Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Verzeichnisstruktur des SVN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168 und ATmega328 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer Auflösung von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 90 nF mit einer Auflösung von 0.01 Ohm integriert.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer aus einer Liste einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber immer sichergestellt sein, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kOhm sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kOhm reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen zur neuen Version ==&lt;br /&gt;
Der Thread mit meinen älteren Software-Versionen und einigen Problemfällen sowie Hardware-Vorschlägen ist unter [https://www.mikrocontroller.net/topic/248078#new https://www.mikrocontroller.net/topic/248078#new] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Alle Versionen von der Software und der Doku sind im SVN gespeichert.&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können auch direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser не возможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (english) ==&lt;br /&gt;
All versions of the software and documentation are saved in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can also access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para desempacar el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de desempacar el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
Acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de accesar el respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, accesar SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039; nachádzajúceho sa na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je  umožnené užívateľom si stiahnuť kompletný obsah aktuálne zobrazeného adresára kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použitím bezplatného softwaru &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie &#039;&#039;TortoiseSVN&#039;&#039; pluginu pre Windows Explorer. Následne je potom možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
You can put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if its done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed therefore.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_GM328&#039;&#039;&#039; || || Makefile und Daten für chinesische GM328 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=88447</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=88447"/>
		<updated>2015-04-29T21:01:14Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Verzeichnisstruktur des SVN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168 und ATmega328 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer Auflösung von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 90 nF mit einer Auflösung von 0.01 Ohm integriert.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer aus einer Liste einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber immer sichergestellt sein, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kOhm sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kOhm reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen zur neuen Version ==&lt;br /&gt;
Der Thread mit meinen älteren Software-Versionen und einigen Problemfällen sowie Hardware-Vorschlägen ist unter [https://www.mikrocontroller.net/topic/248078#new https://www.mikrocontroller.net/topic/248078#new] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Downloads (deutsch) ==&lt;br /&gt;
Alle Versionen von der Software und der Doku sind im SVN gespeichert.&lt;br /&gt;
&lt;br /&gt;
Die Benutzer können über den svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
&lt;br /&gt;
Linux Benutzer können auch direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) - Загрузки (русский) ==&lt;br /&gt;
Для загрузок доступны все версии программного обеспечения и документации, хранящиеся в SVN&lt;br /&gt;
&lt;br /&gt;
Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; через svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для распаковки загруженного файла * .tar.gz пользователи Windows могут воспользоваться любым подходящим программным обеспечением, таким как бесплатная программа [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
После распаковки архива у вас на компьютере будет архив с заранее выбранным через svnbrowser содержимым в дереве каталогов.&lt;br /&gt;
&lt;br /&gt;
Прямой доступ к файлам через svnbrowser не возможен!&lt;br /&gt;
&lt;br /&gt;
Еще один способ получить доступ к содержимому хранилища SVN состоит в установке TortoiseSVN плагина для Windows Explorer. Это затем кнопкой [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&lt;br /&gt;
&lt;br /&gt;
Пользователи Linux могут получить доступ непосредственно из SVN к архиву.&lt;br /&gt;
&lt;br /&gt;
== Downloads (english) ==&lt;br /&gt;
All versions of the software and documentation are saved in the SVN archive.&lt;br /&gt;
&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Windows users need a additional tool like the freeware [http://www.7-zip.org/ 7-Zip] to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Linux users can also access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Português - Brasil) ==&lt;br /&gt;
&lt;br /&gt;
Todas as versões de software e documentação estão salvas no arquivador SVN.&lt;br /&gt;
&lt;br /&gt;
Usuários podem descarregar um pacote &amp;quot;GNU&amp;quot; de todos os diretórios anteriores com o svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
&lt;br /&gt;
Usuários de Windows precisam de uma ferramenta adicional como o freeware [http://www.7-zip.org/ 7-Zip] para descompactar o arquivo transistortester*.tar.gz. Depois de descompactado você terá uma cópia do diretório selecionado no seu computador. O acesso direto não é possível com o svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Outra forma de acessar os dados no SVN é instalar o TortoiseSVN plugin para Windows Exporer. Depois de instalar você pode acessar soa dados com o endereçco [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Usuários Linux podem acessar os dados com svn diretamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Español) ==&lt;br /&gt;
Todas la versiones del software y la documentación están en SVN.&lt;br /&gt;
&lt;br /&gt;
Los usuarios pueden descargar un &amp;quot;GNU tarball&amp;quot; del directorio seleccionado utlizando svnbrowser [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Windows requieren de una herramienta adicional como el freeware [http://www.7-zip.org/ 7-Zip] (gratis) para desempacar el archivo descargado, transistortester*.tar.gz.&lt;br /&gt;
&lt;br /&gt;
Luego de desempacar el archivo, tendrá en su computador una copia completa del directorio seleccionado.&lt;br /&gt;
Acceso directo no es posible con svnbrowser.&lt;br /&gt;
&lt;br /&gt;
La otra manera de accesar el respositorio SVN es instalando el plugin TortoiseSVN; éste le permitirá acceso a la información con el URI: [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester]&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Linux pueden, por supuesto, accesar SVN directamente.&lt;br /&gt;
&lt;br /&gt;
== Downloads (Slovak) ==&lt;br /&gt;
&lt;br /&gt;
Všetky verzie softvéru a dokumentácie sú uložené v SVN archíve.&lt;br /&gt;
&lt;br /&gt;
Prostredníctvom &#039;&#039;svnbrowsera&#039;&#039; nachádzajúceho sa na adrese [https://www.mikrocontroller.net/svnbrowser/transistortester/ https://www.mikrocontroller.net/svnbrowser/transistortester/] je  umožnené užívateľom si stiahnuť kompletný obsah aktuálne zobrazeného adresára kliknutím na odkaz &#039;&#039;&amp;quot;Download GNU tarball&amp;quot;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Rozbalenie stiahnutého súboru &#039;&#039;transistortester*.tar.gz&#039;&#039; pod systémom Windows je možné použitím bezplatného softwaru &#039;&#039;[http://www.7-zip.org/ 7-Zip]&#039;&#039;. Po extrahovaní je na lokálnom PC k dispozícii kópia vybraného adresára. Priamy prístup k jednotlivým súborom SVN archívu cez &#039;&#039;svnbrowser&#039;&#039; nie je možný!&lt;br /&gt;
&lt;br /&gt;
Alternatívnym spôsobom prístupu k SVN archívu je inštalácia a použitie &#039;&#039;TortoiseSVN&#039;&#039; pluginu pre Windows Explorer. Následne je potom možné pristupovať k dátam prostredníctvom odkazu [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester].&lt;br /&gt;
&lt;br /&gt;
Užívatelia systému Linux môžu k SVN dátam pristupovať priamo.&lt;br /&gt;
&lt;br /&gt;
== Downloads (your-language) ==&lt;br /&gt;
You can put a translation &#039;&#039;here&#039;&#039;, but only if its done by yourself, not Google Translate.&lt;br /&gt;
You can also put a translation of the whole article here, if its done by yourself.&lt;br /&gt;
&lt;br /&gt;
Only little understanding of the Wiki-Syntax is needed therefore.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur des SVN ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.8.2&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_2X16_menu&#039;&#039;&#039; || || Makefile und Daten für ATmega328, 2x16 Zeichen Textdisplay, Impulsdrehgeber + Spannungsmessung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 2x16 Zeichen DOG-M LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7565&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7108&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7108 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_st7920&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel LCD, ST7920 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_fish8840&#039;&#039;&#039; || || Makefile und Daten für chinesische Fish8840 Version, ATmega328, 126x64 Pixel LCD, ST7565 Controller&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_wei_st7565&#039;&#039;&#039; || || Makefile und Daten für chinesische WEI_M8_LGTST Version, 126x64 Pixel LCD, ST7565 Controller, LiIon Accu&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306I2C&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, I2C Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_ssd1306SPI&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout, 126x64 Pixel OLED, SSD1306 Controller, SPI Schnittstelle&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega644_LCD2004&#039;&#039;&#039; || || Makefile und Daten für ATmega644/1284 mit 4x20 Zeichen LCD&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/arduino_m2560&#039;&#039;&#039; || || Makefile und Daten für Arduino Mega (ATmega2560) mit 2x16 Zeichen LCD &lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=87594</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=87594"/>
		<updated>2015-02-27T21:31:36Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Downloads (russisch) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168 und ATmega328 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer Auflösung von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 90 nF mit einer Auflösung von 0.01 Ohm integriert.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer aus einer Liste einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber immer sichergestellt sein, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kOhm sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kOhm reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen zur neuen Version ==&lt;br /&gt;
Der Thread mit meinen älteren Software-Versionen und einigen Problemfällen sowie Hardware-Vorschlägen ist unter [http://www.mikrocontroller.net/topic/248078#new http://www.mikrocontroller.net/topic/248078#new] zu finden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
Alle Versionen von der Software und der Doku sind im SVN gespeichert.&lt;br /&gt;
Die Benutzer können über den svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
Linux Benutzer können auch direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) ==&lt;br /&gt;
&amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt; &amp;lt;/span&amp;gt; == Загрузок == Все версии программного обеспечения и документации, хранятся в SVN.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; за svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/].&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Для распаковки загруженного транзистор тестер файл * .tar.gz вам нужно пользователи Windows подходящий программного обеспечения, таких как бесплатный пакет [http://www.7-zip.org/ 7-Zip].&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; После распаковки у нас есть собственный заранее с svnbrowser выбран в дереве каталогов на своем компьютере.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Прямой доступ к файлам с svnbrowser не возможно!&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Еще один способ получить доступ к содержимому хранилища SVN состоит из установки TortoiseSVN плагин для Windows Explorer.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Это затем кнопкой [SVN://mikrocontroller.net/transistortester SVN://mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Пользователи Linux могут получить доступ непосредственно из SVN в архив.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Downloads (english) ==&lt;br /&gt;
All versions of the software and documentation are saved in the SVN archive.&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
Windows users need a additional tool like the freeware 7-Zip to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you&lt;br /&gt;
can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] .&lt;br /&gt;
&lt;br /&gt;
Linux users can also access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.5.3&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=87593</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=87593"/>
		<updated>2015-02-27T21:29:03Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Downloads (russisch) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168 und ATmega328 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer Auflösung von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 90 nF mit einer Auflösung von 0.01 Ohm integriert.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer aus einer Liste einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber immer sichergestellt sein, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kOhm sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kOhm reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen zur neuen Version ==&lt;br /&gt;
Der Thread mit meinen älteren Software-Versionen und einigen Problemfällen sowie Hardware-Vorschlägen ist unter [http://www.mikrocontroller.net/topic/248078#new http://www.mikrocontroller.net/topic/248078#new] zu finden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
Alle Versionen von der Software und der Doku sind im SVN gespeichert.&lt;br /&gt;
Die Benutzer können über den svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
Linux Benutzer können auch direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) ==&lt;br /&gt;
&amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt; &amp;lt;/span&amp;gt; == Загрузок == Все версии программного обеспечения и документации, хранятся в SVN.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; за svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/].&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Для распаковки загруженного транзистор тестер файл * .tar.gz вам нужно пользователи Windows подходящий программного обеспечения, таких как бесплатный пакет [http://www.7-zip.org/ 7-Zip].&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; После распаковки у нас есть собственный заранее с svnbrowser выбран в дереве каталогов на своем компьютере.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Прямой доступ к файлам с svnbrowser не возможно!&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Еще один способ получить доступ к содержимому хранилища SVN состоит из установки TortoiseSVN плагин для Windows Explorer.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/span&amp;gt; Это затем кнопкой [SVN: SVN //mikrocontroller.net/transistortester: //mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/span&amp;gt; Пользователи Linux могут получить доступ непосредственно из SVN в архив.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Downloads (english) ==&lt;br /&gt;
All versions of the software and documentation are saved in the SVN archive.&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
Windows users need a additional tool like the freeware 7-Zip to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you&lt;br /&gt;
can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] .&lt;br /&gt;
&lt;br /&gt;
Linux users can also access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.5.3&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=87592</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=87592"/>
		<updated>2015-02-27T21:28:40Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Downloads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168 und ATmega328 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer Auflösung von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 90 nF mit einer Auflösung von 0.01 Ohm integriert.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer aus einer Liste einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber immer sichergestellt sein, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kOhm sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kOhm reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen zur neuen Version ==&lt;br /&gt;
Der Thread mit meinen älteren Software-Versionen und einigen Problemfällen sowie Hardware-Vorschlägen ist unter [http://www.mikrocontroller.net/topic/248078#new http://www.mikrocontroller.net/topic/248078#new] zu finden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
Alle Versionen von der Software und der Doku sind im SVN gespeichert.&lt;br /&gt;
Die Benutzer können über den svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
Linux Benutzer können auch direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) ==&lt;br /&gt;
 &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt; &amp;lt;/span&amp;gt; == Загрузок == Все версии программного обеспечения и документации, хранятся в SVN.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; за svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/].&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Для распаковки загруженного транзистор тестер файл * .tar.gz вам нужно пользователи Windows подходящий программного обеспечения, таких как бесплатный пакет [http://www.7-zip.org/ 7-Zip].&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; После распаковки у нас есть собственный заранее с svnbrowser выбран в дереве каталогов на своем компьютере.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Прямой доступ к файлам с svnbrowser не возможно!&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Еще один способ получить доступ к содержимому хранилища SVN состоит из установки TortoiseSVN плагин для Windows Explorer.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/span&amp;gt; Это затем кнопкой [SVN: SVN //mikrocontroller.net/transistortester: //mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/span&amp;gt; Пользователи Linux могут получить доступ непосредственно из SVN в архив.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Downloads (english) ==&lt;br /&gt;
All versions of the software and documentation are saved in the SVN archive.&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
Windows users need a additional tool like the freeware 7-Zip to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you&lt;br /&gt;
can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] .&lt;br /&gt;
&lt;br /&gt;
Linux users can also access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.5.3&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=87591</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=87591"/>
		<updated>2015-02-27T21:26:33Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Diskussionen zur neuen Version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168 und ATmega328 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer Auflösung von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 90 nF mit einer Auflösung von 0.01 Ohm integriert.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer aus einer Liste einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber immer sichergestellt sein, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kOhm sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kOhm reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen zur neuen Version ==&lt;br /&gt;
Der Thread mit meinen älteren Software-Versionen und einigen Problemfällen sowie Hardware-Vorschlägen ist unter [http://www.mikrocontroller.net/topic/248078#new http://www.mikrocontroller.net/topic/248078#new] zu finden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
 Alle Versionen von der Software und der Doku sind im SVN gespeichert.&lt;br /&gt;
Die Benutzer können über den svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
Linux Benutzer können auch direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) ==&lt;br /&gt;
 &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt; &amp;lt;/span&amp;gt; == Загрузок == Все версии программного обеспечения и документации, хранятся в SVN.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; за svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/].&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Для распаковки загруженного транзистор тестер файл * .tar.gz вам нужно пользователи Windows подходящий программного обеспечения, таких как бесплатный пакет [http://www.7-zip.org/ 7-Zip].&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; После распаковки у нас есть собственный заранее с svnbrowser выбран в дереве каталогов на своем компьютере.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Прямой доступ к файлам с svnbrowser не возможно!&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Еще один способ получить доступ к содержимому хранилища SVN состоит из установки TortoiseSVN плагин для Windows Explorer.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/span&amp;gt; Это затем кнопкой [SVN: SVN //mikrocontroller.net/transistortester: //mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/span&amp;gt; Пользователи Linux могут получить доступ непосредственно из SVN в архив.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Downloads (english) ==&lt;br /&gt;
All versions of the software and documentation are saved in the SVN archive.&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
Windows users need a additional tool like the freeware 7-Zip to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you&lt;br /&gt;
can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] .&lt;br /&gt;
&lt;br /&gt;
Linux users can also access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.5.3&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=87590</id>
		<title>AVR Transistortester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Transistortester&amp;diff=87590"/>
		<updated>2015-02-27T21:24:58Z</updated>

		<summary type="html">&lt;p&gt;Kubi48: /* Diskussionen zur neuen Version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Original Entwurf: http://www.mikrocontroller.net/articles/AVR-Transistortester&lt;br /&gt;
&lt;br /&gt;
Weiterentwickelt von Karl-Heinz Kübbeler&lt;br /&gt;
&lt;br /&gt;
Ich habe das Transistortester Projekt von Markus Frejek weitergeführt und speziell die Software weiterentwickelt.&lt;br /&gt;
Aufgrund der verbesserten Eigenschaften wurde schon der Name Komponententester vorgeschlagen. Ich selbst sehe aber immer noch die herausragende Eigenschaft in der automatischen Bestimmung von Transistortyp und Eigenschaft, wie sie von&lt;br /&gt;
Markus Frejek entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
Hier möchte ich die wichtigsten &#039;&#039;&#039;Eigenschaften&#039;&#039;&#039; aufführen&lt;br /&gt;
&lt;br /&gt;
* Arbeitet mit ATmega8, ATmega168 und ATmega328 Prozessoren.&lt;br /&gt;
* Anzeige der Meßergebnisse auf ein 2x16 Zeichen LCD.&lt;br /&gt;
* Statt dem 2x16 Zeichen LCD kann auch ein graphisches Display mit ST7565 Controller benutzt werden. Auch ein Anschluß eines OLED Display mit SSD1306 Controller ist mit SPI oder I2C Schnittstelle möglich.&lt;br /&gt;
* Ein-Tastenbedienung mit automatischer Abschaltung.&lt;br /&gt;
* Das Gerät besitzt drei universelle Meßports (Test Pin).&lt;br /&gt;
* Automatische Erkennung von NPN, PNP, N- und P-Kanal MOSFET, JFET, Dioden und Kleinsignal Thyristor und TRIAC.&lt;br /&gt;
* Automatische Erkennung der Pin-Belegung der Bauteile, die Bauelemente können beliebig angeschlossen werden.&lt;br /&gt;
* Messung des Stromverstärkungsfaktors und der Basis-Emitter Spannung für bipolare Transistoren, auch für Darlingtontransistoren.&lt;br /&gt;
* Automatische Erkennung eine Schutzdiode für bipolare Transistoren und MOSFETs.&lt;br /&gt;
* Bei bipolaren Transistoren mit Schutzdiode wird ein parasitärer Transistor erkannt (NPNp = NPN + parasitär PNP).&lt;br /&gt;
* Bis zu zwei Widerstände werden in einer Messung mit einer Auflösung von bis zu 0,1 Ohm gemessen, wobei der Meßbereich bis über 50 MOhm reicht. Widerstandswerte unter 10 Ohm werden für den ATmega168/328 mit der ESR-Meßmethode mit einer Auflösung von 0.01 Ohm angezeigt.&lt;br /&gt;
* Ein angeschlossener Kondensator kann gemessen werden im Bereich 35pF bis 100mF mit einer Auflösung von bis zu 1 pF.&lt;br /&gt;
* Widerstände und Kondensatoren werden mit ihren Symbolen dargestellt, umgeben von den gefundenen Anschlußpin Nummern.&lt;br /&gt;
* Die Widerstands und Kondensator-Werte werden mit bis zu vier Dezimalstellen in der richtigen Dimension angezeigt.&lt;br /&gt;
* Bis zu zwei Dioden werden ebenfalls mit ihrer Symboldarstellung flußrichtungsrichtig angezeigt, umgeben von den Anschlußpin Nummern und der zusätzlichen Angabe der Flußspannung.&lt;br /&gt;
* Bei einzelnen Dioden wird zusätzlich der Kapazitätswert und ab Version 1.08k auch der Strom in Sperr-Richtung gemessen.&lt;br /&gt;
* Für ATmega168/328 ist eine Kalibration der Nullkapazität, des Nullwiderstandes und weiterer Parameter im Selbsttest-Zweig möglich.&lt;br /&gt;
* Für ATmega168/328 können auch Induktivitäten von etwa 0.01mH bis über 20H erkannt und gemessen werden.&lt;br /&gt;
* Für ATmega168/328 ist eine ESR-Messung (Equivalent Series Resistance) für Kondensatoren über 90 nF mit einer Auflösung von 0.01 Ohm integriert.&lt;br /&gt;
* für ATmega168/328 wird für Kondensatoren über 5 nF der Spannungsverlust Vloss nach einem Ladepuls untersucht. Damit läßt sich die Güte der Kondensatoren abschätzen.&lt;br /&gt;
* für ATmega328 sind mit einer Menüfunktion, die mit einem längeren Tastendruck (&amp;gt; 0.5 s) aufgerufen werden kann, weitere Funktionen aus einer Liste möglich. Ein kurzer Tastendruck zeigt die nächste Funktion. Ein längerer Tastendruck startet die angezeigte Funktion. Nachfolgend die Liste der bisher eingebauten Zusatzfunktionen:&lt;br /&gt;
** Frequenzmessung an dem PD4 Pin, der aber auch für den LCD-Anschluß benutzt wird. Der Pin wird für die Messung auf Eingang umgeschaltet. Die anliegende Frequenz wird zunächst für 1 Sekunde ausgezählt. Wenn die Frequenz unter 25 kHz liegt, wird auch eine mittlere Periode gemessen und daraus eine Frequenz berechnet mit einer Auflösung von bis zu 0.001 mHz.&lt;br /&gt;
** Spannungsmessung am PC3 Pin, wenn dieser nicht für die serielle Ausgabe benutzt wird. Bei ATmega328 mit 32 Pins (PLCC) kann aber auch der ADC6 oder ADC7 Pin benutzt werden. Da ein 10:1 Teiler am Eingang benutzt wird, können Spannungen bis zu 50V gemessen werden. Mit einer Erweiterung der Schaltung (DC-DC Konverter) können auch Zenerdioden gemessen werden.&lt;br /&gt;
** Frequenzerzeugung am TP2 Port. Über den am PB2 Pin angeschlossenen 680 Ohm Widerstand kann ein Signal mit einer aus einer Liste einstellbaren Frequenz von 1 Hz bis 2 MHz am TP2 Port ausgegeben werden. Der TP1 Port ist dabei auf Masse geschaltet.&lt;br /&gt;
** Pulsweitenmodulation mit fester Frequenz und einstellbarer Pulsweite auf dem TP2 Port. Der Zähler 1 wird für diese Funktion als 10-Bit Zähler benutzt. Der TP1 Port ist auf Masse geschaltet. Die Pulsweite kann durch kurzen Tastendruck um 1% und durch längeren Tastendruck um 10% erhöht werden.&lt;br /&gt;
** Mit einer separaten Kapazitäts- und ESR-Messung können an TP1 und TP3 angeschlossene Kondensatoren mit einer Kapazität von etwa 2µF bis 50mF meist auch in der Schaltung gemessen werden. Hierbei sollte aber immer sichergestellt sein, daß die Kondensatoren keine Restladung mehr haben.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Funktionen sind zeitbegrenzt wie die Dialogfunktion selbst auch, wenn die POWER_OFF Option in der Konfigurationsdatei (Makefile) eingeschaltet ist.&lt;br /&gt;
Ausführlichere Informationen mit Meßbeispielen kann man in den pdf-Dokumentationen in deutscher und englischer Sprache nachlesen. Auch russische Übersetzung der Dokumentationen sind verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Software wurde basierend auf der Arbeit von Markus F. weiterentwickelt.&lt;br /&gt;
Der Teil für die Kondensatormessung wurde komplett neu geschrieben und auch die Widerstandsmessung wurde erheblich überarbeitet. Bei Schwierigkeiten und Problemen sollte man mich über E-mail oder über den Diskussionsteil (thread) benachrichtigen.  Nur wenn ich von Problemen weiß, kann ich hoffentlich Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
Weitere Einzelheiten sowie Beschreibung der einzelnen Meßverfahren und Beispiel-Ergebnisse habe ich in der pdf-Dokumentation (deutsche und englische Version) beschrieben. Hier findet man auch Hinweise zum Konfigurieren der Software mit Makefile Parametern und Optionen. &lt;br /&gt;
Die Kommentare im Quellcode sind in englischer Sprache.&lt;br /&gt;
Neu eingebaut in der Software ist eine Selbsttest-Funktion, in der die Funktion des Testers gemessen wird. In diesen Selbsttest ist auch ein Kalibrationsteil integriert.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Im Prinzip ist die neue Software so zu konfigurieren, daß sie auf der bereits von Markus F. vorgestellten Hardware ohne Änderungen läuft.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll sind dennoch einige Änderungen:&lt;br /&gt;
&lt;br /&gt;
* Der Prozessor sollte auf einen 8 MHz Taktfrequenz umgestellt werden, am besten mit einem externen Quarz. Dazu müssen die fuses des ATmega geändert werden.&lt;br /&gt;
* Ein &amp;quot;pull up&amp;quot; Widerstand von etwa 27 kOhm sollte von Pin 13 (PD7) des ATmega nach VCC nachgerüstet werden.&lt;br /&gt;
* Der 100 nF Kondensator am Pin 21 (AREF) kann entweder ganz entfernt werden oder besser durch einen 1 nF Kondensator ersetzt werden.&lt;br /&gt;
* Wenn die elektronische Einschaltung des Testers Probleme macht, sollte wenigstens der C2 Kondensator an der Basis von Transistor T1 auf 10 nF reduziert werden und ggf. auch der Widerstand R7 auf 3,3 kOhm reduziert werden. Das komplette Schaltbild und Einzelheiten dazu findet man in der PDF Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Die Gründe und die Einzelheiten für diese Änderungen sowie weitere Hinweise für einen Neuaufbau sind im Hardware-Kapitel meiner pdf-Dokumentation beschrieben. Empfohlen wird ein ATmega168 Prozessor oder auch ein ATmega328 Prozessor, weil der ADC mit der Autoscale Funktion im Bedarfsfall von der 5V Referenz (VCC) auf die interne Referenz-Spannung umgeschaltet wird. Die interne Referenz hat für der ATmega8 eine Spannung von 2,56V, für die anderen Prozessoren aber 1,1 Volt. Mit 1,1 V kann eine bessere Auflösung des ADC für gemessene Spannungen unter 1 Volt erreicht werden.&lt;br /&gt;
Man kann den ATmega8 ohne Hardwareänderung gegen einen ATmega168 oder ATmega328 austauschen!&lt;br /&gt;
Hier ist der Teil der Schaltung, der für die Messung erforderlich ist.&lt;br /&gt;
Die Elektronik für die Batterieversorgung und die automatische Abschaltung fehlt in diesem Schaltbild.[[Datei:TransistorTesterVC1.png|miniatur|Schaltbild ohne Stromversorgung]]&lt;br /&gt;
&lt;br /&gt;
Die rot markierten Bauteile sind nicht unbedingt erforderlich, können aber zu einer Verbesserung der Messgenauigkeit beitragen. Die grün markierten Bauteile sind gegenüber dem ersten Entwurf von Markus F. geändert.&lt;br /&gt;
Die Eagle Dateien von Asko B. für drei Varianten sind im Thread zu finden bei der Adresse: http://www.mikrocontroller.net/topic/248078?page=4#2891344&lt;br /&gt;
&lt;br /&gt;
Hier ist der Artikel der 1. Transistortester Version von Markus F. zu finden: [[AVR-Transistortester]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen zur neuen Version ==&lt;br /&gt;
Der Thread mit meinen älteren Software-Versionen und einigen Problemfällen sowie Hardware-Vorschlägen ist unter [http://www.mikrocontroller.net/topic/248078#new http://www.mikrocontroller.net/topic/248078#new] zu finden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Downloads == Alle Versionen von der Software und der Doku sind im SVN gespeichert.&lt;br /&gt;
Die Benutzer können über den svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/] das gewählte Verzeichnis als &amp;quot;GNU tarball&amp;quot; runterladen.&lt;br /&gt;
Beim Aufruf des svnbrowsers steht dazu unter der Datei/Verzeichnis Liste der Eintrag &amp;quot;Download GNU tarball&amp;quot;.&lt;br /&gt;
Zum Auspacken der heruntergeladenen transistortester*.tar.gz Datei benötigen Windows Benutzer eine geeignete Software wie das Freeware Paket [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
Nach dem Auspacken hat man den vorher mit dem svnbrowser ausgewählten Verzeichnisbaum auf seinem eigenen Rechner.&lt;br /&gt;
Ein direkter Zugriff auf die Dateien mit dem svnbrowser ist nicht möglich!&lt;br /&gt;
Eine andere Methode auf den Inhalt des svn Archivs zuzugreifen besteht mit der Installation des TortoiseSVN Plugins für den Windows Explorer.&lt;br /&gt;
Damit ist dann der Zugriff über [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] direkt auf das Archiv mit dem Browser möglich.&lt;br /&gt;
Linux Benutzer können auch direkt über svn auf das Archiv zugreifen.&lt;br /&gt;
&lt;br /&gt;
== Downloads (russisch) ==  &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt; &amp;lt;/span&amp;gt; == Загрузок == Все версии программного обеспечения и документации, хранятся в SVN.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Пользователь может загрузить выбранный каталог в качестве &amp;quot;GNU архива&amp;quot; за svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/].&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; При вызове svnbrowsers, смотрите в список файлов / каталогов, запись &amp;quot;Скачать GNU архив&amp;quot;.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Для распаковки загруженного транзистор тестер файл * .tar.gz вам нужно пользователи Windows подходящий программного обеспечения, таких как бесплатный пакет [http://www.7-zip.org/ 7-Zip].&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; После распаковки у нас есть собственный заранее с svnbrowser выбран в дереве каталогов на своем компьютере.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Прямой доступ к файлам с svnbrowser не возможно!&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt; Еще один способ получить доступ к содержимому хранилища SVN состоит из установки TortoiseSVN плагин для Windows Explorer.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/span&amp;gt; Это затем кнопкой [SVN: SVN //mikrocontroller.net/transistortester: //mikrocontroller.net/transistortester] прямо в вашем архиве, используя браузер.&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;notranslate&amp;quot; onmouseover=&amp;quot;_tipon(this)&amp;quot; onmouseout=&amp;quot;_tipoff()&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;google-src-text&amp;quot; style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/span&amp;gt; Пользователи Linux могут получить доступ непосредственно из SVN в архив.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Downloads (english) ==&lt;br /&gt;
All versions of the software and documentation are saved in the SVN archive.&lt;br /&gt;
Users can download a &amp;quot;GNU tarball&amp;quot; of the previous selected directory with the svnbrowser [http://www.mikrocontroller.net/svnbrowser/transistortester/ http://www.mikrocontroller.net/svnbrowser/transistortester/].&lt;br /&gt;
Windows users need a additional tool like the freeware 7-Zip to unpack the downloaded transistortester*.tar.gz file.&lt;br /&gt;
After unpacking you have a copy of the selected directory at your own computer.&lt;br /&gt;
The direct access is not possible with the svnbrowser!&lt;br /&gt;
&lt;br /&gt;
Another way to get access to the SVN data is to install the TortoiseSVN plugin for the windows explorer. After installing you&lt;br /&gt;
can access the data with [svn://mikrocontroller.net/transistortester svn://mikrocontroller.net/transistortester] .&lt;br /&gt;
&lt;br /&gt;
Linux users can also access the data with svn directly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Ordnerstruktur und Beschreibung der  &#039;&#039;Pfade&#039;&#039; im SVN&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:#B3B7FF&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Ordner/directory&#039;&#039;&#039; || &#039;&#039;&#039;Dateien/files&#039;&#039;&#039; || &#039;&#039;&#039;Beschreibung/description&#039;&#039;&#039;&lt;br /&gt;
|-   style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Doku&#039;&#039;&#039; || || || Enthält die Dokumentation als PDF und als pdflatex-Quelltext&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Letzter Entwicklungsstand der Dokumentation inclusive Bilder und Diagrammen&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/german&#039;&#039;&#039; || || enthält die deutschen Texte, Makefile und PDF-Dokumentation der Entwicklerversion&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/english&#039;&#039;&#039; || || contains the English text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/pdftex/russian&#039;&#039;&#039; || || contains the Russian text, Makefile and PDF documentation of the developer version&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; ||&#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/german&#039;&#039;&#039; || || &#039;&#039;Aktuelle PDF Dokumentation in deutsch&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/english&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in English&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/russian&#039;&#039;&#039; || || &#039;&#039;Current PDF documentation in Russian language&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/german&#039;&#039;&#039; || || &#039;&#039;PDF Dokumentationen zu früheren Softwareversionen&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags/old/english&#039;&#039;&#039; || || &#039;&#039;PDF documentation for earlier software versions&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Hardware&#039;&#039;&#039; || || || Hardware Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid&#039;&#039;&#039; || || Verzeichnis für eine Streifenleiterplatine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ttester_strip_grid.diy&#039;&#039;&#039; || || Beispiel einer Streifenleiterplatine, DIYLC-Datei&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/TTester_strip.pdf&#039;&#039;&#039; || || Ergebnis der Streifenleiterplatine im PDF Format&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/LiesMich.txt&#039;&#039;&#039; || || Kurzdokumentation für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;strip_grid/ReadMe.txt&#039;&#039;&#039; || || Short documentation for the strip grid board&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Entwurf von Markus R. mit LED-Dimmer im Eagle 6.4.0 Format&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#B9FFC5&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Software&#039;&#039;&#039; || || || Software für AVR-GCC 4.5.3&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk&#039;&#039;&#039; || || Aktueller Software-Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/default&#039;&#039;&#039; || || Makefile und Programmierdaten für ATmega168 mit Standard-Layout&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit Knopfzellenbetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega168 mit LiPo-Akkubetrieb (FiFi)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Standard-Layout (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_1.9V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit Knopfzellenbetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_3.3V&#039;&#039;&#039; || || Makefile und Daten für ATmega328 mit LiPo-Akkubetrieb (Funkamateur)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega168_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega168 für Streifenleiter-Platine&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine (ab Version 1.08k)&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega328_strip_grid_dogm&#039;&#039;&#039; || || Makefile und Daten für ATmega328 für Streifenleiter-Platine mit DOG-M Display&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;trunk/mega8&#039;&#039;&#039; || || Makefile und Daten für ATmega8. Ab Version 1.00k ist der Selbsttest für den ATmega8 nicht mehr konfigurierbar.&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;tags&#039;&#039;&#039; || || Fertige Software Versionen als ZIP gepackt&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || || &#039;&#039;changelog.txt&#039;&#039; || &#039;&#039;Hier sollte jede Änderung mit Versionsnummer eingetragen werden&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| || &#039;&#039;&#039;Markus&#039;&#039;&#039; || || Alternative Software von Markus R., bitte README beachten! Die Software wurde aufgeräumt und ist viel besser strukturiert, läuft aber nur auf einem ATmega168 oder ATmega328. Die Software läuft nur auf dem Standard-Layout.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Kubi48</name></author>
	</entry>
</feed>