<?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=192.102.169.65</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=192.102.169.65"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/192.102.169.65"/>
	<updated>2026-04-11T10:23:02Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Spannungsteiler&amp;diff=77620</id>
		<title>Spannungsteiler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Spannungsteiler&amp;diff=77620"/>
		<updated>2013-07-16T13:19:43Z</updated>

		<summary type="html">&lt;p&gt;192.102.169.65: Doppeltes Wort entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Oft ist es notwendig die Ausgangsspannung eines Sensors an den Eingangsspannungsbereich eines [[AD-Wandler]]s anzupassen. Ist die Ausgangsspannung größer als die Eingangsspannung ist dies sehr einfach und kostengünstig mit einem Spannungsteiler machbar.&lt;br /&gt;
&lt;br /&gt;
== Einfacher Spannungsteiler ==&lt;br /&gt;
&lt;br /&gt;
Die wohl einfachste Anwendung des ohmschen Gesetzes ist der einfache Spannungsteiler. Dabei wird eine große Eingangsspannung linear in eine kleine Ausgangsspannung umgesetzt. Der mathematische Zusammenhang ist dabei&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{AUS}=U_{EIN}\cdot \frac{R_2}{R_1+R_2}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[bild:st_einfach.png]]&lt;br /&gt;
&lt;br /&gt;
Die Berechnung von R1 und R2 ist einfach. Es wird ein Wert für R1 oder R2 gewählt und die Formel nach R1 bzw. R2 umgestellt. Das soll hier beispielhaft geschehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;R_2=R_1\cdot \frac{U_{AUS}}{U_{EIN}-U_{AUS}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Programm, das den Spannungsteiler mit der niedrigsten Toleranz automatisch berechnet, findet sich unter: http://www.elexs.de/kap2_4.htm Online geht dies hier: http://www.gjlay.de/helferlein/spannungsteiler.html&lt;br /&gt;
&lt;br /&gt;
== Spannungsteiler mit Biaskorrektur ==&lt;br /&gt;
Manche Spannungsteiler ziehen Strom, bzw liefern einen &#039;&#039;konstanten&#039;&#039; Strom. Eine Möglichkeit besteht darin, die Widerstände niederohmig zu Dimensionieren. Nachteil dieser Lösung ist die überproportional zunehmende Verlustleistung.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man den Spannungsteiler mit Offset folgendermaßen berechnen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{AUS}=\frac{R_2 \cdot U_{EIN}}{R_1+R_2}-\frac{I_B}{\frac{1}{R_1}+\frac{1}{R_2}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Löst man die Gleichung nach R2 auf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;R_{2}=\frac{U_{AUS} \cdot R_1}{U_{EIN}-I_B \cdot R_1-U_{AUS}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spannungsteiler mit Offset, passiv ==&lt;br /&gt;
&lt;br /&gt;
Um einiges komplizierter wird die Situation, wenn die Eingangsspannung mit einem Offset behaftet ist, oder wenn die Ausgangsspannung einen Offset haben soll. Hier kommt ein Spannungsteiler mit 3 Widerständen zum Einsatz. Die Berechnung der Widerstände R1, R2 und R3 ist um einiges komplexer. Hier muss bereits mit dem Überlagerungsprinzip (Superpositionsprinzip) gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{AUS} = U_{EIN} \cdot \frac{\frac{R1 \cdot R2}{R1+R2}}{\frac{R1 \cdot R2}{R1+R2} + R3}&lt;br /&gt;
 + Vcc \cdot \frac{\frac{R3 \cdot R2}{R3+R2}}{\frac{R3 \cdot R2}{R3+R2} + R1} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{EIN} = \left(U_{AUS} - Vcc \cdot \frac{\frac{R3 \cdot R2}{R3+R2}}{\frac{R3 \cdot R2}{R3+R2} + R1}\right) \cdot \frac{\frac{R1 \cdot R2}{R1+R2} + R3}{\frac{R1 \cdot R2}{R1+R2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die praktische Anwendung zu vereinfachen finden sich alle Formeln in einer schönen [[media:Spannungsteiler_mit_Offset.zip | Exceltabelle]] wieder. Die Nutzung ist praktisch selbsterklärend. Im oberen Teil trägt man alle gegebenen bzw. gewünschten Parameter ein, im Mittelteil erscheinen Zwischenergebnisse, die jedoch für die direkte Anwendung nicht von Bedeutung sind. Wichtig sind nur die Ergebnisse ganz unten mit den Werten für R1 und R3 sowie dem Eingangs- und Ausgangswiderstand des Spannungsteilers sowie die obere Grenzfrequenz.&lt;br /&gt;
&lt;br /&gt;
[[bild:st_offet.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Anwendung ist es wichtig zu wissen, daß die Quelle, welche den Spannungsteiler speist, einen geringen Innenwiderstand haben muß, damit es nicht zu unakzeptablen Meßfehlern kommt. Pi mal Daumen gilt, daß der Innenwiderstand nur 1% vom Eingangswiderstand des Spannungsteilers betragen darf, damit der Meßfehler nicht größer als 1% wird (R2 möglichst groß wählen). Ist das nicht möglich dann muß ein Operationsverstärker als Impedanzwandler eingesetzt werden (Spannungsfolger). Als weiterer systematischer Messfehler kommt noch die Ungenauigkeit der Widerstände R1..R3 hinzu. Bei 1% Metallschichtwiderständen beträgt dieser etwa 2%. Wenn es genauer sein soll muß man 0,1% Widerstände verwenden oder eine Kalibrierung durchführen. Eine dritte systematische Fehlerquelle ist die Spannung Vcc, welche normalerweise die Versorgungsspannung bzw. Referenzspannung des ADC ist. Der Einfluss von Vcc wird durch den Spannungsteiler etwas abgeschwächt und liegt bei ca. 0,1 bis 1. D.H. 10mV Fehler von Vcc erscheinen als 1..10mV Fehler auf dem Messsignal. Selbstverständlich muss Vcc auch ausreichend stabil und belastbar sein. Der einfache Aufbau wird jedoch mit einigen Nachteilen erkauft.&lt;br /&gt;
&lt;br /&gt;
* relativ geringer Eingangswiderstand&lt;br /&gt;
* hoher Ausgangswiderstand&lt;br /&gt;
* bei hochohmigen Widerständen sinkt die obere Grenzfrequenz, nur langsame Signale sind dann noch meßbar&lt;br /&gt;
Als grobe Abschätzung gilt&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;R_{aus}=\frac{1}{\frac{1}{R_1} + \frac{1}{R_2} + \frac{1}{R_3}}&amp;lt;/math&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;f_{3dB}=\frac{1}{2 \pi \cdot R_{aus} \cdot C_{ein}}&amp;lt;/math&amp;gt;&lt;br /&gt;
* Einschränkungen bezüglich der Werte für Uein_min, Uein_max, Uaus_min, Uaus_max&lt;br /&gt;
** Uaus_min &amp;gt;= Uein_min&lt;br /&gt;
** Uaus_max &amp;gt;= Uein_max&lt;br /&gt;
** Vcc &amp;gt;= Uein_max&lt;br /&gt;
&lt;br /&gt;
(&amp;lt;math&amp;gt;f_{3dB}&amp;lt;/math&amp;gt; ist die Frequenz, bei der das Ausgangssignal um 3dB (~30%) abgefallen ist.)&lt;br /&gt;
&lt;br /&gt;
Nachfolgend ist eine praktische Schaltung des Spannungsteilers mit dem [[AVR]] Mikrocontroller gezeigt. Prinzipiell gilt sie natürlich für jeden Mikrocontroller bzw. ADC. Wichtig ist hier der Kondensator C1. Dieser ist notwendig, um kurzzeitig Strom zu liefern, wenn der ADC das Eingangssignal abtastet. Leider sinkt damit auch die obere Grenzfrequenz (siehe Formel für f_3dB). Hier muß ein Kompromiss aus Grenzfrequenz, Ausgangswiderstand und Meßfehler gefunden werden. Der Kondensator C2 ist kein diskret platziertes Bauteil, er symbolisiert vielmehr die unvermeidliche Eingangskapazität des ADC. &lt;br /&gt;
&lt;br /&gt;
[[bild:st_avr.png]]&lt;br /&gt;
&lt;br /&gt;
== Spannungsteiler mit Offset, aktiv ==&lt;br /&gt;
&lt;br /&gt;
Mit etwas mehr Aufwand kann man die genannten Probleme beseitigen. Ein Operationsverstärker bietet hier viele Vorteile.&lt;br /&gt;
&lt;br /&gt;
* sehr hoher Eingangswiderstand&lt;br /&gt;
* niedriger Ausgangswiderstand, wichtig zum speisen von ADC Eingängen&lt;br /&gt;
* keine Einschränkungen bezüglich der Werte für Uein_min, Uein_max, Uaus_min, Uaus_max&lt;br /&gt;
&lt;br /&gt;
[[bild:st_opv.png]]&lt;br /&gt;
&lt;br /&gt;
Der mathematische Zusammenhang ist dabei gegeben durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_\text{AUS}=U_\text{Offset}+ \left(U_\text{EIN}-U_\text{Offset}\right) \cdot \left(1+ \frac{R_1}{R_2}\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Bauteile]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spannungsteiler, der Geheimtip ==&lt;br /&gt;
&lt;br /&gt;
Oft verwendet man Spannungsteiler, um ein Signal für eine anschließende ADC-Wandlung anzupassen.&lt;br /&gt;
Verwendet man 15K und 1K bzw. 150K und 10K stellt sich ein Teilungsverhältnis von 1:16 ein...welches sehr einfach durch 4fach-shift im Controller kompensiert werden kann. Das geht wesentlich schneller, als die entsprechende Multiplikation.&lt;/div&gt;</summary>
		<author><name>192.102.169.65</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=MSPGCC&amp;diff=2905</id>
		<title>MSPGCC</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=MSPGCC&amp;diff=2905"/>
		<updated>2004-07-21T12:30:49Z</updated>

		<summary type="html">&lt;p&gt;192.102.169.65: /* binutils */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MSPGCC ist ein kostenloser, unbeschränkter [[C]]-[[Compiler]] für die [[MSP430]]-[[Mikrocontroller]] von [[TI]]. Die Portierung auf MSP430 wurde von Chris Liechti und Dmitry Diky durchgeführt.&lt;br /&gt;
&lt;br /&gt;
== Dokumentation ==&lt;br /&gt;
&lt;br /&gt;
* [http://mspgcc.sourceforge.net/manual/ MSPGCC Manual]&lt;br /&gt;
* [http://mspgcc.sourceforge.net/faq/ FAQ]&lt;br /&gt;
&lt;br /&gt;
== Beispielprogramme ==&lt;br /&gt;
&lt;br /&gt;
Für MSPGCC sind umfangreiche Beispielprogramme ([[LCD]]-Ansteuerung, TCP/IP, ...) verfügbar, außerdem wurden alle TI-Appnotes (C und Assembler) von Steve Underwood für MSPGCC angepasst.&lt;br /&gt;
&lt;br /&gt;
* [http://cvs.sourceforge.net/viewcvs.py/mspgcc/examples/ MSPGCC Beispiele &amp;amp; Appnotes]&lt;br /&gt;
&lt;br /&gt;
== Windows-Version ==&lt;br /&gt;
&lt;br /&gt;
* [http://prdownloads.sourceforge.net/mspgcc/mspgcc-20040401.exe MSPGCC Komplettpaket inkl. Insight und gdb (01.04.2004)]&lt;br /&gt;
&lt;br /&gt;
== Installationsanleitung für Unix/Linux/Cygwin ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ su&lt;br /&gt;
 &lt;br /&gt;
  $ mkdir /tmp/mspgcc&lt;br /&gt;
  $ cd /tmp/mspgcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== binutils ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
  $ wget ftp://sources.redhat.com/pub/binutils/releases/binutils-2.14.tar.bz2&lt;br /&gt;
  $ tar xjvf binutils-2.14.tar.bz2&lt;br /&gt;
 &lt;br /&gt;
  $ cd binutils-2.14&lt;br /&gt;
  $ ./configure --prefix=/usr/local/msp430 --target=msp430&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ..&lt;br /&gt;
 &lt;br /&gt;
  $ export PATH=/usr/local/msp430/bin:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&#039;&#039;&#039;Fetter Text&#039;&#039;&#039;&#039;&#039;Kursiver Text&#039;&#039;&#039;&#039;Kursiver Text&#039;&#039;[[Link-Text]]&lt;br /&gt;
== Ebene 2 Überschrift ==&lt;br /&gt;
&lt;br /&gt;
=== gcc ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
  $ wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-3.2/gcc-core-3.2.3.tar.bz2&lt;br /&gt;
  $ tar xjvf gcc-core-3.2.3.tar.bz2&lt;br /&gt;
 &lt;br /&gt;
  $ cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc co gcc/gcc-3.3&lt;br /&gt;
  $ cp -r gcc/gcc-3.3/* gcc-3.2.3/&lt;br /&gt;
 &lt;br /&gt;
  $ cd gcc-3.2.3&lt;br /&gt;
  $ ./configure --prefix=/usr/local/msp430 --target=msp430&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== msp430-libc ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
  $ cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc co msp430-libc&lt;br /&gt;
 &lt;br /&gt;
  $ cd msp430-libc/src&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ../..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gdb ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
  $ wget gdb-6.0.tar.bz2&lt;br /&gt;
  $ tar xjvf gdb-6.0.tar.bz2&lt;br /&gt;
 &lt;br /&gt;
  $ cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc co gdb/gdb-current&lt;br /&gt;
  $ cp -r gdb/gdb-current/* gdb-6.0/&lt;br /&gt;
 &lt;br /&gt;
  $ cd gdb-6.0&lt;br /&gt;
  $ ./configure --prefix=/usr/local/msp430 --target=msp430&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JTAG ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc co jtag&lt;br /&gt;
 &lt;br /&gt;
  $ cd jtag/hardware_access&lt;br /&gt;
  $ make&lt;br /&gt;
  $ mv libHIL.so /usr/local/lib&lt;br /&gt;
  $ ldconfig&lt;br /&gt;
  $ cd ../..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== gdbproxy ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
  $ wget http://twtelecom.dl.sourceforge.net/sourceforge/mspgcc/msp430-gdbproxy&lt;br /&gt;
  $ chmod +x msp430-gdbproxy&lt;br /&gt;
  $ mv msp430-gdbproxy /usr/local/msp430/bin/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installations-Skript ===&lt;br /&gt;
&lt;br /&gt;
Für Installation/Update gibt es hier ein bash Skript, das nach dem Starten (und einmal Return zum Downloaden der Sourcen aus dem CVS) das Installieren automatisch erledigt.&lt;br /&gt;
Eingebaut sind auch die Anpassungen von ~/.profile und ~/.gdbinit, so dass man sofort loslegen und auch Debuggen kann.&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/attachment.php/81981/build_mspgcc.sh Installations-Skript]&lt;br /&gt;
&lt;br /&gt;
Getestet ist es bisher nur unter SuSE Linux, aber auch wenn man es anpassen muß ist es besser als manuell zu Installieren, denn damit spart man sich Zeit und Fehler z.B. durch Vertippen.&lt;br /&gt;
&lt;br /&gt;
== Einfaches Beispielprogramm ==&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 void wait(void);         /* prototype for wait()      */&lt;br /&gt;
&lt;br /&gt;
 int&lt;br /&gt;
 main(void)&lt;br /&gt;
 { /* main function, called by startup-code */&lt;br /&gt;
   P1DIR = 0xFF;          /* port 1 = output           */&lt;br /&gt;
   P1OUT = 0x01;          /* set bit 0 in port 1       */&lt;br /&gt;
  &lt;br /&gt;
   for(;;)&lt;br /&gt;
   { /* infinite loop */&lt;br /&gt;
     P1OUT = ~P1OUT;      /* invert port 1             */&lt;br /&gt;
     wait();              /* call delay function       */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void&lt;br /&gt;
 wait(void)&lt;br /&gt;
 { /* simple delay function */&lt;br /&gt;
   volatile int i;        /* declare i as volatile int */&lt;br /&gt;
   for(i = 0; i &amp;lt; 32000; i++)&lt;br /&gt;
   ;                      /* repeat 32000 times (nop)  */&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode für msp430x1121 kompilieren ===&lt;br /&gt;
  $ msp430-gcc -Os -mmcu=msp430x1121 -o test1.elf test1.c&lt;br /&gt;
&lt;br /&gt;
=== Assemblerlisting erzeugen (optional) ===&lt;br /&gt;
  $ msp430-objdump -DS test1.elf &amp;gt; test1.lst&lt;br /&gt;
&lt;br /&gt;
=== Hex-Datei erzeugen ===&lt;br /&gt;
  $ msp430-objcopy -O ihex test1.elf test1.hex&lt;br /&gt;
&lt;br /&gt;
Die Hex-Datei kann man mit C-Spy (im Kickstart-Paket enthalten) über das JTAG-Interface in den Controller programmieren. Nach einem Klick auf &amp;quot;Go&amp;quot; läuft das Programm los. Wenn 2 LEDs an P1.0 und P1.1 angeschlossen sind, sollten sie nun blinken.&lt;br /&gt;
&lt;br /&gt;
== In-System-Debugging mit GDB/Insight und dem Flash Emulation Tool (FET) ==&lt;br /&gt;
&lt;br /&gt;
Wie bei anderen MSP430-Compilern ist es möglich mspgcc-Programme direkt in der Schaltung zu debuggen. Alles was man dazu braucht ist ein JTAG-Adapter, mdp430-gdbproxy, und gdb (im aktuellen Windows-Paket bereits enthalten).&lt;br /&gt;
Kompilieren&lt;br /&gt;
&lt;br /&gt;
Um ein Programm mit GDB/Insight debuggen zu können, muss man die Option &amp;quot;-g&amp;quot; an den mspgcc-Aufruf anhängen:&lt;br /&gt;
&lt;br /&gt;
  $ msp430-gcc -mmcu=msp430x123 -g -Os -o test.elf test.c&lt;br /&gt;
&lt;br /&gt;
Damit erhält man die Datei &amp;quot;test.elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== gdbproxy starten ===&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt ist das Programm gdbproxy zu starten, das für die Kommunikation zwischen GDB und dem FET zuständig ist:&lt;br /&gt;
&lt;br /&gt;
  $ msp430-gdbproxy --port=2000 msp430&lt;br /&gt;
&lt;br /&gt;
Wenn das FET richtig an den Parallelport angeschlossen ist, sollte ungefähr der folgende Text angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
 info:      msp430: Target device is a &#039;MSP430F12x&#039; (type 11)&lt;br /&gt;
 notice:    msp430-gdbproxy: waiting on TCP port 2000&lt;br /&gt;
&lt;br /&gt;
=== Insight benutzen (Windows) ===&lt;br /&gt;
&lt;br /&gt;
Nachdem Insight gestartet ist (c:\msp430\bin\msp430-gdb.exe), klicke auf &amp;quot;File-&amp;gt;Open&amp;quot; und wähle die elf-Datei (z.B. &amp;quot;test.elf&amp;quot;) aus, die du debuggen möchtest.&lt;br /&gt;
&lt;br /&gt;
Klicke dann auf &amp;quot;Run-&amp;gt;Connect to target&amp;quot; und stelle folgendes ein:&lt;br /&gt;
&lt;br /&gt;
  Target:                    &amp;quot;Remote/TCP&amp;quot;&lt;br /&gt;
  Hostname:                  &amp;quot;localhost&amp;quot;&lt;br /&gt;
  Port:                      &amp;quot;2000&amp;quot;&lt;br /&gt;
  Set breakpoint at &#039;main&#039;:  yes&lt;br /&gt;
  Set breakpoint at &#039;exit&#039;:  yes&lt;br /&gt;
  Attach to target:          yes&lt;br /&gt;
  Download Program:          yes&lt;br /&gt;
  Command  after attaching:  &amp;quot;monitor erase all&amp;quot; (ACHTUNG: Optional, damit wird der gesamte Flash-Inhalt gelöscht!)&lt;br /&gt;
  Run Method:                Continue from last Stop&lt;br /&gt;
&lt;br /&gt;
Wenn man auf &amp;quot;Ok&amp;quot; klickt, sollte Insight berichten, dass die Verbindung erfolgreich aufgenommen wurde, und gdbproxy sollte melden:&lt;br /&gt;
  &amp;quot;notice: msp430-gdbproxy: connected&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Um den Debugging-Vorgang zu starten, klicke auf &amp;quot;Run&amp;quot; oder drücke einfach die Taste &amp;quot;r&amp;quot;. Wenn alles geklappt hat, sollte nun der Sourcecode des Programmes angezeigt werden und die erste Zeile von main() grün markiert sein. Der rote Punkt ist der Breakpoint, der von Insight automatisch gesetzt wurde. Um selber Breakpoints zu setzen oder zu löschen, klicke auf den Strich &#039;-&#039; am Anfang der Zeile.&lt;br /&gt;
&lt;br /&gt;
Jetzt kann man mit &#039;c&#039; (continue) das Programm am nächsten Breakpoint fortsetzen, die Zeilen mit &#039;s&#039; (step) der Reihe nach ausführen, oder einzelne Assemblerbefehle ausführen... aber Vorsicht mit &amp;quot;finish&amp;quot;: anscheinend hängt sich Insight manchmal bei diesem Befehl auf. Wenn man also eine Funktion beenden will, ist es wohl besser, einen Breakpoint auf das Ende der Funktion zu setzen und &amp;quot;continue&amp;quot; zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== DDD benutzen (Unix/Linux) ===&lt;br /&gt;
&lt;br /&gt;
Leider läuft Insight nicht besonders stabil und ist auch etwas umständlich zu bedienen. Wer Unix bzw. Linux verwendet, der ist deshalb mit DDD (http://www.gnu.org/software/ddd/) besser bedient. Um DDD zu verwenden braucht man msp430-gdbproxy und die Kommandozeilen-Version von GDB (msp430-gdb).&lt;br /&gt;
&lt;br /&gt;
Zuerst stellt man wie unter Windows über gdbproxy eine Verbindung zum JTAG-Adapter her. Wenn das funktioniert hat kann man DDD starten. Als Parameter wird der zu verwendende Debugger (msp430-gdb) und die zu ladende ELF-Datei (test.elf) übergeben:&lt;br /&gt;
&lt;br /&gt;
  $ ddd --debugger msp430-gdb test.elf&lt;br /&gt;
&lt;br /&gt;
Zunächst sollte man nun unter &amp;quot;Commands / Edit Buttons&amp;quot; ein paar Buttons anlegen, indem man die folgenden Zeilen in das Textfeld bei &amp;quot;Console Buttons&amp;quot; einfügt:&lt;br /&gt;
&lt;br /&gt;
  target remote localhost:2000     // Connect&lt;br /&gt;
  monitor erase all                // Erase&lt;br /&gt;
  load                             // Load&lt;br /&gt;
  monitor reset                    // Reset&lt;br /&gt;
&lt;br /&gt;
Um jetzt die Verbindung zum gdbproxy herzustellen muss man nur auf &amp;quot;Connect&amp;quot; klicken, danach auf &amp;quot;Erase&amp;quot; um den Flash-Speicher des Controllers zu löschen, und schließlich auf &amp;quot;Load&amp;quot;, damit das Programm in den Controller geladen wird. Mit &amp;quot;Reset&amp;quot; kann man einen Reset auslösen (wer hätte das gedacht?).&lt;br /&gt;
&lt;br /&gt;
=== GDB Scripts ===&lt;br /&gt;
&lt;br /&gt;
Hier eine kleine Ansammlung von Scripts, um download und reset via GDB etwas zu vereinfachen:&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/wikisoftware/upload/9/91/Gdb_scripts_win.zip gdb_scripts_win.zip]&lt;/div&gt;</summary>
		<author><name>192.102.169.65</name></author>
	</entry>
</feed>