<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[µController und eigenes Programm]]></title><description><![CDATA[<p>Servus Leute,</p>
<p>Um mein Projektarbeit fürs Studium fertig zu machen, muss ich mein selbstgeschriebenes Programm in Builder C++ mit AVR (ATMEL) µControler verbinden.</p>
<p>Mein Programm gibt am Ende einen C-Code heraus. Diesen Code versteht meinen AVR Controller über den Compiler GCC (<a href="http://gcc.gnu.org/" rel="nofollow">http://gcc.gnu.org/</a>).<br />
Meine Frage ist, wie binde ich diesen Compiler in mein Programm ein, damit ich einen µController programmieren kann?</p>
<p>Bisher habe ich den Test des C-Codes, welchen mir mein Programm ausgibt, immer über AVRStudio und GCC Compiler gemacht. Sprich ich habe den Code kopiert, ein Neues Projkt in AVRStudio angelegt und µController programmiert.<br />
Aber der Prof. verlangt, dass wir das direkt über das Programm tun müssen.</p>
<p>Ich habe eigentlich schon viel gegoogelt. Und einiges gefunden, was mir aber überhaupt nicht geholfen hat!!</p>
<p>Hat jemand vielleicht Vorschläge?? Oder diverse Links?? Oder am besten ein Beispiel Programm?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/205885/µcontroller-und-eigenes-programm</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 20:43:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205885.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Feb 2008 07:47:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to µController und eigenes Programm on Tue, 19 Feb 2008 07:47:05 GMT]]></title><description><![CDATA[<p>Servus Leute,</p>
<p>Um mein Projektarbeit fürs Studium fertig zu machen, muss ich mein selbstgeschriebenes Programm in Builder C++ mit AVR (ATMEL) µControler verbinden.</p>
<p>Mein Programm gibt am Ende einen C-Code heraus. Diesen Code versteht meinen AVR Controller über den Compiler GCC (<a href="http://gcc.gnu.org/" rel="nofollow">http://gcc.gnu.org/</a>).<br />
Meine Frage ist, wie binde ich diesen Compiler in mein Programm ein, damit ich einen µController programmieren kann?</p>
<p>Bisher habe ich den Test des C-Codes, welchen mir mein Programm ausgibt, immer über AVRStudio und GCC Compiler gemacht. Sprich ich habe den Code kopiert, ein Neues Projkt in AVRStudio angelegt und µController programmiert.<br />
Aber der Prof. verlangt, dass wir das direkt über das Programm tun müssen.</p>
<p>Ich habe eigentlich schon viel gegoogelt. Und einiges gefunden, was mir aber überhaupt nicht geholfen hat!!</p>
<p>Hat jemand vielleicht Vorschläge?? Oder diverse Links?? Oder am besten ein Beispiel Programm?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458584</guid><dc:creator><![CDATA[hw_sw]]></dc:creator><pubDate>Tue, 19 Feb 2008 07:47:05 GMT</pubDate></item><item><title><![CDATA[Reply to µController und eigenes Programm on Tue, 19 Feb 2008 08:00:51 GMT]]></title><description><![CDATA[<p>ich würde ganz normal avr-gcc mit system() aufrufen um das kompilieren abzuwickeln, ggf mit setenv() (<a href="http://www.gnu.org/software/libc/manual/html_node/Environment-Access.html#Environment-Access" rel="nofollow">http://www.gnu.org/software/libc/manual/html_node/Environment-Access.html#Environment-Access</a>) benötigte umgebungsvariablen setzen (bin mir nicht sicher ob das unter windows auch so geht). nach dem kompilieren genauso system() und z.B. avrdude programmieren. oder eine makefile generieren und dann mit system() make &lt;target&gt; aufrufen.<br />
das z.B. wäre eine makefile eines projektes von mir, in der make avrdude zum flashen aufruft:</p>
<pre><code>DEVICE = atmega32
AVRDUDE = avrdude -c stk500pp -p $(DEVICE) -P /dev/ttyS0
COMPILE = avr-gcc -Wall -O3 -I. -mmcu=$(DEVICE)

OBJECTS = usbdrv.o usbdrvasm.o main.o

all:	main.hex

.c.o:
	$(COMPILE) -c $&lt; -o $@

.S.o:
	$(COMPILE) -x assembler-with-cpp -c $&lt; -o $@

.c.s:
	$(COMPILE) -S $&lt; -o $@

flash:	all
	$(AVRDUDE) -U flash:w:main.hex:i

fuses:
	$(AVRDUDE) -U hfuse:w:0xc9:m -U lfuse:w:0x9f:m

clean:
	rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.bin *.o main.s usbdrv.s

main.bin:	$(OBJECTS)
	$(COMPILE) -o main.bin $(OBJECTS)

main.hex:	main.bin
	rm -f main.hex main.eep.hex
	avr-objcopy -j .text -j .data -O ihex main.bin main.hex
	./checksize.sh main.bin

disasm:	main.bin
	avr-objdump -d main.bin

cpp:
	$(COMPILE) -E main.c
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1458589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458589</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Tue, 19 Feb 2008 08:00:51 GMT</pubDate></item><item><title><![CDATA[Reply to µController und eigenes Programm on Tue, 19 Feb 2008 08:25:44 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>hw_sw schrieb:</p>
<blockquote>
<p>Bisher habe ich den Test des C-Codes, welchen mir mein Programm ausgibt, immer über AVRStudio und GCC Compiler gemacht. Sprich ich habe den Code kopiert, ein Neues Projkt in AVRStudio angelegt und µController programmiert.<br />
Aber der Prof. verlangt, dass wir das direkt über das Programm tun müssen.</p>
</blockquote>
<p>Kannst du das nicht so schrittweise einbauen, wie du es per Hand gemacht hast? So hast du schonmal eine Gliederung und kannst zu den Teilbereichen viel besser Fragen stellen. Also Datei öffnen und auslesen, dann Compiler öffnen und starten - so in Teilschritten.<br />
Eine Datei zu öffnen und den Inhalt zu kopieren sollte einfach sein, damit wäre dann der Anfang gemacht. Du kannst auch zusätzlich ein großes Eingabefeld in deine C++Anwendung einbauen und da den C-Code als Text eingeben / ausgeben lassen.<br />
Den Controller zu programmieren sollte auch kein Ding sein, einfach über USB/COM die Initialisierung machen und dann den compilierten Code rüberschieben. Ist doch einfach nur eine serielle Datenübertragung. Das Hauptproblem würde ich bei diesem Schritt darin sehen, herauszufinden wie die IAP-Sequenz abzulaufen hat.<br />
Insgesamt sähe ich da die Schwierigkeit, einfach den Compiler an sich einzubinden. Aber da kann dir die Community bestimmt helfen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458601</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Tue, 19 Feb 2008 08:25:44 GMT</pubDate></item><item><title><![CDATA[Reply to µController und eigenes Programm on Tue, 19 Feb 2008 08:45:29 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15829">@Kolumbus</a><br />
Das habe ich mir auch überlegt! Aber mit AVRStudio hast du überhaupt kein Anblick wie es wirklich funktioniet, daher muss man da anders vorgehen. Zmindesten denke ich das so!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17587">@sothis_</a><br />
ist es so kompleziert oder bin ich einfach naja! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Kann man da irgend wo ein Beispiel einsehen oder so?<br />
Weil <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Spätestens jetzt habe ich noch mehr Fragen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Irgendwo habe ich gelesen, dass es vorteilhaft wäre zu vertsehen auf AVRStudio zu verzichten und zu lernen, wie man mit WinAvr ohne AVRStudio<br />
umgeht. Gibt es irgend wo dafür Anleitungen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Ich habe folgende Aussage aus einem Forum gefunden:</p>
<pre><code>system() sollte man uebrigens eher nicht nehmen, um fremde Programme
aufzurufen. Das kann boese Sicherheitsluecken oeffnen, ist oft sehr
langsam und bietet keine Features wie direktes Einlesen der
Standard-Ausgabe des aufgerufenen Programms.
Besser ist es, betriebssystemspezifische Funktionen zu nehmen.
</code></pre>
<p>Was meinen Sie dazu? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458614</guid><dc:creator><![CDATA[hw_sw]]></dc:creator><pubDate>Tue, 19 Feb 2008 08:45:29 GMT</pubDate></item><item><title><![CDATA[Reply to µController und eigenes Programm on Tue, 19 Feb 2008 09:01:24 GMT]]></title><description><![CDATA[<p>hw_sw schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17587">@sothis_</a><br />
ist es so kompleziert oder bin ich einfach naja! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>es sieht nur kompliziert aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>hw_sw schrieb:</p>
<blockquote>
<p>Kann man da irgend wo ein Beispiel einsehen oder so?<br />
Weil</p>
</blockquote>
<p>ich hab dir doch eins gegeben, wenns auch nur ein makefile ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>hw_sw schrieb:</p>
<blockquote>
<p>Spätestens jetzt habe ich noch mehr Fragen?</p>
<p>Irgendwo habe ich gelesen, dass es vorteilhaft wäre zu vertsehen auf AVRStudio zu verzichten und zu lernen, wie man mit WinAvr ohne AVRStudio<br />
umgeht. Gibt es irgend wo dafür Anleitungen.</p>
<p>Ich habe folgende Aussage aus einem Forum gefunden:</p>
<pre><code>system() sollte man uebrigens eher nicht nehmen, um fremde Programme
aufzurufen. Das kann boese Sicherheitsluecken oeffnen, ist oft sehr
langsam und bietet keine Features wie direktes Einlesen der
Standard-Ausgabe des aufgerufenen Programms.
Besser ist es, betriebssystemspezifische Funktionen zu nehmen.
</code></pre>
<p>Was meinen Sie dazu?</p>
</blockquote>
<p>wenn derjenige nicht genauer argumentieren kann, würde ich persönlich erstmal nicht viel drauf geben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<blockquote>
<p>Das kann boese Sicherheitsluecken oeffnen, ist oft sehr<br />
langsam und bietet keine Features wie direktes Einlesen der<br />
Standard-Ausgabe des aufgerufenen Programms.</p>
</blockquote>
<p>selbst wenn dem so ist, ist das für dich relevant? wenn ja, dann musst du halt unter windows CreateProcess() benutzen (<a href="http://msdn2.microsoft.com/en-us/library/ms682425.aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/ms682425.aspx</a>)</p>
<p>hw_sw schrieb:</p>
<blockquote>
<p>Irgendwo habe ich gelesen, dass es vorteilhaft wäre zu vertsehen auf AVRStudio zu verzichten und zu lernen, wie man mit WinAvr ohne AVRStudio<br />
umgeht. Gibt es irgend wo dafür Anleitungen</p>
</blockquote>
<p>in der tat. bevor du noch nicht ein programm erfolgreich via kommandozeile mit avr-gcc kompiliert hast und selbiges mit avrdude, uisp oder was auch immer geflashed hast, kannst du auch nicht wissen, wie man dies aus einem eigenen programm bewerkstelligt. also probier dich erstmal daran <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> wenn diese abläufe sitzen, dann ist es ein einfaches, dies zu automatisieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458623</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Tue, 19 Feb 2008 09:01:24 GMT</pubDate></item><item><title><![CDATA[Reply to µController und eigenes Programm on Tue, 19 Feb 2008 09:34:12 GMT]]></title><description><![CDATA[<p>Verstehe ich das Richtig?</p>
<p>Ich habe jetzt was drüber auf der folgenden Seite gelesen:<br />
<a href="http://www.roboternetz.de/wissen/index.php/Avr-gcc" rel="nofollow">http://www.roboternetz.de/wissen/index.php/Avr-gcc</a></p>
<p>Dieser Makefile von dir beihaltet alle Befehle, die für kompelieren und flaschen nötig sind. Den startest du über system() in deinem Programm.<br />
Aber du benutzt AVRDUDE zu flaschen nicht dein eigenes Programm oder??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458642</guid><dc:creator><![CDATA[hw_sw]]></dc:creator><pubDate>Tue, 19 Feb 2008 09:34:12 GMT</pubDate></item><item><title><![CDATA[Reply to µController und eigenes Programm on Tue, 19 Feb 2008 09:54:54 GMT]]></title><description><![CDATA[<p>hw_sw schrieb:</p>
<blockquote>
<p><a href="http://www.roboternetz.de/wissen/index.php/Avr-gcc" rel="nofollow">http://www.roboternetz.de/wissen/index.php/Avr-gcc</a></p>
</blockquote>
<p>richtig, da steht alles, was man braucht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>hw_sw schrieb:</p>
<blockquote>
<p>Dieser Makefile von dir beihaltet alle Befehle, die für kompelieren und flaschen nötig sind. Den startest du über system() in deinem Programm.<br />
Aber du benutzt AVRDUDE zu flaschen nicht dein eigenes Programm oder??</p>
</blockquote>
<p>richtig avrdude, man muss es ja wohl nicht übertreiben und alles selbst machen, lol</p>
<blockquote>
<p>AVRDUDE = avrdude -c stk500pp -p $(DEVICE) -P /dev/ttyS0</p>
</blockquote>
<p>ist die eigentliche befehlszeile. ein</p>
<pre><code>make flash
</code></pre>
<p>in meinem beispiel würde make veranlassen folgendes auszuführen:</p>
<pre><code class="language-cpp">avrdude -c stk500pp -p atmega32 -P /dev/ttyS0 -U flash:w:main.hex:i
</code></pre>
<p>hier wird also main.hex geflashed. dies ist natürlich jetzt ein beispiel für linux. welche kommandozeilenoptionen für windows nötig sind (insbesondere die angabe der schnittstelle, an der der programmer angeschlossen ist) musst du mal in der dokumentation nachlesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458659</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Tue, 19 Feb 2008 09:54:54 GMT</pubDate></item></channel></rss>