<?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=Ivan</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=Ivan"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Ivan"/>
	<updated>2026-04-10T10:08:56Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Lokale_Elektroniklieferanten&amp;diff=50830</id>
		<title>Lokale Elektroniklieferanten</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Lokale_Elektroniklieferanten&amp;diff=50830"/>
		<updated>2010-09-23T10:24:32Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Wels */  Gelöscht, da auch dieses alteingesessene Elektronikgeschäft aufgeben musste&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Einleitung=&lt;br /&gt;
Da nicht jeder beim Fehlen einzelner Bauteile eine Online-Bestellung aufgeben möchte und der eine oder andere regionale Anbieter nicht so gut zu finden ist, soll hier eine Liste entstehen, die hilft Anbieter zu finden. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Falls die Darstellungsart nicht gefällt oder Rubriken fehlen, so bitte nicht hier ändern, sondern das Template anpassen: [[Vorlage:ElektronikLieferant]]&amp;lt;br&amp;gt;&lt;br /&gt;
So soll das Template ausgefüllt werden:&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=hier Firmenname eintragen&lt;br /&gt;
|Straße=Straßenname, z.&amp;amp;nbsp;B. Musterstraße 123&lt;br /&gt;
|PLZ=PLZ, z.&amp;amp;nbsp;B. 12345&lt;br /&gt;
|Ort=Ort, z.&amp;amp;nbsp;B. München&lt;br /&gt;
|Telefon=Telnr., z.&amp;amp;nbsp;B. 012345/12341234&lt;br /&gt;
|Fax=Faxnr., z.&amp;amp;nbsp;B. 012345/12345234&lt;br /&gt;
|Öffnungszeiten=Öffnungszeiten eintragen&amp;lt;br&amp;gt;Neue Zeile mit &amp;quot;br&amp;quot; abgetrennt&lt;br /&gt;
|Weblink=http://www.mikrocontroller.net Link ohne umschliessende eckige Klammern&lt;br /&gt;
|Email=Emailadresse, z.&amp;amp;nbsp;B. xxx@yyy.de&lt;br /&gt;
|Bemerkung=ggf. Bemerkung, ansonsten Rubrik/Feld/Variable leer lassen&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Deutschland=&lt;br /&gt;
==Baden-Württemberg==&lt;br /&gt;
===Aalen===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=mükra electronic shop GmbH&lt;br /&gt;
|Straße=Wilhelm-Zapf-Str. 9&lt;br /&gt;
|PLZ=73430&lt;br /&gt;
|Ort=Aalen&lt;br /&gt;
|Telefon=07361/610820&lt;br /&gt;
|Fax=07361/610821&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 9.00 - 13.00 Uhr, 14.00 - 18.00 Uhr&amp;lt;br&amp;gt;Sa. 9.00 - 13.00 Uhr&lt;br /&gt;
|Weblink=http://onlineshop.muekra-electronic.com&lt;br /&gt;
|Email=info@muekra.de&lt;br /&gt;
|Bemerkung=Keine SMD-Teile&lt;br /&gt;
}}&lt;br /&gt;
===Esslingen===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=mükra electronic shop GmbH&lt;br /&gt;
|Straße=Bahnhofstr. 23&lt;br /&gt;
|PLZ=73728&lt;br /&gt;
|Ort=Esslingen&lt;br /&gt;
|Telefon=0711/355676&lt;br /&gt;
|Fax=0711/3108656&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 9.00 - 13.00 Uhr, 14.30 - 18.00 Uhr&amp;lt;br&amp;gt;Sa. 9.00 - 13.00 Uhr&lt;br /&gt;
|Weblink=http://onlineshop.muekra-electronic.com/FilES.php&lt;br /&gt;
|Email=info@muekra.de&lt;br /&gt;
|Bemerkung=Keine Mikrocontroller, keine SMD-Teile (ausser einige wenige Transistoren)&lt;br /&gt;
}}&lt;br /&gt;
===Heilbronn===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Krauss Elektronik GmbH&lt;br /&gt;
|Straße=Turmstraße 20&lt;br /&gt;
|PLZ=74072 &lt;br /&gt;
|Ort=Heilbronn&lt;br /&gt;
|Telefon=07131/68191&lt;br /&gt;
|Fax=07131/68192&lt;br /&gt;
|Öffnungszeiten=Mo.-Mi.+Fr. 9.00 - 18.00 Uhr&amp;lt;br&amp;gt;Do. 9.00 - 19.00 Uhr&amp;lt;br&amp;gt;Sa. 9.00 - 13.00 Uhr&lt;br /&gt;
|Weblink=http://www.krauss-elektronik.de/&lt;br /&gt;
|Email=info@krauss-elektronik.de&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
===Freiburg===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Omega electronic GmbH&lt;br /&gt;
|Straße=Eschholzstr. 58-60&lt;br /&gt;
|PLZ=79115&lt;br /&gt;
|Ort=Freiburg&lt;br /&gt;
|Telefon=0761/76776-0&lt;br /&gt;
|Fax=0761/76776-55&lt;br /&gt;
|Öffnungszeiten=Mo.-Sa.: 10:00 - 19:30&lt;br /&gt;
|Weblink=http://www.omega-electronic.de&lt;br /&gt;
|Email=info@omega-electronic.de&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
===Karlsbad===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=IT-WNS, Ute Heldt&lt;br /&gt;
|Straße=Schulstr. 13&lt;br /&gt;
|PLZ=76307&lt;br /&gt;
|Ort=Karlsbad - Mutschelbach&lt;br /&gt;
|Telefon=07202/936083&lt;br /&gt;
|Fax=07202/936085&lt;br /&gt;
|Öffnungszeiten=Nach Vereinbahrung (Email-Kontakt)&lt;br /&gt;
|Weblink=http://www.it-wns.de&lt;br /&gt;
|Email=info@it-wns.de&lt;br /&gt;
|Bemerkung=Bestellungen im Onlineshop können wahlweise auch direkt abgeholt werden&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Karlsruhe===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=mükra electronic shop GmbH&lt;br /&gt;
|Straße=Fritz-Erler-Straße 24&lt;br /&gt;
|PLZ=76133&lt;br /&gt;
|Ort=Karlsruhe&lt;br /&gt;
|Telefon=0721/374270&lt;br /&gt;
|Fax=0721/9379171&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 9.00 - 13.00 Uhr, 14.30 - 18.00 Uhr&amp;lt;br&amp;gt;Sa. 9.00 - 13.00 Uhr&lt;br /&gt;
|Weblink=http://www.muekra.com/Filiale_Karlsruhe&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Mc TEC Elektronik Vertriebs GmbH&lt;br /&gt;
|Straße=Kaiserstrasse 160&lt;br /&gt;
|PLZ=76133&lt;br /&gt;
|Ort=Karlsruhe&lt;br /&gt;
|Telefon=0721/24456&lt;br /&gt;
|Fax=0721/20061&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 10.00 - 19.00 Uhr&amp;lt;br&amp;gt;Sa. 10.00 - 15.00 Uhr&lt;br /&gt;
|Weblink=http://www.mctec.de/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=Vorübergehend geschlossen, Website down???&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Offenburg===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Günther Wultschner (Elektronikladen)&lt;br /&gt;
|Straße=Luisenstraße 16&lt;br /&gt;
|PLZ=77654&lt;br /&gt;
|Ort=Offenburg&lt;br /&gt;
|Telefon=0781 43270‎&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 9.00 - 19:00 Uhr&amp;lt;br&amp;gt;Sa. 9.00 - 16.00 Uhr&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Reutlingen===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=mükra electronic shop GmbH&lt;br /&gt;
|Straße=Federnseestr. 4 &lt;br /&gt;
|PLZ=72764&lt;br /&gt;
|Ort=Reutlingen&lt;br /&gt;
|Telefon=07121/370748&lt;br /&gt;
|Fax=07121/370741&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 9.30 - 13.00 Uhr, 14.00 - 18.00 Uhr&amp;lt;br&amp;gt;Sa. 9.30 - 13.00 Uhr&lt;br /&gt;
|Weblink=http://onlineshop.muekra-electronic.com&lt;br /&gt;
|Email=info@muekra.de&lt;br /&gt;
|Bemerkung=Keine SMD-Teile&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Ulm===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=mükra electronic shop GmbH&lt;br /&gt;
|Straße=Neutorstr. 20&lt;br /&gt;
|PLZ=89073&lt;br /&gt;
|Ort=Ulm&lt;br /&gt;
|Telefon=0731/64494&lt;br /&gt;
|Fax=0731/6028676&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 9.00 - 18.00 Uhr&amp;lt;br&amp;gt;Sa. 9.00 - 13.00 Uhr&lt;br /&gt;
|Weblink=http://onlineshop.muekra-electronic.com/FilUlm.php&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=Keine SMD-Teile&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Villingen-Schwenningen===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Buchmann Elektronik&lt;br /&gt;
|Straße=Wasenstrasse 51&lt;br /&gt;
|PLZ=78054&lt;br /&gt;
|Ort=Villingen-Schwenningen&lt;br /&gt;
|Telefon=07720/1308&lt;br /&gt;
|Fax=07720/1360&lt;br /&gt;
|Öffnungszeiten=Mo-Fr., ausser Mittwoch; Zeiten leider unbekannt&lt;br /&gt;
|Weblink=keine Webseite&lt;br /&gt;
|Email=buchmann-elektronik@t-online.de&lt;br /&gt;
|Bemerkung=keine SMD.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=SchiBe Elektronik&lt;br /&gt;
|Straße=Mühlenstr. 9&lt;br /&gt;
|PLZ=78050&lt;br /&gt;
|Ort=Villingen-Schwenningen&lt;br /&gt;
|Telefon=07721/8879880&lt;br /&gt;
|Fax=07721/88798820&lt;br /&gt;
|Öffnungszeiten=Mo-Fr.; Zeiten leider unbekannt&lt;br /&gt;
|Weblink=http://www.schibe.de&lt;br /&gt;
|Email=info@SchiBe.de&lt;br /&gt;
|Bemerkung=Bestellt auf Anfrage ohne Versandkosten bei Conrad mit Selbstabholung dort.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Bayern==&lt;br /&gt;
===Aschaffenburg===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=VS Elektronik OHG&lt;br /&gt;
|Straße= Magnolienweg 3&lt;br /&gt;
|PLZ= 63739&lt;br /&gt;
|Ort=Aschaffenburg &lt;br /&gt;
|Telefon=06021-30460&lt;br /&gt;
|Fax=06021-304626&lt;br /&gt;
|Öffnungszeiten= Montag - Freitag: 09:00 - 18:00 Uhr&amp;lt;br&amp;gt;Samstag: 09:00 - 13:00 Uhr&lt;br /&gt;
|Weblink=http://www.vs-electronic.de&lt;br /&gt;
|Email=info@vs-electronic.de&lt;br /&gt;
|Bemerkung= führt Vellemann Bausätze, PCs, Telekommunikation und Bauteile&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Erlangen===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Radio-Fernseh-Elektronik&lt;br /&gt;
|Straße=Beethovenstraße 2&lt;br /&gt;
|PLZ=91052&lt;br /&gt;
|Ort=Erlangen‎&lt;br /&gt;
|Telefon=09131 25288‎&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Feller-electronic&lt;br /&gt;
|Straße=Marquardsenstraße 21&lt;br /&gt;
|PLZ=91054 &lt;br /&gt;
|Ort=Erlangen‎&lt;br /&gt;
|Telefon=09131 27595&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo-Fr 9.00 - 13.00, 14.00-18.00 Uhr. Sa 9.00 - 14.00 Uhr&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Fürth===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=B+D Electronic GmbH&lt;br /&gt;
|Straße=Königstr. 107 (gegenüber Citycenter und neben Feuerwehr)&lt;br /&gt;
|PLZ=90762 &lt;br /&gt;
|Ort=Fürth&lt;br /&gt;
|Telefon=0911 - 77 30 40&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo - Fr:   10.00 - 12.30 &amp;amp; 14.00 - 18.00&amp;lt;br&amp;gt;Sa:        10.00 - 13.00&lt;br /&gt;
|Weblink=http://www.bdelectronic.de/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Kaufbeuren ===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Jantsch-Elektronik GmbH&lt;br /&gt;
|Straße=Porschestrasse  26&lt;br /&gt;
|PLZ=87600&lt;br /&gt;
|Ort=Kaufbeuren&lt;br /&gt;
|Telefon=0 83 41 / 95 33-0&lt;br /&gt;
|Fax=0 83 41 / 37 00&lt;br /&gt;
|Öffnungszeiten=Mo-Fr 9:00-12:30 / 13:30-18:00&amp;lt;br/&amp;gt;&lt;br /&gt;
Sa 9:00-13:00 Uhr&lt;br /&gt;
|Weblink= http://www.j-e.de&lt;br /&gt;
|Email=info@j-e.de&lt;br /&gt;
|Bemerkung=führt auch gebrauchte Messgeräte&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Leiblfing (bei Straubing)===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Hans Entner Funkelektronik&lt;br /&gt;
|Straße=Landshuter Straße 1 &lt;br /&gt;
|PLZ=94339&lt;br /&gt;
|Ort=Leiblfing&lt;br /&gt;
|Telefon=(0 94 27) 90 20 86&lt;br /&gt;
|Fax=09427 - 902087&lt;br /&gt;
|Öffnungszeiten= leider nicht bekannt&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=Entner-DF9RJ@t-online.de&lt;br /&gt;
|Bemerkung= Kleiner Laden und sehr netter Inhaber. Einige Geräte und Zubehör. Viele HF-Stecker (v.a. SMA, BNC, N und PL(UHF)) und Koax-Kabel. Bietet auch Reparaturen an.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===München===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Elektronik&lt;br /&gt;
|Straße=Tal 29&lt;br /&gt;
|PLZ=80331 &lt;br /&gt;
|Ort=München&lt;br /&gt;
|Telefon=&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo - Fr:   9:00 - 20:00&amp;lt;br&amp;gt;Sa:        9:00 - 20:00&lt;br /&gt;
|Weblink=http://www.conrad.de/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Elektronik&lt;br /&gt;
|Straße=Hanauer Straße 91 (gegenüber OEZ)&lt;br /&gt;
|PLZ=80993 &lt;br /&gt;
|Ort=München - Moosach&lt;br /&gt;
|Telefon=&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo - Fr:   9:30 - 20:00&amp;lt;br&amp;gt;Sa:        9:00 - 20:00&lt;br /&gt;
|Weblink=http://www.conrad.de/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Bürklin&lt;br /&gt;
|Straße=Schillerstr. 41&lt;br /&gt;
|PLZ=80336 &lt;br /&gt;
|Ort=München&lt;br /&gt;
|Telefon=&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo - Do:   9:00 - 16:30&amp;lt;br&amp;gt;Fr:        9:00 - 13:00&lt;br /&gt;
|Weblink=http://buerklin.de/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Strixner &amp;amp; Holzinger&lt;br /&gt;
|Straße=Schillerstraße 25-29&lt;br /&gt;
|PLZ=80336 &lt;br /&gt;
|Ort=München&lt;br /&gt;
|Telefon=&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo - Fr:   9:30 - 18:00&lt;br /&gt;
|Weblink=http://sh-halbleiter.de/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Schweinfurt===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Spath Elektronische Bauteile&lt;br /&gt;
|Straße=Cramerstr. 9&lt;br /&gt;
|PLZ=97421&lt;br /&gt;
|Ort=Schweinfurt&lt;br /&gt;
|Telefon=09721/25186&lt;br /&gt;
|Fax=09721/22999&lt;br /&gt;
|Öffnungszeiten=&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Straubing===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Röhrner Electronic&lt;br /&gt;
|Straße=Innere Passauer Str. 12&lt;br /&gt;
|PLZ=94315&lt;br /&gt;
|Ort=Straubing&lt;br /&gt;
|Telefon=09421/12573&lt;br /&gt;
|Fax=09421/22207&lt;br /&gt;
|Öffnungszeiten=Mo - Do:   9:00 - 18:00&amp;lt;br&amp;gt;Sa:        10:00 - 13:00&lt;br /&gt;
|Weblink=http://www.roehrner-electronic.de/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=Netter Elektronikladen mit vielen Halbleitern neben dem üppigen Standardsortiment&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Pförring===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Pollin&lt;br /&gt;
|Straße=Max-Pollin-Straße 1&lt;br /&gt;
|PLZ=85104&lt;br /&gt;
|Ort=Pförring&lt;br /&gt;
|Telefon=&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 9 - 19 Uhr&amp;lt;br&amp;gt;Sa. 9 - 16 Uhr &lt;br /&gt;
|Weblink=http://www.pollin.de/shop/static/ecenter.htm&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=nähe Ingolstadt&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Berlin==&lt;br /&gt;
===Charlottenburg-Wilmersdorf===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Segor-electronics&lt;br /&gt;
|Straße=Kaiserin-Augusta-Alle 94&lt;br /&gt;
|PLZ=10589&lt;br /&gt;
|Ort=Berlin&lt;br /&gt;
|Telefon=030 4399843&lt;br /&gt;
|Fax=030 4399855&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 10.00-13.30 Uhr und 14:30-18:00 Uhr, Sa. 10.00-13.00 Uhr&lt;br /&gt;
|Weblink=http://www.segor.de&lt;br /&gt;
|Email=sales@segor.de&lt;br /&gt;
|Bemerkung=Sehr gut sortiertes und vielseitiges Sortiment, preiswert, hochwertig.&lt;br /&gt;
}}&lt;br /&gt;
===Berlin Schöneberg===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic&lt;br /&gt;
|Straße=Kleiststraße 30-31&lt;br /&gt;
|PLZ=10787&lt;br /&gt;
|Ort=Berlin&lt;br /&gt;
|Telefon=0180 5 564445 &lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Sa. 10.00-20.00 Uhr&lt;br /&gt;
|Weblink=http://www.conrad.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Atzert Radio&lt;br /&gt;
|Straße=Kleiststraße 32-33&lt;br /&gt;
|PLZ=10787&lt;br /&gt;
|Ort=Berlin&lt;br /&gt;
|Telefon=030/212984-0 &lt;br /&gt;
|Fax=030/212984-11&lt;br /&gt;
|Öffnungszeiten=Montag-Samstag 10:00-19.00 Uhr&lt;br /&gt;
|Weblink=http://www.atzert-radio.de/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Berlin Kreuzberg===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic&lt;br /&gt;
|Straße=Hasenheide 14-15&lt;br /&gt;
|PLZ=10967&lt;br /&gt;
|Ort=Berlin&lt;br /&gt;
|Telefon=0180 5 564445 &lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 10.00-20.00 Uhr, Sa. 10.00-18.00 Uhr &lt;br /&gt;
|Weblink=http://www.conrad.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Berlin Steglitz===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic&lt;br /&gt;
|Straße=Schloßstrasse 34-36&lt;br /&gt;
|PLZ=12163&lt;br /&gt;
|Ort=Berlin&lt;br /&gt;
|Telefon=0180 5 564445 &lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Do. 10.00-20.00 Uhr, Fr.-Sa. 10.00-22.00 Uhr&lt;br /&gt;
|Weblink=http://www.conrad.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Brandenburg==&lt;br /&gt;
===Frankfurt (Oder)===&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Elektronik Service Landrock&lt;br /&gt;
|Straße=Karl-Ritter-Platz 8-9&lt;br /&gt;
|PLZ=15230&lt;br /&gt;
|Ort=Frankfurt (Oder) &lt;br /&gt;
|Telefon=0335 / 6802029&lt;br /&gt;
|Fax=0335 / 684171&lt;br /&gt;
|Öffnungszeiten=Mo-Fr. 10-18 Uhr&lt;br /&gt;
|Weblink=http://www.landrock-elektronik.de/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=Jürgen (Chef) ist superfreundlich, habe jahrelang dort eingekauft.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Bremen==&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic&lt;br /&gt;
|Straße=Borgwardstr. 2&lt;br /&gt;
|PLZ=28279&lt;br /&gt;
|Ort=Bremen &lt;br /&gt;
|Telefon=01 80 / 55 64 44 5&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=&lt;br /&gt;
|Weblink=http://www.conrad.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung= &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Schuricht Distrelec GmbH&lt;br /&gt;
|Straße=Rehland 8&lt;br /&gt;
|PLZ=28832&lt;br /&gt;
|Ort=Achim &lt;br /&gt;
|Telefon= 04 20 2 / 97 47-97&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=&lt;br /&gt;
|Weblink=https://www.distrelec.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung= Nur telefonische Bestellung. Wenn man bei der Bestellung explizit sagt dass man die Sachen in Achim abholen möchte, dann klappt dies auch... meistens...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Hamburg==&lt;br /&gt;
===Harburg===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Electronic 70&lt;br /&gt;
|Straße=Küchgarten 21&lt;br /&gt;
|PLZ=21073&lt;br /&gt;
|Ort=Hamburg &lt;br /&gt;
|Telefon=040 / 77 81 08&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo. - Fr.  9.30 - 13.00 Uhr     14.00 - 18.00 Uhr&amp;lt;br&amp;gt;&lt;br /&gt;
Samstag 10.00 - 14.00 Uhr&lt;br /&gt;
|Weblink=http://electronic70.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung= Nett und kompetent.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Sankt Pauli (Schanzenviertel)===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Radio Kölsch&lt;br /&gt;
|Straße=Schanzenstr. 1&lt;br /&gt;
|PLZ=20357&lt;br /&gt;
|Ort=Hamburg &lt;br /&gt;
|Telefon=040 / 43 46 56&lt;br /&gt;
|Fax=040 / 439 09 25&lt;br /&gt;
|Öffnungszeiten=&lt;br /&gt;
|Weblink=http://www.koelsch24.com&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Hoheluft Ost===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Statronic&lt;br /&gt;
|Straße=Eppendorfer Weg 244&lt;br /&gt;
|PLZ=20251&lt;br /&gt;
|Ort=Hamburg &lt;br /&gt;
|Telefon=040 / 422 33 22&lt;br /&gt;
|Fax=040 / 422 33 25&lt;br /&gt;
|Öffnungszeiten=&lt;br /&gt;
|Weblink=http://www.statronic.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Wandsbek===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic&lt;br /&gt;
|Straße=Wandsbeker Zollstr. 67-69&lt;br /&gt;
|PLZ=22041&lt;br /&gt;
|Ort=Hamburg&lt;br /&gt;
|Telefon=0180 5 564445 &lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 09.30-20.00 Uhr, Sa. 09.00-18.00 Uhr&lt;br /&gt;
|Weblink=http://www.conrad.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Altona===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic&lt;br /&gt;
|Straße=Hahnenkamp 1&lt;br /&gt;
|PLZ=22765 &lt;br /&gt;
|Ort=Hamburg&lt;br /&gt;
|Telefon=0180 5 564445 &lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Sa. 10.00-20.00 Uhr &lt;br /&gt;
|Weblink=http://www.conrad.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Hessen==&lt;br /&gt;
===Darmstadt===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Zimmermann Electronic GmbH&lt;br /&gt;
|Straße=Kasinostr. 2&lt;br /&gt;
|PLZ=64293 &lt;br /&gt;
|Ort=Darmstadt&lt;br /&gt;
|Telefon=06151 - 66 69 - 240&lt;br /&gt;
|Fax=06151 - 66 69 - 290&lt;br /&gt;
|Öffnungszeiten=Mo.- Fr. 9:00 - 19:00 Uhr&amp;lt;br&amp;gt;Sa. 9:00 - 14:00 Uhr&lt;br /&gt;
|Weblink=http://www.zeg-shop.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=EBG Electronic Business GmbH&lt;br /&gt;
|Straße=Bismarckstr. 61&lt;br /&gt;
|PLZ=64293 &lt;br /&gt;
|Ort=Darmstadt&lt;br /&gt;
|Telefon=06151 / 82 91 - 0&lt;br /&gt;
|Fax=06151 / 82 91 - 20&lt;br /&gt;
|Öffnungszeiten=Montag-Freitag: 9:00 bis 19:00 Uhr&amp;lt;br&amp;gt;Samstag:        9:00 bis 14:00 Uhr&lt;br /&gt;
|Weblink=http://www.ebg-darmstadt.de&lt;br /&gt;
|Email=info@ebg-darmstadt.de&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Offenbach===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Rail Electronic&lt;br /&gt;
|Straße=Großer Biergrund 4&lt;br /&gt;
|PLZ=63065&lt;br /&gt;
|Ort=Offenbach&lt;br /&gt;
|Telefon=069 / 88 20 72&lt;br /&gt;
|Fax=069 / 88 31 14&lt;br /&gt;
|Öffnungszeiten=Mo.- Fr. 09.30 bis 12.30 sowie 13.30 bis 18.30 Uhr&amp;lt;br&amp;gt;Sa. 9.30 bis 13.30 Uhr&lt;br /&gt;
|Weblink=http://www.rail-electronic.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Wöllstadt===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=ELW Elektronik Handels GMBH&lt;br /&gt;
|Straße=Am Kalkofen 10&lt;br /&gt;
|PLZ=61206&lt;br /&gt;
|Ort=Wöllstadt&lt;br /&gt;
|Telefon=06034-4411&lt;br /&gt;
|Fax=06034-5739&lt;br /&gt;
|Öffnungszeiten=Mo-Fr 08.30 - 18.00 Uhr&amp;lt;br&amp;gt;Sa 08.30 - 13.00 Uhr&lt;br /&gt;
|Weblink=http://www.elw-elektronik.com/&lt;br /&gt;
|Email=elw-gmbh@t-online.de&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Frankfurt/Main===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Elektronik&lt;br /&gt;
|Straße=Zeil 58 + 64 (Konstabler Wache)&lt;br /&gt;
|PLZ=60313 &lt;br /&gt;
|Ort=Frankfurt&lt;br /&gt;
|Telefon=0180 5 564445&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Mi. 10.00-20.00 Uhr&amp;lt;br&amp;gt;Do.-Sa. 10.00-21.00 Uhr&lt;br /&gt;
|Weblink=http://www.conrad.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Mecklenburg-Vorpommern==&lt;br /&gt;
===Rostock===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=A-Z City-Stores&lt;br /&gt;
|Straße=Doberaner-Hof&lt;br /&gt;
|PLZ=&lt;br /&gt;
|Ort=Rostock&lt;br /&gt;
|Telefon=0381-4031171&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo. – Fr.    9.30 – 19.30 Uhr&amp;lt;br&amp;gt;Sa.   9.30 – 16.00 Uhr&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=geringes Angebot&amp;lt;br&amp;gt;recht teuer&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Niedersachsen==&lt;br /&gt;
===Braunschweig===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic GmbH&lt;br /&gt;
|Straße=Sudetenstr. 4&lt;br /&gt;
|PLZ=38114&lt;br /&gt;
|Ort=Braunschweig&lt;br /&gt;
|Telefon= 0531 501514&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 09.30-19.00 Uhr, Sa. 09.00-18.00 Uhr&lt;br /&gt;
|Weblink=http://www.filialen.conrad.de/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung= Hinter dem Conrad-Gebäude gibt es noch eine &amp;quot;Resterampe&amp;quot; mit Garantiefällen, unvollständigen Bausätzen etc. (andere Öffnungszeiten!)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=EFB - Electronic Fundgrube Braunschweig&lt;br /&gt;
|Straße=Kreuzstrasse 65&lt;br /&gt;
|PLZ=38118&lt;br /&gt;
|Ort=Braunschweig&lt;br /&gt;
|Telefon=0531-58 11 058&lt;br /&gt;
|Fax=0531-58 11 059&lt;br /&gt;
|Öffnungszeiten=&lt;br /&gt;
|Weblink=http://www.ett-online.de/&lt;br /&gt;
|Bemerkung= Online-Katalog unter http://www.megakick-stores.de/.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Elektronik Bauteile Vertrieb - Dipl.-Ing. Jörg Bassenberg&lt;br /&gt;
|Straße=Nußbergstraße 9&lt;br /&gt;
|PLZ=38102&lt;br /&gt;
|Ort=Braunschweig&lt;br /&gt;
|Telefon=0531-79 17 07&lt;br /&gt;
|Fax=0531-7 60 22&lt;br /&gt;
|Öffnungszeiten=&lt;br /&gt;
|Weblink=http://www.bassenberg.de/&lt;br /&gt;
|Email=info@bassenberg.de&lt;br /&gt;
|Bemerkung= Kleines Ladengeschäft, hauptsächlich ältere Bauteile vorrätig.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Hannover===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic GmbH&lt;br /&gt;
|Straße=Goseriede 3&lt;br /&gt;
|PLZ=30159&lt;br /&gt;
|Ort=Hannover&lt;br /&gt;
|Telefon= 0180 5 564445&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Sa. 09.00-20.00 Uhr&lt;br /&gt;
|Weblink=http://www.filialen.conrad.de/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Radio Menzel-Electronic&lt;br /&gt;
|Straße=Limmerstraße 3-5&lt;br /&gt;
|PLZ=30451&lt;br /&gt;
|Ort=Hannover&lt;br /&gt;
|Telefon= 0511 442607&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo-Fr: 10:00-13:30, 14:30-18:00  Sa: 10:00-13:30&lt;br /&gt;
|Weblink=www.menzel-electronic.de &lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Lüneburg===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Beusch Elektronik&lt;br /&gt;
|Straße=Reichenbachstr. 8&lt;br /&gt;
|PLZ=21335 &lt;br /&gt;
|Ort=Lüneburg&lt;br /&gt;
|Telefon=04131 33311&lt;br /&gt;
|Fax=?&lt;br /&gt;
|Öffnungszeiten=Mo und Sa geschlossen, Di - Fr 10:00-13:00, 14:00-18:00&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Oldenburg===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=ebc Utz Kohl GmbH &lt;br /&gt;
|Straße=Alexanderstraße 31&lt;br /&gt;
|Telefon=0441 82114&lt;br /&gt;
|Fax=0441 85801&lt;br /&gt;
|Weblink=www.e-b-c-elektronik.de&lt;br /&gt;
|Email=kontakt@e-b-c-elektronik.de&lt;br /&gt;
|PLZ=26121&lt;br /&gt;
|Ort=Oldenburg&lt;br /&gt;
|Öffnungszeiten=Mo. - Fr. 9:00 - 12:30 und 13:30 - 18:00 Uhr, Sa. 9:00 - 13:00 Uhr&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Osnabrück===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Heinicke-electronic&lt;br /&gt;
|Straße=Meller Str. 43 &lt;br /&gt;
|PLZ=49084&lt;br /&gt;
|Ort=Osnabrück&lt;br /&gt;
|Telefon=0541 587666&lt;br /&gt;
|Fax=0541 586614 &lt;br /&gt;
|Öffnungszeiten=Mo-Fr. 9:30-13:00Uhr und 14:30-18:00Uhr Sa. 9:30-13:00Uhr&lt;br /&gt;
|Weblink=http://www.heinicke-electronic.de/&lt;br /&gt;
|Email=sales@heinicke-electronic.de&lt;br /&gt;
|Bemerkung=Haben auch einen PC Shop nebenan.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Wilhelmshaven===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Reichelt Elektronik&lt;br /&gt;
|Straße=Elektronikring 1 &lt;br /&gt;
|PLZ=26452&lt;br /&gt;
|Ort=Sande&lt;br /&gt;
|Telefon=04422-955 333&lt;br /&gt;
|Fax=04422-955 111 &lt;br /&gt;
|Öffnungszeiten=Montag - Donnerstag: 9:00 - 17:00 Uhr; Freitag: 9:00 - 15:30 Uhr&lt;br /&gt;
|Weblink=http://www.reichelt.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Nordrhein-Westfalen==&lt;br /&gt;
===Aachen===&lt;br /&gt;
Siehe http://aachen.wikia.com/wiki/Elektronik-Teile&lt;br /&gt;
&lt;br /&gt;
===Bielefeld===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=alpha electronic Ing. A. Berger GmbH&lt;br /&gt;
|Straße=Oldentruper Str. 104&lt;br /&gt;
|PLZ=33604&lt;br /&gt;
|Ort=Bielefeld&lt;br /&gt;
|Telefon=0521-324333&lt;br /&gt;
|Fax=0521-320435&lt;br /&gt;
|Öffnungszeiten=Mo. – Sa.    9.00 – 13.00 Uhr&amp;lt;br&amp;gt;Mo. – Fr.   14.00 – 18.00 Uhr&lt;br /&gt;
|Weblink=http://www.alphaelectronic-bielefeld.de/&lt;br /&gt;
|Email=info@alphaelectronic.de&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Fuchs und Lützow Elekronik - Handelsges. mbH&lt;br /&gt;
|Straße=Heeper Str. 184&lt;br /&gt;
|PLZ=33607&lt;br /&gt;
|Ort=Bielefeld&lt;br /&gt;
|Telefon=0521-5576555&lt;br /&gt;
|Fax=0521-5576557&lt;br /&gt;
|Öffnungszeiten=Mo. – Sa.    9.00 – 13.00 Uhr&amp;lt;br&amp;gt;Mo. – Fr.   14.00 – 18.00 Uhr&lt;br /&gt;
|Weblink=http://www.electronicfuchs.com/&lt;br /&gt;
|Email=info@electronicfuchs.com&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Bonn===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Elektronik&lt;br /&gt;
|Straße=Karlstraße 3&lt;br /&gt;
|PLZ=53115&lt;br /&gt;
|Ort=Bonn&lt;br /&gt;
|Telefon=0180 5 564445&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Sa. 10.00-20.00 Uhr &lt;br /&gt;
|Weblink=http://www.filialen.conrad.de/rubriken/filialen.php?filiale=28&lt;br /&gt;
|Email=filiale.bonn@conrad.de  &lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=P &amp;amp; M Elektronik Bonn GmbH&lt;br /&gt;
|Straße=Budapester Strasse 6&lt;br /&gt;
|PLZ=53111&lt;br /&gt;
|Ort=Bonn&lt;br /&gt;
|Telefon=0228-656005&lt;br /&gt;
|Fax=0228-656336&lt;br /&gt;
|Öffnungszeiten=Mo-Fr 09:00 – 19:00 Uhr&amp;lt;br&amp;gt;Sa 10:00 – 16:00 Uhr&lt;br /&gt;
|Weblink=http://www.pm-elektronik-bonn.de/&lt;br /&gt;
|Email=pm-elektronikbonn@web.de&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Dortmund===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic&lt;br /&gt;
|Straße=Westenhellweg 95-101&lt;br /&gt;
|PLZ=44137&lt;br /&gt;
|Ort=Dortmund&lt;br /&gt;
|Telefon=01805-564445 &lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo. – Fr.    10.00 – 20.00 Uhr&amp;lt;br&amp;gt;Sa.  9.30 – 20.00 Uhr&lt;br /&gt;
|Weblink=http://www.conrad.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=direkt in der Innenstadt&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=SR-Tronic&lt;br /&gt;
|Straße=Beratgerstr. 28&lt;br /&gt;
|PLZ=44149&lt;br /&gt;
|Ort=Dortmund&lt;br /&gt;
|Telefon=0231-33671-0&lt;br /&gt;
|Fax=0231-33671-25&lt;br /&gt;
|Öffnungszeiten=Mo. – Fr.    10.00 – 18.00 Uhr&lt;br /&gt;
|Weblink=http://www.sr-tronic.de&lt;br /&gt;
|Email=info@sr-tronic.de&lt;br /&gt;
|Bemerkung=Ist zwar ein Versandhandel, Abholung ist aber möglich, extrem kleines Elektroniksortiment (Atmel, Eproms), ist eigentlich ein Satshop.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Electronic am Wall&lt;br /&gt;
|Straße=Hoher Wall 22&lt;br /&gt;
|PLZ=44137&lt;br /&gt;
|Ort=Dortmund&lt;br /&gt;
|Telefon=0231-16863&lt;br /&gt;
|Fax= 	0231-160632 begin_of_the_skype_highlighting              0231-160632      end_of_the_skype_highlighting begin_of_the_skype_highlighting              0231-160632      end_of_the_skype_highlighting&lt;br /&gt;
|Öffnungszeiten=Mo. – Fr.    9.00 – 18.00 Uhr (?)&lt;br /&gt;
|Weblink=http://electronic-am-wall.de&lt;br /&gt;
|Email=electronic-am-wall@t-online.de&lt;br /&gt;
|Bemerkung=Alteingesessener Laden mit mittlerem Elektronik und Bauteilesortiment (Leider nicht mehr so viel wie früher).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Essen===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic&lt;br /&gt;
|Straße=Altendorfer Str. 11&lt;br /&gt;
|PLZ=45127&lt;br /&gt;
|Ort=Essen&lt;br /&gt;
|Telefon=01805-564445 &lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo. – Fr.    10.00 – 19.30 Uhr&amp;lt;br&amp;gt;Sa.  10.00 – 13.00 Uhr&lt;br /&gt;
|Weblink=http://www.conrad.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=schräg gegenüber von IKEA, Tiefgarage im UG für Kunden kostenlos, Karte an der Kasse lochen lassen&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Herne===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Electronic Hanke&lt;br /&gt;
|Straße=Wilhelmstr. 38 &lt;br /&gt;
|PLZ=44649&lt;br /&gt;
|Ort=Herne&lt;br /&gt;
|Telefon=02325-52728  &lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo. – Fr.    10.00 – 18.00 Uhr, außer Dienstags ab 15.00Uhr&amp;lt;br&amp;gt;Mittagspause von 13.00 Uhr - 15.00 Uhr&amp;lt;br&amp;gt;Sa.  9.30 – 13.00 Uhr&lt;br /&gt;
|Weblink=http://www.electronic-hanke.de/&lt;br /&gt;
|Email=electronic_hanke@t-online.de&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Köln===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic&lt;br /&gt;
|Straße=Horbellerstr. 2-4&lt;br /&gt;
|PLZ=50858&lt;br /&gt;
|Ort=Köln&lt;br /&gt;
|Telefon=0180 5 564445 &lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Sa. 9.30-20.00 Uhr &lt;br /&gt;
|Weblink=http://filialen.conrad.de/rubriken/filialen.php?filiale=13&lt;br /&gt;
|Email=filiale.koeln@conrad.de&lt;br /&gt;
|Bemerkung= Hat ab dem 3.07. geschlossen!!!!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=M. + M. van der Meyden GmbH&lt;br /&gt;
|Straße=Breite Straße 101&lt;br /&gt;
|PLZ=50667&lt;br /&gt;
|Ort=Köln&lt;br /&gt;
|Telefon=0221/2576369&lt;br /&gt;
|Fax=0221/2576369&lt;br /&gt;
|Öffnungszeiten=Mo.–Fr. von 9:30 – 19:00 Uhr&amp;lt;br&amp;gt;Sa. von 10:00 – 16:30 Uhr &lt;br /&gt;
|Weblink=http://vandermeyden.de&lt;br /&gt;
|Email=http://vandermeyden.de/?page_id=13&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Bergisch Gladbach===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=MS-Elektronik&lt;br /&gt;
|Straße=Laurentiusstrasse 20&lt;br /&gt;
|PLZ=51465&lt;br /&gt;
|Ort=Bergisch Gladbach&lt;br /&gt;
|Telefon=02202 - 93 22 17&lt;br /&gt;
|Fax=02202 - 93 22 18&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr.: 09:00-12:30 &amp;amp; 14:30 - 18:30 Uhr&amp;lt;br&amp;gt;Sa: 09:00 - 14:00 Uhr&lt;br /&gt;
|Weblink=http://www.ms-elektronik.info/&lt;br /&gt;
|Email=info@ms-elektronik.info&lt;br /&gt;
|Bemerkung= Auch Versand&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Langenfeld===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=rs elektronik - Reinhard Sinzel&lt;br /&gt;
|Straße=Solinger Strasse 152&lt;br /&gt;
|PLZ=40764&lt;br /&gt;
|Ort=Langenfeld&lt;br /&gt;
|Telefon=02173/22766&lt;br /&gt;
|Fax=02173/25958&lt;br /&gt;
|Öffnungszeiten=Mo-Fr 10:00-13:00 + 15:00-18:00, Sa 10:00-13:00&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=zwischen Polizeiwache und Bahnunterführung auf der linken Seite. Nur Ladenverkauf!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Mönchengladbach===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Brunenberg Elektronik&lt;br /&gt;
|Straße=Lürriper Strasse 170&lt;br /&gt;
|PLZ=41065&lt;br /&gt;
|Ort=Mönchengladbach&lt;br /&gt;
|Telefon=02161-44421&lt;br /&gt;
|Fax=02161-42552&lt;br /&gt;
|Öffnungszeiten=Mo.- Fr. 9:00 - 13:00 und 14:00 - 18:00&amp;lt;br&amp;gt;Samstag 9:00 - 13:00&amp;lt;br&amp;gt;Donnerstag Nachmittag geschlossen!&lt;br /&gt;
|Weblink=http://www.bruntronic.de&lt;br /&gt;
|Email=info@bruntronic.de&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Zilles Elektronik GmbH&lt;br /&gt;
|Straße=Staufenstraße 8-10&lt;br /&gt;
|PLZ=41061&lt;br /&gt;
|Ort=Mönchengladbach&lt;br /&gt;
|Telefon=02161/176005&lt;br /&gt;
|Fax=02161/176007&lt;br /&gt;
|Öffnungszeiten=Montag - Freitag 8:30 - 13:00 &amp;amp; 14:00 - 18:00&amp;lt;br&amp;gt;Samstag 9:00 - 12:00&lt;br /&gt;
|Weblink=http://www.zilles-elektronik.de/&lt;br /&gt;
|Email=info@zilles-elektronik.de&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Paderborn===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Jansen-Elektronik GmbH &amp;amp; Co. KG&lt;br /&gt;
|Straße=Heiersstrasse 24&lt;br /&gt;
|PLZ=33098 &lt;br /&gt;
|Ort=Paderborn&lt;br /&gt;
|Telefon=05251-282848&lt;br /&gt;
|Fax=05251-282851&lt;br /&gt;
|Öffnungszeiten=Mo. – Sa.    9.30 – 13.00 Uhr&amp;lt;br&amp;gt;Mo. – Fr.   14.30 – 18.00 Uhr&lt;br /&gt;
|Weblink=http://www.jansen-elektronik.de/&lt;br /&gt;
|Email=info@jansen-elektronik.de&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Recklinghausen===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Elektronik-Center Wenzlik, Inh. H.- J. Juhnke&lt;br /&gt;
|Straße=Halterner Straße 24&lt;br /&gt;
|PLZ=45657 &lt;br /&gt;
|Ort=Recklinghausen&lt;br /&gt;
|Telefon=02361-14103&lt;br /&gt;
|Fax=02361-182489&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr.: 9.00h-18.30h, Sa.: 9.30h - 14.00h durchgehend geöffnet!&lt;br /&gt;
|Weblink=http://www.Wenzlik-RE.de&lt;br /&gt;
|Email=ecw-recklinghausen@t-online.de&lt;br /&gt;
|Bemerkung= Elektronik Einzelhandel 47.000 verschiedene Artikel vorrätig.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Rheinland-Pfalz==&lt;br /&gt;
===Andernach===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=EDV + Elektronic Systeme&lt;br /&gt;
|Straße=Füllscheuer 30&lt;br /&gt;
|PLZ=56626&lt;br /&gt;
|Ort=Andernach&lt;br /&gt;
|Telefon=02632/9293-0&lt;br /&gt;
|Fax=02632/9293-33&lt;br /&gt;
|Öffnungszeiten=Montag-Freitag 8:00 Uhr - 18:00 Uhr/Samstag geschlossen&lt;br /&gt;
|Weblink=http://www.eleksys.de/&lt;br /&gt;
|Email=info@eleksys.de&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Koblenz===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Radio Erbar&lt;br /&gt;
|Straße=Bahnhofstr. 40&lt;br /&gt;
|PLZ=56068  &lt;br /&gt;
|Ort=Koblenz&lt;br /&gt;
|Telefon=0261/34782&lt;br /&gt;
|Fax=0261/14570&lt;br /&gt;
|Öffnungszeiten=Montag-Freitag 9:00 Uhr - 18:00 Uhr/Samstag 9:00 Uhr - 12:00 Uhr&lt;br /&gt;
|Weblink=http://www.radio-erbar.de/&lt;br /&gt;
|Email=webmaster@radio-erbar.de&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
===Mainz===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Elektronik&lt;br /&gt;
|Straße=Binger Str. 14-16 (nähe Hauptbahnhof)&lt;br /&gt;
|PLZ=55122 &lt;br /&gt;
|Ort=Mainz&lt;br /&gt;
|Telefon=0180 5312111&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=&lt;br /&gt;
|Weblink=http://www.conrad.de/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Elektronik Schmidt&lt;br /&gt;
|Straße=Boppstrasse 62 - 64&lt;br /&gt;
|PLZ=55118 &lt;br /&gt;
|Ort=Mainz&lt;br /&gt;
|Telefon=0180 5312111&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Montag - Freitag 09.00 Uhr - 13.00 Uhr und 14.00 Uhr - 18.00 Uhr&amp;lt;br&amp;gt;&lt;br /&gt;
Samstag 09.00 Uhr - 13.00 Uhr&lt;br /&gt;
|Weblink=http://www.schmidt-electronic.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Saarland==&lt;br /&gt;
=== Saarbrücken ===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=ESS Elektronik Service Skowronek&lt;br /&gt;
|Straße=Peter-Zimmer-Str. 13&lt;br /&gt;
|PLZ=66123  &lt;br /&gt;
|Ort=Saarbrücken&lt;br /&gt;
|Telefon=+49 (681) 816414&lt;br /&gt;
|Fax= +49 (681) 816992&lt;br /&gt;
|Öffnungszeiten= Mo-Fr 8:00-12:00 Uhr / 14:00-18:00 Uhr&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad&lt;br /&gt;
|Straße=Trierer Straße 16-20&lt;br /&gt;
|PLZ=66111&lt;br /&gt;
|Ort=Saarbrücken&lt;br /&gt;
|Telefon=0180 5 564445 (derzeit 14 Cent/Min. aus dem Festnetz der Dt. Telekom. Evtl. abweichende Preise für Anrufe aus den Mobilfunknetzen.)&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten= Mo.-Fr. 09.00-19.00 Uhr / Sa. 09.00-19.00 Uhr&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Sachsen==&lt;br /&gt;
===Chemnitz===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=mükra electronic shop GmbH&lt;br /&gt;
|Straße=Hartmannstr.45&lt;br /&gt;
|PLZ=09113&lt;br /&gt;
|Ort=Chemnitz&lt;br /&gt;
|Telefon=0371/365736&lt;br /&gt;
|Fax=0371/365736&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 10.00 Uhr - 18.00 Uhr&amp;lt;br&amp;gt;Sa. 10.00 Uhr - 13.00 Uhr&lt;br /&gt;
|Weblink=http://onlineshop.muekra-electronic.com&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=gut sortiert aber keine SMD BE&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=köhler-elektronik&amp;lt;br&amp;gt;Firma Michael Köhler&lt;br /&gt;
|Straße=Erfenschlager Strasse 31&lt;br /&gt;
|PLZ=09125&lt;br /&gt;
|Ort=Chemnitz&lt;br /&gt;
|Telefon=(03 71) 51 91 03&lt;br /&gt;
|Fax=(03 71) 51 91 04&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. von 9 - 18 Uhr &amp;lt;br&amp;gt; Sa. von 9 - 12 Uhr&lt;br /&gt;
|Weblink=http://www.koehler-elektronik.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=NEUMERKEL&lt;br /&gt;
|Straße=Straße der Nationen 26&lt;br /&gt;
|PLZ=09111&lt;br /&gt;
|Ort=Chemnitz&lt;br /&gt;
|Telefon=(03 71) 6 66 29 27&lt;br /&gt;
|Fax=(03 71) 6 66 29 51&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. von 9 - 13 und 14 - 18 Uhr&lt;br /&gt;
|Weblink=http://www.neumerkel.de&lt;br /&gt;
|Email=neumerkel.chemnitz@neumerkel.de&lt;br /&gt;
|Bemerkung=zwischen B. Uhse und ehemals McDonald’s :)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Dresden===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad&lt;br /&gt;
|Straße=Friedrich-List-Platz 2&amp;lt;br&amp;gt;gegenüber Hauptbahnhof&lt;br /&gt;
|PLZ=01069&lt;br /&gt;
|Ort=Dresden &lt;br /&gt;
|Telefon=&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 09.30-20.00 Uhr, &amp;lt;br&amp;gt;Sa. 09.00-20.00 Uhr&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung= verhältnismäßig teuer&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Sullus&lt;br /&gt;
|Straße=Tharandter Str. 67&lt;br /&gt;
|PLZ=01187&lt;br /&gt;
|Ort=Dresden &lt;br /&gt;
|Telefon=0351 4112100&lt;br /&gt;
|Fax=0351 4112146&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 10.00-18.30 Uhr, &amp;lt;br&amp;gt;Sa. 09.00-12.00 Uhr&lt;br /&gt;
|Weblink=http://www.sullus.de/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Leipzig===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad&lt;br /&gt;
|Straße=Neumarkt 20&lt;br /&gt;
|PLZ=04109&lt;br /&gt;
|Ort=Leipzig &lt;br /&gt;
|Telefon=&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Sa.: 09.30-20.00 Uhr&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=ELMICRO Computer GmbH &amp;amp; Co. KG &lt;br /&gt;
|Straße=Hohe Str. 9-13&lt;br /&gt;
|PLZ=04107&lt;br /&gt;
|Ort=Leipzig &lt;br /&gt;
|Telefon=+49-(0)341-9104810&lt;br /&gt;
|Fax=+49-(0)341-9104818&lt;br /&gt;
|Öffnungszeiten=Mo.-Sa.: 09.00-17.00 Uhr&lt;br /&gt;
|Weblink=http://elmicro.com/de/ela-leipzig.html&lt;br /&gt;
|Email=leipzig|at|elmicro.com&lt;br /&gt;
|Bemerkung=Besucher werden gebeten, sich kurzfristig telefonisch anzumelden.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Zwickau===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Elektronik Neumerkel GmbH&lt;br /&gt;
|Straße=Kolpingstraße 20&lt;br /&gt;
|PLZ=08058&lt;br /&gt;
|Ort=Zwickau&lt;br /&gt;
|Telefon=+ 49 (0)375-589920&lt;br /&gt;
|Fax=+ 49 (0)375-5899222&lt;br /&gt;
|Öffnungszeiten=Mo. - Fr. 9:00 - 18:00 Uhr, Sa. 9:00 - 12:30 Uhr&lt;br /&gt;
|Weblink=http://www.neumerkel.de&lt;br /&gt;
|Email=info@neumerkel.de&lt;br /&gt;
|Bemerkung=Ein Einkauf lohn sich immer bei dieser Firma. Schauen Sie doch mal vorbei. Sie erreichen uns auch in Gera, Karl-Schurz-Straße 12, Tel.:(+49 (0) 365 824690 und in Chemnitz, Strasse der Nationen 26, Tel.:(+49 (0) 371 6662927 &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Sachsen-Anhalt==&lt;br /&gt;
===Magdeburg===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=mittrenga electronic&lt;br /&gt;
|Straße=Maxim-Gorki-Str. 34&lt;br /&gt;
|PLZ=39108&lt;br /&gt;
|Ort=Magdeburg&lt;br /&gt;
|Telefon=0391/7333500&lt;br /&gt;
|Fax=0391/7346538&lt;br /&gt;
|Öffnungszeiten= 15.00- 18.00&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Nova Electronic&lt;br /&gt;
|Straße=Leipziger Str. 31&lt;br /&gt;
|PLZ=39112&lt;br /&gt;
|Ort=Magdeburg&lt;br /&gt;
|Telefon=0391/6272537&lt;br /&gt;
|Fax=?&lt;br /&gt;
|Öffnungszeiten=15.00- 1800&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Schleswig Holstein==&lt;br /&gt;
===Kiel===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Elektronik Schmidt Inh. Karl Heinz Parting&lt;br /&gt;
|Straße=Adelheidstr. 28&lt;br /&gt;
|PLZ=24103&lt;br /&gt;
|Ort=Kiel&lt;br /&gt;
|Telefon=0431 94682&lt;br /&gt;
|Fax=0431 92574&lt;br /&gt;
|Öffnungszeiten=&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung= viele historische Bauteile verfügbar, Röhren&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic&lt;br /&gt;
|Straße=Mergenthalerstr. 22&lt;br /&gt;
|PLZ=24223&lt;br /&gt;
|Ort=Raisdorf&lt;br /&gt;
|Telefon=0180 5 564445 &lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Sa. 10.00-20.00 Uhr&lt;br /&gt;
|Weblink=http://www.conrad.de&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Thüringen==&lt;br /&gt;
===Erfurt===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Hübner-Elektronik e.K.&lt;br /&gt;
|Straße=Juri-Gagarin-Ring 27&lt;br /&gt;
|PLZ=99084 &lt;br /&gt;
|Ort=Erfurt&lt;br /&gt;
|Telefon= +49 (0361) 6 42 34 56&lt;br /&gt;
|Fax= +49 (0361) 6 42 34 55&lt;br /&gt;
|Öffnungszeiten=Montag-Freitag - 9.30 bis 18.30 Uhr, Samstag - 10.00 bis 13.00 Uhr&lt;br /&gt;
|Weblink=http://www.huebner-elektronik.de/&lt;br /&gt;
|Email= info@huebner-elektronik.de&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Eisenach===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Elektronik-Stübchen&lt;br /&gt;
|Straße=Katharinenstraße 117&lt;br /&gt;
|PLZ=99817&lt;br /&gt;
|Ort=Eisenach&lt;br /&gt;
|Telefon= (03691)77324&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Montag-Freitag - 9.00 bis 13.00 Uhr, 14.30 bis 18 Uhr&lt;br /&gt;
Sonnabend 9.00 bis 12.00 Uhr&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Jena===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Stefan Schmutzer VAT Elektronik&lt;br /&gt;
|Straße=Bachstraße 10&lt;br /&gt;
|PLZ=07743&lt;br /&gt;
|Ort=Jena&lt;br /&gt;
|Telefon= (03641)447184&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten= Mo-Fr. bis 18:00Uhr. Sa zu&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung= reichlich teuer. Für einzelne Kleinteile jedoch definitiv zu empfehlen, wenn man nicht gleich bestellen will&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Österreich=&lt;br /&gt;
==Linz==&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Aigner Elektronik&lt;br /&gt;
|Straße=Dinghoferstr. 63&lt;br /&gt;
|PLZ=A-4020 &lt;br /&gt;
|Ort=Linz&lt;br /&gt;
|Telefon=+43 732 669691-0 &lt;br /&gt;
|Fax=+43 732 669691-15&lt;br /&gt;
|Öffnungszeiten=Mo. bis Fr. 8:30 bis 17:00 (keine Mittagssperre), Samstag 8:30 bis 12:00&lt;br /&gt;
|Weblink=http://www.aigner.co.at/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic&lt;br /&gt;
|Straße=Kornstraße 4&lt;br /&gt;
|PLZ=A-4060 &lt;br /&gt;
|Ort=Leonding&lt;br /&gt;
|Telefon=+43 732 683040-0  &lt;br /&gt;
|Fax=+43 732 683040-13 &lt;br /&gt;
|Öffnungszeiten=Mo. bis Fr. 9:00 bis 19:00 , Samstag 9:00 bis 17:00&lt;br /&gt;
|Weblink=http://www.conrad.at/&lt;br /&gt;
|Email=mailto://filiale.linz@conrad.at&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Graz== &lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Neuhold Elektronik&lt;br /&gt;
|Straße=Griesplatz 1&lt;br /&gt;
|PLZ=A-8020 &lt;br /&gt;
|Ort=Graz&lt;br /&gt;
|Telefon=+43 (0) 316 711245   &lt;br /&gt;
|Fax=+43 (0) 316 717419&lt;br /&gt;
|Öffnungszeiten=Montag bis Freitag von 9.00 - 18.00 Uhr&amp;lt;br&amp;gt;Samstag 9.00-12.30 Uhr&lt;br /&gt;
|Weblink=http://www.neuhold-elektronik.at/&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=Großes Sortiment mit auch sehr ausgefallenen Artikeln. &amp;lt;br&amp;gt; Führt eine breite Produktpalette. &amp;lt;br&amp;gt; Durchweg sehr günstige Preise, jedoch manchmal bei Standardbauteilen (Mikrocontrollern z.B. AVRs) teurer als die Konkurrenz. &amp;lt;br&amp;gt; Vergleichbar mit Pollin.  &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Riedl Electronic&lt;br /&gt;
|Straße=Brückenkopfgasse 2&lt;br /&gt;
|PLZ=A-8020 &lt;br /&gt;
|Ort=Graz&lt;br /&gt;
|Telefon=Tel: +43 (0) 316 718031-0 od. +43 (0) 664 2104608               &lt;br /&gt;
|Fax=+43 (0)316 718031-6 &lt;br /&gt;
|Öffnungszeiten=Montag bis Freitag von 9.00 - 12.30 Uhr - Mittagspause und dann von 14.00  - 18.00 Uhr &amp;lt;br&amp;gt;Samstag 9.00-12.00 Uhr&lt;br /&gt;
|Weblink=http://www.riedl-electronic.at/&lt;br /&gt;
|Email=office@riedl-electronic.at&lt;br /&gt;
|Bemerkung=Elektronikkomponenten müssen vorher über den Onlineshop bestellt werden. &amp;lt;br&amp;gt; Diese werden dann von einem externen Lager geholt und können auf Wunsch in der Filiale in Graz abgeholt werden.&amp;lt;br&amp;gt; Natürlich kann man sie auch direkt an die Haustür liefern lassen. &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=L-Tronik Austria&lt;br /&gt;
|Straße=Karlauerstrasse 5&lt;br /&gt;
|PLZ=A-8020 &lt;br /&gt;
|Ort=Graz&lt;br /&gt;
|Telefon=Tel: +43 (0) 316 904 672            &lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Montag bis Freitag von 9.00 - 17.00 Uhr &amp;lt;br&amp;gt;Samstag 9.00-12.00 Uhr&lt;br /&gt;
|Weblink=http://www.l-tronik.com/index.php&lt;br /&gt;
|Email=info@lta.at&lt;br /&gt;
|Bemerkung=Riesiges Sortiment an Halbleitern (Auch SMD). Solartechnik, Sicherheitstechnik, Haustechnik u.s.w..&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad&lt;br /&gt;
|Straße=Weblinger Gürtel 25&lt;br /&gt;
|PLZ=A-8054&lt;br /&gt;
|Ort=Graz&lt;br /&gt;
|Telefon=Tel: +43 (0) 50 - 20 40 73 00         &lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Montag bis Freitag von 9.00 - 19.30 Uhr &amp;lt;br&amp;gt;Samstag 9.00 - 18.00 Uhr&lt;br /&gt;
|Weblink=http://www.conrad.at&lt;br /&gt;
|Email=filiale.graz@conrad.at&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Salzburg==&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad&lt;br /&gt;
|Straße=Alpenstraße 95 - 97&lt;br /&gt;
|PLZ=5020  &lt;br /&gt;
|Ort=Salzburg&lt;br /&gt;
|Telefon=050 - 20 40 81 00&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 9.00-19.00 Uhr&amp;lt;br&amp;gt;Sa. 9.00-18.00 Uhr&lt;br /&gt;
|Weblink=http://www.conrad.at/megastores&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Wien==&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=GM Electronic GmbH&lt;br /&gt;
|Straße=Brünner Straße 19&lt;br /&gt;
|PLZ=1210  &lt;br /&gt;
|Ort=Wien&lt;br /&gt;
|Telefon=01/27 11 256&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=Mo.-Fr. 9.00-13.00 14.00-18.00 Uhr&amp;lt;br&amp;gt;Sa. 10.00-13.00 14.00-16.00 Uhr&lt;br /&gt;
|Weblink=http://www.gm-e.eu/index.php&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Schweiz=&lt;br /&gt;
----&lt;br /&gt;
==Aargau (AG)==&lt;br /&gt;
===Baden===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=&amp;lt;s&amp;gt;Gautschi Elektronik (ehemals AUTRIX Meier)&amp;lt;/s&amp;gt; ***)&lt;br /&gt;
|Straße=Martinsbergstrasse 28&lt;br /&gt;
|PLZ=5400&lt;br /&gt;
|Ort=Baden&lt;br /&gt;
|Telefon=056 222 24 24&lt;br /&gt;
|Fax=056 210 06 12&lt;br /&gt;
|Öffnungszeiten=&lt;br /&gt;
Montag 13:30-18:00, Di-Fr 08:00-12:00 und 13:00-18:00, Sa 09:00-12:00&lt;br /&gt;
|Weblink=&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=Orchesterelektronik, REVOX und Elektronik-Laden. &lt;br /&gt;
Ehemals AUTRIX Meier. Nach bald 30 Jahren hat Ernst Meier den Laden 2006 in neue&lt;br /&gt;
Hände gegeben. Hier spürt man noch den Charme der 70er Jahre des letzten Jahrhunderts: ca. 20m2 Ladenlokal, vollgestopft bis unter die Decke mit mit elektronischem Kleinkram!&lt;br /&gt;
Teile des Sortiments entstammen ebenfalls dieser Zeitepoche. Mikroprozessoren und SMD-Bauteile sucht man hier vergebens. Dafür lassen sich auch mal (heute seltene) TTL&#039;s finden!&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Spezial:Beiträge/85.3.130.90|85.3.130.90]] 13:12, 13. Okt. 2009 (UTC)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;***)&#039;&#039;&#039; seit Frühjahr 2009 Liegenschaft abgebrochen. Nachfolgefirma unbekannt.&amp;lt;br&amp;gt;&lt;br /&gt;
Schweizermacher [[Spezial:Beiträge/83.78.147.198|83.78.147.198]] 07:13, 7. Jan. 2010 (UTC)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Zofingen===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Surplus Party Zofingen&amp;lt;br&amp;gt;Funkerverein Zofingerrunde HB9FX&lt;br /&gt;
|Straße=Strengelbacherstrasse 27 (Mehrzweckhalle)&lt;br /&gt;
|PLZ=4800&lt;br /&gt;
|Ort=Zofingen&lt;br /&gt;
|Telefon=&lt;br /&gt;
|Fax=&lt;br /&gt;
|Öffnungszeiten=&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;1x jährlich am letzen Samstag im Oktober:&#039;&#039;&#039; 31. Oktober 2009 / 30. Oktober 2010 / 29. Oktober 2011 / 27. Oktober 2012&lt;br /&gt;
&amp;lt;br&amp;gt;08:30 bis 16:30 Uhr&lt;br /&gt;
|Weblink=http://www.surplusparty.ch/surplus.htm&lt;br /&gt;
|Email=event(at)surplusparty.ch&lt;br /&gt;
|Bemerkung=&#039;&#039;&#039;Die Surplus Party, seit 1984 der grösste Flohmarkt der Schweiz von Amateufunkern für Amateurfunker! Der Eintritt ist gratis.&#039;&#039;&#039;&lt;br /&gt;
Neue und gebrauchte Bauteile aus Elektronik, Funk- und Computertechnik, Surplus-Messgeräte, Funkgeräte und alles wonach man nie gesucht hat!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anreise mit dem Auto:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Aus den Richtungen Basel, Bern und Zürich die Autobahn A1 in Oftringen (Ausfahrt Nr. 48) verlassen und in Richtung Zofingen fahren. Vor dem Stadteingang beginnt die Beschilderung zu den Parkplätzen (nach rechts abbiegen, am Bahnhof vorbei, nach dem Busterminal rechts abbiegen und die Bahnlinie überqueren).&lt;br /&gt;
&lt;br /&gt;
Aus der Richtung Luzern die Autobahn A2 in Reiden (Ausfahrt Nr. 18) verlassen und in Richtung Zofingen fahren. Vor dem Stadteingang beginnt die Beschilderung zu den Parkplätzen (nach links abbiegen).&lt;br /&gt;
	Es stehen ausreichend Parkplätze zur Verfügung!&lt;br /&gt;
&lt;br /&gt;
Die Parkplätze direkt bei der Halle sind gebührenpflichtig (Samstag bis 12:00 Uhr). Die Parkkarten für reservierte Plätze berechtigen nur zur Einfahrt direkt vor die Halle, aber Ersetzen nicht das notwendige Parkticket!&lt;br /&gt;
&lt;br /&gt;
Total stehen für die Surplus Party &#039;&#039;&#039;rund 1&#039;000 Parkplätze&#039;&#039;&#039; (davon etwa 750 gratis) zur Verfügung. Bitte befolgen Sie die Anweisungen des Parkdienstes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anreise mit dem Zug:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Zofingen befindet sich an der SBB Linie 501 Olten - Luzern und ist Haltestelle für die meisten Schnellzüge.&lt;br /&gt;
In Zofingen angekommen, verlassen Sie und der Bahnlinie entlang in südlicher Richtung. Gehen Sie an den Busterminals vorbei, überqueren Sie die Bahnlinie nach rechts und von da an gehen Sie alles geradeaus bis zur Mehrzweckhalle (problemlos in 10 Minuten Fussmarsch erreichbar).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Spezial:Beiträge/85.3.130.90|85.3.130.90]] 13:12, 13. Okt. 2009 (UTC)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basel-Stadt (BS) ==&lt;br /&gt;
=== 4002 Basel ===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=&amp;lt;s&amp;gt;Grieder Elektronik Bauteile AG&amp;lt;/s&amp;gt;&lt;br /&gt;
|Straße=&amp;lt;s&amp;gt;Nauenstrasse 63&amp;lt;/s&amp;gt;&lt;br /&gt;
|PLZ=&amp;lt;s&amp;gt;4002&amp;lt;/s&amp;gt;&lt;br /&gt;
|Ort=&amp;lt;s&amp;gt;Basel&amp;lt;/s&amp;gt;&lt;br /&gt;
|Telefon=n/a&lt;br /&gt;
|Fax=n/a&lt;br /&gt;
|Öffnungszeiten=&#039;&#039;&#039;Ladenlokal in Basel per Ende 2008 geschlossen.&#039;&#039;&#039;&lt;br /&gt;
|Weblink=http://shop.griederbauteile.ch/&lt;br /&gt;
|Email=n/a&lt;br /&gt;
|Bemerkung=Umzug nach 4450 Sissach ==&amp;gt; [[Lokale_Elektroniklieferanten#4450_Sissach]]&lt;br /&gt;
Fortführung als Versandunternehmen.&amp;lt;br&amp;gt;&lt;br /&gt;
z.Zt. liegen keine Informationen über die Möglichkeit der Abholung von vorbestellter Ware vor Ort vor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Spezial:Beiträge/85.3.130.90|85.3.130.90]] 13:37, 13. Okt. 2009 (UTC)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Basel-Landschaft (BL) ==&lt;br /&gt;
=== 4450 Sissach ===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Grieder Elektronik Bauteile AG&lt;br /&gt;
|Straße=Reuslistrasse 62&lt;br /&gt;
|PLZ=4450&lt;br /&gt;
|Ort=Sissach&lt;br /&gt;
|Telefon=061 976 95 95&lt;br /&gt;
|Fax=061 976 95 90&lt;br /&gt;
|Öffnungszeiten=Mo-Do 800-1200, 1300-1600 und Fr 800-1200, 1300-1500.&lt;br /&gt;
|Weblink=http://shop.griederbauteile.ch/&lt;br /&gt;
|Email=info@griederbauteile.ch&lt;br /&gt;
|Bemerkung=Mindestbestellwert CHF 20. Vorbestellte Waren können abgeholt werden.  Der &amp;quot;Laden&amp;quot; befindet sich 10 Minuten zu Fuss vom Bahnhof Sissach.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Luzern (LU) ==&lt;br /&gt;
=== Emmenbrücke ===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic Schweiz&lt;br /&gt;
|Straße=Seetalstrasse 11&lt;br /&gt;
|PLZ=6020&lt;br /&gt;
|Ort=Emmenbrücke &lt;br /&gt;
|Telefon=0848/80 12 83&lt;br /&gt;
|Fax=041/267 32 14&lt;br /&gt;
|Öffnungszeiten=&amp;lt;br&amp;gt;&lt;br /&gt;
Mo/Di/Do 09:00-18:30, Mi/Fr 09:00-21:00, Sa 08:00-16:00 Uhr&lt;br /&gt;
&lt;br /&gt;
|Weblink=http://www1.ch2.conrad.com/infocenter/filialen.php&lt;br /&gt;
|Email=filiale.emmenbruecke@conrad.ch&lt;br /&gt;
&lt;br /&gt;
|Bemerkung=5 Minuten vom Bahnhof Emmenbrücke&amp;lt;br&amp;gt;GRATIS Parkhaus &amp;amp; Parkplätze&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Spezial:Beiträge/85.3.130.90|85.3.130.90]] 13:12, 13. Okt. 2009 (UTC) &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solothurn (SO) ==&lt;br /&gt;
===5014 Gretzenbach===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=EFG Electronic AG&lt;br /&gt;
|Straße=Köllikerstrasse 32&lt;br /&gt;
|PLZ=5014&lt;br /&gt;
|Ort=Gretzenbach&lt;br /&gt;
|Telefon= 062 849 23 61 &lt;br /&gt;
|Fax= 062 849 23 70 &lt;br /&gt;
|Öffnungszeiten=&lt;br /&gt;
Mo-Fr 08:30-11:30, 13:30-18:30, Mi geschlossen, Sa 09:00-16:00 &lt;br /&gt;
|Weblink=http://www.maxland.ch/netmax/standseiten/efg/index.html&lt;br /&gt;
|Email=efgag@yetnet.ch &lt;br /&gt;
|Bemerkung=Kabel - Messgeräte - Lautsprecher - elektronische Bauteile&lt;br /&gt;
kein Versand, nur Ladengeschäft&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Spezial:Beiträge/62.203.205.15|62.203.205.15]] 11:35, 8. Feb. 2010 (UTC) -- Edit: Schweizermacher&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Zürich (ZH) ==&lt;br /&gt;
===8004 Zürich===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Pusterla Elektronik AG&lt;br /&gt;
|Straße=Hohlstrasse 52 &lt;br /&gt;
|PLZ=8004&lt;br /&gt;
|Ort= Zürich&lt;br /&gt;
|Telefon=044 241 56 77&lt;br /&gt;
|Fax=044 242 01 04&lt;br /&gt;
|Öffnungszeiten=&lt;br /&gt;
Mo-Fr 09:00-18:30, Sa 09:00-16:00&lt;br /&gt;
|Weblink=http://www.pusterla.ch/&lt;br /&gt;
|Email=info@pusterla.ch&lt;br /&gt;
|Bemerkung=Absoluter &amp;quot;Kult-Laden&amp;quot; mit Tradition. Wer jemals in der Schweiz einen Lötkolben in der Hand hatte, der kennt &amp;quot;Pusti&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Das Sortiment ist zweigeteilt:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;hinter dem Tresen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gutes allgemeines Bauteilesortiment, spezielle Sachen werden bestellt.&lt;br /&gt;
&amp;lt;br&amp;gt;Man nimmt sich Zeit für Fachberatung - es wird auch schon mal ein Vergleichstyp aus der Liste gesucht und dem jungen &amp;quot;Case-Modder&amp;quot; wird mit Engelsgeduld erklärt wie man den Vorwiderstand für seine coole LED-Prozessorinnenbeleuchtung berechnet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vor dem Tresen - Selbstbedienung:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Am Eingang nimmt man sich eine Pappschale mit Bleistift und Notizblock.&lt;br /&gt;
Artikel, Menge und Preise schreibt man selbst auf!&lt;br /&gt;
&lt;br /&gt;
Das Sortiment bietet einen Querschnitt durch die elektronische Bauteilefertigung der letzten 50 Jahre. Sehr gute Quelle für spannungsfeste Kondensatoren und hochohmige (Leistungs-)Widerstände sowie mechanischem &amp;quot;Klein-Grabbel-Kram.&amp;quot; Gute Auswahl an Gehäusen, Transformatoren (z.T. recht schräge Typen) sowie Relais und Stecker/Buchsen die die Welt wohl niemals gebraucht hat. &amp;lt;br&amp;gt; &#039;&#039;&#039;Vorsicht bei Elektrolytkondensatoren:&#039;&#039;&#039; &amp;quot;historische&amp;quot; Lagerware, besser man hat ein ESR-Meter dabei - sodenn man hat!&lt;br /&gt;
&amp;lt;br&amp;gt;Kabel jeglicher Art gibt es ab der Rolle zum Selberabschneiden - auch 10cm sind kein Problem - ausrechnen und aufschreiben machst Du ja selber.&lt;br /&gt;
&amp;lt;br&amp;gt; Präsentation der Ware im Selbsbedienungsteil:&lt;br /&gt;
&amp;lt;br&amp;gt; Bauteile offen oder ab Gurt in kleinen, liebevoll angeschriebenen Pappschachteln (noch von Vater Pusterla), grösseren Wühlschachteln, einer Wühlecke sowie hier und da einige Merkwürdigkeiten auf dem Fussboden.&lt;br /&gt;
Man stelle sich das Ladenlokal eines Joint-Ventures aus Oppermann, Pollin, dem ehem. Völkner sowie dem örtlichen Entsorgungshof vor - &#039;&#039;&#039;das&#039;&#039;&#039; ist &amp;quot;Pusti&amp;quot; und so war er schon immer!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fazit:&#039;&#039;&#039; absolut lohnenswert, auch wenn man vielleicht nicht immer das bekommt was man wollte, dafür findet man aber alles, wonach man nie gesucht hatte!&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Spezial:Beiträge/85.3.130.90|85.3.130.90]] 13:12, 13. Okt. 2009 (UTC)&lt;br /&gt;
&amp;lt;br&amp;gt;[[Spezial:Beiträge/62.203.205.15|62.203.205.15]] 11:45, 8. Feb. 2010 (UTC) -- Edit: Tippfehler (Schweizermacher)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===8025 Zürich===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=in Memoriam: (1967 - 1996)&lt;br /&gt;
&#039;&#039;Alfred Mattern AG&#039;&#039;&lt;br /&gt;
|Straße=&#039;&#039;Seilergraben 53&#039;&#039; &lt;br /&gt;
|PLZ=&#039;&#039;8025&#039;&#039;&lt;br /&gt;
|Ort= &#039;&#039;Zürich&#039;&#039;&lt;br /&gt;
|Telefon= n/a&lt;br /&gt;
|Fax= n/a&lt;br /&gt;
|Öffnungszeiten=n/a&lt;br /&gt;
|Weblink=http://www.moneyhouse.ch/u/pub/alfred_mattern_ag_CH-020.3.916.364-3.htm&lt;br /&gt;
|Email=&lt;br /&gt;
|Bemerkung=Firmengründung 1967, Konkurs 1996&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SHAB: 235 / 1996 vom 03.12.1996 (Seite 7457)&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
27. November 1996 (25729)&amp;lt;br&amp;gt;&lt;br /&gt;
Alfred Mattern AG, in Z ü r i c h, Handel mit Antennen und Antennenzubehör sowie mit Geräten und Bauteilen der Elektro-, Elektronik-, Radio-und Fernsehindustrie, Aktiengesellschaft (SHAB Nr. 210 vom 30. 10. 1995, S. 5945).&lt;br /&gt;
Firma neu: Alfred Mattern AG in Liquidation. Mit Verfügung vom 02.10.1996 hat der Konkursrichter des Bezirksgerichts Zürich über die Gesellschaft den Konkurs eröffnet; demnach ist die Gesellschaft aufgelöst. Das Konkursverfahren ist mit Verfügung desselben Richters vom 13.11.1996 mangels Aktiven eingestellt worden.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Spezial:Beiträge/85.3.130.90|85.3.130.90]] 13:12, 13. Okt. 2009 (UTC) &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===8092 Zürich===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=&amp;quot;Bastli&amp;quot;&amp;lt;br&amp;gt;Fachverein der Departemente Informationstechnologie und Elektrotechnik und Maschinenbau und Verfahrenstechnik an der ETH Zürich.&lt;br /&gt;
|Straße=Universitätsstrasse 19&lt;br /&gt;
|PLZ=8092&lt;br /&gt;
|Ort= Zürich&lt;br /&gt;
|Telefon= n/a&lt;br /&gt;
|Fax= n/a&lt;br /&gt;
|Öffnungszeiten=Die Öffnungszeiten gelten nur während des Semesters.&lt;br /&gt;
Mo 12:15 - 13:00 Uhr&amp;lt;br&amp;gt;&lt;br /&gt;
Do 12:15 - 13:00 Uhr&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
|Weblink=http://www.bastli.ethz.ch/&lt;br /&gt;
|Email=bastli@amiv.ethz.ch&lt;br /&gt;
|Bemerkung=Studentischer &amp;quot;Bastel-Shop&amp;quot;&lt;br /&gt;
Während den Öffnungszeiten ist der Bastli-Shop im ersten Stock des UNG geöffnet.&lt;br /&gt;
Ihr könnt Bauteile, welche wir an Lager haben, kaufen und euch wird mit diversen elektronischen Problemen geholfen. &lt;br /&gt;
&lt;br /&gt;
Organisierte Sammelbestellungen bei Fa. Reichelt / Deutschland&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Standort:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bastli und Messplatz befinden sich in den Räumlichkeiten des AMIV im UNG Gebäude schräg gegenüber des CAB.&lt;br /&gt;
Es ist das gleiche Gebäude in dem auch der ehem. AMIV-Verlag respektive ehem. WBS respektive SPOD untergebracht ist.&lt;br /&gt;
&lt;br /&gt;
Das Gebäude wirkt beim ersten Kontakt wohl für jeden neuen ein bisschen abschreckend. Aber keine Scheu, wenn man durch das etwas schlecht beleuchtete Treppenhaus in den ersten Stock gelangt, wendet man sich dort gleich nach rechts. Bastli und Messplatz haben die Zimmernummern C6 und C5.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Spezial:Beiträge/85.3.130.90|85.3.130.90]] 13:12, 13. Okt. 2009 (UTC)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 8305 Dietlikon ===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Conrad Electronic Schweiz&lt;br /&gt;
|Straße=Alte Dübendorferstrasse 17&lt;br /&gt;
|PLZ=8305&lt;br /&gt;
|Ort=Dietlikon&lt;br /&gt;
|Telefon=0848/80 12 84&lt;br /&gt;
|Fax=044/805 35 14&lt;br /&gt;
|Öffnungszeiten=&amp;lt;br&amp;gt;&lt;br /&gt;
Mo-Do 10:00-20:00, Fr 10:00-21:00, Sa 09:00-20:00 Uhr&lt;br /&gt;
&lt;br /&gt;
|Weblink=http://www1.ch2.conrad.com/infocenter/filialen.php&lt;br /&gt;
|Email=filiale.dietlikon@conrad.ch&lt;br /&gt;
&lt;br /&gt;
|Bemerkung=5 Minuten vom Bahnhof Dietlikon&amp;lt;br&amp;gt;Parkhaus &amp;amp; Parkplätze vorhanden&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Spezial:Beiträge/85.3.130.90|85.3.130.90]] 13:12, 13. Okt. 2009 (UTC)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 8606 Nänikon ===&lt;br /&gt;
{{ElektronikLieferant&lt;br /&gt;
|Firmenname=Distrelec Schweiz&lt;br /&gt;
|Straße=Grabenstrasse 6&lt;br /&gt;
|PLZ=8606&lt;br /&gt;
|Ort=Nänikon&lt;br /&gt;
|Telefon=044 - 944 99 11&lt;br /&gt;
|Fax=044 - 944 99 88&lt;br /&gt;
|Öffnungszeiten=&amp;lt;br&amp;gt;&lt;br /&gt;
Mo-Fr 07:30-18:00 Uhr (nur Abholschalter)&lt;br /&gt;
&lt;br /&gt;
|Weblink=https://www.distrelec.ch&lt;br /&gt;
|Email=info@distrelec.com&lt;br /&gt;
|Bemerkung=&#039;&#039;&#039;Abholschalter:&#039;&#039;&#039; (Vorbestellung unbedingt erforderlich)&lt;br /&gt;
Telefonisch oder online bestellte Ware kann nach ca. 2 Stunden abgeholt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;Es kann auch direkt vor Ort ab Katalog bestellt werden, allerdings dann Wartezeit von min. 2 Stunden&lt;br /&gt;
&amp;lt;br&amp;gt;Bezahlung: bar/EC- und Post-Card&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Spezial:Beiträge/85.3.130.90|85.3.130.90]] 13:12, 13. Okt. 2009 (UTC)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Siehe auch =&lt;br /&gt;
* [[Platinenhersteller]]&lt;br /&gt;
* [[Elektronikversender]]&lt;br /&gt;
* [[Eisenwarenversender]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Minila_Version_MockUp&amp;diff=47439</id>
		<title>Minila Version MockUp</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Minila_Version_MockUp&amp;diff=47439"/>
		<updated>2010-05-13T12:57:41Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Voting einiger Dinge die im Thread angesprochen wurden */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Voting einiger Dinge die im Thread angesprochen wurden ==&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
(Nach 5 Strichen &amp;quot;|&amp;quot; bitte ein Leerzeichen)&lt;br /&gt;
* USB Versorgt ohne galvanische Trennung der USB-Seite: ||&lt;br /&gt;
* USB Versorgt mit galvanische Trennung (ADuM4160) der USB-Seite: ||||| |||&lt;br /&gt;
* ext. Versorgt ohne galvanische Trennung der USB-Seite: |&lt;br /&gt;
* ext. Versorgt mit galvanische Trennung (ADuM4160) der USB-Seite: ||&lt;br /&gt;
Anmerkung: Es steht noch nicht fest ob der Stromverbrauch USB-Konform ist!!!&lt;br /&gt;
&lt;br /&gt;
=== Bestückung ===&lt;br /&gt;
* SMD-Teile bestückt: ||||| |||||&lt;br /&gt;
* unbestückt als Bausatz: ||||| &lt;br /&gt;
&lt;br /&gt;
=== LEDs ===&lt;br /&gt;
* SMD RGB LED: ||&lt;br /&gt;
* SMD0805 LED: |||&lt;br /&gt;
* 5mm LED: |&lt;br /&gt;
* SMD0805 und 5mm LED (je nach Bestückung): |||||&lt;br /&gt;
&lt;br /&gt;
== Wünsche ==&lt;br /&gt;
=== Gehäuse ===&lt;br /&gt;
&amp;quot;Nackert&amp;quot; sieht so etwas doch am besten aus, falls einer eins gut findet, kann er das ja hier einbinden.&lt;br /&gt;
&lt;br /&gt;
=== Andere Dinge können hier ebenfals hinzugefügt werden ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Feststehende Dinge ==&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
* Wahrscheinlich ein 3,3V sowie 5V Regler&lt;br /&gt;
* wenn USB-Versorgt abschaltbar um die Spezifikationen zu erfüllen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RAM-Speicher ===&lt;br /&gt;
* 512K*32 Kanäle steht ausser frage&lt;br /&gt;
* TQFP100 0,65mm Pinabstand&lt;br /&gt;
* GS816036 &lt;br /&gt;
* [ http://de.farnell.com/gsi-technology/gs816032bgt-200/18m-synch-burst-sram-512kx32-smd/dp/1447526 Optional GS816032]&lt;br /&gt;
* [ http://www.cypress.com/?mpn=CY7C1381D-133AXC  Optional CY7C1381D-133AX]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPLD ===&lt;br /&gt;
* wird der XC95288XL bleiben, da dies nur eine Veränderung und keine Neuentwicklung wird&lt;br /&gt;
* einige Signale werden an anderen Pins angeschlossen und verteilt&lt;br /&gt;
* TQFP144&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB ===&lt;br /&gt;
Je nach dem ob per USB versorgt oder nicht wird der FTDI FT2232D im:&lt;br /&gt;
* Bus Powerd Modus oder&lt;br /&gt;
* Self Powerd Modus &lt;br /&gt;
betrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Steckverbinder ===&lt;br /&gt;
* Steckerbelegung bleibt beim alten&lt;br /&gt;
* X1-7 wird entfernt, da eh wenig Platz im CPLD ist&lt;br /&gt;
* X8 bleibt erhalten&lt;br /&gt;
* K8 wird dann auch komplett entfernt, da nicht mehr benötigt (alle Signale sind auch an K1 verfügbar)&lt;br /&gt;
* Serienwiderstände in den Datenleitungen wie gehabt&lt;br /&gt;
* Tastköpfe extern wie gehabt (siehe auch: Platinen)&lt;br /&gt;
&lt;br /&gt;
=== JTAG ===&lt;br /&gt;
* wird per Steckbrücke an den FTDI anklemmbar sein. Keine Litze notwendig&lt;br /&gt;
* Programmierung über FTDI und &amp;quot;xc3sprog&amp;quot; http://www.mikrocontroller.net/articles/MiniLA#via_USB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parallel Port ===&lt;br /&gt;
* nicht vorgesehen&lt;br /&gt;
* Signale als Stiftleiste oder ähnliches herrausgeführt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Platine mini-LA &#039;&#039;&#039;&lt;br /&gt;
* 2 Lagig&lt;br /&gt;
* Top-Layer&lt;br /&gt;
[[Bild:MockUpMiniLALayoutEagleTop.png.png|500px]]&lt;br /&gt;
* zwischen dem oberen und dem mittleren Steckverbinder ist ~1cm.&lt;br /&gt;
* über der 5mm LED ist die SMD0805 LED angeordnet&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Platine Tastköpfe &#039;&#039;&#039;&lt;br /&gt;
* gibt es da schon ein Layout ???&lt;br /&gt;
&lt;br /&gt;
Kann man die Platine mini-LA und die Platinen für die Tastköpfe nicht auf einen gemeinsamen Platinen-Nutzen machen? Wer die Tastköpfe getrennt benutzen will, braucht dann die Platine nur aufzutrennen (mit Tapeziermesser + Lineal anritzen und dann über Tischkante brechen).&lt;br /&gt;
&lt;br /&gt;
Oder einfach im Layout mehrere kleine Bohrungen vorsehen. Diese können dann als Bruchkante genutzt werden. Alternativ muss eben ein Drehmel genutzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:image1.png]]&lt;br /&gt;
&lt;br /&gt;
== Planungsstand ==&lt;br /&gt;
* 32 Kanäle&lt;br /&gt;
* 100MHz Samplerate&lt;br /&gt;
* 512K Speichertiefe pro Kanal&lt;br /&gt;
* Geschätzter Preis steht noch aus&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/174860#new Hauptthread auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/MiniLA Original]&lt;br /&gt;
* [http://minila.sourceforge.net/hw/other/bg/minila_bg_sch.pdf Schaltplan der alten Version]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM8S-Discovery&amp;diff=46545</id>
		<title>STM8S-Discovery</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM8S-Discovery&amp;diff=46545"/>
		<updated>2010-04-23T06:03:42Z</updated>

		<summary type="html">&lt;p&gt;Ivan: Diverses neu umschrieben und viele Typos korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das STM8S-Discovery ist ein sehr günstiges Evalutionsboard für die Controllerfamilie [[STM8]] von &#039;&#039;&#039;ST Microelectronics&#039;&#039;&#039;. Auf der Platine befindet sich ein kompletter USB-Programmer/Debugger basierend auf dem STM8S105C6T6 sowie eine LED und ein kapazitiver Taster. Für das Discovery benötigt man außerdem auch kein Netzteil, da es die Betriebsspannung über den USB bezieht. Mit dem Programmer/Debugger kann man jeden beliebigen STM8 über SWIM - der einpoligen Programmierschnittstelle für STM8 - flashen und auf Fehlersuche gehen.&lt;br /&gt;
&lt;br /&gt;
== Benötigte Hardware ==&lt;br /&gt;
Einer der großen Vorteile des STM8S-Discovery ist, dass man außer dem Evaluationsboard eigentlich nur noch ein USB Kabel (A auf B) braucht und man kann los legen. Man braucht weder externes Netzteil, noch zusätzliche Bauteile wenn man mit dem Board ein wenig herumexperimentieren möchte.&lt;br /&gt;
&lt;br /&gt;
== Benötigte Software ==&lt;br /&gt;
Die benötigte Software gibt es kostenlos oder mit einer kostenlosen, aber etwas eingeschränkten Lizenz zum Herunterladen auf der ST Seite.&lt;br /&gt;
&lt;br /&gt;
=== ST MCU Toolset ===&lt;br /&gt;
Das ST MCU Toolset behinhaltet die Entwicklungsumgebung ST Visual Develop (Vergleichbar zum AVR Studio von Atmel) und einen graphischen Flasher. Es beinhaltet den Treiber für den Programmer/Debugger, den uneingeschränkten Assembler und Linker und einen Simulator. Es kann auf der ST Webseite herunter geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Der Compiler ===&lt;br /&gt;
Bei den Compilern hat man die Wahl zwischen 2 (bald sogar 3) verschiedenen Compilern. Alle Compiler können voll in das ST Visual Develop integriert werden.&lt;br /&gt;
&lt;br /&gt;
* Der Cosmic Compiler, für diesen Compiler gibt es sogar eine kostenlose Lizenz mit einer Codegrößen-Beschränkung von 32 KBytes. Man beachte dass man sich für Download und Installation Registrieren muss. Nach dem man sich während der Installation regestirert und die Email an Comsic geschickt hat, bekommt man relativ schnell (bei mir waren das 5 Minuten) eine Lizenz zugeschickt.&lt;br /&gt;
&lt;br /&gt;
* Der Raisonance Compiler, für diesen Compiler gibt es nur eine kostenlose 16k Version, was aber für die meisten Hobbyprojekte mehr als ausrreichend ist. Der Compiler kann zusätzlich noch mit der Entwicklungsumgebung von Raisoncance (Ride7) genutzt werden. Anscheinend ist dieser Compiler aber nicht so umfangreich wie der Cosmic. Siehe für genauer Informationen die Hilfe des ST Visual Develop.&lt;br /&gt;
&lt;br /&gt;
* Anscheinend wird es in näherer Zukunft einen Compiler von IAR geben. Auf der STM8S Webseite kann man sich für einen Newsletter eintragen, der jedermann auf dem Laufenden zur Verfügbarkeit des IAR-Compilers gibt.&lt;br /&gt;
&lt;br /&gt;
=== Datenblätter ===&lt;br /&gt;
Bevor man loslegt, sollte man sich noch folgenede Datenblätter herunterladen, damit man bei Problemen immer schnell nachschlagen kann.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;STM8S-DISCOVERY&#039;&#039; das Handbuch zum STM8S Discovery&lt;br /&gt;
*&#039;&#039;STM8S105xx&#039;&#039; Datenblatt des auf dem Discovery verwendeten Mikrocontroller&lt;br /&gt;
*&#039;&#039;RM0016&#039;&#039; Generelle Informationen über die einzelnen Register/Funktionen der STM8 Plattform&lt;br /&gt;
*&#039;&#039;STM8S FWLi&#039;&#039; Firmware Libary, mit vielen Funktionen zu den GPIO etc... sodass man das Rad nicht jedesmal neu Erfinden muss. Dazu später mehr. 		 &lt;br /&gt;
*&#039;&#039;STM8S optimized examples&#039;&#039; Programmbeispiel&lt;br /&gt;
&lt;br /&gt;
== Erste Schritte ==&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
[[STM8]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.st.com/mcu/contentid-130-113-STM8S_DISCOVERY.html STM8S-Discovery auf ST Website]&lt;br /&gt;
*[http://www.st.com/mcu/familiesdocs-113.html Dokumente und Downloads rund um den STM8 auf der ST Website]&lt;br /&gt;
*[http://benryves.com/tutorials/stm8s-discovery/ Tutorial für Anfänger auf Englisch]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=46544</id>
		<title>STM8</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=46544"/>
		<updated>2010-04-23T05:53:03Z</updated>

		<summary type="html">&lt;p&gt;Ivan: URL hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim STM8 handelt es sich um die neueste 8-Bit-Controllerlinie von &#039;&#039;&#039;ST Microelectronics&#039;&#039;&#039;. Sie zeichnet sich durch schnelle Ausführungszeiten (durchschnittlich 1,6 Takte per Instruktion), 16 MByte linearem Adressraum, umfangreichen Peripherieoptionen (wie integriertem CAN-Controller) und integriertem echtem EEPROM aus.&lt;br /&gt;
&lt;br /&gt;
===Übersicht===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Akkumulatorbasierte, modifizierte Harvard-Architektur mit gemeinsamen Adressraum&lt;br /&gt;
* &#039;&#039;&#039;Busbreite&#039;&#039;&#039;: Datenbus 32 Bit, Adressbus 24 Bit&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 512 Bytes bis 6 kBytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 4 bis 128 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;EEPROM&#039;&#039;&#039;: 384 Bytes bis 2 kBytes&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 bis 5,5V &lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 24 MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: SDIP, SOIC, TSSOP, LQFP, QFN, UQFPN, WLCSP, Unsawn Wafer.&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 20 bis 80&lt;br /&gt;
&lt;br /&gt;
===Familien===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;STM8S&#039;&#039;&#039;: Standardversion&lt;br /&gt;
* &#039;&#039;&#039;STM8L&#039;&#039;&#039;: Low-Power-Version&lt;br /&gt;
* &#039;&#039;&#039;STM8A&#039;&#039;&#039;: Automotive Grade&lt;br /&gt;
&lt;br /&gt;
===Register===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Akkumulator (A)&#039;&#039;&#039;:  8 Bit, Allgemeines Arbeitsregister für logische und mathematische Operationen.&lt;br /&gt;
* &#039;&#039;&#039;X Indexregister (X)&#039;&#039;&#039;: 16 Bit, z.ß. nutzbar als Speicheroffset. Enthält bei 16/8- und bei 16/16-Division den Dividenden.&lt;br /&gt;
* &#039;&#039;&#039;Y Indexregister (Y)&#039;&#039;&#039;: 16 Bit, nutzbar wie X-Indexregister. Divisor bei 16/16-Division.&lt;br /&gt;
* &#039;&#039;&#039;Program Counter (PC)&#039;&#039;&#039;: 24 Bit, enthält Adresse des nächsten auszuführenden Befehls.&lt;br /&gt;
* &#039;&#039;&#039;Stack Pointer (SP)&#039;&#039;&#039;: 16 Bit, zeigt auf nächsten freien Speicherplatz im Kellerspeicher.&lt;br /&gt;
* &#039;&#039;&#039;Condition Code (CC)&#039;&#039;&#039;:  8 Bit, enthält die üblichen Flags (Carry, Zero, etc.) und die Interrupt Level Flags.&lt;br /&gt;
&lt;br /&gt;
===Peripherie===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Clock System&#039;&#039;&#039;: Takterzeugung aus externem Quarz oder Oszillator, interner 16MHz/128kHz-RC-Oszillator.&lt;br /&gt;
* &#039;&#039;&#039;Power Management&#039;&#039;&#039;: Warte-Modus, Aktiver Wartemodus mit aktiviertem internem Spannungsregler, Wartemodus mit deaktiviertem Regler, Halt-Modus.&lt;br /&gt;
* &#039;&#039;&#039;Watchdog&#039;&#039;&#039;: Konfigurierbarer &amp;quot;Windowed-Watchdog&amp;quot; und vom Taktsystem unabhängiger &amp;quot;Independent Watchdog&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Timer&#039;&#039;&#039;: Flexible Timeroptionen: 8 Bit mit Prescaler, 16 Bit Capture/Compare, PWM, Komplementärausgabe, &lt;br /&gt;
* &#039;&#039;&#039;ADC&#039;&#039;&#039;: Je nach Familie 10 (STM8S, STM8A) oder 12 (STM8L) Bit Auflösung, SAR, bis zu 25 Kanäle.&lt;br /&gt;
* &#039;&#039;&#039;DAC&#039;&#039;&#039;: 12 Bit Auflösung, mit Output Buffer.&lt;br /&gt;
* &#039;&#039;&#039;Comparator&#039;&#039;&#039;: Rail-to-Rail, interne oder externe Referenzspannung möglich.&lt;br /&gt;
* &#039;&#039;&#039;I2C&#039;&#039;&#039;: Adressierbare serielle Schnittstelle mit bis zu 400kHz Geschwindigkeit, Master-, Slave- und Multimaster-fähig, unterstützt PMBus und SMBus, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;SPI&#039;&#039;&#039;: Serielles Peripherie-Interface, bis zu 10 MBit/s, Polarität und Phase frei einstellbar, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;U(S)ART&#039;&#039;&#039;: Full featured UART, unterstützt zusätzlich LIN 2.1 als Master und Slave, IrDA-Emulation und Smartcard-Modus&lt;br /&gt;
* &#039;&#039;&#039;High Current Ports&#039;&#039;&#039;: Belastbarkeit bis zu 20mA/Pin&lt;br /&gt;
* &#039;&#039;&#039;DMA&#039;&#039;&#039;: Erlaubt UART, SPI, I2C, ADC, DAC und Timern direkten Speicherzugriff&lt;br /&gt;
* &#039;&#039;&#039;CAN&#039;&#039;&#039;: Geschwindigkeit bis zu 1 MBit/s, unterstützt beCAN 2.0B&lt;br /&gt;
* &#039;&#039;&#039;Beeper&#039;&#039;&#039;: Ausgabe eines Buzzer-Signals mit einstellbarer Frequenz von 1, 2 oder 4 kHz.&lt;br /&gt;
* &#039;&#039;&#039;LCD&#039;&#039;&#039;: Controller für LCDs mit einer Größe von bis zu 4x28 Pixel, Integrierter Stepup-Converter für Kontrastspannung.&lt;br /&gt;
* &#039;&#039;&#039;UID&#039;&#039;&#039;: 96-bittige, eindeutige Identifikationsnummer&lt;br /&gt;
* &#039;&#039;&#039;SWIM&#039;&#039;&#039;: Single-Wire Interface Module, erlaubt Programmierung über Eindraht-Schnittstelle.&lt;br /&gt;
&lt;br /&gt;
===Weblinks===&lt;br /&gt;
* [http://www.st.com/mcu/inchtml-pages-stm8.html STM8-Familie auf der ST-Website]&lt;br /&gt;
* [http://www.st.com/mcu/contentid-130-113-STM8S_DISCOVERY.html Evaluation board STM8S-Discovery auf der ST-Website]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/STM8S-Discovery Wiki-Artikel zum STM8S-Discovery auf mikrocontroller.net]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Cortex_M3_OCM3U&amp;diff=46362</id>
		<title>Cortex M3 OCM3U</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Cortex_M3_OCM3U&amp;diff=46362"/>
		<updated>2010-04-16T18:51:25Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Bauteilliste */  Typos korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von Theborg0815&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ACHTUNG !!! Artikel in Arbeit.&lt;br /&gt;
&lt;br /&gt;
[[Bild:OCM3U.png|frameless|right|OCM3U]][[Bild:OCM3U1.png|frameless|right|OCM3U]]&lt;br /&gt;
[[Bild:OCM3U1-p.png|frameless|right|OCM3U]]&lt;br /&gt;
[[Bild:OCM3U-s.png|frameless|right|OCM3U]]&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Wer mal in die Welt der ST Cortex M3 schauen möchte, sollte sich das folgende Board mal anschauen. Es ist nichts Aufwendiges, nur das Wichtigste ist auf dem Board integriert. Aus Platzgründen habe ich auch den [[JTAG]] weggelassen, da der verwendete STM32F101 mit integriertem [[Bootloader]] daher kommt und sich über RS232 programmieren lässt, was für den Anfang reichen sollte. Zudem habe ich auch auf Sachen wie Spannungsregler und co. verzichtet, da hier jeder andere Vorstellungen hat. Zusätzlich ist es so gebaut, daß es auf ein Steckbrett passt.&lt;br /&gt;
&lt;br /&gt;
Verbesserungen sind natürlich wie immer erwünscht.&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; Anmerkung: In den Diskussionsbereich verschoben, werde ich mich darum kümmern sobald ich die Zeit finde.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
&lt;br /&gt;
* Quarze für RTC und Hauptoszillator&lt;br /&gt;
* wenig Extrabeschaltung&lt;br /&gt;
* RS232 zum programmieren und für Datenübermittlung zum PC&lt;br /&gt;
* STM32F101C8T6, 2.0-3.6V, 5V Tolerante I/Os, max. 36MHz, 32KB Flash, 6KB SRAM, 2x16Bit Timer, 2xSPI, 2xI2C, 3xUART, 10x12Bit ADC, 26xGPIOs, 1xRTC.&lt;br /&gt;
* Größere Modelle im pinkompatiblen Gehäuse erhältlich&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Dieses kleine Beispiel schaltetet den Kompletten PortB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
/* Includes ------------------------------------------------------------------*/&lt;br /&gt;
#include &amp;quot;stm32f10x_it.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/* Private typedef -----------------------------------------------------------*/&lt;br /&gt;
/* Private define ------------------------------------------------------------*/&lt;br /&gt;
/* Private macro -------------------------------------------------------------*/&lt;br /&gt;
/* Private variables ---------------------------------------------------------*/&lt;br /&gt;
GPIO_InitTypeDef GPIO_InitStructure;&lt;br /&gt;
ErrorStatus HSEStartUpStatus;&lt;br /&gt;
&lt;br /&gt;
/* Private function prototypes -----------------------------------------------*/&lt;br /&gt;
void RCC_Configuration(void);&lt;br /&gt;
void NVIC_Configuration(void);&lt;br /&gt;
void Delay(vu32 nCount);&lt;br /&gt;
&lt;br /&gt;
/* Private functions ---------------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
* Function Name  : main&lt;br /&gt;
* Description    : Main program.&lt;br /&gt;
* Input          : None&lt;br /&gt;
* Output         : None&lt;br /&gt;
* Return         : None&lt;br /&gt;
*******************************************************************************/&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
#ifdef DEBUG&lt;br /&gt;
  debug();&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
  /* Configure the system clocks */&lt;br /&gt;
  RCC_Configuration();&lt;br /&gt;
    &lt;br /&gt;
  /* NVIC Configuration */&lt;br /&gt;
  NVIC_Configuration();&lt;br /&gt;
&lt;br /&gt;
  /* Enable GPIOB clock */&lt;br /&gt;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);&lt;br /&gt;
  &lt;br /&gt;
  /* Configure PB.0 as Output push-pull */&lt;br /&gt;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;&lt;br /&gt;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;&lt;br /&gt;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;&lt;br /&gt;
  GPIO_Init(GPIOB, &amp;amp;GPIO_InitStructure);&lt;br /&gt;
&lt;br /&gt;
  while (1)&lt;br /&gt;
  {&lt;br /&gt;
    /* Turn on led connected to PB */&lt;br /&gt;
    GPIO_SetBits(GPIOB, GPIO_Pin_All);&lt;br /&gt;
    /* Insert delay */&lt;br /&gt;
    Delay(0xFFFFF);&lt;br /&gt;
&lt;br /&gt;
    /* Turn off led connected to PB */&lt;br /&gt;
    GPIO_ResetBits(GPIOB, GPIO_Pin_All);&lt;br /&gt;
    /* Insert delay */&lt;br /&gt;
    Delay(0xFFFFF);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
* Function Name  : RCC_Configuration&lt;br /&gt;
* Description    : Configures the different system clocks.&lt;br /&gt;
* Input          : None&lt;br /&gt;
* Output         : None&lt;br /&gt;
* Return         : None&lt;br /&gt;
*******************************************************************************/&lt;br /&gt;
void RCC_Configuration(void)&lt;br /&gt;
{&lt;br /&gt;
  /* RCC system reset(for debug purpose) */&lt;br /&gt;
  RCC_DeInit();&lt;br /&gt;
&lt;br /&gt;
  /* Enable HSE */&lt;br /&gt;
  RCC_HSEConfig(RCC_HSE_ON);&lt;br /&gt;
&lt;br /&gt;
  /* Wait till HSE is ready */&lt;br /&gt;
  HSEStartUpStatus = RCC_WaitForHSEStartUp();&lt;br /&gt;
&lt;br /&gt;
  if(HSEStartUpStatus == SUCCESS)&lt;br /&gt;
  {&lt;br /&gt;
    /* Enable Prefetch Buffer */&lt;br /&gt;
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);&lt;br /&gt;
&lt;br /&gt;
    /* Flash 2 wait state */&lt;br /&gt;
    FLASH_SetLatency(FLASH_Latency_2);&lt;br /&gt;
 	&lt;br /&gt;
    /* HCLK = SYSCLK */&lt;br /&gt;
    RCC_HCLKConfig(RCC_SYSCLK_Div1); &lt;br /&gt;
  &lt;br /&gt;
    /* PCLK2 = HCLK */&lt;br /&gt;
    RCC_PCLK2Config(RCC_HCLK_Div1); &lt;br /&gt;
&lt;br /&gt;
    /* PCLK1 = HCLK/2 */&lt;br /&gt;
    RCC_PCLK1Config(RCC_HCLK_Div2);&lt;br /&gt;
&lt;br /&gt;
    /* PLLCLK = 8MHz * 4 = 32 MHz */&lt;br /&gt;
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_4);&lt;br /&gt;
&lt;br /&gt;
    /* Enable PLL */ &lt;br /&gt;
    RCC_PLLCmd(ENABLE);&lt;br /&gt;
&lt;br /&gt;
    /* Wait till PLL is ready */&lt;br /&gt;
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)&lt;br /&gt;
    {&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Select PLL as system clock source */&lt;br /&gt;
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);&lt;br /&gt;
&lt;br /&gt;
    /* Wait till PLL is used as system clock source */&lt;br /&gt;
    while(RCC_GetSYSCLKSource() != 0x08)&lt;br /&gt;
    {&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
* Function Name  : NVIC_Configuration&lt;br /&gt;
* Description    : Configures Vector Table base location.&lt;br /&gt;
* Input          : None&lt;br /&gt;
* Output         : None&lt;br /&gt;
* Return         : None&lt;br /&gt;
*******************************************************************************/&lt;br /&gt;
void NVIC_Configuration(void)&lt;br /&gt;
{&lt;br /&gt;
#ifdef  VECT_TAB_RAM  &lt;br /&gt;
  /* Set the Vector Table base location at 0x20000000 */ &lt;br /&gt;
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); &lt;br /&gt;
#else  /* VECT_TAB_FLASH  */&lt;br /&gt;
  /* Set the Vector Table base location at 0x08000000 */ &lt;br /&gt;
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   &lt;br /&gt;
#endif&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
* Function Name  : Delay&lt;br /&gt;
* Description    : Inserts a delay time.&lt;br /&gt;
* Input          : nCount: specifies the delay time length.&lt;br /&gt;
* Output         : None&lt;br /&gt;
* Return         : None&lt;br /&gt;
*******************************************************************************/&lt;br /&gt;
void Delay(vu32 nCount)&lt;br /&gt;
{&lt;br /&gt;
  for(; nCount != 0; nCount--);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#ifdef  DEBUG&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
* Function Name  : assert_failed&lt;br /&gt;
* Description    : Reports the name of the source file and the source line number&lt;br /&gt;
*                  where the assert_param error has occurred.&lt;br /&gt;
* Input          : - file: pointer to the source file name&lt;br /&gt;
*                  - line: assert_param error line source number&lt;br /&gt;
* Output         : None&lt;br /&gt;
* Return         : None&lt;br /&gt;
*******************************************************************************/&lt;br /&gt;
void assert_failed(u8* file, u32 line)&lt;br /&gt;
{ &lt;br /&gt;
  /* User can add his own implementation to report the file name and line number,&lt;br /&gt;
     ex: printf(&amp;quot;Wrong parameters value: file %s on line %d\r\n&amp;quot;, file, line) */&lt;br /&gt;
&lt;br /&gt;
  /* Infinite loop */&lt;br /&gt;
  while (1)&lt;br /&gt;
  {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bauteilliste ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Stück || Wert || Bauteile || Bauform || Reichelt Bestellnummer&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 22pF&lt;br /&gt;
| Kondensator&lt;br /&gt;
| 0805&lt;br /&gt;
| NPO-G0805 22P&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 100nF&lt;br /&gt;
| Kondensator&lt;br /&gt;
| 0805&lt;br /&gt;
| X7R-G0805 100N&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| -&lt;br /&gt;
| Bat.-Fassung&lt;br /&gt;
| -&lt;br /&gt;
| KZH-12-1 (Passende Batterie:CR 1216)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| -&lt;br /&gt;
| MAX3232ECWE&lt;br /&gt;
| SO16L&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| -&lt;br /&gt;
| Pinheader 1x16&lt;br /&gt;
| -&lt;br /&gt;
| 1x SL 1X36G 2,54&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| -&lt;br /&gt;
| Pinheader 1x2&lt;br /&gt;
| -&lt;br /&gt;
| ^^&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 32.768Khz&lt;br /&gt;
| Crystal&lt;br /&gt;
| HC49UP&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 8Mhz&lt;br /&gt;
| Crystal&lt;br /&gt;
| HC49UP&lt;br /&gt;
| 8,0000-HC49-SMD&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| -&lt;br /&gt;
| Switch&lt;br /&gt;
| -&lt;br /&gt;
| TASTER 9312&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| -&lt;br /&gt;
| STM32F101C8T6&lt;br /&gt;
| LQFP48&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| -&lt;br /&gt;
| SUBD-CON.&lt;br /&gt;
| F09HP&lt;br /&gt;
| D-SUB BU 09US&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 47k&lt;br /&gt;
| Widerstand&lt;br /&gt;
| 0805&lt;br /&gt;
| SMD-0805 47,0K&lt;br /&gt;
|}&lt;br /&gt;
 Work in Process!&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* Sourcecode: [[Media:OCM3U-src-1.1.tar.gz]] (ST-lib,Ride7 Projektfiles, Makefile für CodeSourcery und Configs für OpenOCD) UPDATE: 21.11.2008&lt;br /&gt;
* Schaltplan: [[Media:OCM3U-rev-1.1.tar.gz]] UPDATE: 21.11.2008&lt;br /&gt;
* Schaltplan: [[Media:OCM3U-rev-1.0.tar.gz]] UPDATE: 07.11.2008&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* Diskussion zu diesem Projekt: NA&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* ST(DB,Software,Exampels......): http://www.st.com/mcu/modules.php?name=mcu&amp;amp;file=devicedocs&amp;amp;DEV=STM32F101C8&lt;br /&gt;
* Examples: http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/index_cortex.html&lt;br /&gt;
* Infos und Architektur: http://www.arm.com/products/CPUs/ARM_Cortex-M3.html&lt;br /&gt;
* Compiler von CodeSourcery: http://www.codesourcery.com/gnu_toolchains/arm/download.html (EABI)&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM-Boards]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=46083</id>
		<title>STM8</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=46083"/>
		<updated>2010-04-10T18:17:00Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Peripherie */  - Typos korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim STM8 handelt es sich um die neueste 8-Bit-Controllerlinie von &#039;&#039;&#039;ST Microelectronics&#039;&#039;&#039;. Sie zeichnet sich durch schnelle Ausführungszeiten (durchschnittlich 1,6 Takte per Instruktion), 16 MByte linearem Adressraum, umfangreichen Peripherieoptionen (wie integriertem CAN-Controller) und integriertem echtem EEPROM aus.&lt;br /&gt;
&lt;br /&gt;
===Übersicht===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Akkumulatorbasierte, modifizierte Harvard-Architektur mit gemeinsamen Adressraum&lt;br /&gt;
* &#039;&#039;&#039;Busbreite&#039;&#039;&#039;: Datenbus 32 Bit, Adressbus 24 Bit&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 512 Bytes bis 6 kBytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 4 bis 128 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;EEPROM&#039;&#039;&#039;: 384 Bytes bis 2 kBytes&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 bis 5,5V &lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 24 MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: SDIP, SOIC, TSSOP, LQFP, QFN, UQFPN, WLCSP, Unsawn Wafer.&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 20 bis 80&lt;br /&gt;
&lt;br /&gt;
===Familien===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;STM8S&#039;&#039;&#039;: Standardversion&lt;br /&gt;
* &#039;&#039;&#039;STM8L&#039;&#039;&#039;: Low-Power-Version&lt;br /&gt;
* &#039;&#039;&#039;STM8A&#039;&#039;&#039;: Automotive Grade&lt;br /&gt;
&lt;br /&gt;
===Register===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Akkumulator (A)&#039;&#039;&#039;:  8 Bit, Allgemeines Arbeitsregister für logische und mathematische Operationen.&lt;br /&gt;
* &#039;&#039;&#039;X Indexregister (X)&#039;&#039;&#039;: 16 Bit, z.ß. nutzbar als Speicheroffset. Enthält bei 16/8- und bei 16/16-Division den Dividenden.&lt;br /&gt;
* &#039;&#039;&#039;Y Indexregister (Y)&#039;&#039;&#039;: 16 Bit, nutzbar wie X-Indexregister. Divisor bei 16/16-Division.&lt;br /&gt;
* &#039;&#039;&#039;Program Counter (PC)&#039;&#039;&#039;: 24 Bit, enthält Adresse des nächsten auszuführenden Befehls.&lt;br /&gt;
* &#039;&#039;&#039;Stack Pointer (SP)&#039;&#039;&#039;: 16 Bit, zeigt auf nächsten freien Speicherplatz im Kellerspeicher.&lt;br /&gt;
* &#039;&#039;&#039;Condition Code (CC)&#039;&#039;&#039;:  8 Bit, enthält die üblichen Flags (Carry, Zero, etc.) und die Interrupt Level Flags.&lt;br /&gt;
&lt;br /&gt;
===Peripherie===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Clock System&#039;&#039;&#039;: Takterzeugung aus externem Quarz oder Oszillator, interner 16MHz/128kHz-RC-Oszillator.&lt;br /&gt;
* &#039;&#039;&#039;Power Management&#039;&#039;&#039;: Warte-Modus, Aktiver Wartemodus mit aktiviertem internem Spannungsregler, Wartemodus mit deaktiviertem Regler, Halt-Modus.&lt;br /&gt;
* &#039;&#039;&#039;Watchdog&#039;&#039;&#039;: Konfigurierbarer &amp;quot;Windowed-Watchdog&amp;quot; und vom Taktsystem unabhängiger &amp;quot;Independent Watchdog&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Timer&#039;&#039;&#039;: Flexible Timeroptionen: 8 Bit mit Prescaler, 16 Bit Capture/Compare, PWM, Komplementärausgabe, &lt;br /&gt;
* &#039;&#039;&#039;ADC&#039;&#039;&#039;: Je nach Familie 10 (STM8S, STM8A) oder 12 (STM8L) Bit Auflösung, SAR, bis zu 25 Kanäle.&lt;br /&gt;
* &#039;&#039;&#039;DAC&#039;&#039;&#039;: 12 Bit Auflösung, mit Output Buffer.&lt;br /&gt;
* &#039;&#039;&#039;Comparator&#039;&#039;&#039;: Rail-to-Rail, interne oder externe Referenzspannung möglich.&lt;br /&gt;
* &#039;&#039;&#039;I2C&#039;&#039;&#039;: Adressierbare serielle Schnittstelle mit bis zu 400kHz Geschwindigkeit, Master-, Slave- und Multimaster-fähig, unterstützt PMBus und SMBus, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;SPI&#039;&#039;&#039;: Serielles Peripherie-Interface, bis zu 10 MBit/s, Polarität und Phase frei einstellbar, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;U(S)ART&#039;&#039;&#039;: Full featured UART, unterstützt zusätzlich LIN 2.1 als Master und Slave, IrDA-Emulation und Smartcard-Modus&lt;br /&gt;
* &#039;&#039;&#039;High Current Ports&#039;&#039;&#039;: Belastbarkeit bis zu 20mA/Pin&lt;br /&gt;
* &#039;&#039;&#039;DMA&#039;&#039;&#039;: Erlaubt UART, SPI, I2C, ADC, DAC und Timern direkten Speicherzugriff&lt;br /&gt;
* &#039;&#039;&#039;CAN&#039;&#039;&#039;: Geschwindigkeit bis zu 1 MBit/s, unterstützt beCAN 2.0B&lt;br /&gt;
* &#039;&#039;&#039;Beeper&#039;&#039;&#039;: Ausgabe eines Buzzer-Signals mit einstellbarer Frequenz von 1, 2 oder 4 kHz.&lt;br /&gt;
* &#039;&#039;&#039;LCD&#039;&#039;&#039;: Controller für LCDs mit einer Größe von bis zu 4x28 Pixel, Integrierter Stepup-Converter für Kontrastspannung.&lt;br /&gt;
* &#039;&#039;&#039;UID&#039;&#039;&#039;: 96-bittige, eindeutige Identifikationsnummer&lt;br /&gt;
* &#039;&#039;&#039;SWIM&#039;&#039;&#039;: Single-Wire Interface Module, erlaubt Programmierung über Eindraht-Schnittstelle.&lt;br /&gt;
&lt;br /&gt;
===Weblinks===&lt;br /&gt;
* [http://www.st.com/mcu/inchtml-pages-stm8.html STM8-Familie auf der ST-Website]&lt;br /&gt;
* [http://www.st.com/mcu/contentid-130-113-STM8S_DISCOVERY.html Evaluation board STM8S-Discovery auf der ST-Website]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Drehgeber&amp;diff=45688</id>
		<title>Diskussion:Drehgeber</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Drehgeber&amp;diff=45688"/>
		<updated>2010-04-04T15:48:25Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Iwans Fazit */ http://creativecommons.org/licenses/by-sa/2.0/de/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SAM vs. Andreas (2004) ==&lt;br /&gt;
=== SAM 1 ===&lt;br /&gt;
Die Codeform am Ausgang hat nix damit zu tun ob entprellt werden muss, oder nicht. Vielmehr der Unterschied zw. mechanischen und optischen Drehcodierern. Erstere prellen sehr wohl. Letztere prellen nicht, machen sich aber mit ca. 30EUR gegenüber ca. 3EUR(mech.) unbeliebt.&lt;br /&gt;
Die Auswertung über Timerinterrupt finde ich auch eher unpraktisch. erstens fällt das schon fasst unter Polling und es beansprucht auch die CPU wenn der Drehgeber nix liefert. Flankengesteuerte Interrupts werden der Anforderung wohl eher gerecht. Gekoppelt mit Timerinterrupts kann man dann auch mühelos mechanische Drehgeber entprellen.&lt;br /&gt;
&lt;br /&gt;
Gruß, SAM.&lt;br /&gt;
=== Andreas 1 ===&lt;br /&gt;
Solange nicht beide Ausgänge &#039;&#039;&#039;gleichzeitig&#039;&#039;&#039; prellen sollte das Prellen kein Problem sein. Die Auswertung im Timerint. hat den Vorteil dass das Laufzeitverhalten eher voraussagbar ist als bei Flankeninterrupts (bei denen man ohne Totzeit viel eher Probleme mit dem Prellen bekommt). --[[Benutzer:Andreas|Andreas]] 14:20, 24. Nov 2004 (CET)&lt;br /&gt;
=== SAM 2 ===&lt;br /&gt;
Hi,&lt;br /&gt;
was du mit Flankeninterrupts und Totzeit meinst, mein ich wahrscheinlich damit, dass man Flankeninterrupts mit Timerinterrupts koppelt. Das soll heissen: Man reagiert auf die Flanke eines Eingangs (Flankeninterrupt) und liest die Zustände beider Eingänge nach einer bestimmten Warte-/Totzeit (Timerinterrupt) ein, dadurch hat sich der jeweils prellende Eingang &amp;quot;beruhigt&amp;quot;, vorrausgesetzt die Wartezeit ist länger als die max. Prellzeit (testen + messen!).&lt;br /&gt;
Was mich an der Methode (in der man die beiden Eingänge mit Timerinterrupts abtastet) stört, ist, dass man nicht vorhersagen kann zu welchen Zustand der beiden Eingänge man einliest. Man kann dabei doch sehr wohl in die Prellzeit eines Eingangs kommen und erhält ein falsches Ergebnis. Dieses kann man zwar softwaretechnisch rausfiltern, verliert dabei einen Schritt der Drehbewegung.&lt;br /&gt;
Nachteil meiner Methode ist, dass es eine Maximalgeschwindigkeit des Drehgebers gibt. Es können aber sehr hohe Drehgeschwindigkeiten durch exaktes Timing der Totzeit erreicht werden. Dadurch kommt man ziemlich nah die absolute Maximalgeschwindigkeit heran, die ja durch die Prellzeit gegeben ist. Soll heißen, Die Eingänge dürfen erst nach dem letzten Prellen ihr Signal ändern.&lt;br /&gt;
&lt;br /&gt;
Deine Methode läuft kontinuierlich, meine nur wenn wirklich benötigt. Das Laufzeitverhalten der beiden Methoden unterscheidet sich des halb. Ein Nachteil deiner Methode ist mir noch aufgefallen: Will man bei dir hohe Drehgeschwindigkeiten erreichen, muss man sehr schnelle Timerinterruptintervalle verwenden, was den uC mit einer höheren Grundrechenlast beansprucht.&lt;br /&gt;
&lt;br /&gt;
(mein) Fazit:Man muss halt von der jeweiligen Anwendung abhängig entscheiden, welche Methode besser ist.&lt;br /&gt;
&lt;br /&gt;
Gruß, SAM (26.11.2004)&lt;br /&gt;
=== Andreas 2 ===&lt;br /&gt;
Das wurde schon einige Male diskutiert, siehe:&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-4-37992.html#88668]&lt;br /&gt;
* [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29]&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Andreas|Andreas]] 14:45, 26. Nov 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
== Falk vs. Ivan (2008) ==&lt;br /&gt;
&lt;br /&gt;
Die folgende Diskussion bezieht sich auf diesen Abschnitt von Ivan:&lt;br /&gt;
&lt;br /&gt;
::=== Drehgeber an digitalem Potentiometer mit Up/Down-Schnittstelle ===&lt;br /&gt;
::Dient ein Drehgeber zur Ansteuerung eines digitalen Potentiometers, so kann auf einen separaten Quadraturencoder-chip verzichtet werden sofern es sich beim Potentiometer um einen Typ mit Up/Down-Schnittstelle handelt wie z.ß. das Digitalpotentiometer MCP401x von Microchip. Diese Potentiometer erhöhen ihren Widerstandswert bei einer fallenden Flanke am U/D-Eingang, nachdem CS  auf Low gezogen wurde. Wird CS auf Low gezogen und an U/D eine steigende Flanke erkannt, sodann erniedrigt sich der Widerstandswert. Es genügt daher, eine Datenleitung des Drehgebers mit CS und eine mit U/D zu verbinden um das gewünschte Verhalten am Digitalpotentiometer zu erhalten. (Vgl. Signaldiagramm oben)&lt;br /&gt;
&lt;br /&gt;
=== Falk 1 ===&lt;br /&gt;
Der Hack mit der UP/Down Schnittstelle wurde gelöscht, weil es dem nachfolgenden Text wiederspricht! Das ist so ein Sparvariante! Also RAUS!&lt;br /&gt;
&lt;br /&gt;
=== Ivan 1 ===&lt;br /&gt;
Das ist kein Hack sondern das übliche Vorgehen. Warum glauben Sie, wurden diese Digitalpotentiometer mit genau dieser Schnittstelle entworfen? Genau, wegen der einfachen Anbindung eines Drehgebebers. Bleibt also drin, denn ich mach mir die Mühe das rauszusuchen nicht umsonst. [iwan]&lt;br /&gt;
&lt;br /&gt;
=== Falk 2 ===&lt;br /&gt;
&amp;gt;&amp;gt; Das ist kein Hack sondern das übliche Vorgehen.&lt;br /&gt;
&lt;br /&gt;
Murks ist bisweilen weit verbreitet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Warum glauben Sie, wurden diese Digitalpotentiometer mit genau dieser &amp;gt;Schnittstelle entworfen?&lt;br /&gt;
&lt;br /&gt;
Das ist mir relativ egal.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Genau, wegen der einfachen Anbindung eines Drehgebebers.&lt;br /&gt;
&lt;br /&gt;
Bastlerlösung. Und es ist im Artikel KLAR beschrieben, warum das nix gescheites ist!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Bleibt also drin, denn ich mach mir die Mühe das rauszusuchen nicht umsonst. &amp;gt;[iwan]&lt;br /&gt;
&lt;br /&gt;
1.) Ich glaube kaum, dass irgendwer den Iwan gebeten hat, seine kostbare Zeit für derartige Recherchen zu opfern.&lt;br /&gt;
2.) Ich glaube noch viel weniger, dass jeder X-Belibige Hobbybastler hier seine halbgaren Lösungen kritiklos verbreiten darf.&lt;br /&gt;
&lt;br /&gt;
MFG &lt;br /&gt;
Falk&lt;br /&gt;
&lt;br /&gt;
=== Ivan 2 ===&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; Das ist kein Hack sondern das übliche Vorgehen.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Murks ist bisweilen weit verbreitet.&lt;br /&gt;
&lt;br /&gt;
Gehts noch? Diese Digipots sind, wie ich Dir schon mitzuteilen versuchte, extra für den direkten Anschluß an Drehgeber konzipiert.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; Warum glauben Sie, wurden diese Digitalpotentiometer mit genau dieser&lt;br /&gt;
&amp;gt;&amp;gt; Schnittstelle entworfen?&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Das ist mir relativ egal.&lt;br /&gt;
&lt;br /&gt;
Danke, das bestätigt meine Hypothese daß Du einfach lernresistent bist. Sonst hättest Du wenigstens einen Blick in das Datenblatt eines dieser Digital-Potentiometer geworfen. Schau Dir das Signaldiagramm im Datasheet und jenes im mikrocontroller.net-Artikel &amp;quot;Drehgeber&amp;quot; an. Exakt jene Zustandsänderungen, die der Drehgeber ausgibt werden vom Digitalpotentiometer erwartet. Glaubst Du wirklich &amp;lt;Zitat src=&amp;quot;Microchip&amp;quot;&amp;gt;The simple U/D protocol uses the state of the U/D pin at the falling edge of the CS pin to determine if&lt;br /&gt;
Increment or Decrement mode is desired...&amp;lt;/Zitat&amp;gt; haben die nur aus Zufall implementiert?&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; Genau, wegen der einfachen Anbindung eines Drehgebebers.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Bastlerlösung. &lt;br /&gt;
&lt;br /&gt;
Ein laut Datenblatt für den Zweck geeignetes IC einzusetzen ist Deiner Meinung nach also eine &amp;quot;Bastlerlösung&amp;quot;. Ich zitiere nochmal aus dem Datenblatt:&lt;br /&gt;
&amp;quot;Subsequent rising edges of the U/D pin move the wiper.&amp;quot;&lt;br /&gt;
Das ist genau die Ausgabe eines Drehgebers!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Und es ist im Artikel KLAR beschrieben, warum das nix gescheites ist!&lt;br /&gt;
&lt;br /&gt;
Dort hast du lediglich dargelegt, welche Schwachstellen ein auf steigende oder fallende Flanken getriggerter Interrupt an einem Mikrocontroller aufweist.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; Bleibt also drin, denn ich mach mir die Mühe das rauszusuchen nicht umsonst. &lt;br /&gt;
&lt;br /&gt;
&amp;gt; 1.) Ich glaube kaum, dass irgendwer den Iwan gebeten hat, seine kostbare Zeit &amp;gt; für derartige Recherchen zu opfern.&lt;br /&gt;
&lt;br /&gt;
Ich bin durch Zufall in den Besitz solcher Digitalpotentiometer gekommen. Nach Lektüre der Datenblätter habe ich festgestellt, daß diese bestens zur Auswertung von Drehimpulsgebern geeignet sind. Da mir das Forum dieser Präsenz schon einige Male hilfreich war, habe ich beschlossen meine Erkenntnisse mit der Community zu teilen und daher einen für die Allgemeinheit halbwegs lesbaren und verständlichen vierzeiligen Zusatz im &amp;quot;Drehgeber-Artikel&amp;quot; verfasst.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; 2.) Ich glaube noch viel weniger, dass jeder X-Belibige Hobbybastler hier &lt;br /&gt;
&amp;gt; seine halbgaren Lösungen kritiklos verbreiten darf.&lt;br /&gt;
&lt;br /&gt;
Und wer bist Du? Schon als Elektronik-Gott der Gebärmutter entschlüpft?&lt;br /&gt;
Um mit deinen Worten zu sprechen: Ich glaube kaum, dass es hier erwünscht ist, daß gute Tips eines ambitionierten Hobbyelektronikers (nenn&#039; mich ruhig Bastler) mutwillig und dauerhaft von einem (sich selbst anscheinend als Nichtbastler sehenden) &amp;quot;Zeitgenossen&amp;quot; gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Ergo. Der Absatz fliegt raus.&lt;br /&gt;
&lt;br /&gt;
Ich vertrete meinen Standpunkt und Du Deinen. Hier werden wir uns anscheinend nicht einig, daher X-Post nach forum/website zur weiteren Diskussion unter Einbeziehung der uC.net-Community.&lt;br /&gt;
&lt;br /&gt;
Mit kollegialem Gruße, Iwan&lt;br /&gt;
&lt;br /&gt;
=== Stefan ===&lt;br /&gt;
[[Benutzer:Stefan|Stefan]] 12:06, 24. Dez. 2008 (CET):&amp;lt;br&amp;gt;&lt;br /&gt;
Die angesprochene Diskussion im Forum läuft unter dem Betreff [http://www.mikrocontroller.net/topic/120341 Mutwillige Löschungen - Artikel &amp;quot;Drehgeber&amp;quot;]. Bis die Diskussion abgeschlossen ist, bitte ich darum, den Artikel in diesem Punkt &amp;quot;in Ruhe&amp;quot; zu lassen. Danke.&lt;br /&gt;
&lt;br /&gt;
===Iwans Fazit===&lt;br /&gt;
&lt;br /&gt;
Leider hat auch die von Stefan erwähnte Diskussion nichts gebracht. Es konnte kein Kompromiß gefunden werden. Der Absatz zu &amp;quot;digitalen Potentiometern mit Up/Down-Schnittstelle&amp;quot; wurde wieder gelöscht, da mich Falk sehr verbissen spüren ließ, das er in diesem Artikel keinen Abschnitt über &amp;quot;digitale Potentiometer mit Up/Down-Schnittstelle&amp;quot; duldet. Ich werde das wohl hinnehmen müssen.&lt;br /&gt;
Danke an Stefan für die Reorganisation dieser Diskussionsseite.&lt;br /&gt;
&lt;br /&gt;
Iwan&lt;br /&gt;
&lt;br /&gt;
==Erweiterung und Unterscheidung Handbedienung/Maschinenbedienung==&lt;br /&gt;
&lt;br /&gt;
Ich bin ja auch für ausfühliche Texte, aber das geht klar in Richtung schwafeln und fabulieren. Jeder, der sich erstmal einen Überblick verschaffen will, wird verwirrt. Ich bin für die Löschung des unnötig aufgeblähten Abschnitts!&lt;br /&gt;
&lt;br /&gt;
MFG&lt;br /&gt;
Falk&lt;br /&gt;
&lt;br /&gt;
Hallo [[Benutzer:Falk|Falk]],&lt;br /&gt;
&lt;br /&gt;
Im Artikel fand sich folgender Kommentar verbunden mit einer Frage:&lt;br /&gt;
&amp;quot;Das oben gezeigte Signaldiagramm besitzt zwei Codewechsel zwischen den Rastungen. Das ist zwar nicht sonderlich sinnvoll, wird aber von den meisten Drehknöpfen so gemacht. (Warum?)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstmal habe ich diese Frage beantwortet. Dazu gehört auch, erstmal den Sinn der Rastungen zu erklären, was zur Unterscheidung zwischen Handbedienung und maschinengetrieben führt. Zudem fand ich die Aussage &amp;quot;nicht sonderlich sinnvoll&amp;quot; nicht angebracht, wenn eine Vielzahl von Herstellern so verfährt und zudem einen guten Grund dafür hat. Die Ursache hierfür habe ich in meinem Text auch geliefert. &lt;br /&gt;
&lt;br /&gt;
Darüber hinaus habe ich mir viele Diskussionen zu Drehgebern angeschaut. Vielfach preist man da seinen Algorithmus als gut. Andere beklagen sich, dass der Algorithmus bei Ihnen nicht läuft, was der Urheber nicht versteht oder glauben kann. Das liegt mitunter eben daran, dass es unterschiedliche Drehgeber gibt und auch die Anwendungen differieren, so dass ein Algorithmus hier funktioniert aber dort eben nicht. Und genau darauf bin ich eingegangen. Die im Artikel aufgeführten Algortihmen helfen nur denjenigen, die gerade dieselbe Programmiersprache, denselben Compiler und denselben Prozessor benutzen. Darum habe ich versucht, das Verfahren allgemein zu beschreiben. Von daher kann ich &amp;quot;schwafeln und fabulieren&amp;quot; nicht nachvollziehen und würde um konkretere Zitate mit zugehöriger Kritik bitten. &lt;br /&gt;
&lt;br /&gt;
Ich gebe zu, dass die Stelle am Anfang des Artikels unpassend ist. Aber ich wollte hier erstmal nicht in den von anderen geschriebenen Teilen herumpfuschen und habe daher erstmal alles in dem Abschnitt konzentriert, in dem das Thema schon begonnen war. Daher wäre ich auch froh, mit Dir besprechen zu können, wie die Inhalte besser im Artikel untergebracht werden könnten. Ich würde mir dort sogar noch eine Erweiterung durch Andere zur Differenzierung erhoffen. Denn zum Thema gäbe noch sehr viel zu klären, um den Durchblick zu bekommen. Nur eines von vielen Beispielen:&lt;br /&gt;
[http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=0;INDEX=0;FILENAME=B400%252FSTEC11B.pdf;SID=27mhM1XKwQARsAAEAKSl41e857420d979e819bff1c1497c49b450 unterschiedliche Rastungen auf Seite 8]&lt;br /&gt;
&lt;br /&gt;
Gruß&lt;br /&gt;
-- [[Benutzer:Fragment|Fragment]] 19:44, 3. Mai 2009 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Was haltet ihr von diesem Algorithmus? ==&lt;br /&gt;
Angenommen, die beiden Drehgeberausgänge hießen A und B. Sie würden zyklisch abgefragt. Dann würde die Folge&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
Incrementiere Zähler, wenn a&amp;lt;&amp;gt;B&lt;br /&gt;
Decrementiere Zähler, wenn b=A&lt;br /&gt;
a=A&lt;br /&gt;
b=B&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
schon alles bereitstellen, was nötig wäre. Soweit ich es sehe, hätte sie nicht den Nachteil anderer Sparvarianten: Beim Pendeln verfälscht das Zählergabnis nicht und die Auflösung wird nicht beschränkt. Bei gleichzeitigem Wechsel beider Encoderausgänge bliebe der Zähler nach Durchlauf des Folge auf dem gleichen Stand.&lt;br /&gt;
&lt;br /&gt;
Gruß&lt;br /&gt;
-- [[Benutzer:Fragment|Fragment]] 21:09, 3. Mai 2009 (CEST)&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Drehgeber&amp;diff=45687</id>
		<title>Diskussion:Drehgeber</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Drehgeber&amp;diff=45687"/>
		<updated>2010-04-04T15:48:05Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Stefan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SAM vs. Andreas (2004) ==&lt;br /&gt;
=== SAM 1 ===&lt;br /&gt;
Die Codeform am Ausgang hat nix damit zu tun ob entprellt werden muss, oder nicht. Vielmehr der Unterschied zw. mechanischen und optischen Drehcodierern. Erstere prellen sehr wohl. Letztere prellen nicht, machen sich aber mit ca. 30EUR gegenüber ca. 3EUR(mech.) unbeliebt.&lt;br /&gt;
Die Auswertung über Timerinterrupt finde ich auch eher unpraktisch. erstens fällt das schon fasst unter Polling und es beansprucht auch die CPU wenn der Drehgeber nix liefert. Flankengesteuerte Interrupts werden der Anforderung wohl eher gerecht. Gekoppelt mit Timerinterrupts kann man dann auch mühelos mechanische Drehgeber entprellen.&lt;br /&gt;
&lt;br /&gt;
Gruß, SAM.&lt;br /&gt;
=== Andreas 1 ===&lt;br /&gt;
Solange nicht beide Ausgänge &#039;&#039;&#039;gleichzeitig&#039;&#039;&#039; prellen sollte das Prellen kein Problem sein. Die Auswertung im Timerint. hat den Vorteil dass das Laufzeitverhalten eher voraussagbar ist als bei Flankeninterrupts (bei denen man ohne Totzeit viel eher Probleme mit dem Prellen bekommt). --[[Benutzer:Andreas|Andreas]] 14:20, 24. Nov 2004 (CET)&lt;br /&gt;
=== SAM 2 ===&lt;br /&gt;
Hi,&lt;br /&gt;
was du mit Flankeninterrupts und Totzeit meinst, mein ich wahrscheinlich damit, dass man Flankeninterrupts mit Timerinterrupts koppelt. Das soll heissen: Man reagiert auf die Flanke eines Eingangs (Flankeninterrupt) und liest die Zustände beider Eingänge nach einer bestimmten Warte-/Totzeit (Timerinterrupt) ein, dadurch hat sich der jeweils prellende Eingang &amp;quot;beruhigt&amp;quot;, vorrausgesetzt die Wartezeit ist länger als die max. Prellzeit (testen + messen!).&lt;br /&gt;
Was mich an der Methode (in der man die beiden Eingänge mit Timerinterrupts abtastet) stört, ist, dass man nicht vorhersagen kann zu welchen Zustand der beiden Eingänge man einliest. Man kann dabei doch sehr wohl in die Prellzeit eines Eingangs kommen und erhält ein falsches Ergebnis. Dieses kann man zwar softwaretechnisch rausfiltern, verliert dabei einen Schritt der Drehbewegung.&lt;br /&gt;
Nachteil meiner Methode ist, dass es eine Maximalgeschwindigkeit des Drehgebers gibt. Es können aber sehr hohe Drehgeschwindigkeiten durch exaktes Timing der Totzeit erreicht werden. Dadurch kommt man ziemlich nah die absolute Maximalgeschwindigkeit heran, die ja durch die Prellzeit gegeben ist. Soll heißen, Die Eingänge dürfen erst nach dem letzten Prellen ihr Signal ändern.&lt;br /&gt;
&lt;br /&gt;
Deine Methode läuft kontinuierlich, meine nur wenn wirklich benötigt. Das Laufzeitverhalten der beiden Methoden unterscheidet sich des halb. Ein Nachteil deiner Methode ist mir noch aufgefallen: Will man bei dir hohe Drehgeschwindigkeiten erreichen, muss man sehr schnelle Timerinterruptintervalle verwenden, was den uC mit einer höheren Grundrechenlast beansprucht.&lt;br /&gt;
&lt;br /&gt;
(mein) Fazit:Man muss halt von der jeweiligen Anwendung abhängig entscheiden, welche Methode besser ist.&lt;br /&gt;
&lt;br /&gt;
Gruß, SAM (26.11.2004)&lt;br /&gt;
=== Andreas 2 ===&lt;br /&gt;
Das wurde schon einige Male diskutiert, siehe:&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-4-37992.html#88668]&lt;br /&gt;
* [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29]&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Andreas|Andreas]] 14:45, 26. Nov 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
== Falk vs. Ivan (2008) ==&lt;br /&gt;
&lt;br /&gt;
Die folgende Diskussion bezieht sich auf diesen Abschnitt von Ivan:&lt;br /&gt;
&lt;br /&gt;
::=== Drehgeber an digitalem Potentiometer mit Up/Down-Schnittstelle ===&lt;br /&gt;
::Dient ein Drehgeber zur Ansteuerung eines digitalen Potentiometers, so kann auf einen separaten Quadraturencoder-chip verzichtet werden sofern es sich beim Potentiometer um einen Typ mit Up/Down-Schnittstelle handelt wie z.ß. das Digitalpotentiometer MCP401x von Microchip. Diese Potentiometer erhöhen ihren Widerstandswert bei einer fallenden Flanke am U/D-Eingang, nachdem CS  auf Low gezogen wurde. Wird CS auf Low gezogen und an U/D eine steigende Flanke erkannt, sodann erniedrigt sich der Widerstandswert. Es genügt daher, eine Datenleitung des Drehgebers mit CS und eine mit U/D zu verbinden um das gewünschte Verhalten am Digitalpotentiometer zu erhalten. (Vgl. Signaldiagramm oben)&lt;br /&gt;
&lt;br /&gt;
=== Falk 1 ===&lt;br /&gt;
Der Hack mit der UP/Down Schnittstelle wurde gelöscht, weil es dem nachfolgenden Text wiederspricht! Das ist so ein Sparvariante! Also RAUS!&lt;br /&gt;
&lt;br /&gt;
=== Ivan 1 ===&lt;br /&gt;
Das ist kein Hack sondern das übliche Vorgehen. Warum glauben Sie, wurden diese Digitalpotentiometer mit genau dieser Schnittstelle entworfen? Genau, wegen der einfachen Anbindung eines Drehgebebers. Bleibt also drin, denn ich mach mir die Mühe das rauszusuchen nicht umsonst. [iwan]&lt;br /&gt;
&lt;br /&gt;
=== Falk 2 ===&lt;br /&gt;
&amp;gt;&amp;gt; Das ist kein Hack sondern das übliche Vorgehen.&lt;br /&gt;
&lt;br /&gt;
Murks ist bisweilen weit verbreitet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Warum glauben Sie, wurden diese Digitalpotentiometer mit genau dieser &amp;gt;Schnittstelle entworfen?&lt;br /&gt;
&lt;br /&gt;
Das ist mir relativ egal.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Genau, wegen der einfachen Anbindung eines Drehgebebers.&lt;br /&gt;
&lt;br /&gt;
Bastlerlösung. Und es ist im Artikel KLAR beschrieben, warum das nix gescheites ist!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Bleibt also drin, denn ich mach mir die Mühe das rauszusuchen nicht umsonst. &amp;gt;[iwan]&lt;br /&gt;
&lt;br /&gt;
1.) Ich glaube kaum, dass irgendwer den Iwan gebeten hat, seine kostbare Zeit für derartige Recherchen zu opfern.&lt;br /&gt;
2.) Ich glaube noch viel weniger, dass jeder X-Belibige Hobbybastler hier seine halbgaren Lösungen kritiklos verbreiten darf.&lt;br /&gt;
&lt;br /&gt;
MFG &lt;br /&gt;
Falk&lt;br /&gt;
&lt;br /&gt;
=== Ivan 2 ===&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; Das ist kein Hack sondern das übliche Vorgehen.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Murks ist bisweilen weit verbreitet.&lt;br /&gt;
&lt;br /&gt;
Gehts noch? Diese Digipots sind, wie ich Dir schon mitzuteilen versuchte, extra für den direkten Anschluß an Drehgeber konzipiert.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; Warum glauben Sie, wurden diese Digitalpotentiometer mit genau dieser&lt;br /&gt;
&amp;gt;&amp;gt; Schnittstelle entworfen?&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Das ist mir relativ egal.&lt;br /&gt;
&lt;br /&gt;
Danke, das bestätigt meine Hypothese daß Du einfach lernresistent bist. Sonst hättest Du wenigstens einen Blick in das Datenblatt eines dieser Digital-Potentiometer geworfen. Schau Dir das Signaldiagramm im Datasheet und jenes im mikrocontroller.net-Artikel &amp;quot;Drehgeber&amp;quot; an. Exakt jene Zustandsänderungen, die der Drehgeber ausgibt werden vom Digitalpotentiometer erwartet. Glaubst Du wirklich &amp;lt;Zitat src=&amp;quot;Microchip&amp;quot;&amp;gt;The simple U/D protocol uses the state of the U/D pin at the falling edge of the CS pin to determine if&lt;br /&gt;
Increment or Decrement mode is desired...&amp;lt;/Zitat&amp;gt; haben die nur aus Zufall implementiert?&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; Genau, wegen der einfachen Anbindung eines Drehgebebers.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Bastlerlösung. &lt;br /&gt;
&lt;br /&gt;
Ein laut Datenblatt für den Zweck geeignetes IC einzusetzen ist Deiner Meinung nach also eine &amp;quot;Bastlerlösung&amp;quot;. Ich zitiere nochmal aus dem Datenblatt:&lt;br /&gt;
&amp;quot;Subsequent rising edges of the U/D pin move the wiper.&amp;quot;&lt;br /&gt;
Das ist genau die Ausgabe eines Drehgebers!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Und es ist im Artikel KLAR beschrieben, warum das nix gescheites ist!&lt;br /&gt;
&lt;br /&gt;
Dort hast du lediglich dargelegt, welche Schwachstellen ein auf steigende oder fallende Flanken getriggerter Interrupt an einem Mikrocontroller aufweist.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; Bleibt also drin, denn ich mach mir die Mühe das rauszusuchen nicht umsonst. &lt;br /&gt;
&lt;br /&gt;
&amp;gt; 1.) Ich glaube kaum, dass irgendwer den Iwan gebeten hat, seine kostbare Zeit &amp;gt; für derartige Recherchen zu opfern.&lt;br /&gt;
&lt;br /&gt;
Ich bin durch Zufall in den Besitz solcher Digitalpotentiometer gekommen. Nach Lektüre der Datenblätter habe ich festgestellt, daß diese bestens zur Auswertung von Drehimpulsgebern geeignet sind. Da mir das Forum dieser Präsenz schon einige Male hilfreich war, habe ich beschlossen meine Erkenntnisse mit der Community zu teilen und daher einen für die Allgemeinheit halbwegs lesbaren und verständlichen vierzeiligen Zusatz im &amp;quot;Drehgeber-Artikel&amp;quot; verfasst.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; 2.) Ich glaube noch viel weniger, dass jeder X-Belibige Hobbybastler hier &lt;br /&gt;
&amp;gt; seine halbgaren Lösungen kritiklos verbreiten darf.&lt;br /&gt;
&lt;br /&gt;
Und wer bist Du? Schon als Elektronik-Gott der Gebärmutter entschlüpft?&lt;br /&gt;
Um mit deinen Worten zu sprechen: Ich glaube kaum, dass es hier erwünscht ist, daß gute Tips eines ambitionierten Hobbyelektronikers (nenn&#039; mich ruhig Bastler) mutwillig und dauerhaft von einem (sich selbst anscheinend als Nichtbastler sehenden) &amp;quot;Zeitgenossen&amp;quot; gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Ergo. Der Absatz fliegt raus.&lt;br /&gt;
&lt;br /&gt;
Ich vertrete meinen Standpunkt und Du Deinen. Hier werden wir uns anscheinend nicht einig, daher X-Post nach forum/website zur weiteren Diskussion unter Einbeziehung der uC.net-Community.&lt;br /&gt;
&lt;br /&gt;
Mit kollegialem Gruße, Iwan&lt;br /&gt;
&lt;br /&gt;
=== Stefan ===&lt;br /&gt;
[[Benutzer:Stefan|Stefan]] 12:06, 24. Dez. 2008 (CET):&amp;lt;br&amp;gt;&lt;br /&gt;
Die angesprochene Diskussion im Forum läuft unter dem Betreff [http://www.mikrocontroller.net/topic/120341 Mutwillige Löschungen - Artikel &amp;quot;Drehgeber&amp;quot;]. Bis die Diskussion abgeschlossen ist, bitte ich darum, den Artikel in diesem Punkt &amp;quot;in Ruhe&amp;quot; zu lassen. Danke.&lt;br /&gt;
&lt;br /&gt;
===Iwans Fazit===&lt;br /&gt;
&lt;br /&gt;
Leider hat auch die von Stefan erwähnte Diskussion nichts gebracht. Es konnte kein Kompromiß gefunden werden. Der Absatz zu &amp;quot;digitalen Potentiometern mit Up/Down-Schnittstelle&amp;quot; wurde wieder gelöscht, da mich Falk sehr verbissen spüren ließ, das er in diesem Artikel keinen Abschnitt über &amp;quot;digitale Potentiometer mit Up/Down-Schnittstelle&amp;quot; duldet. Ich werde das wohl hinnehmen müssen.&lt;br /&gt;
&lt;br /&gt;
Danke an Stefan für die Reorganisation dieser Diskussionsseite.&lt;br /&gt;
&lt;br /&gt;
==Erweiterung und Unterscheidung Handbedienung/Maschinenbedienung==&lt;br /&gt;
&lt;br /&gt;
Ich bin ja auch für ausfühliche Texte, aber das geht klar in Richtung schwafeln und fabulieren. Jeder, der sich erstmal einen Überblick verschaffen will, wird verwirrt. Ich bin für die Löschung des unnötig aufgeblähten Abschnitts!&lt;br /&gt;
&lt;br /&gt;
MFG&lt;br /&gt;
Falk&lt;br /&gt;
&lt;br /&gt;
Hallo [[Benutzer:Falk|Falk]],&lt;br /&gt;
&lt;br /&gt;
Im Artikel fand sich folgender Kommentar verbunden mit einer Frage:&lt;br /&gt;
&amp;quot;Das oben gezeigte Signaldiagramm besitzt zwei Codewechsel zwischen den Rastungen. Das ist zwar nicht sonderlich sinnvoll, wird aber von den meisten Drehknöpfen so gemacht. (Warum?)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstmal habe ich diese Frage beantwortet. Dazu gehört auch, erstmal den Sinn der Rastungen zu erklären, was zur Unterscheidung zwischen Handbedienung und maschinengetrieben führt. Zudem fand ich die Aussage &amp;quot;nicht sonderlich sinnvoll&amp;quot; nicht angebracht, wenn eine Vielzahl von Herstellern so verfährt und zudem einen guten Grund dafür hat. Die Ursache hierfür habe ich in meinem Text auch geliefert. &lt;br /&gt;
&lt;br /&gt;
Darüber hinaus habe ich mir viele Diskussionen zu Drehgebern angeschaut. Vielfach preist man da seinen Algorithmus als gut. Andere beklagen sich, dass der Algorithmus bei Ihnen nicht läuft, was der Urheber nicht versteht oder glauben kann. Das liegt mitunter eben daran, dass es unterschiedliche Drehgeber gibt und auch die Anwendungen differieren, so dass ein Algorithmus hier funktioniert aber dort eben nicht. Und genau darauf bin ich eingegangen. Die im Artikel aufgeführten Algortihmen helfen nur denjenigen, die gerade dieselbe Programmiersprache, denselben Compiler und denselben Prozessor benutzen. Darum habe ich versucht, das Verfahren allgemein zu beschreiben. Von daher kann ich &amp;quot;schwafeln und fabulieren&amp;quot; nicht nachvollziehen und würde um konkretere Zitate mit zugehöriger Kritik bitten. &lt;br /&gt;
&lt;br /&gt;
Ich gebe zu, dass die Stelle am Anfang des Artikels unpassend ist. Aber ich wollte hier erstmal nicht in den von anderen geschriebenen Teilen herumpfuschen und habe daher erstmal alles in dem Abschnitt konzentriert, in dem das Thema schon begonnen war. Daher wäre ich auch froh, mit Dir besprechen zu können, wie die Inhalte besser im Artikel untergebracht werden könnten. Ich würde mir dort sogar noch eine Erweiterung durch Andere zur Differenzierung erhoffen. Denn zum Thema gäbe noch sehr viel zu klären, um den Durchblick zu bekommen. Nur eines von vielen Beispielen:&lt;br /&gt;
[http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=0;INDEX=0;FILENAME=B400%252FSTEC11B.pdf;SID=27mhM1XKwQARsAAEAKSl41e857420d979e819bff1c1497c49b450 unterschiedliche Rastungen auf Seite 8]&lt;br /&gt;
&lt;br /&gt;
Gruß&lt;br /&gt;
-- [[Benutzer:Fragment|Fragment]] 19:44, 3. Mai 2009 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Was haltet ihr von diesem Algorithmus? ==&lt;br /&gt;
Angenommen, die beiden Drehgeberausgänge hießen A und B. Sie würden zyklisch abgefragt. Dann würde die Folge&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
Incrementiere Zähler, wenn a&amp;lt;&amp;gt;B&lt;br /&gt;
Decrementiere Zähler, wenn b=A&lt;br /&gt;
a=A&lt;br /&gt;
b=B&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
schon alles bereitstellen, was nötig wäre. Soweit ich es sehe, hätte sie nicht den Nachteil anderer Sparvarianten: Beim Pendeln verfälscht das Zählergabnis nicht und die Auflösung wird nicht beschränkt. Bei gleichzeitigem Wechsel beider Encoderausgänge bliebe der Zähler nach Durchlauf des Folge auf dem gleichen Stand.&lt;br /&gt;
&lt;br /&gt;
Gruß&lt;br /&gt;
-- [[Benutzer:Fragment|Fragment]] 21:09, 3. Mai 2009 (CEST)&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=MSP430&amp;diff=45603</id>
		<title>MSP430</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=MSP430&amp;diff=45603"/>
		<updated>2010-04-01T04:14:47Z</updated>

		<summary type="html">&lt;p&gt;Ivan: Satzlöschung, da Controller mit Regler, obwohl 2008 angekündigt, noch immer nicht beziehbar sind&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der MSP430 ist ein 16 Bit-Mikrocontroller von Texas Instruments (TI). Er wurde speziell für eine geringe Stromaufnahme entwickelt, so dass er besonders für batteriebetriebene Geräte geeignet ist. Es gibt verschiedene Typen mit 1-256 kB [[Flash-ROM]], 128-16384 Byte [[RAM]], teilweise mit Hardware-Multiplizierer, [[UART]], [[AD-Wandler]] oder LCD-Treiber, die meisten im [[SMD]]-Package mit 20 bis &amp;gt;100 Pins. Einige neuere aus der MSP430F2xxx-Serie gibt es auch im DIP-Package (Bezeichnung: MSPxxxx &#039;&#039;&#039;-N&#039;&#039;&#039;). Der MSP430F1121 zum Beispiel hat 4kB [[Flash-ROM]], 256B [[RAM]], 2 [[Timer]] und steckt in einem SO-20 Gehäuse. &lt;br /&gt;
&lt;br /&gt;
== Entwicklungshardware ==&lt;br /&gt;
Für den schnellen Einstieg stellt TI ein preisgünstiges Entwicklungssystem mit USB Schnittstelle zur Verfügung ([http://focus.ti.com/docs/toolsw/folders/print/ez430-f2013.html MSP430 USB Stick Development Tool]).&lt;br /&gt;
&lt;br /&gt;
Günstige Adapterplatinen und [[JTAG]]-Programmer für MSP430-Controller bekommt man bei [http://olimex.com/dev/ Olimex (Bulgarien)], in Deutschland bei http://shop.mikrocontroller.net und http://www.elektronikladen.de oder in Japan bei [http://passworld.co.jp/index.php?lang=GB&amp;amp;lieu=Soroban PassWorld].&lt;br /&gt;
&lt;br /&gt;
Einen einfachen Schaltplan für den [[JTAG]]-Programmer von TI bzw. Olimex gibt es [[Media:MSP430-JTAG-programmer.pdf|hier]]. Die Spannungsversorgung kommt im Gegensatz zum Original allerdings nicht vom Drucker-Port sondern muss extern (am besten vom MSP430 Board) bereitgestellt werden.&lt;br /&gt;
&lt;br /&gt;
Neben der JTAG-Programmierung bieten die MSP430-Controller auch die Möglichkeit, die Firmware über einen [[Bootloader]] einzuspielen. Die dafür erforderliche Hardware wird in der Application Note [http://focus.ti.com/docs/mcu/catalog/resources/appnoteabstract.jhtml?familyId=342&amp;amp;abstractName=slaa096d SLAA096d] von Texas Instruments beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
&lt;br /&gt;
Der MSP430 benötigt eine Spannung zwischen 1,8 und 3,6 V. Einfach erzeugen kann man diese z.&amp;amp;nbsp;B. mit der folgenden Schaltung:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/images/lm317.png&lt;br /&gt;
&lt;br /&gt;
An den Eingang wird ein Steckernetzteil angeschlossen, die Ausgangsspannung lässt sich über das Potentiometer P1 einstellen.&lt;br /&gt;
Benutzt man für P1 einen 500-Ohm-Typ, kann man die Spannung in einem Bereich von 1,2 Volt und knapp 3,6 Volt einstellen. Dann kann man den MSP430 nicht durch zu hohe Verorgungsspannungen zerstören.&lt;br /&gt;
&lt;br /&gt;
== Dokumentation ==&lt;br /&gt;
&lt;br /&gt;
* TI&#039;s Website: http://www.msp430.com &lt;br /&gt;
*:Für jede MSP430 Familie (z.&amp;amp;nbsp;B. MSP430F1xxx) gibt es ein generelles &amp;quot;datasheet&amp;quot;    und einen detailierten &amp;quot;user guide&amp;quot;. Die im user guide verwendeten   Registerbezeichnungen (Ports, SFRs, etc.) findet man auch bei den meisten   Compilern wieder.&lt;br /&gt;
&lt;br /&gt;
* Buch: Mikrocontrollertechnik Am Beispiel der MSP430-Familie&lt;br /&gt;
*:Dieses Lehrbuch führt in die Grundlagen der Mikrorechentechnik ein. Es beschreibt sehr detailliert den Aufbau, die Funktion und die Handhabung von Mikrocontrollern am Beispiel des MSP430F1232. Programmbeispiele sind in Assembler und C enthalten. Ideal für Einsteiger mit geringen technischen Vorkenntnissen. Autor: Matthias Sturm ISBN:3-446-21800-9, Hanser Verlag&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
===Freie Tools===&lt;br /&gt;
====MSP-CCE430====&lt;br /&gt;
Dies ist die Entwicklungsumgebung von TI. Es gibt eine teure Pro-Version, aber eben auch eine Freeware-Version, die auf 16kB Codegrösse beschränkt ist. &lt;br /&gt;
&lt;br /&gt;
Dieser Entwicklungsumgebung liegt Eclipse zugrunde, wobei der C-Compiler und ein Debugger bereits eingebunden sind. Die Installation ist im Gegensatz zu MSPGCC kein Problem.&lt;br /&gt;
&lt;br /&gt;
* [http://focus.ti.com/docs/toolsw/folders/print/msp-cce430.html Download MSP-CCE430]&lt;br /&gt;
&lt;br /&gt;
====MSPGCC====&lt;br /&gt;
Man kann Programme für den MSP430 komplett mit freien Tools entwickeln. Mit dem C-Compiler [[MSPGCC]], dem Debugging-Programm [[GDB]]/Insight und einem beliebigen [[Texteditor]] kann man C-Programme schreiben, kompilieren, in den Controller programmieren und debuggen. In Kombination mit MSPGCC kann man auch die freie Entwicklungsumgebung Eclipse verwenden.&lt;br /&gt;
&lt;br /&gt;
Weblinks:&lt;br /&gt;
* [http://msp430.ms.funpic.de/doku.php?id=msp430:entwicklungumgebung Eclipse+mspgcc+GDB-Proxy] (03/2009)&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Eclipse_und_MSPGCC_unter_Windows Eclipse und MSPGCC unter Windows] (03/2009)&lt;br /&gt;
* [http://matthias-hartmann.blogspot.com/ Use Eclipse and mspgcc - the easy way] (Windows 02/2009).&lt;br /&gt;
* [http://www.mikrocontroller.net/Eclipse%20und%20MSPGCC/ Eclipse und MSPGCC] (Windows 03/2006)&lt;br /&gt;
* [http://inf.ntb.ch/infoportal/help/index.jsp?topic=/ch.ntb.infoportal/embeddedSystems_MSP430.html/ Eclipse + MSPGCC + Installationsanleitung Deutsch] (Windows, Linux) (Link ist Tot! .. hat noch wer eine Version?)&lt;br /&gt;
* [http://kurt.on.ufanet.ru/ MSPFET - FREE MSP430 flash programming utility] (Windows)&lt;br /&gt;
* [http://xgoat.com/wp/2009/03/25/fetproxy-an-open-source-replacement-for-msp430-gdbproxy/ FetProxy - Ein funktionierender Open-Source-Ersatz für msp430-gdbproxy] (Unix, Linux)&lt;br /&gt;
&lt;br /&gt;
=== Kommerzielle Compiler für MSP430 ===&lt;br /&gt;
* [http://www.imagecraft.com/devtools_MSP430.html ICC430]&lt;br /&gt;
*: 45-Tage Demo wird nach Ablauf auf 4 kByte Codegröße beschränkt&lt;br /&gt;
* [http://www.htsoft.com/products/msp430ccompiler.php HI-TECH MSP430 C]&lt;br /&gt;
*: 28-Tage Demo wird nach Ablauf unbrauchbar.&lt;br /&gt;
*: &#039;&#039;Die verlinkte Seite listet nur Compiler für PIC auf. Produkt eingestellt?&#039;&#039;&lt;br /&gt;
* [http://www.ide430.com/ IDE430]&lt;br /&gt;
*: &#039;&#039;Dieser Link ist tot. Gibt es das Produkt noch?&#039;&#039;&lt;br /&gt;
* [http://www.rowley.co.uk/msp430/index.htm CrossWorks for MSP430]&lt;br /&gt;
*: 30-Tage-Testversion nach Registrierung&lt;br /&gt;
* [http://www.quadravox.com/AQ430.htm Quadravox AQ430]&lt;br /&gt;
* [http://focus.ti.com/docs/toolsw/folders/print/msp-cce430.html?DCMP=MSP430_ccessentials&amp;amp;HQS=Other+PR+ccessentials CCEssentials (Eclipse)]&lt;br /&gt;
*: Frei und auf 8 kByte Codegröße beschränkt, seit V3 bis 16kByte Code frei&lt;br /&gt;
* [http://www.iar.se/website1/1.0.1.0/675/1/index.php IAR Embedded Workbench for MSP430] &lt;br /&gt;
*: 30-Tage-Testversion&lt;br /&gt;
*: Freie auf 4 kByte (MSP430) oder 8 kByte (MSP430X) Codegröße beschränkte &amp;quot;KickStart&amp;quot;-Edition.&lt;br /&gt;
*: Kompatibel mit Windows7 7000 x64 (Stand: Februar 2009, Version 4.20.1)&lt;br /&gt;
&lt;br /&gt;
== Beispielanwendungen ==&lt;br /&gt;
&lt;br /&gt;
===Mathar.Com===&lt;br /&gt;
Auf http://www.mathar.com gibt es ein paar Beispiele (in C), was man so alles mit dem MSP430 anstellen kann. Dort hat der Autor einige Anwendungen näher erläutert. Angefangen mit simplen Aufgaben wie LEDs leuchten lassen geht es weiter über eine LCD- und GLCD-Ansteuerung (HD44780- und KS0108-kompatibel) sowie einigen Beispielen zur Verwendung des integrierten A/D-Wandlers, des USARTs, des Timers und vielem mehr ... Als weitere Codebeispiele sind dort auch eine I2C-Softwareimplementation und eine CAN-Library für den MSP430 zu finden.&lt;br /&gt;
&lt;br /&gt;
===Examples Ordner der freien Toolchain MSPGCC===&lt;br /&gt;
Der &amp;quot;examples&amp;quot;-Ordner bzw. &amp;quot;checkout&amp;quot; aus dem CVS vom [[MSPGCC]] ist auch sehr umfangreich: http://mspgcc.cvs.sourceforge.net/mspgcc/examples/&lt;br /&gt;
&lt;br /&gt;
===Codebeispiele auf Mikrokontroller.net===&lt;br /&gt;
Einige [[MSP430 Codebeispiele]] finden sich auch hier in der Artikelsammlung.&lt;br /&gt;
&lt;br /&gt;
===uIP Port auf Mikrokontroller.net===&lt;br /&gt;
Der Port des TCP/IP Stacks von Adam Dunkels [[MSP430_uIP_Port|uIP 1.0 für den MSP430 findet sich hier]].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/1/msp430 Beiträge zum MSP430 im Mikrocontroller.net Forum]&lt;br /&gt;
* [http://mspgcc.sourceforge.net/manual/c68.html An introduction to the TI MSP430 low-power microcontrollers]&lt;br /&gt;
* [http://tinymicros.com/embedded/MSP430/ The MSP430 Bugspray Database] - umfangreiche Datenbank für Bugs in MSP430-Controllern&lt;br /&gt;
* [http://www.mathar.com www.mathar.com] - Tutorial für Einsteiger und Fortgeschrittene: LCD, ADC, USART, I2C, CAN Programmierung in C&lt;br /&gt;
* [http://cnx.org/lenses/TexasInstruments/MSP430 Connexions - Texas Instruments MSP430] Tutorial (speziell für eZ430)&lt;br /&gt;
* [http://msp430.info MSP430.info] - Portalseite für MSP430; Info, Projekte, Paper, Entwicklungstools...&lt;br /&gt;
* [http://groups.yahoo.com/group/msp430 Yahoo group MSP430] - lebhaftes Forum mit vielen MSP430-Experten&lt;br /&gt;
* [http://www.thomas-wedemeyer.de/elektronik/msp430/msp430.html Thomas Wedemeyer&#039;s MSP430-Seiten] - Kleine Beispiel Applikationen und Tips zur Nutzung von MSPGCC mit der Dev-C++ Entwicklungsumgebung&lt;br /&gt;
* [http://homepage.hispeed.ch/py430/mspgcc/ msp430-gdb und Eclipse] - Eine Anleitung von Chris Liechti&lt;br /&gt;
* [http://passworld.co.jp/index.php?lang=GB&amp;amp;lieu=GPS MSP430 GPS] - [http://passworld.co.jp/index.php?lang=GB&amp;amp;lieu=Oximeter MSP430 Puls-Oximeter]&lt;br /&gt;
* [http://passworld.co.jp/ForumMSP430 MSP430 Forum]&lt;br /&gt;
* [http://develissimo.net/de/msp430entwicklung.html MSPGCC + Eclipse + msp430-gdbproxy / Linux / Debian / Ubuntu] - Anleitung / Tutorial zur Installation der MSPGCC Toolchain + Eclipse + msp430-gdbproxy für Linux / Debian / Ubuntu Lang=Deutsch und Englisch&lt;br /&gt;
* [http://www.sinelabore.com SinelaboreRT] - Generierung von Zustandsmaschinen in C speziell für kleine Low-Power Plattformen.&lt;br /&gt;
* [http://msp430.funpic.de msp430.funpic.de] - Wiki zum MSP430&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;br /&gt;
[[Kategorie:MSP430| ]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=MSP430&amp;diff=45602</id>
		<title>MSP430</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=MSP430&amp;diff=45602"/>
		<updated>2010-04-01T04:13:45Z</updated>

		<summary type="html">&lt;p&gt;Ivan: Änderung (Absatzlöschung) da neue Version schon 2008 bei TI als &amp;quot;active&amp;quot; geführt wurde, diese Controller aber bis dato nich immer nicht erhältlich sind&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der MSP430 ist ein 16 Bit-Mikrocontroller von Texas Instruments (TI). Er wurde speziell für eine geringe Stromaufnahme entwickelt, so dass er besonders für batteriebetriebene Geräte geeignet ist. Es gibt verschiedene Typen mit 1-256 kB [[Flash-ROM]], 128-16384 Byte [[RAM]], teilweise mit Hardware-Multiplizierer, [[UART]], [[AD-Wandler]] oder LCD-Treiber, die meisten im [[SMD]]-Package mit 20 bis &amp;gt;100 Pins. Einige neuere aus der MSP430F2xxx-Serie gibt es auch im DIP-Package (Bezeichnung: MSPxxxx &#039;&#039;&#039;-N&#039;&#039;&#039;). Der MSP430F1121 zum Beispiel hat 4kB [[Flash-ROM]], 256B [[RAM]], 2 [[Timer]] und steckt in einem SO-20 Gehäuse. &lt;br /&gt;
&lt;br /&gt;
== Entwicklungshardware ==&lt;br /&gt;
Für den schnellen Einstieg stellt TI ein preisgünstiges Entwicklungssystem mit USB Schnittstelle zur Verfügung ([http://focus.ti.com/docs/toolsw/folders/print/ez430-f2013.html MSP430 USB Stick Development Tool]).&lt;br /&gt;
&lt;br /&gt;
Günstige Adapterplatinen und [[JTAG]]-Programmer für MSP430-Controller bekommt man bei [http://olimex.com/dev/ Olimex (Bulgarien)], in Deutschland bei http://shop.mikrocontroller.net und http://www.elektronikladen.de oder in Japan bei [http://passworld.co.jp/index.php?lang=GB&amp;amp;lieu=Soroban PassWorld].&lt;br /&gt;
&lt;br /&gt;
Einen einfachen Schaltplan für den [[JTAG]]-Programmer von TI bzw. Olimex gibt es [[Media:MSP430-JTAG-programmer.pdf|hier]]. Die Spannungsversorgung kommt im Gegensatz zum Original allerdings nicht vom Drucker-Port sondern muss extern (am besten vom MSP430 Board) bereitgestellt werden.&lt;br /&gt;
&lt;br /&gt;
Neben der JTAG-Programmierung bieten die MSP430-Controller auch die Möglichkeit, die Firmware über einen [[Bootloader]] einzuspielen. Die dafür erforderliche Hardware wird in der Application Note [http://focus.ti.com/docs/mcu/catalog/resources/appnoteabstract.jhtml?familyId=342&amp;amp;abstractName=slaa096d SLAA096d] von Texas Instruments beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
&lt;br /&gt;
Der MSP430 benötigt eine Spannung zwischen 1,8 und 3,6 V. Einfach erzeugen kann man diese z.&amp;amp;nbsp;B. mit der folgenden Schaltung:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/images/lm317.png&lt;br /&gt;
&lt;br /&gt;
An den Eingang wird ein Steckernetzteil angeschlossen, die Ausgangsspannung lässt sich über das Potentiometer P1 einstellen.&lt;br /&gt;
Benutzt man für P1 einen 500-Ohm-Typ, kann man die Spannung in einem Bereich von 1,2 Volt und knapp 3,6 Volt einstellen. Dann kann man den MSP430 nicht durch zu hohe Verorgungsspannungen zerstören. [Aber warum soll man bei einem Batteriegerät so viel Strom mit dem Spannungsteiler am Spannungsregler verbraten?]&lt;br /&gt;
Einige neuere Typen der Reihe MSP430F5xx bieten einen integrierten Low-Drop-Spannungsregler an.&lt;br /&gt;
&lt;br /&gt;
== Dokumentation ==&lt;br /&gt;
&lt;br /&gt;
* TI&#039;s Website: http://www.msp430.com &lt;br /&gt;
*:Für jede MSP430 Familie (z.&amp;amp;nbsp;B. MSP430F1xxx) gibt es ein generelles &amp;quot;datasheet&amp;quot;    und einen detailierten &amp;quot;user guide&amp;quot;. Die im user guide verwendeten   Registerbezeichnungen (Ports, SFRs, etc.) findet man auch bei den meisten   Compilern wieder.&lt;br /&gt;
&lt;br /&gt;
* Buch: Mikrocontrollertechnik Am Beispiel der MSP430-Familie&lt;br /&gt;
*:Dieses Lehrbuch führt in die Grundlagen der Mikrorechentechnik ein. Es beschreibt sehr detailliert den Aufbau, die Funktion und die Handhabung von Mikrocontrollern am Beispiel des MSP430F1232. Programmbeispiele sind in Assembler und C enthalten. Ideal für Einsteiger mit geringen technischen Vorkenntnissen. Autor: Matthias Sturm ISBN:3-446-21800-9, Hanser Verlag&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
===Freie Tools===&lt;br /&gt;
====MSP-CCE430====&lt;br /&gt;
Dies ist die Entwicklungsumgebung von TI. Es gibt eine teure Pro-Version, aber eben auch eine Freeware-Version, die auf 16kB Codegrösse beschränkt ist. &lt;br /&gt;
&lt;br /&gt;
Dieser Entwicklungsumgebung liegt Eclipse zugrunde, wobei der C-Compiler und ein Debugger bereits eingebunden sind. Die Installation ist im Gegensatz zu MSPGCC kein Problem.&lt;br /&gt;
&lt;br /&gt;
* [http://focus.ti.com/docs/toolsw/folders/print/msp-cce430.html Download MSP-CCE430]&lt;br /&gt;
&lt;br /&gt;
====MSPGCC====&lt;br /&gt;
Man kann Programme für den MSP430 komplett mit freien Tools entwickeln. Mit dem C-Compiler [[MSPGCC]], dem Debugging-Programm [[GDB]]/Insight und einem beliebigen [[Texteditor]] kann man C-Programme schreiben, kompilieren, in den Controller programmieren und debuggen. In Kombination mit MSPGCC kann man auch die freie Entwicklungsumgebung Eclipse verwenden.&lt;br /&gt;
&lt;br /&gt;
Weblinks:&lt;br /&gt;
* [http://msp430.ms.funpic.de/doku.php?id=msp430:entwicklungumgebung Eclipse+mspgcc+GDB-Proxy] (03/2009)&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Eclipse_und_MSPGCC_unter_Windows Eclipse und MSPGCC unter Windows] (03/2009)&lt;br /&gt;
* [http://matthias-hartmann.blogspot.com/ Use Eclipse and mspgcc - the easy way] (Windows 02/2009).&lt;br /&gt;
* [http://www.mikrocontroller.net/Eclipse%20und%20MSPGCC/ Eclipse und MSPGCC] (Windows 03/2006)&lt;br /&gt;
* [http://inf.ntb.ch/infoportal/help/index.jsp?topic=/ch.ntb.infoportal/embeddedSystems_MSP430.html/ Eclipse + MSPGCC + Installationsanleitung Deutsch] (Windows, Linux) (Link ist Tot! .. hat noch wer eine Version?)&lt;br /&gt;
* [http://kurt.on.ufanet.ru/ MSPFET - FREE MSP430 flash programming utility] (Windows)&lt;br /&gt;
* [http://xgoat.com/wp/2009/03/25/fetproxy-an-open-source-replacement-for-msp430-gdbproxy/ FetProxy - Ein funktionierender Open-Source-Ersatz für msp430-gdbproxy] (Unix, Linux)&lt;br /&gt;
&lt;br /&gt;
=== Kommerzielle Compiler für MSP430 ===&lt;br /&gt;
* [http://www.imagecraft.com/devtools_MSP430.html ICC430]&lt;br /&gt;
*: 45-Tage Demo wird nach Ablauf auf 4 kByte Codegröße beschränkt&lt;br /&gt;
* [http://www.htsoft.com/products/msp430ccompiler.php HI-TECH MSP430 C]&lt;br /&gt;
*: 28-Tage Demo wird nach Ablauf unbrauchbar.&lt;br /&gt;
*: &#039;&#039;Die verlinkte Seite listet nur Compiler für PIC auf. Produkt eingestellt?&#039;&#039;&lt;br /&gt;
* [http://www.ide430.com/ IDE430]&lt;br /&gt;
*: &#039;&#039;Dieser Link ist tot. Gibt es das Produkt noch?&#039;&#039;&lt;br /&gt;
* [http://www.rowley.co.uk/msp430/index.htm CrossWorks for MSP430]&lt;br /&gt;
*: 30-Tage-Testversion nach Registrierung&lt;br /&gt;
* [http://www.quadravox.com/AQ430.htm Quadravox AQ430]&lt;br /&gt;
* [http://focus.ti.com/docs/toolsw/folders/print/msp-cce430.html?DCMP=MSP430_ccessentials&amp;amp;HQS=Other+PR+ccessentials CCEssentials (Eclipse)]&lt;br /&gt;
*: Frei und auf 8 kByte Codegröße beschränkt, seit V3 bis 16kByte Code frei&lt;br /&gt;
* [http://www.iar.se/website1/1.0.1.0/675/1/index.php IAR Embedded Workbench for MSP430] &lt;br /&gt;
*: 30-Tage-Testversion&lt;br /&gt;
*: Freie auf 4 kByte (MSP430) oder 8 kByte (MSP430X) Codegröße beschränkte &amp;quot;KickStart&amp;quot;-Edition.&lt;br /&gt;
*: Kompatibel mit Windows7 7000 x64 (Stand: Februar 2009, Version 4.20.1)&lt;br /&gt;
&lt;br /&gt;
== Beispielanwendungen ==&lt;br /&gt;
&lt;br /&gt;
===Mathar.Com===&lt;br /&gt;
Auf http://www.mathar.com gibt es ein paar Beispiele (in C), was man so alles mit dem MSP430 anstellen kann. Dort hat der Autor einige Anwendungen näher erläutert. Angefangen mit simplen Aufgaben wie LEDs leuchten lassen geht es weiter über eine LCD- und GLCD-Ansteuerung (HD44780- und KS0108-kompatibel) sowie einigen Beispielen zur Verwendung des integrierten A/D-Wandlers, des USARTs, des Timers und vielem mehr ... Als weitere Codebeispiele sind dort auch eine I2C-Softwareimplementation und eine CAN-Library für den MSP430 zu finden.&lt;br /&gt;
&lt;br /&gt;
===Examples Ordner der freien Toolchain MSPGCC===&lt;br /&gt;
Der &amp;quot;examples&amp;quot;-Ordner bzw. &amp;quot;checkout&amp;quot; aus dem CVS vom [[MSPGCC]] ist auch sehr umfangreich: http://mspgcc.cvs.sourceforge.net/mspgcc/examples/&lt;br /&gt;
&lt;br /&gt;
===Codebeispiele auf Mikrokontroller.net===&lt;br /&gt;
Einige [[MSP430 Codebeispiele]] finden sich auch hier in der Artikelsammlung.&lt;br /&gt;
&lt;br /&gt;
===uIP Port auf Mikrokontroller.net===&lt;br /&gt;
Der Port des TCP/IP Stacks von Adam Dunkels [[MSP430_uIP_Port|uIP 1.0 für den MSP430 findet sich hier]].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/1/msp430 Beiträge zum MSP430 im Mikrocontroller.net Forum]&lt;br /&gt;
* [http://mspgcc.sourceforge.net/manual/c68.html An introduction to the TI MSP430 low-power microcontrollers]&lt;br /&gt;
* [http://tinymicros.com/embedded/MSP430/ The MSP430 Bugspray Database] - umfangreiche Datenbank für Bugs in MSP430-Controllern&lt;br /&gt;
* [http://www.mathar.com www.mathar.com] - Tutorial für Einsteiger und Fortgeschrittene: LCD, ADC, USART, I2C, CAN Programmierung in C&lt;br /&gt;
* [http://cnx.org/lenses/TexasInstruments/MSP430 Connexions - Texas Instruments MSP430] Tutorial (speziell für eZ430)&lt;br /&gt;
* [http://msp430.info MSP430.info] - Portalseite für MSP430; Info, Projekte, Paper, Entwicklungstools...&lt;br /&gt;
* [http://groups.yahoo.com/group/msp430 Yahoo group MSP430] - lebhaftes Forum mit vielen MSP430-Experten&lt;br /&gt;
* [http://www.thomas-wedemeyer.de/elektronik/msp430/msp430.html Thomas Wedemeyer&#039;s MSP430-Seiten] - Kleine Beispiel Applikationen und Tips zur Nutzung von MSPGCC mit der Dev-C++ Entwicklungsumgebung&lt;br /&gt;
* [http://homepage.hispeed.ch/py430/mspgcc/ msp430-gdb und Eclipse] - Eine Anleitung von Chris Liechti&lt;br /&gt;
* [http://passworld.co.jp/index.php?lang=GB&amp;amp;lieu=GPS MSP430 GPS] - [http://passworld.co.jp/index.php?lang=GB&amp;amp;lieu=Oximeter MSP430 Puls-Oximeter]&lt;br /&gt;
* [http://passworld.co.jp/ForumMSP430 MSP430 Forum]&lt;br /&gt;
* [http://develissimo.net/de/msp430entwicklung.html MSPGCC + Eclipse + msp430-gdbproxy / Linux / Debian / Ubuntu] - Anleitung / Tutorial zur Installation der MSPGCC Toolchain + Eclipse + msp430-gdbproxy für Linux / Debian / Ubuntu Lang=Deutsch und Englisch&lt;br /&gt;
* [http://www.sinelabore.com SinelaboreRT] - Generierung von Zustandsmaschinen in C speziell für kleine Low-Power Plattformen.&lt;br /&gt;
* [http://msp430.funpic.de msp430.funpic.de] - Wiki zum MSP430&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;br /&gt;
[[Kategorie:MSP430| ]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=SMBus&amp;diff=45601</id>
		<title>SMBus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=SMBus&amp;diff=45601"/>
		<updated>2010-04-01T03:49:31Z</updated>

		<summary type="html">&lt;p&gt;Ivan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Zweidrahtbus &#039;&#039;&#039;SMBus&#039;&#039;&#039;, eine [[I2C]]-Abart, wird in einigen  Lithium-Ionen-Akkus verwendet, um Daten über den &amp;quot;Gesundheitszustand&amp;quot; (Temperatur, Restkapazität) an das zu versorgende Gerät (Laptop, Camcorder, Handys...) oder Ladegerät zu senden. &lt;br /&gt;
&lt;br /&gt;
Li-Ion und Lithium-Polymer-Akkus sind hinsichtlich Überspannung (Überladen) und  Unterspannung (Tiefentladung) empfindlicher als andere Akkutypen und können bei grober Fehlbedienung bzw. fehlenden oder defekten Schutzschaltungen unbrauchbar werden oder sogar in Brand geraten bzw. explodieren.&lt;br /&gt;
&lt;br /&gt;
Neben dem SMBus mit zwei Leitungen gibt es auch andere Kontrollsysteme für Li-Ion-Akkus mit nur einer Zusatzleitung. &lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Batterieladung]]&lt;br /&gt;
* [[Avr-akku-kapazitaet-messen|Mit AVR Akkukapazität messen]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.batteryuniversity.com/parttwo-47-german.htm Wie werden Laptopbatterien gewartet?]&lt;br /&gt;
* [http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2417 MAX1780 Advanced Smart Battery Pack Controller] von Maxim &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://pdfserv.maxim-ic.com/en/ds/MAX1894-MAX1924.pdf Datenblatt MAX1924X] von Maxim&lt;br /&gt;
* [http://www.bealecorner.com/trv900/battery/lithium.html INFOLithium on Camcorders]&lt;br /&gt;
* &amp;quot;Bratbeck&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:I2C]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Forum-Teilnehmer&amp;diff=45600</id>
		<title>Forum-Teilnehmer</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Forum-Teilnehmer&amp;diff=45600"/>
		<updated>2010-04-01T02:51:46Z</updated>

		<summary type="html">&lt;p&gt;Ivan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Teilnehmerliste =&lt;br /&gt;
&lt;br /&gt;
Aus dem Thread [http://www.mikrocontroller.net/forum/read-1-341257.html] entstand die Idee, uns einander vorzustellen.&amp;lt;br&amp;gt;&lt;br /&gt;
So mache ich den Anfang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Einträge bitte alphabetisch nach Skip sortieren. #Dank des Scripts nicht mehr nötig. Esko --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;sortable&amp;quot; id=&amp;quot;teilnehmer&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nick&lt;br /&gt;
! Vorname &lt;br /&gt;
! Nachname&lt;br /&gt;
! BJ &lt;br /&gt;
! PLZ &lt;br /&gt;
! Tel &lt;br /&gt;
! Email&lt;br /&gt;
! Homepage&lt;br /&gt;
! Spezialg. &lt;br /&gt;
! Liebling &lt;br /&gt;
! mag   &lt;br /&gt;
! mag nicht&lt;br /&gt;
! Arbeit &lt;br /&gt;
|-&lt;br /&gt;
| Andreas&lt;br /&gt;
| Andreas&lt;br /&gt;
| S.&lt;br /&gt;
| 84&lt;br /&gt;
| 9xxxx&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| http://www.mikrocontroller.net&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[MSP430]], [[ARM]]&lt;br /&gt;
| [[PIC]]&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
| Bernhard&lt;br /&gt;
| Bernhard&lt;br /&gt;
| S.&lt;br /&gt;
| 65&lt;br /&gt;
| 990xxx&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| - &lt;br /&gt;
| ANALOG&lt;br /&gt;
| ATmega&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Hardw.Ing.&lt;br /&gt;
|-&lt;br /&gt;
| [[Benutzer:Dave|Dave]]&lt;br /&gt;
| David&lt;br /&gt;
| W.&lt;br /&gt;
| 89&lt;br /&gt;
| 88***&lt;br /&gt;
| 07***&lt;br /&gt;
| Vn_Nn@gmx.net&lt;br /&gt;
| &lt;br /&gt;
| AVR&lt;br /&gt;
| [[AVR]]&lt;br /&gt;
| AVR&lt;br /&gt;
| -&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
| [[Benutzer:FPGAk%C3%BCchle|FPGAküchle]]&lt;br /&gt;
| YES&lt;br /&gt;
| YES&lt;br /&gt;
| 69&lt;br /&gt;
| 0xxxx&lt;br /&gt;
| XxX&lt;br /&gt;
| XxX&lt;br /&gt;
| XxX&lt;br /&gt;
| FPGA&lt;br /&gt;
| XxX&lt;br /&gt;
| XxX&lt;br /&gt;
| XxX&lt;br /&gt;
| FPGA-Entwickler&lt;br /&gt;
|-&lt;br /&gt;
| Magnetus&lt;br /&gt;
| Magnus&lt;br /&gt;
| Müller&lt;br /&gt;
| 72&lt;br /&gt;
| 853xx&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
| prof. Videotechnik&lt;br /&gt;
| AVR&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
| Servicetechniker&lt;br /&gt;
|-&lt;br /&gt;
| Markus&lt;br /&gt;
| Markus&lt;br /&gt;
| Kaufmann&lt;br /&gt;
| 73&lt;br /&gt;
| 8xxxx&lt;br /&gt;
| 07xxx&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| AVR&lt;br /&gt;
| &lt;br /&gt;
| Software Ing.&lt;br /&gt;
|-&lt;br /&gt;
| McFloppy&lt;br /&gt;
| Raphael&lt;br /&gt;
| Specht&lt;br /&gt;
| BJ&lt;br /&gt;
| 678xx&lt;br /&gt;
| XxX&lt;br /&gt;
| info@rsp-design.de&lt;br /&gt;
| http://www.raphaelspecht.de/&lt;br /&gt;
| Analog NF&lt;br /&gt;
| ATMega&lt;br /&gt;
| [[AVR]]&lt;br /&gt;
| [[PIC]]&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
| Profi&lt;br /&gt;
| .&lt;br /&gt;
| .&lt;br /&gt;
| 65&lt;br /&gt;
| 84xxx&lt;br /&gt;
| 08xxx&lt;br /&gt;
| .&lt;br /&gt;
| .&lt;br /&gt;
| DSP56F805&lt;br /&gt;
| analog,Atmel,Pic&lt;br /&gt;
| alle 68HCxx&lt;br /&gt;
| .&lt;br /&gt;
| Ind.Steuerungen&lt;br /&gt;
|-&lt;br /&gt;
| XtSI&lt;br /&gt;
| Henning&lt;br /&gt;
| &lt;br /&gt;
| 76&lt;br /&gt;
| 3xx&lt;br /&gt;
| Hab ich &lt;br /&gt;
| auch&lt;br /&gt;
| http://www.leerzeichen.de&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| AVR, Delphi, Debian&lt;br /&gt;
| &lt;br /&gt;
| SysSoft Programmierer&lt;br /&gt;
|-&lt;br /&gt;
| nikbamert&lt;br /&gt;
| Nik&lt;br /&gt;
| Bamert&lt;br /&gt;
| 89&lt;br /&gt;
| PLZ&lt;br /&gt;
| Tel&lt;br /&gt;
| email&lt;br /&gt;
| www.nikbamert.com&lt;br /&gt;
| AVR&lt;br /&gt;
| atmega168&lt;br /&gt;
| avr+enc28j60&lt;br /&gt;
| in eagle layouten&lt;br /&gt;
| Gymnasiast&lt;br /&gt;
|-&lt;br /&gt;
| Noonien&lt;br /&gt;
| Ferdinand&lt;br /&gt;
| Stehle&lt;br /&gt;
| 88&lt;br /&gt;
| 26xxx&lt;br /&gt;
| &lt;br /&gt;
| noonien at freakfiles.de&lt;br /&gt;
| [http://freakfiles.de freakfiles.de]&lt;br /&gt;
| AVR&lt;br /&gt;
| mega32, mega8515&lt;br /&gt;
| SciFi&lt;br /&gt;
| linuxverfechter&lt;br /&gt;
| Gymnasiast&lt;br /&gt;
|-&lt;br /&gt;
| Esko&lt;br /&gt;
| Alexander&lt;br /&gt;
| Schmidt&lt;br /&gt;
| BJ&lt;br /&gt;
| 90xxx&lt;br /&gt;
| XxX &lt;br /&gt;
| [http://www.mikrocontroller.net/articles/Benutzer:Esko klick mich]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| AVR&lt;br /&gt;
| XxX&lt;br /&gt;
| XxX&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Daisho&lt;br /&gt;
| Jens&lt;br /&gt;
| B.&lt;br /&gt;
| 71&lt;br /&gt;
| 58XXX&lt;br /&gt;
| funktioniert&lt;br /&gt;
| sowieso&lt;br /&gt;
| -&lt;br /&gt;
| In-Circuit-Test,Löttechnik&lt;br /&gt;
| HP3070-Serie II&lt;br /&gt;
| Fehler reproduzieren&lt;br /&gt;
| Entwickler mit Gott-Komplex&lt;br /&gt;
| Analysetechniker&lt;br /&gt;
|-&lt;br /&gt;
| LameM&lt;br /&gt;
| Marian&lt;br /&gt;
| Hillemann&lt;br /&gt;
| 79&lt;br /&gt;
| 01159&lt;br /&gt;
| 0351...&lt;br /&gt;
| ...&lt;br /&gt;
| http://www.octamex.de&lt;br /&gt;
| ...&lt;br /&gt;
| AVR&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
| Sascha_Focus&lt;br /&gt;
| Sascha&lt;br /&gt;
| S.&lt;br /&gt;
| 75&lt;br /&gt;
| 45XXX&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Elektronik&lt;br /&gt;
| Fast alles&lt;br /&gt;
| PIC (haha), AVR, M16C, R8C&lt;br /&gt;
| Trolle&lt;br /&gt;
| Energieelektroniker&lt;br /&gt;
|-&lt;br /&gt;
| _CH_&lt;br /&gt;
| Christian&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 86&lt;br /&gt;
| &lt;br /&gt;
| [https://www.mikrocontroller.net/user/show/5152 ..mail..]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| alles wo Strom rein und rauskommt :-)&lt;br /&gt;
|&lt;br /&gt;
| Industrieelektroniker&lt;br /&gt;
|-&lt;br /&gt;
| thomas-hn&lt;br /&gt;
| Thomas&lt;br /&gt;
| F.&lt;br /&gt;
| 80&lt;br /&gt;
| 74xxx&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Mikrocontroller/Digitaltechnik&lt;br /&gt;
| ATmega&lt;br /&gt;
| AVR&lt;br /&gt;
| MSP430 mit Eclipse&lt;br /&gt;
| Wissenschaftlicher Mitarbeiter&lt;br /&gt;
|-&lt;br /&gt;
| thomas_k&lt;br /&gt;
| Thomas&lt;br /&gt;
| Kropf&lt;br /&gt;
| 82&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| email&lt;br /&gt;
| http://www.thomaskropf.at&lt;br /&gt;
| .&lt;br /&gt;
| AVR&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
| [[Benutzer:ivan|Иван]]&lt;br /&gt;
| Iwan-Martin &lt;br /&gt;
| NYB&lt;br /&gt;
| &#039;82&lt;br /&gt;
| A-4xxx&lt;br /&gt;
| NYB&lt;br /&gt;
| ov3runity/yahoo.de&lt;br /&gt;
| Homepage&lt;br /&gt;
| DDR/UdSSR-Nostalgie, Platinenfertigung&lt;br /&gt;
| STM8&lt;br /&gt;
| IRF, ST, Toshiba, Zilog&lt;br /&gt;
| Atmel, TI, Vishay&lt;br /&gt;
| Langzeitsarbeitslos/Krankenstand&lt;br /&gt;
&amp;lt;!-- Vor dieser Markierung eigene Daten einfügen --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Diese Vorlage oben einkopieren:&lt;br /&gt;
|-&lt;br /&gt;
| Nickname&lt;br /&gt;
| Vorn&lt;br /&gt;
| Nachn&lt;br /&gt;
| BJ&lt;br /&gt;
| PLZ&lt;br /&gt;
| Tel&lt;br /&gt;
| email&lt;br /&gt;
| Homepage&lt;br /&gt;
| Spezialg.&lt;br /&gt;
| Liebling&lt;br /&gt;
| mag&lt;br /&gt;
| mag nicht&lt;br /&gt;
| Arbeit&lt;br /&gt;
&lt;br /&gt;
Ende&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== siehe auch: ==&lt;br /&gt;
* [http://www.frappr.com/?a=constellation_map&amp;amp;mapid=221721 Karte mit mikrocontroller.net Mitgliedern bei Frappr]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/53444 Anderer Forums-Thread zum Alter]&lt;br /&gt;
&lt;br /&gt;
[[Category:Forum]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Forum-Teilnehmer&amp;diff=45599</id>
		<title>Forum-Teilnehmer</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Forum-Teilnehmer&amp;diff=45599"/>
		<updated>2010-04-01T02:42:45Z</updated>

		<summary type="html">&lt;p&gt;Ivan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Teilnehmerliste =&lt;br /&gt;
&lt;br /&gt;
Aus dem Thread [http://www.mikrocontroller.net/forum/read-1-341257.html] entstand die Idee, uns einander vorzustellen.&amp;lt;br&amp;gt;&lt;br /&gt;
So mache ich den Anfang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Einträge bitte alphabetisch nach Skip sortieren. #Dank des Scripts nicht mehr nötig. Esko --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;sortable&amp;quot; id=&amp;quot;teilnehmer&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nick&lt;br /&gt;
! Vorname &lt;br /&gt;
! Nachname&lt;br /&gt;
! BJ &lt;br /&gt;
! PLZ &lt;br /&gt;
! Tel &lt;br /&gt;
! Email&lt;br /&gt;
! Homepage&lt;br /&gt;
! Spezialg. &lt;br /&gt;
! Liebling &lt;br /&gt;
! mag   &lt;br /&gt;
! mag nicht&lt;br /&gt;
! Arbeit &lt;br /&gt;
|-&lt;br /&gt;
| Andreas&lt;br /&gt;
| Andreas&lt;br /&gt;
| S.&lt;br /&gt;
| 84&lt;br /&gt;
| 9xxxx&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| http://www.mikrocontroller.net&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[MSP430]], [[ARM]]&lt;br /&gt;
| [[PIC]]&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
| Bernhard&lt;br /&gt;
| Bernhard&lt;br /&gt;
| S.&lt;br /&gt;
| 65&lt;br /&gt;
| 990xxx&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| - &lt;br /&gt;
| ANALOG&lt;br /&gt;
| ATmega&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Hardw.Ing.&lt;br /&gt;
|-&lt;br /&gt;
| [[Benutzer:Dave|Dave]]&lt;br /&gt;
| David&lt;br /&gt;
| W.&lt;br /&gt;
| 89&lt;br /&gt;
| 88***&lt;br /&gt;
| 07***&lt;br /&gt;
| Vn_Nn@gmx.net&lt;br /&gt;
| &lt;br /&gt;
| AVR&lt;br /&gt;
| [[AVR]]&lt;br /&gt;
| AVR&lt;br /&gt;
| -&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
| [[Benutzer:FPGAk%C3%BCchle|FPGAküchle]]&lt;br /&gt;
| YES&lt;br /&gt;
| YES&lt;br /&gt;
| 69&lt;br /&gt;
| 0xxxx&lt;br /&gt;
| XxX&lt;br /&gt;
| XxX&lt;br /&gt;
| XxX&lt;br /&gt;
| FPGA&lt;br /&gt;
| XxX&lt;br /&gt;
| XxX&lt;br /&gt;
| XxX&lt;br /&gt;
| FPGA-Entwickler&lt;br /&gt;
|-&lt;br /&gt;
| Magnetus&lt;br /&gt;
| Magnus&lt;br /&gt;
| Müller&lt;br /&gt;
| 72&lt;br /&gt;
| 853xx&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
| prof. Videotechnik&lt;br /&gt;
| AVR&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
| Servicetechniker&lt;br /&gt;
|-&lt;br /&gt;
| Markus&lt;br /&gt;
| Markus&lt;br /&gt;
| Kaufmann&lt;br /&gt;
| 73&lt;br /&gt;
| 8xxxx&lt;br /&gt;
| 07xxx&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| AVR&lt;br /&gt;
| &lt;br /&gt;
| Software Ing.&lt;br /&gt;
|-&lt;br /&gt;
| McFloppy&lt;br /&gt;
| Raphael&lt;br /&gt;
| Specht&lt;br /&gt;
| BJ&lt;br /&gt;
| 678xx&lt;br /&gt;
| XxX&lt;br /&gt;
| info@rsp-design.de&lt;br /&gt;
| http://www.raphaelspecht.de/&lt;br /&gt;
| Analog NF&lt;br /&gt;
| ATMega&lt;br /&gt;
| [[AVR]]&lt;br /&gt;
| [[PIC]]&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
| Profi&lt;br /&gt;
| .&lt;br /&gt;
| .&lt;br /&gt;
| 65&lt;br /&gt;
| 84xxx&lt;br /&gt;
| 08xxx&lt;br /&gt;
| .&lt;br /&gt;
| .&lt;br /&gt;
| DSP56F805&lt;br /&gt;
| analog,Atmel,Pic&lt;br /&gt;
| alle 68HCxx&lt;br /&gt;
| .&lt;br /&gt;
| Ind.Steuerungen&lt;br /&gt;
|-&lt;br /&gt;
| XtSI&lt;br /&gt;
| Henning&lt;br /&gt;
| &lt;br /&gt;
| 76&lt;br /&gt;
| 3xx&lt;br /&gt;
| Hab ich &lt;br /&gt;
| auch&lt;br /&gt;
| http://www.leerzeichen.de&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| AVR, Delphi, Debian&lt;br /&gt;
| &lt;br /&gt;
| SysSoft Programmierer&lt;br /&gt;
|-&lt;br /&gt;
| nikbamert&lt;br /&gt;
| Nik&lt;br /&gt;
| Bamert&lt;br /&gt;
| 89&lt;br /&gt;
| PLZ&lt;br /&gt;
| Tel&lt;br /&gt;
| email&lt;br /&gt;
| www.nikbamert.com&lt;br /&gt;
| AVR&lt;br /&gt;
| atmega168&lt;br /&gt;
| avr+enc28j60&lt;br /&gt;
| in eagle layouten&lt;br /&gt;
| Gymnasiast&lt;br /&gt;
|-&lt;br /&gt;
| Noonien&lt;br /&gt;
| Ferdinand&lt;br /&gt;
| Stehle&lt;br /&gt;
| 88&lt;br /&gt;
| 26xxx&lt;br /&gt;
| &lt;br /&gt;
| noonien at freakfiles.de&lt;br /&gt;
| [http://freakfiles.de freakfiles.de]&lt;br /&gt;
| AVR&lt;br /&gt;
| mega32, mega8515&lt;br /&gt;
| SciFi&lt;br /&gt;
| linuxverfechter&lt;br /&gt;
| Gymnasiast&lt;br /&gt;
|-&lt;br /&gt;
| Esko&lt;br /&gt;
| Alexander&lt;br /&gt;
| Schmidt&lt;br /&gt;
| BJ&lt;br /&gt;
| 90xxx&lt;br /&gt;
| XxX &lt;br /&gt;
| [http://www.mikrocontroller.net/articles/Benutzer:Esko klick mich]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| AVR&lt;br /&gt;
| XxX&lt;br /&gt;
| XxX&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Daisho&lt;br /&gt;
| Jens&lt;br /&gt;
| B.&lt;br /&gt;
| 71&lt;br /&gt;
| 58XXX&lt;br /&gt;
| funktioniert&lt;br /&gt;
| sowieso&lt;br /&gt;
| -&lt;br /&gt;
| In-Circuit-Test,Löttechnik&lt;br /&gt;
| HP3070-Serie II&lt;br /&gt;
| Fehler reproduzieren&lt;br /&gt;
| Entwickler mit Gott-Komplex&lt;br /&gt;
| Analysetechniker&lt;br /&gt;
|-&lt;br /&gt;
| LameM&lt;br /&gt;
| Marian&lt;br /&gt;
| Hillemann&lt;br /&gt;
| 79&lt;br /&gt;
| 01159&lt;br /&gt;
| 0351...&lt;br /&gt;
| ...&lt;br /&gt;
| http://www.octamex.de&lt;br /&gt;
| ...&lt;br /&gt;
| AVR&lt;br /&gt;
| ...&lt;br /&gt;
| ...&lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
| Sascha_Focus&lt;br /&gt;
| Sascha&lt;br /&gt;
| S.&lt;br /&gt;
| 75&lt;br /&gt;
| 45XXX&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Elektronik&lt;br /&gt;
| Fast alles&lt;br /&gt;
| PIC (haha), AVR, M16C, R8C&lt;br /&gt;
| Trolle&lt;br /&gt;
| Energieelektroniker&lt;br /&gt;
|-&lt;br /&gt;
| _CH_&lt;br /&gt;
| Christian&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 86&lt;br /&gt;
| &lt;br /&gt;
| [https://www.mikrocontroller.net/user/show/5152 ..mail..]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| alles wo Strom rein und rauskommt :-)&lt;br /&gt;
|&lt;br /&gt;
| Industrieelektroniker&lt;br /&gt;
|-&lt;br /&gt;
| thomas-hn&lt;br /&gt;
| Thomas&lt;br /&gt;
| F.&lt;br /&gt;
| 80&lt;br /&gt;
| 74xxx&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Mikrocontroller/Digitaltechnik&lt;br /&gt;
| ATmega&lt;br /&gt;
| AVR&lt;br /&gt;
| MSP430 mit Eclipse&lt;br /&gt;
| Wissenschaftlicher Mitarbeiter&lt;br /&gt;
|-&lt;br /&gt;
| thomas_k&lt;br /&gt;
| Thomas&lt;br /&gt;
| Kropf&lt;br /&gt;
| 82&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| email&lt;br /&gt;
| http://www.thomaskropf.at&lt;br /&gt;
| .&lt;br /&gt;
| AVR&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Student&lt;br /&gt;
|-&lt;br /&gt;
| Nickname&lt;br /&gt;
| Vorn&lt;br /&gt;
| Nachn&lt;br /&gt;
| BJ&lt;br /&gt;
| PLZ&lt;br /&gt;
| Tel&lt;br /&gt;
| email&lt;br /&gt;
| Homepage&lt;br /&gt;
| Spezialg.&lt;br /&gt;
| Liebling&lt;br /&gt;
| mag&lt;br /&gt;
| mag nicht&lt;br /&gt;
| Arbeit&lt;br /&gt;
&amp;lt;!-- Vor dieser Markierung eigene Daten einfügen --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Diese Vorlage oben einkopieren:&lt;br /&gt;
|-&lt;br /&gt;
| Nickname&lt;br /&gt;
| Vorn&lt;br /&gt;
| Nachn&lt;br /&gt;
| BJ&lt;br /&gt;
| PLZ&lt;br /&gt;
| Tel&lt;br /&gt;
| email&lt;br /&gt;
| Homepage&lt;br /&gt;
| Spezialg.&lt;br /&gt;
| Liebling&lt;br /&gt;
| mag&lt;br /&gt;
| mag nicht&lt;br /&gt;
| Arbeit&lt;br /&gt;
&lt;br /&gt;
Ende&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== siehe auch: ==&lt;br /&gt;
* [http://www.frappr.com/?a=constellation_map&amp;amp;mapid=221721 Karte mit mikrocontroller.net Mitgliedern bei Frappr]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/53444 Anderer Forums-Thread zum Alter]&lt;br /&gt;
&lt;br /&gt;
[[Category:Forum]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45511</id>
		<title>STM8</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45511"/>
		<updated>2010-03-30T16:28:19Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Peripherie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim STM8 handelt es sich um die neueste 8-Bit-Controllerlinie von &#039;&#039;&#039;ST Microelectronics&#039;&#039;&#039;. Sie zeichnet sich durch schnelle Ausführungszeiten (durchschnittlich 1,6 Takte per Instruktion), 16 MByte linearem Adressraum, umfangreichen Peripherieoptionen (wie integriertem CAN-Controller) und integriertem echtem EEPROM aus.&lt;br /&gt;
&lt;br /&gt;
===Übersicht===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Akkumulatorbasierte, modifizierte Harvard-Architektur mit gemeinsamen Adressraum&lt;br /&gt;
* &#039;&#039;&#039;Busbreite&#039;&#039;&#039;: Datenbus 32 Bit, Adressbus 24 Bit&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 512 Bytes bis 6 kBytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 4 bis 128 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;EEPROM&#039;&#039;&#039;: 384 Bytes bis 2 kBytes&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 bis 5,5V &lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 24 MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: SDIP, SOIC, TSSOP, LQFP, QFN, UQFPN, WLCSP, Unsawn Wafer.&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 20 bis 80&lt;br /&gt;
&lt;br /&gt;
===Familien===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;STM8S&#039;&#039;&#039;: Standardversion&lt;br /&gt;
* &#039;&#039;&#039;STM8L&#039;&#039;&#039;: Low-Power-Version&lt;br /&gt;
* &#039;&#039;&#039;STM8A&#039;&#039;&#039;: Automotive Grade&lt;br /&gt;
&lt;br /&gt;
===Register===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Akkumulator (A)&#039;&#039;&#039;:  8 Bit, Allgemeines Arbeitsregister für logische und mathematische Operationen.&lt;br /&gt;
* &#039;&#039;&#039;X Indexregister (X)&#039;&#039;&#039;: 16 Bit, z.ß. nutzbar als Speicheroffset. Enthält bei 16/8- und bei 16/16-Division den Dividenden.&lt;br /&gt;
* &#039;&#039;&#039;Y Indexregister (Y)&#039;&#039;&#039;: 16 Bit, nutzbar wie X-Indexregister. Divisor bei 16/16-Division.&lt;br /&gt;
* &#039;&#039;&#039;Program Counter (PC)&#039;&#039;&#039;: 24 Bit, enthält Adresse des nächsten auszuführenden Befehls.&lt;br /&gt;
* &#039;&#039;&#039;Stack Pointer (SP)&#039;&#039;&#039;: 16 Bit, zeigt auf nächsten freien Speicherplatz im Kellerspeicher.&lt;br /&gt;
* &#039;&#039;&#039;Condition Code (CC)&#039;&#039;&#039;:  8 Bit, enthält die üblichen Flags (Carry, Zero, etc.) und die Interrupt Level Flags.&lt;br /&gt;
&lt;br /&gt;
===Peripherie===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Clock System&#039;&#039;&#039;: Takterzeugung aus externem Quarz oder Oszillator, interner 16MHz/128kHz-RC-Oszillator.&lt;br /&gt;
* &#039;&#039;&#039;Power Management&#039;&#039;&#039;: Warte-Modus, Aktiver Wartemodus mit aktiviertem internem Spannungsregler, Wartemodus mit deaktiviertem Regler, Halt-Modus.&lt;br /&gt;
* &#039;&#039;&#039;Watchdog&#039;&#039;&#039;: Konfigurierbarer &amp;quot;Windowed-Watchdog&amp;quot; und vom Taktsystem unabhängiger &amp;quot;Independent Watchdog&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Timer&#039;&#039;&#039;: Flexible Timeroptionen: 8 Bit mit Prescaler, 16 Bit Capture/Compare, PWM, Komplementärausgabe, &lt;br /&gt;
* &#039;&#039;&#039;ADC&#039;&#039;&#039;: Je nach Familie 10 (STM8S, STM8A) oder 12 (STM8L) Bit Auflösung, SAR, bis zu 25 Kanäle.&lt;br /&gt;
* &#039;&#039;&#039;DAC&#039;&#039;&#039;: 12 Bit Auflösung, mit Output Buffer.&lt;br /&gt;
* &#039;&#039;&#039;Comparator&#039;&#039;&#039;: Rail-to-Rail, interne oder externe Referenzspannung möglich.&lt;br /&gt;
* &#039;&#039;&#039;I2C&#039;&#039;&#039;: Adressierbare serielle Schnittstelle mit bis zu 400kHz Geschwindigkeit, Master- Slave- und Multimaster-fähig, unterstütztzt PMBus und SMBus, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;SPI&#039;&#039;&#039;: Serielles Peripherie-Interface, bis zu 10 MBit/s, Polarität und Phase frei einstellbar, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;U(S)ART&#039;&#039;&#039;: Full featured UART, unterstützt zusätzlich LIN 2.1 als Master und Slave, IrDA-Emulation und Smartcard-Modus&lt;br /&gt;
* &#039;&#039;&#039;High Current Ports&#039;&#039;&#039;: Belastbarkeit bis zu 20mA/Pin&lt;br /&gt;
* &#039;&#039;&#039;DMA&#039;&#039;&#039;: Erlaubt UART, SPI, I2C, ADC, DAC und Timern direkten Speicherzugriff&lt;br /&gt;
* &#039;&#039;&#039;CAN&#039;&#039;&#039;: Geschwindigkeit bis zu 1 MBit/s, unterstützt beCAN 2.0B&lt;br /&gt;
* &#039;&#039;&#039;Beeper&#039;&#039;&#039;: Ausgabe eines Buzzer-Signals mit einstellbarer Frequenz von 1, 2 oder 4 kHz.&lt;br /&gt;
* &#039;&#039;&#039;LCD&#039;&#039;&#039;: Controller für LCDs mit einer Größe von bis zu 4x28 Pixel, Integrierter Stepup-Converter für Kontrastspannung.&lt;br /&gt;
* &#039;&#039;&#039;UID&#039;&#039;&#039;: 96-bittige, eindeutige Identifikationsnummer&lt;br /&gt;
* &#039;&#039;&#039;SWIM&#039;&#039;&#039;: Single-Wire Interface Module, erlaubt Programmierung über Eindraht-Schnittstelle.&lt;br /&gt;
&lt;br /&gt;
===Weblinks===&lt;br /&gt;
* [http://www.st.com/mcu/inchtml-pages-stm8.html STM8-Familie auf der ST-Website]&lt;br /&gt;
* [http://www.st.com/mcu/contentid-130-113-STM8S_DISCOVERY.html Evaluation board STM8S-Discovery auf der ST-Website]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45506</id>
		<title>STM8</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45506"/>
		<updated>2010-03-30T14:56:16Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Peripherie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim STM8 handelt es sich um die neueste 8-Bit-Controllerlinie von &#039;&#039;&#039;ST Microelectronics&#039;&#039;&#039;. Sie zeichnet sich durch schnelle Ausführungszeiten (durchschnittlich 1,6 Takte per Instruktion), 16 MByte linearem Adressraum, umfangreichen Peripherieoptionen (wie integriertem CAN-Controller) und integriertem echtem EEPROM aus.&lt;br /&gt;
&lt;br /&gt;
===Übersicht===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Akkumulatorbasierte, modifizierte Harvard-Architektur mit gemeinsamen Adressraum&lt;br /&gt;
* &#039;&#039;&#039;Busbreite&#039;&#039;&#039;: Datenbus 32 Bit, Adressbus 24 Bit&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 512 Bytes bis 6 kBytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 4 bis 128 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;EEPROM&#039;&#039;&#039;: 384 Bytes bis 2 kBytes&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 bis 5,5V &lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 24 MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: SDIP, SOIC, TSSOP, LQFP, QFN, UQFPN, WLCSP, Unsawn Wafer.&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 20 bis 80&lt;br /&gt;
&lt;br /&gt;
===Familien===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;STM8S&#039;&#039;&#039;: Standardversion&lt;br /&gt;
* &#039;&#039;&#039;STM8L&#039;&#039;&#039;: Low-Power-Version&lt;br /&gt;
* &#039;&#039;&#039;STM8A&#039;&#039;&#039;: Automotive Grade&lt;br /&gt;
&lt;br /&gt;
===Register===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Akkumulator (A)&#039;&#039;&#039;:  8 Bit, Allgemeines Arbeitsregister für logische und mathematische Operationen.&lt;br /&gt;
* &#039;&#039;&#039;X Indexregister (X)&#039;&#039;&#039;: 16 Bit, z.ß. nutzbar als Speicheroffset. Enthält bei 16/8- und bei 16/16-Division den Dividenden.&lt;br /&gt;
* &#039;&#039;&#039;Y Indexregister (Y)&#039;&#039;&#039;: 16 Bit, nutzbar wie X-Indexregister. Divisor bei 16/16-Division.&lt;br /&gt;
* &#039;&#039;&#039;Program Counter (PC)&#039;&#039;&#039;: 24 Bit, enthält Adresse des nächsten auszuführenden Befehls.&lt;br /&gt;
* &#039;&#039;&#039;Stack Pointer (SP)&#039;&#039;&#039;: 16 Bit, zeigt auf nächsten freien Speicherplatz im Kellerspeicher.&lt;br /&gt;
* &#039;&#039;&#039;Condition Code (CC)&#039;&#039;&#039;:  8 Bit, enthält die üblichen Flags (Carry, Zero, etc.) und die Interrupt Level Flags.&lt;br /&gt;
&lt;br /&gt;
===Peripherie===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Clock System&#039;&#039;&#039;: Takterzeugung aus externem Quarz oder Oszillator, interner 16MHz/128kHz-RC-Oszillator.&lt;br /&gt;
* &#039;&#039;&#039;Power Management&#039;&#039;&#039;: Warte-Modus, Aktiver Wartemodus mit aktiviertem internem Spannungsregler, Wartemodus mit deaktiviertem Regler, Halt-Modus.&lt;br /&gt;
* &#039;&#039;&#039;Watchdog&#039;&#039;&#039;: Konfigurierbarer &amp;quot;Windowed-Watchdog&amp;quot; und vom Taktsystem unabhängiger &amp;quot;Independent Watchdog&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Timer&#039;&#039;&#039;: Flexible Timeroptionen: 8 Bit mit Prescaler, 16 Bit Capture/Compare, PWM, Komplementärausgabe, &lt;br /&gt;
* &#039;&#039;&#039;ADC&#039;&#039;&#039;: Je nach Familie 10 (STM8S, STM8A) oder 12 (STM8L) Bit Auflösung, SAR, bis zu 25 Kanäle.&lt;br /&gt;
* &#039;&#039;&#039;DAC&#039;&#039;&#039;: 12 Bit Auflösung, mit Output Buffer.&lt;br /&gt;
* &#039;&#039;&#039;Comparator&#039;&#039;&#039;: Rail-to-Rail, interne oder externe Referenzspannung möglich.&lt;br /&gt;
* &#039;&#039;&#039;I2C&#039;&#039;&#039;: Adressierbare serielle Schnittstelle mit bis zu 400kHz Geschwindigkeit, Master- Slave- und Multimaster-fähig, unterstütztzt PMBus und SMBus, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;SPI&#039;&#039;&#039;: Serielles Peripherie-Interface, bis zu 10 MBit/s, Polarität und Phase frei einstellbar, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;U(S)ART&#039;&#039;&#039;: Full featured UART, unterstützt zusätzlich LIN 2.1 als Master und Slave, IrDA-Emulation und Smartcard-Modus&lt;br /&gt;
* &#039;&#039;&#039;High Current Ports&#039;&#039;&#039;: Belastbarkeit bis zu 20mA/Pin&lt;br /&gt;
* &#039;&#039;&#039;DMA&#039;&#039;&#039;: Erlaubt UART, SPI, I2C, ADC, DAC und Timern direkten Speicherzugriff&lt;br /&gt;
* &#039;&#039;&#039;CAN&#039;&#039;&#039;: Geschwindigkeit bis zu 1 MBit/s, unterstützt beCAN 2.0B&lt;br /&gt;
* &#039;&#039;&#039;Beeper&#039;&#039;&#039;: Asugabe eines Buzzer-Signals mit einstellbarer Frequenz von 1, 2 oder 4 kHz.&lt;br /&gt;
* &#039;&#039;&#039;LCD&#039;&#039;&#039;: Controller für LCDs mit einer Größe von bis zu 4x28 Pixel, Integrierter Stepup-Converter für Kontrastspannung.&lt;br /&gt;
* &#039;&#039;&#039;UID&#039;&#039;&#039;: 96-bittige, eindeutige Identifikationsnummer&lt;br /&gt;
* &#039;&#039;&#039;SWIM&#039;&#039;&#039;: Single-Wire Interface Module, erlaubt Programmierung über Eindraht-Schnittstelle.&lt;br /&gt;
&lt;br /&gt;
===Weblinks===&lt;br /&gt;
* [http://www.st.com/mcu/inchtml-pages-stm8.html STM8-Familie auf der ST-Website]&lt;br /&gt;
* [http://www.st.com/mcu/contentid-130-113-STM8S_DISCOVERY.html Evaluation board STM8S-Discovery auf der ST-Website]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45505</id>
		<title>STM8</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45505"/>
		<updated>2010-03-30T14:36:13Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Peripherie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim STM8 handelt es sich um die neueste 8-Bit-Controllerlinie von &#039;&#039;&#039;ST Microelectronics&#039;&#039;&#039;. Sie zeichnet sich durch schnelle Ausführungszeiten (durchschnittlich 1,6 Takte per Instruktion), 16 MByte linearem Adressraum, umfangreichen Peripherieoptionen (wie integriertem CAN-Controller) und integriertem echtem EEPROM aus.&lt;br /&gt;
&lt;br /&gt;
===Übersicht===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Akkumulatorbasierte, modifizierte Harvard-Architektur mit gemeinsamen Adressraum&lt;br /&gt;
* &#039;&#039;&#039;Busbreite&#039;&#039;&#039;: Datenbus 32 Bit, Adressbus 24 Bit&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 512 Bytes bis 6 kBytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 4 bis 128 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;EEPROM&#039;&#039;&#039;: 384 Bytes bis 2 kBytes&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 bis 5,5V &lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 24 MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: SDIP, SOIC, TSSOP, LQFP, QFN, UQFPN, WLCSP, Unsawn Wafer.&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 20 bis 80&lt;br /&gt;
&lt;br /&gt;
===Familien===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;STM8S&#039;&#039;&#039;: Standardversion&lt;br /&gt;
* &#039;&#039;&#039;STM8L&#039;&#039;&#039;: Low-Power-Version&lt;br /&gt;
* &#039;&#039;&#039;STM8A&#039;&#039;&#039;: Automotive Grade&lt;br /&gt;
&lt;br /&gt;
===Register===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Akkumulator (A)&#039;&#039;&#039;:  8 Bit, Allgemeines Arbeitsregister für logische und mathematische Operationen.&lt;br /&gt;
* &#039;&#039;&#039;X Indexregister (X)&#039;&#039;&#039;: 16 Bit, z.ß. nutzbar als Speicheroffset. Enthält bei 16/8- und bei 16/16-Division den Dividenden.&lt;br /&gt;
* &#039;&#039;&#039;Y Indexregister (Y)&#039;&#039;&#039;: 16 Bit, nutzbar wie X-Indexregister. Divisor bei 16/16-Division.&lt;br /&gt;
* &#039;&#039;&#039;Program Counter (PC)&#039;&#039;&#039;: 24 Bit, enthält Adresse des nächsten auszuführenden Befehls.&lt;br /&gt;
* &#039;&#039;&#039;Stack Pointer (SP)&#039;&#039;&#039;: 16 Bit, zeigt auf nächsten freien Speicherplatz im Kellerspeicher.&lt;br /&gt;
* &#039;&#039;&#039;Condition Code (CC)&#039;&#039;&#039;:  8 Bit, enthält die üblichen Flags (Carry, Zero, etc.) und die Interrupt Level Flags.&lt;br /&gt;
&lt;br /&gt;
===Peripherie===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Clock System&#039;&#039;&#039;: Takterzeugung aus externem Quarz oder Oszillator, interner 16MHz/128kHz-RC-Oszillator.&lt;br /&gt;
* &#039;&#039;&#039;Power Management&#039;&#039;&#039;: Warte-Modus, Aktiver Wartemodus mit aktiviertem internem Spannungsregler, Wartemodus mit deaktiviertem Regler, Halt-Modus.&lt;br /&gt;
* &#039;&#039;&#039;Watchdog&#039;&#039;&#039;: Konfigurierbarer &amp;quot;Windowed-Watchdog&amp;quot; und vom Taktsystem unabhängiger &amp;quot;Independent Watchdog&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Timer&#039;&#039;&#039;: Flexible Timeroptionen: 8 Bit mit Prescaler, 16 Bit Capture/Compare, PWM, Komplementärausgabe, &lt;br /&gt;
* &#039;&#039;&#039;ADC&#039;&#039;&#039;: Je nach Familie 10 (STM8S, STM8A) oder 12 (STM8L) Bit Auflösung, SAR, bis zu 25 Kanäle.&lt;br /&gt;
* &#039;&#039;&#039;DAC&#039;&#039;&#039;: 12 Bit Auflösung, mit Output Buffer.&lt;br /&gt;
* &#039;&#039;&#039;Comparator&#039;&#039;&#039;: Rail-to-Rail, interne oder externe Referenzspannung möglich.&lt;br /&gt;
* &#039;&#039;&#039;I2C&#039;&#039;&#039;: Adressierbare serielle Schnittstelle mit bis zu 400kHz Geschwindigkeit, Master- Slave- und Multimaster-fähig, unterstütztzt PMBus und SMBus, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;SPI&#039;&#039;&#039;: Serielles Peripherie-Interface, bis zu 10 MBit/s, Polarität und Phase frei einstellbar, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;U(S)ART&#039;&#039;&#039;: Full featured UART, unterstützt zusätzlich LIN 2.1 als Master und Slave, IrDA-Emulation und Smartcard-Modus&lt;br /&gt;
* &#039;&#039;&#039;High Current Ports&#039;&#039;&#039;: Belastbarkeit bis zu 20mA/Pin&lt;br /&gt;
* &#039;&#039;&#039;DMA&#039;&#039;&#039;: Erlaubt UART, SPI, I2C, ADC, DAC und Timern direkten Speicherzugriff&lt;br /&gt;
* &#039;&#039;&#039;CAN&#039;&#039;&#039;: Geschwindigkeit bis zu 1 MBit/s, unterstützt beCAN 2.0B&lt;br /&gt;
* &#039;&#039;&#039;Beeper&#039;&#039;&#039;: Asugabe eines Buzzer-Signals mit einstellbarer Frequenz von 1, 2 oder 4 kHz.&lt;br /&gt;
* &#039;&#039;&#039;LCD&#039;&#039;&#039;: Controller für LCDs mit einer Größe von bis zu 4x28 Pixel, Integrierter Stepup-Converter für Kontrastspannung.&lt;br /&gt;
* &#039;&#039;&#039;SWIM&#039;&#039;&#039;: Single-Wire Interface Module, erlaubt Programmierung über Eindraht-Schnittstelle.&lt;br /&gt;
&lt;br /&gt;
===Weblinks===&lt;br /&gt;
* [http://www.st.com/mcu/inchtml-pages-stm8.html STM8-Familie auf der ST-Website]&lt;br /&gt;
* [http://www.st.com/mcu/contentid-130-113-STM8S_DISCOVERY.html Evaluation board STM8S-Discovery auf der ST-Website]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45504</id>
		<title>STM8</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45504"/>
		<updated>2010-03-30T14:26:36Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Peripherie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim STM8 handelt es sich um die neueste 8-Bit-Controllerlinie von &#039;&#039;&#039;ST Microelectronics&#039;&#039;&#039;. Sie zeichnet sich durch schnelle Ausführungszeiten (durchschnittlich 1,6 Takte per Instruktion), 16 MByte linearem Adressraum, umfangreichen Peripherieoptionen (wie integriertem CAN-Controller) und integriertem echtem EEPROM aus.&lt;br /&gt;
&lt;br /&gt;
===Übersicht===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Akkumulatorbasierte, modifizierte Harvard-Architektur mit gemeinsamen Adressraum&lt;br /&gt;
* &#039;&#039;&#039;Busbreite&#039;&#039;&#039;: Datenbus 32 Bit, Adressbus 24 Bit&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 512 Bytes bis 6 kBytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 4 bis 128 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;EEPROM&#039;&#039;&#039;: 384 Bytes bis 2 kBytes&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 bis 5,5V &lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 24 MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: SDIP, SOIC, TSSOP, LQFP, QFN, UQFPN, WLCSP, Unsawn Wafer.&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 20 bis 80&lt;br /&gt;
&lt;br /&gt;
===Familien===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;STM8S&#039;&#039;&#039;: Standardversion&lt;br /&gt;
* &#039;&#039;&#039;STM8L&#039;&#039;&#039;: Low-Power-Version&lt;br /&gt;
* &#039;&#039;&#039;STM8A&#039;&#039;&#039;: Automotive Grade&lt;br /&gt;
&lt;br /&gt;
===Register===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Akkumulator (A)&#039;&#039;&#039;:  8 Bit, Allgemeines Arbeitsregister für logische und mathematische Operationen.&lt;br /&gt;
* &#039;&#039;&#039;X Indexregister (X)&#039;&#039;&#039;: 16 Bit, z.ß. nutzbar als Speicheroffset. Enthält bei 16/8- und bei 16/16-Division den Dividenden.&lt;br /&gt;
* &#039;&#039;&#039;Y Indexregister (Y)&#039;&#039;&#039;: 16 Bit, nutzbar wie X-Indexregister. Divisor bei 16/16-Division.&lt;br /&gt;
* &#039;&#039;&#039;Program Counter (PC)&#039;&#039;&#039;: 24 Bit, enthält Adresse des nächsten auszuführenden Befehls.&lt;br /&gt;
* &#039;&#039;&#039;Stack Pointer (SP)&#039;&#039;&#039;: 16 Bit, zeigt auf nächsten freien Speicherplatz im Kellerspeicher.&lt;br /&gt;
* &#039;&#039;&#039;Condition Code (CC)&#039;&#039;&#039;:  8 Bit, enthält die üblichen Flags (Carry, Zero, etc.) und die Interrupt Level Flags.&lt;br /&gt;
&lt;br /&gt;
===Peripherie===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Clock System&#039;&#039;&#039;: Takterzeugung aus externem Quarz oder Oszillator, interner 16MHz/128kHz-RC-Oszillator.&lt;br /&gt;
* &#039;&#039;&#039;Power Management&#039;&#039;&#039;: Warte-Modus, Aktiver Wartemodus mit aktiviertem internem Spannungsregler, Wartemodus mit deaktiviertem Regler, Halt-Modus.&lt;br /&gt;
* &#039;&#039;&#039;Watchdog&#039;&#039;&#039;: Konfigurierbarer &amp;quot;Windowed-Watchdog&amp;quot; und vom Taktsystem unabhängiger &amp;quot;Independent Watchdog&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Timer&#039;&#039;&#039;: Flexible Timeroptionen: 8 Bit mit Prescaler, 16 Bit Capture/Compare, PWM, Komplementärausgabe, &lt;br /&gt;
* &#039;&#039;&#039;ADC&#039;&#039;&#039;: Je nach Familie 10 (STM8S, STM8A) oder 12 (STM8L) Bit Auflösung, SAR, bis zu 25 Kanäle.&lt;br /&gt;
* &#039;&#039;&#039;DAC&#039;&#039;&#039;: 12 Bit Auflösung, mit Output Buffer.&lt;br /&gt;
* &#039;&#039;&#039;Comparator&#039;&#039;&#039;: Rail-to-Rail, interne oder externe Referenzspannung möglich.&lt;br /&gt;
* &#039;&#039;&#039;I2C&#039;&#039;&#039;: Adressierbare serielle Schnittstelle mit bis zu 400kHz Geschwindigkeit, Master- Slave- und Multimaster-fähig, unterstütztzt PMBus und SMBus, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;SPI&#039;&#039;&#039;: Serielles Peripherie-Interface, bis zu 10 MBit/s, Polarität und Phase frei einstellbar, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;U(S)ART&#039;&#039;&#039;: Full featured UART, unterstützt zusätzlich LIN 2.1 als Master und Slave, IrDA-Emulation und Smartcard-Modus&lt;br /&gt;
* &#039;&#039;&#039;High Current Ports&#039;&#039;&#039;: Belastbarkeit bis zu 20mA/Pin&lt;br /&gt;
* &#039;&#039;&#039;DMA&#039;&#039;&#039;: Erlaubt UART, SPI, I2C, ADC, DAC und Timern direkten Speicherzugriff&lt;br /&gt;
* &#039;&#039;&#039;CAN&#039;&#039;&#039;: Geschwindigkeit bis zu 1 MBit/s, unterstützt beCAN 2.0B&lt;br /&gt;
* &#039;&#039;&#039;Beeper&#039;&#039;&#039;: Asugabe eines Buzzer-Signals mit einstellbarer Frequenz von 1, 2 oder 4 kHz.&lt;br /&gt;
* &#039;&#039;&#039;SWIM&#039;&#039;&#039;: Single-Wire Interface Module, erlaubt Programmierung über Eindraht-Schnittstelle.&lt;br /&gt;
&lt;br /&gt;
===Weblinks===&lt;br /&gt;
* [http://www.st.com/mcu/inchtml-pages-stm8.html STM8-Familie auf der ST-Website]&lt;br /&gt;
* [http://www.st.com/mcu/contentid-130-113-STM8S_DISCOVERY.html Evaluation board STM8S-Discovery auf der ST-Website]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45503</id>
		<title>STM8</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45503"/>
		<updated>2010-03-30T14:18:27Z</updated>

		<summary type="html">&lt;p&gt;Ivan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim STM8 handelt es sich um die neueste 8-Bit-Controllerlinie von &#039;&#039;&#039;ST Microelectronics&#039;&#039;&#039;. Sie zeichnet sich durch schnelle Ausführungszeiten (durchschnittlich 1,6 Takte per Instruktion), 16 MByte linearem Adressraum, umfangreichen Peripherieoptionen (wie integriertem CAN-Controller) und integriertem echtem EEPROM aus.&lt;br /&gt;
&lt;br /&gt;
===Übersicht===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Akkumulatorbasierte, modifizierte Harvard-Architektur mit gemeinsamen Adressraum&lt;br /&gt;
* &#039;&#039;&#039;Busbreite&#039;&#039;&#039;: Datenbus 32 Bit, Adressbus 24 Bit&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 512 Bytes bis 6 kBytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 4 bis 128 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;EEPROM&#039;&#039;&#039;: 384 Bytes bis 2 kBytes&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 bis 5,5V &lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 24 MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: SDIP, SOIC, TSSOP, LQFP, QFN, UQFPN, WLCSP, Unsawn Wafer.&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 20 bis 80&lt;br /&gt;
&lt;br /&gt;
===Familien===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;STM8S&#039;&#039;&#039;: Standardversion&lt;br /&gt;
* &#039;&#039;&#039;STM8L&#039;&#039;&#039;: Low-Power-Version&lt;br /&gt;
* &#039;&#039;&#039;STM8A&#039;&#039;&#039;: Automotive Grade&lt;br /&gt;
&lt;br /&gt;
===Register===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Akkumulator (A)&#039;&#039;&#039;:  8 Bit, Allgemeines Arbeitsregister für logische und mathematische Operationen.&lt;br /&gt;
* &#039;&#039;&#039;X Indexregister (X)&#039;&#039;&#039;: 16 Bit, z.ß. nutzbar als Speicheroffset. Enthält bei 16/8- und bei 16/16-Division den Dividenden.&lt;br /&gt;
* &#039;&#039;&#039;Y Indexregister (Y)&#039;&#039;&#039;: 16 Bit, nutzbar wie X-Indexregister. Divisor bei 16/16-Division.&lt;br /&gt;
* &#039;&#039;&#039;Program Counter (PC)&#039;&#039;&#039;: 24 Bit, enthält Adresse des nächsten auszuführenden Befehls.&lt;br /&gt;
* &#039;&#039;&#039;Stack Pointer (SP)&#039;&#039;&#039;: 16 Bit, zeigt auf nächsten freien Speicherplatz im Kellerspeicher.&lt;br /&gt;
* &#039;&#039;&#039;Condition Code (CC)&#039;&#039;&#039;:  8 Bit, enthält die üblichen Flags (Carry, Zero, etc.) und die Interrupt Level Flags.&lt;br /&gt;
&lt;br /&gt;
===Peripherie===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Clock System&#039;&#039;&#039;: Takterzeugung aus externem Quarz oder Oszillator, interner 16MHz/128kHz-RC-Oszillator.&lt;br /&gt;
* &#039;&#039;&#039;Power Management&#039;&#039;&#039;: Warte-Modus, Aktiver Wartemodus mit aktiviertem internem Spannungsregler, Wartemodus mit deaktiviertem Regler, Halt-Modus.&lt;br /&gt;
* &#039;&#039;&#039;Watchdog&#039;&#039;&#039;: Konfigurierbarer &amp;quot;Windowed-Watchdog&amp;quot; und vom Taktsystem unabhängiger &amp;quot;Independent Watchdog&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Timer&#039;&#039;&#039;: Flexible Timeroptionen: 8 Bit mit Prescaler, 16 Bit Capture/Compare, PWM, Komplementärausgabe, &lt;br /&gt;
* &#039;&#039;&#039;ADC&#039;&#039;&#039;: Je nach Familie 10 (STM8S, STM8A) oder 12 (STM8L) Bit Auflösung, SAR, bis zu 25 Kanäle.&lt;br /&gt;
* &#039;&#039;&#039;DAC&#039;&#039;&#039;: 12 Bit Auflösung, mit Output Buffer.&lt;br /&gt;
* &#039;&#039;&#039;Comparator&#039;&#039;&#039;: Rail-to-Rail, interne oder externe Referenzspannung möglich.&lt;br /&gt;
* &#039;&#039;&#039;I2C&#039;&#039;&#039;: Adressierbare serielle Schnittstelle mit bis zu 400kHz Geschwindigkeit, Master- Slave- und Multimaster-fähig, unterstütztzt PMBus und SMBus, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;SPI&#039;&#039;&#039;: Serielles Peripherie-Interface, bis zu 10 MBit/s, Polarität und Phase frei einstellbar, Hardware-CRC vorhanden.&lt;br /&gt;
* &#039;&#039;&#039;U(S)ART&#039;&#039;&#039;: Full featured UART, unterstützt zusätzlich LIN 2.1 als Master und Slave, IrDA-Emulation und Smartcard-Modus&lt;br /&gt;
* &#039;&#039;&#039;DMA&#039;&#039;&#039;: Erlaubt UART, SPI, I2C, ADC, DAC und Timern direkten Speicherzugriff&lt;br /&gt;
* &#039;&#039;&#039;CAN&#039;&#039;&#039;: Geschwindigkeit bis zu 1 MBit/s, unterstützt beCAN 2.0B&lt;br /&gt;
* &#039;&#039;&#039;Beeper&#039;&#039;&#039;: Asugabe eines Buzzer-Signals mit einstellbarer Frequenz von 1, 2 oder 4 kHz.&lt;br /&gt;
* &#039;&#039;&#039;SWIM&#039;&#039;&#039;: Single-Wire Interface Module, erlaubt Programmierung über Eindraht-Schnittstelle.&lt;br /&gt;
&lt;br /&gt;
===Weblinks===&lt;br /&gt;
* [http://www.st.com/mcu/inchtml-pages-stm8.html STM8-Familie auf der ST-Website]&lt;br /&gt;
* [http://www.st.com/mcu/contentid-130-113-STM8S_DISCOVERY.html Evaluation board STM8S-Discovery auf der ST-Website]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45501</id>
		<title>STM8</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45501"/>
		<updated>2010-03-30T13:29:12Z</updated>

		<summary type="html">&lt;p&gt;Ivan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim STM8 handelt es sich um die neueste 8-Bit-Controllerlinie von &#039;&#039;&#039;ST Microelectronics&#039;&#039;&#039;. Sie zeichnet sich durch schnelle Ausführungszeiten (durchschnittlich 1,6 Takte per Instruktion), 16 MByte linearem Adressraum, umfangreichen Peripherieoptionen (wie integriertem CAN-Controller) und integriertem echtem EEPROM aus.&lt;br /&gt;
&lt;br /&gt;
===Übersicht===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Akkumulatorbasierte, modifizierte Harvard-Architektur mit gemeinsamen Adressraum&lt;br /&gt;
* &#039;&#039;&#039;Busbreite&#039;&#039;&#039;: Datenbus 32 Bit, Adressbus 24 Bit&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 512 Bytes bis 6 kBytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 4 bis 128 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;EEPROM&#039;&#039;&#039;: 384 Bytes bis 2 kBytes&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 bis 5,5V &lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 24 MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: SDIP, SOIC, TSSOP, LQFP, QFN, UQFPN, WLCSP, Unsawn Wafer.&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 20 bis 80&lt;br /&gt;
&lt;br /&gt;
===Familien===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;STM8S&#039;&#039;&#039;: Standardversion&lt;br /&gt;
* &#039;&#039;&#039;STM8L&#039;&#039;&#039;: Low-Power-Version&lt;br /&gt;
* &#039;&#039;&#039;STM8A&#039;&#039;&#039;: Automotive Grade&lt;br /&gt;
&lt;br /&gt;
===Register===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Akkumulator (A)&#039;&#039;&#039;:  8 Bit, Allgemeines Arbeitsregister für logische und mathematische Operationen.&lt;br /&gt;
* &#039;&#039;&#039;X Indexregister (X)&#039;&#039;&#039;: 16 Bit, z.ß. nutzbar als Speicheroffset. Enthält bei 16/8- und bei 16/16-Division den Dividenden.&lt;br /&gt;
* &#039;&#039;&#039;Y Indexregister (Y)&#039;&#039;&#039;: 16 Bit, nutzbar wie X-Indexregister. Divisor bei 16/16-Division.&lt;br /&gt;
* &#039;&#039;&#039;Program Counter (PC)&#039;&#039;&#039;: 24 Bit, enthält Adresse des nächsten auszuführenden Befehls.&lt;br /&gt;
* &#039;&#039;&#039;Stack Pointer (SP)&#039;&#039;&#039;: 16 Bit, zeigt auf nächsten freien Speicherplatz im Kellerspeicher.&lt;br /&gt;
* &#039;&#039;&#039;Condition Code (CC)&#039;&#039;&#039;:  8 Bit, enthält die üblichen Flags (Carry, Zero, etc.) und die Interrupt Level Flags.&lt;br /&gt;
&lt;br /&gt;
===Weblinks===&lt;br /&gt;
* [http://www.st.com/mcu/inchtml-pages-stm8.html STM8-Familie auf der ST-Website]&lt;br /&gt;
* [http://www.st.com/mcu/contentid-130-113-STM8S_DISCOVERY.html Evaluation board STM8S-Discovery auf der ST-Website]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45500</id>
		<title>STM8</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45500"/>
		<updated>2010-03-30T13:06:20Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim STM8 handelt es sich um die neueste 8-Bit-Controllerlinie von &#039;&#039;&#039;ST Microelectronics&#039;&#039;&#039;. Sie zeichnet sich durch schnelle Ausführungszeiten (durchschnittlich 1,6 Takte per Instruktion), 16 MByte linearem Adressraum, umfangreichen Peripherieoptionen (wie integriertem CAN-Controller) und integriertem echtem EEPROM aus.&lt;br /&gt;
&lt;br /&gt;
===Übersicht===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Akkumulatorbasierte, modifizierte Harvard-Architektur mit gemeinsamen Adressraum&lt;br /&gt;
* &#039;&#039;&#039;Busbreite&#039;&#039;&#039;: Datenbus 32 Bit, Adressbus 24 Bit&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 512 Bytes bis 6 kBytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 4 bis 128 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;EEPROM&#039;&#039;&#039;: 384 Bytes bis 2 kBytes&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 bis 5,5V &lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 24 MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: SDIP, SOIC, TSSOP, LQFP, QFN, UQFPN, WLCSP, Unsawn Wafer.&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 20 bis 80&lt;br /&gt;
&lt;br /&gt;
===Familien===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;STM8S&#039;&#039;&#039;: Standardversion&lt;br /&gt;
* &#039;&#039;&#039;STM8L&#039;&#039;&#039;: Low-Power-Version&lt;br /&gt;
* &#039;&#039;&#039;STM8A&#039;&#039;&#039;: Automotive Grade&lt;br /&gt;
&lt;br /&gt;
===Weblinks===&lt;br /&gt;
* [http://www.st.com/mcu/inchtml-pages-stm8.html STM8-Familie auf der ST-Website]&lt;br /&gt;
* [http://www.st.com/mcu/contentid-130-113-STM8S_DISCOVERY.html Evaluation board STM8S-Discovery auf der ST-Website]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45428</id>
		<title>STM8</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45428"/>
		<updated>2010-03-29T13:34:43Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim STM8 handelt es sich um die neueste 8-Bit-Controllerlinie von &#039;&#039;&#039;ST Microelectronics&#039;&#039;&#039;. Sie zeichnet sich durch schnelle Ausführungszeiten (durchschnittlich 1,6 Takte per Instruktion), 16 MByte linearem Adreßraum, umfangreichen Peripherieoptionen (wie integriertem CAN-Controller) und integriertem echtem EEPROM aus.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Akkumulatorbasierte, modifizierte Harvard-Architektur mit gemeinsamen Adressraum&lt;br /&gt;
* &#039;&#039;&#039;Busbreite&#039;&#039;&#039;: Datenbus 32 Bit, Adressbus 24 Bit&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 512 Bytes bis 6 kBytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 4 bis 128 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;EEPROM&#039;&#039;&#039;: 384 Bytes bis 2 kBytes&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 bis 5,5V &lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 24 MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: SDIP, SOIC, TSSOP, LQFP, QFN, UQFPN, WLCSP, Unsawn Wafer.&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 20 bis 80&lt;br /&gt;
&lt;br /&gt;
===Familien===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;STM8S&#039;&#039;&#039;: Standardversion&lt;br /&gt;
* &#039;&#039;&#039;STM8L&#039;&#039;&#039;: Low-Power-Version&lt;br /&gt;
* &#039;&#039;&#039;STM8A&#039;&#039;&#039;: Automotive Grade&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45427</id>
		<title>STM8</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45427"/>
		<updated>2010-03-29T13:34:13Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Familien*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim STM8 handelt es sich um die neueste 8-Bit-Controllerlinie von &#039;&#039;&#039;ST Microelectronics&#039;&#039;&#039;. Sie zeichnet sich durch schnelle Ausführungszeiten (durchschnittlich 1,6 Takte per Instruktion), 16 MByte linearem Adreßraum, umfangreichen Peripherieoptionen (wie integriertem CAN-Controller) und integriertem echtem EEPROM aus.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Akkumulatorbasierte, modifizierte Harvard-Architektur mit gemeinsamen Adressraum&lt;br /&gt;
* &#039;&#039;&#039;Busbreite&#039;&#039;&#039;: Datenbus 32 Bit, Adressbus 24 Bit&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 512 Bytes bis 6 kBytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 4 bis 128 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;EEPROM&#039;&#039;&#039;: 384 Bytes bis 2 kBytes&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 bis 5,5V &lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 24 MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: SDIP, SOIC, TSSOP, LQFP, QFN, UQFPN, WLCSP&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 20 bis 80&lt;br /&gt;
&lt;br /&gt;
===Familien===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;STM8S&#039;&#039;&#039;: Standardversion&lt;br /&gt;
* &#039;&#039;&#039;STM8L&#039;&#039;&#039;: Low-Power-Version&lt;br /&gt;
* &#039;&#039;&#039;STM8A&#039;&#039;&#039;: Automotive Grade&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=TLCS-870&amp;diff=45282</id>
		<title>TLCS-870</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=TLCS-870&amp;diff=45282"/>
		<updated>2010-03-27T13:09:16Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* TLCS-870 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==TLCS-870==&lt;br /&gt;
&lt;br /&gt;
Die 8-bittige Controllerlinie TLCS-870 von &#039;&#039;&#039;Toshiba&#039;&#039;&#039; ist im deutschsprachigen Hobbybereich weitgehend unbekannt. Zu unrecht, wie ich meine, handelt es sich bei dieser Familie doch um relativ günstige, flexible Arbeitspferde, welche in der (vorallem asiatischen) Industrie nicht ohne Grund gerne eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
===Serien===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;TLCS-870&#039;&#039;&#039;: Die ältere Klassiklinie. 2,7-5,5V. Bis zu 8MHz. Max. 15 Interruptvektoren. Adressraum 64kB. &#039;&#039;&#039;Keine Versionen mit Flash-ROM, ausschliesslich OTP/Mask-ROM.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;TLCS-870/X&#039;&#039;&#039;: Motorcontroller-Linie. 2,7-5,5V. Bis zu 20MHz. Max. 63 Interruptvektoren. Adressraum 1MB. Weiterntwicklung der Klassiklinie mit erweitertem Instruction Set und Programmable Motor Drive Circuit (PMD). &lt;br /&gt;
*&#039;&#039;&#039;TLCS-870/C&#039;&#039;&#039;: Die verbreitetste Familie. 1,8-5,5V. Bis 16MHz. Max. 31 Interruptvektoren. Adressraum 64kB. Gegenüber der Klassiklinie erweitertes Instruction Set. Neuer Kern wurde für C-Compiler optimiert.&lt;br /&gt;
*&#039;&#039;&#039;TLCS-870/C1&#039;&#039;&#039;: Der junge Spross. 2,7-5,5V. Bis zu 8MHz. Max. 52 Interruptvektoren. Ähnlich der 870/C-Familie, jedoch verkürzte Befehlsausführungszeit und auf 128kB erweiterter Adressraum.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: 8 Bit CISC. Gemeinsamter Code/Datenadressraum (Von-Neumann) bis 60KB ROM, darüber getrennt.&lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: Je nach Linie bis zu 8, 16 oder 20MHz.&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 2,7 (870/C: 1,8) bis 5,5V&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 128 Byte bis 4 kB.&lt;br /&gt;
* &#039;&#039;&#039;Bauform&#039;&#039;&#039;: DIP, SDIP, SOIC, SSOP, QFP, TQFP, LQFP, FBGA.&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 20 bis 100. FBGA mit 267 Balls.&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: Flash, OTP und maskenprogrammierte Typen.&lt;br /&gt;
&lt;br /&gt;
===Peripherie===&lt;br /&gt;
&lt;br /&gt;
* 10bit ADC&lt;br /&gt;
* I²C&lt;br /&gt;
* SPI&lt;br /&gt;
* UART&lt;br /&gt;
* PWM&lt;br /&gt;
* PPG (=Programmable Pattern Generator)&lt;br /&gt;
* LCD&lt;br /&gt;
* PMD (=Programmable Motor Driver)&lt;br /&gt;
* VFT (Vacuum Fluorescence Tube), nur OTP/Maske&lt;br /&gt;
* CAN nur OTP/Maske&lt;br /&gt;
* Large Current Port (20mA/Pin)&lt;br /&gt;
&lt;br /&gt;
===Programmierung===&lt;br /&gt;
&lt;br /&gt;
Flash-Typen besitzen einen unlöschbaren Bootloder. Ausserdem können sie, ebenso wie die OTPs parallel wie ein PROM beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
===Bezugsquellen===&lt;br /&gt;
&lt;br /&gt;
Einige wenige Typen gibt es bei DigiKey, Farnell und Glyn. Angebot in Südostasien wesentlich besser.&lt;br /&gt;
&lt;br /&gt;
===Verweise===&lt;br /&gt;
&lt;br /&gt;
Toshiba-Seite zur Familie: http://www.semicon.toshiba.co.jp/eng/product/micro/870family/index.html&lt;br /&gt;
&lt;br /&gt;
Parametrische Suche: http://www.semicon.toshiba.co.jp/eng/product/micro/search/index.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45208</id>
		<title>STM8</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM8&amp;diff=45208"/>
		<updated>2010-03-26T15:45:47Z</updated>

		<summary type="html">&lt;p&gt;Ivan: Der 8-Bit-Controller STM8 von ST Microelectronics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim STM8 handelt es sich um die neueste 8-Bit-Controllerlinie von &#039;&#039;&#039;ST Microelectronics&#039;&#039;&#039;. Sie zeichnet sich durch schnelle Ausführungszeiten (durchschnittlich 1,6 Takte per Instruktion), 16 MByte linearem Adreßraum, umfangreichen Peripherieoptionen (wie integriertem CAN-Controller) und integriertem echtem EEPROM aus.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Akkumulatorbasierte Harvard-Architektur mit gemeinsamen Adressraum&lt;br /&gt;
* &#039;&#039;&#039;Busbreite&#039;&#039;&#039;: Datenbus 32 Bit, Adressbus 24 Bit&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 512 Bytes bis 6 kBytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 4 bis 128 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;EEPROM&#039;&#039;&#039;: 384 Bytes bis 2 kBytes&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,65 bis 5,5V &lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 24 MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: SDIP, SOIC, TSSOP, LQFP, QFN, UQFPN, WLCSP&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 20 bis 80&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Transformatoren_und_Spulen&amp;diff=45010</id>
		<title>Transformatoren und Spulen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Transformatoren_und_Spulen&amp;diff=45010"/>
		<updated>2010-03-20T15:18:05Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Die Einheiten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Vorwort ==&lt;br /&gt;
&lt;br /&gt;
Dieser Text ist eine Übersetzung des englischen [http://ludens.cl/Electron/Magnet.html Originals]. Es wurde nur dahin erweitert bzw. verändert, daß für alle Formelzeichen die in Deutschland gängigen Buchstaben verwendet worden. Weiterhin sind alle Formel bei der ersten Erklärung doppelt geschrieben. Einmal mit Formelzeichen und einmal mit den dazugehörigen Einheiten, welche dann in eckigen Klammern [ ] dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Es gibt viele Elektroniker, sowohl Hobbybastler als auch Profis, welche mit dem Elektromagnetismus auf Kriegsfuß stehen. Immer wenn sie eine [http://de.wikipedia.org/wiki/Spule_%28Elektrotechnik%29 Spule] oder einen [http://de.wikipedia.org/wiki/Transformator Transformator] entwerfen müssen, tut sich ein Abgrund der Verzweiflung vor diesen Leuten auf. Das Schlimmste ist, daß diese armen Opfer meist nicht schuld sind, da die Autoren von Sachbüchern scheinbar eine Verschwörung geschmiedet haben, um diese Dinge möglichst kompliziert zu erklären so daß sie niemand wirklich verstehen kann. Oder die Autoren haben es selber nicht richtige verstanden?&lt;br /&gt;
&lt;br /&gt;
Gut, das Internet rettet uns. Ich werde die Grundlagen in einfachen, verständlichen Worten erklären. Hier findest du die meisten Informationen, welche benötigt werden, um elektromagnetische Teile zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
==Die Einheiten==&lt;br /&gt;
&lt;br /&gt;
Ich habe eine Bitte. Wer auf dieser Seite landet, soll bitte alle alten und absurden Einheiten, mit denen die Sachbücher vollgestopft sind, vergessen. Am meisten zu nennen Zoll(Inch), Gauß und Oersted. Entferne diese Worte vollständig aus deinem Vokabular. Die haben dort keinen Platz. Sie sind grundlegende Schuldige bei der Verwirrung der Menschen, welche magnetische Entwicklungen machen wollen, sie machen sie irre. Nachdem wir sie nun losgeworden sind können wir anfangen.&lt;br /&gt;
&lt;br /&gt;
Die erste Einheit die wir nutzen werden ist das Weber, geschrieben als Wb. Das ist die offizielle Einheit des &amp;lt;u&amp;gt;magnetischen Flusses &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;&amp;lt;/u&amp;gt;. Wenn man eine Leiterschleife nimmt und 1V für 1s anlegt, wird der Fluß in der Schleife sich um 1Wb geändert haben. Man beachte, daß das immer so ist, egal wie groß oder geformt die Schleife ist und egal was sich in ihr befindet! Offiziell ist die Definition des Weber so&lt;br /&gt;
::&amp;lt;math&amp;gt;\Phi = U \cdot t&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt;[Wb] = [V] \cdot [s]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aber ich bevorzuge die Gleichung in etwas praktischerer Form, bei der die Windungszahl N einer Spule berücksichtigt wird. Das ist eine unserer grundlegenden Wahrheiten.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(1)\quad \Phi = \frac{U \cdot t}{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
d.h. die Änderung des magnetischen Flusses (in Weber) ist die Spannung (in Volt) multipliziert mit der Zeit (in Sekunden) geteilt durch die Windungszahl. Das ist eine der mächtigsten und nützlichsten Formeln die wir haben.&lt;br /&gt;
&lt;br /&gt;
Wenn wir ein gewisses Maß an magnetischem Fluß durch eine bestimme Fläche pressen, dann können wir von &amp;lt;u&amp;gt;Flußdichte&amp;lt;/u&amp;gt; sprechen. Die Einheit ist Tesla, geschrieben als T, das Formelzeichen ist B. Die Definition ist einfach und offensichtlich.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(2)\quad B = \frac{\Phi}{A}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt;[\frac{Wb}{m^2}] = \frac{[Wb]}{[m^2]}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man beachte, daß die Sprache von Quadratmetern im Bereich der Elektronik etwas praxisfern klingt, da die meisten Bauteile eher Querschnitte im Bereich von Quadratzentimetern haben. Aber bitte glaub mir daß es praktischer ist, diese &amp;quot;unpraktischen&amp;quot; Dinge zu akzeptieren als ein Dutzend verschiedene Umrechnungsfaktoren zu benutzen! Die Grundeinheiten haben den großen Vorteil, daß absolut keine Umrechnung nötig ist.&lt;br /&gt;
&lt;br /&gt;
Die Grundeigenschaft einer jeden Spule ist &amp;lt;u&amp;gt;[http://de.wikipedia.org/wiki/Induktivit%C3%A4t Induktivität]&amp;lt;/u&amp;gt;, Formelzeichen L. Sie ist gemessen in Henry, geschrieben als H, definiert durch:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(3)\quad L = \frac{\Phi}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt;[H] = \frac{[Wb]}{[A]}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder in Worten: Ein Henry ist die Induktivität, welche den Strom um 1 Ampere steigen läßt, wenn man für eine Sekunde ein Volt anlegt. Diese Gleichung ist für unser Zwecke auch sehr nützlich. Jetzt können wir anfangen zu spielen. Wir können Gleichung (1) und (3) verbinden und erhalten das Folgende&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt;L = \frac{\Phi \cdot N}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt;[H] = \frac{[Wb]}{[A]}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solche mathematischen Umwandlungen stimmen immer und geben uns die Möglichkeit, unbekannte Größen zu bestimmen.&lt;br /&gt;
&lt;br /&gt;
=== Tabelle aller verwendeten Formelzeichen ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Parameter || Formelzeichen || Einheit || Einheit&amp;lt;br&amp;gt;Kurzform&lt;br /&gt;
|-&lt;br /&gt;
| magnetischer Fluß || &amp;lt;math&amp;gt;\!\,\Phi&amp;lt;/math&amp;gt; || Weber || Wb&lt;br /&gt;
|-&lt;br /&gt;
| magnetische Flußdichte  || B || Tesla || T	&lt;br /&gt;
|-&lt;br /&gt;
| Induktivität  || L || Henry || H 	&lt;br /&gt;
|-&lt;br /&gt;
| Spannung  || U || Volt || V 	&lt;br /&gt;
|-&lt;br /&gt;
| Strom  || I || Ampere || A 	&lt;br /&gt;
|-&lt;br /&gt;
| Fläche  || A || Quadratmeter || &amp;lt;math&amp;gt;\!\,m^2&amp;lt;/math&amp;gt;	&lt;br /&gt;
|-&lt;br /&gt;
| Zeit || t || Sekunde || s&lt;br /&gt;
|-&lt;br /&gt;
| Energie || E || Joule || J&lt;br /&gt;
|-&lt;br /&gt;
| Windungszahl || N || Windungen || keine&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || f || Hertz || Hz&lt;br /&gt;
|-&lt;br /&gt;
| Länge || l || Meter || m&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand || R || Ohm ||  &amp;lt;math&amp;gt;\!\,\Omega&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| spezifischer&amp;lt;br&amp;gt;Widerstand ||  &amp;lt;math&amp;gt;\!\,\rho&amp;lt;/math&amp;gt; || Ohm mal Quadratmillimeter&amp;lt;br&amp;gt;pro Meter||&amp;lt;math&amp;gt;\frac{\Omega \cdot mm^2}{m}&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Achtung! Nicht das Formelzeichen der Fläche mit der Einheit des Stroms verwechseln!&lt;br /&gt;
&lt;br /&gt;
Aber jetzt geht&#039;s an praktische Dinge.&lt;br /&gt;
&lt;br /&gt;
== Entwicklung von Netztrafos ==&lt;br /&gt;
&lt;br /&gt;
Während fast jeder Elektroniker weiß, daß das Spannungsverhältnis eines Transformators von dem Windungsverhältnis abhängt, taucht die Frage bei vielen Anfängern auf&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Wieviele Windungen pro Volt brauche ich?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Es ist sehr einfach. Man hat einen Eisenkern, den will man bewickeln. Als erstes mißt man den Querschnitt des Eisens, durch den der magnetische Fluß geht. Sagen wir, der Mittelschenkel eines Transformators ist 2cm breit und der ganze Stapel der laminierten Bleche ist gut zusammengepreßt auf 3cm. Das bringt uns 6cm^2 bzw. 6*10^-4 m^2 Querschnitt. Nun müssen wir entscheiden, wieviel Flußdichte wir in unserem Eisen haben wollen. Bei niedrigen Frequenzen wie bei 50Hz Netztrafos ist der begrenzende Faktor die Sättigung des Kerns. Sehr bescheidene Transformatoren sättigen bei 1T, aber typische Werte liegen bei 1,2 oder 1,3T, und ein gutes kornorientiertes Material geht vielleicht bis 1,6 oder sogar 1,7T. Wenn man wirklich nicht weiß welches Material man hat sollte man besser bei 1T auf der sicheren Seite bleiben. Für diese Beispiel nehmen wir an, daß das Eisen für 1,2T gut genug ist.&lt;br /&gt;
&lt;br /&gt;
Durch Anwendung von Formel (2) erhält man den maximal zulässigen Fluß von 0,72mWb. Doch bevor es weitergeht, warte für einen Moment und denk nach!!! Eisen kann in beide Richtungen magnetisiert werden. Die Gesamtänderung des magnetischen Flusses, vom maximal negativem zum maximal positiven kann 1,4mWb betragen! Weiter mit Formel (1) und der Berechnung der Windungen. Nehmen wir an wir reden von Chile oder einem anderen Land mit 220V und 50 Hz.&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt;1,44mWb=\frac{220V \cdot 10ms}{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt;N=\frac{220V \cdot 10ms}{1,44mWb}=1528&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das ist die Windungszahl der 220V Primärwicklung.&lt;br /&gt;
Einfach, oder? In Wirklichkeit ist das oben Gesagte zu einfach um wahr zu sein. Es gibt einen anderen Faktor, den ich übersprungen habe. Das Obige wäre wahr, wenn die Netzspannung 220V Rechteck wäre. In Wahrheit ist es aber ein Sinus mit 220V Effektivwert, während der Mittelwert etwas anders ist. Und der magnetische Flußaufbau hängt vom Mittelwert ab, &#039;&#039;&#039;nicht&#039;&#039;&#039; vom Effektivwert! Also müssen wir einen kleinen Korrekturfaktor einführen, welcher durch Mathematik aus der Sinusfunktion abgeleitet werden kann. Anstatt mit der exakten Mathematik hier zu nerven empfehle ich mein Kochbuchrezept. 11% zu unserem Vorteil. Also reichen hier 1376 Windungen. Wo kommen die 10ms her, mag man fragen? Denk noch mal. Die Änderung vom maximal negativen zum maximal positiven Fluß passiert in einer Halbwelle. Und bei 50 Hz sind das 10ms. Wir können das alles in eine einfache, universelle Formel packen, gültig für die Berechnung der Windungen für alle Transformatoren und Spulen mit Sinusspannung.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(4)\quad N = \frac{U_{RMS}}{4,44 \cdot A \cdot f \cdot B}&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt;[Windungen] = \frac{[V]}{4,44 \cdot [m^2] \cdot [Hz] \cdot [T]}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 4,44 ist kein Umrechnungsfaktor, sondern ergibt sich aus 2 * 2 * 1,11. Eine &amp;quot;2&amp;quot; ist für die Tatsache, daß der magnetische Umschwung doppelt so groß wie der einseitige ist (damit kann man die einfache Sättigungsgrenze einsetzen), die andere &amp;quot;2&amp;quot; entsteht durch die zwei Halbwellen der Sinusschwingung und die 1.11 ist der Umrechnungsfaktor von Effektivwert auf Mittelwert der Sinusspannung.&lt;br /&gt;
&lt;br /&gt;
=== Leistung ===&lt;br /&gt;
&lt;br /&gt;
Eine andere Frage ist meistens, wieviel Leistung ein Trafo bestimmter Größe übertragen kann. Laßt uns das analysieren.&lt;br /&gt;
&lt;br /&gt;
Der magnetische Fluß im Kern hängt ab von der Spannung, welche an die Windungen angelegt wird, der Frequenz, aber &#039;&#039;&#039;nicht&#039;&#039;&#039; dem Strom, welcher der Transformator liefert! Oh, na gut, ein wenig Abhängigkeit gibt es da schon durch Effekte der realen Welt. Wenn man mehr Strom zieht, fällt durch den Widerstand der Wicklung etwas Spannung ab, wodurch die effektiv an der Wicklung wirksame Spannung reduziert wird und dadurch der magnetische Fluß proportional reduziert wird. Aber der entscheidende Punkt ist, daß der Kern des Trafos &#039;&#039;&#039;nicht&#039;&#039;&#039; die Ausgangsleistung beeinflußt. Diese Grenze kommt von den Wicklungen und hat zwei Seiten. Eine ist der Spannungsabfall, welche proportional zum Ausgangsstrom ist und an einem Punkt so groß sein wird, daß die Spannung für die Last nicht mehr ausreicht. Die andere ist Erwärmung. Mit steigender Last steigt die Verlustleistung in den Wicklungen quadratisch, und wenn man genügend Leistung lange genug entnimmt werden sie abbrennen.&lt;br /&gt;
&lt;br /&gt;
All das Gesagte macht klar, daß die Leistung eines Transformators abhängt von dem magnetischen Kernquerschnitt (weil mehr Querschnitt weniger Windungen benötigt, damit dickerer Draht verwendet werden kann) und von der Größe des Wickelfensters, das ist der Querschnitt wo sich die Wicklungen befinden. Aber es gibt keine lineare Formel für den Zusammenhang dieser beiden Dinge zur Leistung! Wenn ein Transformator größer wird, wird der Pfad zur Wärmeableitung länger und somit wird das Anwachsen der Leistung geringer als das Produkt der beiden Querschnittsflächen.&lt;br /&gt;
&lt;br /&gt;
Bei all dem Durcheinander werde ich keine Abschätzungen abgeben, dafür aber die reale Berechnung empfehlen. Für einen gegebenen Eisenkern, berechne die benötigten Windungen, beachte den verfügbaren Platz dafür, berechne die Drahtstärke und über den spezifischen Widerstand von Kupfer von &amp;lt;math&amp;gt;17,8 \Omega \cdot mm^2/m&amp;lt;/math&amp;gt; den Gesamtwiderstand der Wicklung. Jetzt kann es helfen zu wissen, daß für kleine Transformatoren ein maximaler Verlust von 10% (5% pro Wicklung) normalerweise akzeptiert wird. Das sollte es ermöglichen, die Leistung zu berechnen, welche sicher aus dem Trafo entnommen werden kann, wenn man genug Wissen für diese Rechnung hat! Man braucht nicht mehr Mathematik als man in der Schule gelernt hat, etwa in der 5. Klasse.&lt;br /&gt;
&lt;br /&gt;
Hey, ich höre euch schreien!!! OK, OK, um die Sache klarer zu machen werde ich ein Beispiel vorrechnen. Nehmen wir den Kern von oben an, mit 6cm^2 Querschnitt und 10cm^2 verfügbar für die Wicklungen und daß eine Windung im Mittel 20cm lang ist. Wir verteilen den Wickelraum gleichmäßig auf Primär- und Sekundärseite. Und wir nehmen an, daß nur 40% des Wickelfensters wirklich für Kupfer genutzt werden, der Rest ist Isolation, Luft und verlorener Zwischenraum. Das ist in etwa eine realistische Annahme und beschert uns 2cm^2 für das Kupfer pro Wicklung. Mit 1376 Windungen hat die Primärwicklung einen Drahtquerschnitt von 0,14mm^2, die Gesamtlänge ist 275m. Der Widerstand berechnet sich aus&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt;R = \frac{\rho \cdot l}{A} = \frac{17,8 \frac{\Omega \cdot mm^2}{m} \cdot 275m}{0,14mm^2}=34 \Omega&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir erlauben 5% Verlust in jeder Wicklung. Bei 220V sind das 11V. Nun einfach das ohmsche Gesetz anwenden und der maximal Primärstrom ist 0,32A, multipliziert mit 220V ergibt das ein maximale Eingangsleistung von 70VA für diesen Trafo.&lt;br /&gt;
&lt;br /&gt;
Cool, he? ;-)&lt;br /&gt;
&lt;br /&gt;
Man beachte, daß der Magnetisierungsstrom hier nicht berücksichtigt wird. Du sagst vielleicht, daß selbst wenn es nur 10 oder 20% des Maximalstroms sind, er doch berücksichtigt werden muß! Wenn du das sagst, liegst du falsch. Der Magnetisierungsstrom ist 90 Grad phasenverschoben zum transformierten Laststrom und dadurch, selbst wenn es 20% des Laststrom sind, die Spitze der vektoriellen Summe der beiden sehr nahe beim Laststrom allein liegt. Es lohnt sich nicht den kleinen Unterschied zu beachten.&lt;br /&gt;
&lt;br /&gt;
== Transformatoren für Schaltnetzteile ==&lt;br /&gt;
&lt;br /&gt;
Das vorherige Kapitel kann nahezu vollständig auf Transformatoren höherer Frequenz in Schaltnetzteilen angewendet werden. Es gibt nur ein paar praktische Unterschiede, welche ich jetzt nennen werde.&lt;br /&gt;
&lt;br /&gt;
Bei Frequenzen über ein paar hundert Hertz ist die Sättigung nicht mehr der begrenzende Faktor bei Auswahl der maximalen Flußdichte. Der Grund liegt darin, daß die Verluste des magnetischen Materials so hoch werden, daß die Flußdichte verringert werden muß, um ein akzeptables Maß an Verlusten zu erreichen! Man braucht wirklich das Datenblatt des Herstellers um festzustellen, welche Flußdichte akzeptabel ist. Um eine grobe Vorstellung zu erhalten sollte man bedenken, daß fast immer Ferritmaterial benutzt wird. Ferrit sättigt bei 0,3 bis 0,4T, das ist die absolute Grenze. Für ein typisches Leistungsferrit muß man die Flußdichte bei 25kHz unterhalb 150mT halten, und über 100kHz unter 50mT. Aber viel hängt auch von der Kerngröße ab. Ein größerer Kern muß dabei mit geringerer Flußdichte arbeiten, um eine Überhitzung zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
Normalerweise arbeiten Schaltnetzteile mit Rechtecksignalen, d.h. man muß die 11% zur &amp;quot;Sinuskorrektur&amp;quot; aus der Formel (4) entfernen. Und dann nutzen viele Schaltnetzteile den magnetischen Kern nur einseitig, sprich er wird nur in eine Richtung magnetisiert, was wiederum einen Faktor zwei aus der Formel entfernt. Für den Rest ist die Rechnung die gleiche wie für Netztafos.&lt;br /&gt;
&lt;br /&gt;
Sei nicht überrascht wenn man mit sehr wenigen Windungen endet. Faktisch ist es ziemlich normal, nur 10 oder 20 Windungen an einer 300V Primärwicklung eines großen Schaltnetzteils zu haben.  &lt;br /&gt;
&lt;br /&gt;
== HF-Breitbandübertrager==&lt;br /&gt;
&lt;br /&gt;
Vielleicht hast du diese Ferrittrafos schon am Ausgang von Transistor HF-Verstärkern gesehen. Sie sehen aus wie zwei Ferritröhren nebeneinander, mit zwei Kupferröhren hineingesteckt, welche die Primärwicklung mit einer Windung ergeben. Durch diese Kupferröhren sind einige Windungen isolierter Draht gezogen, welche die Sekundärwicklung bilden. Laßt uns so einen Trafo als Beispiel nutzen.&lt;br /&gt;
&lt;br /&gt;
Unser hypothetischer Fall ist ein 100W Push-Pull Verstärker für 1,8-30MHz, gespeist von 13.8V, wie sie zu Millionen täglich von Funkamateuren und allen möglichen kommerziellen Diensten genutzt werden. Jeder Transistor kann seine Seite der Primärwicklung ziemlich nah an Masse ziehen, aber nicht ganz, wegen der Sättigungsspannung. HF-Transistoren sättigen typisch bei 1V, so daß es vernünftig ist anzunehmen, daß der Transistor um 12,8V schalten kann, was 25,6V Spitzenspannung für die Primärwicklung bedeutet, oder ca. 18V RMS. Auf der anderen Seite soll die Sekundärwicklung die HF-Leistung an 50 Ohm liefern, und 100W an 50 Ohm sind 70,7V. Deshalb brauchen wir ein Spannungs(Windungs)verhältnis von ca. 3,9. Mit einer Primärwicklung mit nur einer Windung können wir nur ganzzahlige Verhältnisse realisieren, deshalb entscheiden wir uns für vier Sekundärwindungen. Der Effekt ist, daß bei 100W die Transistoren bei 17,7V RMS laufen, oder 25V Spitze. D.h. sie schwingen über 12,5Vder Stromversorgung und lassen dabei 1,3V übrig für sie Sättigung. So weit so gut.&lt;br /&gt;
&lt;br /&gt;
Bei 1,8MHz, unsere niedrigste Frequenz, kann ein typischer Ferrit sicher bis 12mT belastet werden. Wir haben einen schönen, reinen Sinus, also nutzen wir Gleichung (4).&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt;1 Windung = \frac{17,7V}{4,44 \cdot A \cdot 1,8MHz \cdot 12mT}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
umgestellt nach der Fläche&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt;A = \frac{17,7V}{4,44 \cdot 1 Windung \cdot 1,8MHz \cdot 12mT} = 1,8 \cdot 10^{-4}m^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir brauchen ein Kernquerschnitt von 1,8cm^2. Ein kleinerer Kern würde bei voller Leistung nach einiger Zeit überhitzen, während ein größerer etwas teuerer wäre, aber den Vorteil der spektralen Reinheit mit sich bringt, denn geringere Flußdichte heißt weniger Verzerrung. Aber für die Übung bleiben wir bei 1,8cm^2 &lt;br /&gt;
&lt;br /&gt;
Wir müssen noch etwas arbeiten. Wir könnten einen langen, dünnen Ferrit nutzen, oder einen kurzen dicken. Und wir können unter verschiedenen Ferrittypen wählen! Um die Auswahl einzuschränken, schauen wir uns die Induktivitätsforderung an. Der Ansatz ist, daß der Transformator eine Induktivität haben sollte, die hoch genug ist, um wenig Einfluß zu haben, wenn man ihn parallel zur Last schaltet. Pi mal Daumen sollte der induktive Widerstand 10mal höher sein als die Last. Man kann sich aussuchen, ob man das für die Sekundärspule mit 4 Windungen und 50 Ohm oder die Primärspule mit 1 Windung und 3,1 Ohm berechnen will, das Ergebnis ist gleich. Ich wähle die Primärseite. Der induktive Widerstand berechnet sich aus.&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt;X_L=2 \pi \cdot f \cdot L&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das heißt für uns&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt; L=\frac{X_L}{2 \pi \cdot f}=\frac{31 \Omega}{2 \pi \cdot 1,8 MHz}=2,7 \mu H&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir brauchen also 2,7µH, um Pi mal Daumen die Anforderung des zehnfachen induktiven Widerstands zu erfüllen. Jetzt muß man sich die Datenblätter der Kerne anschauen und den passenden raussuchen. Für diese Beispiel werde ich den Katalog von Amidon nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Versuchen wir den ziemlich verbreiteten Typ FT-50-43. Dieser Ringkern hat 0,133cm^2 Querschnitt. Zwei Stapel zu je sieben Stück würden unsere Anforderung bezüglich Flußdichte erfüllen. Der [http://de.wikipedia.org/wiki/AL-Wert#Bestimmung_der_Induktivit.C3.A4t_mittels_AL-Wert AL-Wert] ist 0,52µH/N^2, d.h. 14 Kerne mit einer Wicklung ergeben 7,3uH, ein Mehrfaches unseres benötigten Wertes. Weil aber Breitbandverstärker zu Schwingungen bei niedrigen Frequenzen tendieren, weil dort die Transistoren die größte Verstärkung haben, ist es keine gute Idee mehr Leistung bei niedrigen Frequenzen anzubieten als notwendig! Versuchen wir einen anderen Typ.&lt;br /&gt;
&lt;br /&gt;
Das Material 43 hat eine [http://de.wikipedia.org/wiki/Permeabilit%C3%A4t_%28Magnetismus%29 Permeabilität] von 850. Ein Kern mit den gleichen Abmessungen aber mit einer Permeabilität von nur 330 wäre nett. Aber Amidon macht keine Kerne dieser Größe in einer Permeabilität auch nur annähernd zu dem. Hey, man kann nicht immer umsonst Achterbahn fahren. Die nächstniedrigere Permeabilität, welche von Amidon verfügbar und für unser Projekt brauchbar ist, ist 125, das ist zu wenig. Also bleiben wir beim 43er Material uns sehen was wir machen können.&lt;br /&gt;
Es gibt den FT-82-43 aus dem gleichen Material. Er ist viel dicker, hat 0,25cm^2 Querschnitt und einen AL-Wert ziemlich ähnlich zu unserem anderen Kern, 0,55µH/N^2. Zwei Stapel mit je 4 Stück ergeben mehr als genug Querschnitt mit 4,4µH. Das ist eine brauchbare Lösung und bringt uns mehr Platz für die Wicklungen.&lt;br /&gt;
&lt;br /&gt;
Bei höheren Frequenzen ist die Flußdichte geringer und bleibt damit unterhalb der Grenze des Materials. Das Verhältnis zwischen induktivem Widerstand und Lastwiderstand verbessert sich mit steigender Frequenz, aber bei den höchsten Frequenzen könnten parasitäre Kapazitäten starken Einfluß gewinnen, so daß man sie bei der Entwicklung berücksichtigen sollte.&lt;br /&gt;
 &lt;br /&gt;
== Energiespeicherung in Magnetkernen ==&lt;br /&gt;
&lt;br /&gt;
Weiß du wieviel Energie eine Spule speichert? Das ist definiert durch die gleiche, alte Formel, die oft in der klassischen Physik auftaucht.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(5)\quad E = \frac{1}{2} \cdot L \cdot I^2&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; [J] = \frac{1}{2} \cdot [H] \cdot [A]^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einheit der Energie ist Joule (J). Die Induktivität L in Henry (H) sowie der Strom I durch die Spule in Ampere (A). Im Falle eines Transformators muß dieser Strom netto berechnet werden, nachdem man den die (transformierten) Primär- und Sekundärströme abgezogen hat unter Berücksichtigung des Windungsverhältnisses. Kurz, das ist der Magnetisierungsstrom.&lt;br /&gt;
&lt;br /&gt;
In den meisten Anwendungen als Transformator ist dieser Strom nicht wirklich gewünscht, aber ein unvermeidbarer Nebeneffekt. Aber es gibt Anwendungen, welche diese Energiespeicherung gut nutzen! Ein sehr wichtiges Beispiel ist der Sperrwandler. Im Prinzip speichert dieser Wandler die Energie von der Primärseite und entlädt sie in die Sekundärseite, oft mit einer Spannung, welche &#039;&#039;&#039;nicht&#039;&#039;&#039; dem Windungsverhältnis entspricht! Weil Primär- und Sekundärstrom nicht zur gleichen Zeit fließen ist es nicht mehr gültig, daß die Spannungen im gleichen Verhältnis wie die Windungszahlen stehen!&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, wir entwickeln ein Schaltnetzteil auf dieser Basis. Wir wollen 13,8V Ausgangsspannung, während die Eingangsspannung 110 oder 220V ist. Der logische Ansatz in diesem Fall ist die Nutzung eines Gleichrichters, welcher als Brücke für 220V oder als Verdoppler für 110V geschaltet werden kann. Am Ende haben wir 300VDC in beiden Fällen, der Rest des Schaltnetzteils ist identisch, unabhängig von der Netzspannung. Nehmen wir weiter an, wir haben einen Ferritkern mit 2cm^2 Querschnitt, 12cm magnetische Pfadlänge mit einer Anfangspermeabilität von 2000 und 350mT Sättingsflußdichtee. Der Wandler soll bei 100 kHz laufen. Für die Entwicklung brauchen wir noch ein paar Informationen. Den AL-Wert, welcher das Verhältnis zwischen Anzahl der Windungen und Induktivität beschreibt. Wenn er nicht im Datenblatt angegeben ist, kann man ihn aus den physikalischen Abmessungen und Ferriteigenschaften berechnen. Oder man wickelt eine Meßspule und mißt den Wert nach, aber es ist ganz sicher einfacher ihn aus dem Katalog zu bekommen! Nehmen wir an unser Kern hat 6µH/N^2, d.h. 1 Windung ergibt 6µH, 10 Windungen ergeben 600µH und so weiter. Diese angenommenen Werte sind typisch für praktische Fälle.&lt;br /&gt;
&lt;br /&gt;
Um die Spannungsbelastung des Transistors der Primärseite zu verringern, wählen wir 30% der Zykluszeit für die Aufladung des Transformators und 60% für die Entladung. Das erlaubt die Entladung mit der halben Eingangsspannung, d.h. der Schalttransistor sieht nur 450V statt 600V. Das reduziert auch die Stromspitze des sekundären Gleichrichters, während dadurch aber die Stromstärke der Primärseite sowie Spannungsfestigkeit der Sekundärseite erhöht werden, was hier aber kein Problem ist. Die verbleibenden 10% der Schaltzeit sind reserviert für Schaltzeit des Transistors, Totzeitsteuerung des Steuer-ICs etc. Bei 100kHz ist die Ladezeit 3µs, die Entladezeit 6µs. Ein Blick ins Datenblatt sagt uns, daß bei 100kHz und einseitiger Magnetisierung die Flußdichte auf 100mT begrenzt werden sollte. Durch Anwendung von Formel (1) und (2) können wir schnell ausrechnen.&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt; B = \frac{U \cdot t}{N \cdot A}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt; N = \frac{U \cdot t}{B \cdot A} = \frac{300V \cdot 3\mu s}{0,1T \cdot 2 \cdot 10^{-4}m^2}=45&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
45 Windungen laden diesen Kern auf 0,1T in 3µs, wenn man 300V anlegt. Schön und einfach. Auf der Sekundärseite brauchen wir 13,8V, plus ca. 1V für die Gleichrichterdiode, macht in Summe ca. 15V. Wir können die gleiche Formel einsetzen, nur mit anderen Werten für Spannung und Zeit.&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt; N = \frac{U \cdot t}{B \cdot A} = \frac{15V \cdot 6\mu s}{0,1T \cdot 2 \cdot 10^{-4}m^2}=4,5&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gefällt dir das? Das Windungsverhältnis ist 10:1, während das Spannungsverhältnis 20:1 ist, weil das Zeitverhältnis 1:2 ist!&lt;br /&gt;
&lt;br /&gt;
Entscheide frei ob du lieber 4 oder 5 Windungen haben willst, das bewirkt nur eine geringfügige Änderung der Lade- und Entladezeiten.&lt;br /&gt;
&lt;br /&gt;
Nun, wieviel Leistung kann dieses Netzteil liefern? Nein, rechne jetzt nicht wie bei einem Netztrafo! Wir haben hier zwei Grenzen. Eine ist die begrenzte Wärmeerzeugung im Transformator, aber es gibt auch eine funktionale Grenze, welche viel wichtiger ist. Unser Schaltnetzteil arbeitet mit Energiespeicherung und bei jedem Zyklus wird nur eine kleine Menge an Energie gespeichert, wodurch die am Ausgang verfügbare Leistung streng begrenzt ist!&lt;br /&gt;
&lt;br /&gt;
Durch unseren oben angenommenen AL-Wert hat unsere Primärwicklung mit 45 Windungen eine Induktivität von 12mH. Über die Definition der Induktivität können wir den Spitzenstrom am Ende des Ladezyklus ausrechnen.&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt; I = \frac{U \cdot t}{L} = \frac{300V \cdot 3 \mu s}{12mH}= 75mA&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur 75mA! Sieht nicht viel aus. Berechnen wir die gespeicherte Energie.&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt;E = \frac{1}{2} \cdot L \cdot I^2= \frac{1}{2} \cdot 12mH \cdot (75mA)^2=34\mu J&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann das auch über einen anderen Ansatz berechnen. Da der Strom linear von Null bis 75mA ansteigt, ergibt das im Mittel 37,5mA. Bei 300V und 3µs sind das&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt;E = U \cdot I \cdot t = 300V \cdot 37,5mA \cdot 3\mu s =34\mu J&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schön wenn die Dinge übereinstimmen...? ;-)&lt;br /&gt;
&lt;br /&gt;
Wenn man bedenkt, daß man bei 100kHz 100.000 dieser kleinen Brocken von Energie pro Sekunde hat, und Leistung schlicht Energie pro Zeit ist, dann kommen wir auf traurige 3,4W für unser glorreiches Netzteil! Sieht nach einer ziemlich schlechten Nutzung für einen Kern dieser Größe aus, nicht wahr? Dieser Kern ist mit &amp;quot;250W typisch&amp;quot; durch den Hersteller gekennzeichnet!!!&lt;br /&gt;
&lt;br /&gt;
Wir müssen herausfinden, wie wir mehr Energie in dem Kern speichern können. Wenn wir die Induktivität erhöhen, wird der Strom kleiner, aber der Strom geht quadratisch in die Energie ein! Keine gute Idee. Es ist besser die Induktivität zu verringern, dadurch steigt der Strom. Da die gespeicherte Energie linear von der Induktivität, aber quadratisch vom Strom abhängt, ist es offensichtlich daß die gespeicherte Energie proportional steigt.&lt;br /&gt;
&lt;br /&gt;
Wie machen wir das? Wir können nicht einfach die Windungszahl verringern! Das bringt uns in Widerspruch mit Gleichung (1), erhöht die Flußdichte mehr als der Ferrit verträgt. Erkennst du das Problem? Wir müssen die Induktivität verringern, ohne die Windungszahl zu verringern, um die Flußdichte zu erhalten.&lt;br /&gt;
&lt;br /&gt;
Es gibt ein einfaches Werkzeug um das zu erreichen. Luft! Man muß nur den Magnetfluß über einen Luftspalt laufen lassen, indem man die beiden Kernhälften geringfügig auseinander zieht. Der Effekt dieses Luftspalts ist die Verringerung der effektiven Permeabilität des Kerns und damit die Reduzierung des AL-Werts, ohne Einfluß auf andere Parameter. Schauen wir was passiert wenn wir einen Luftspalt von insgesamt 1mm einfügen, was durch das Entfernen der Kernhälften um 0,5mm erreicht wird.&lt;br /&gt;
&lt;br /&gt;
Der magnetische Fluß läuft nun 120mm durch Ferrit mit einer Permeabilität von 2000 und 1mm durch Luft mit einer Permeabilität von Eins. 2000mm Ferrit haben den gleichen magnetischen Widerstand wie 1mm Luft! D.h. unser Kern hat nun nur noch eine effektive Permeabilität von 120 anstatt der 2000! Das heißt auch, unser AL-Wert ist nun 0,36µH/N^2 und unsere Primärwicklung mit 45 Windungen hat nun nur noch 720µH. Das wiederum heißt, daß sie in 3µs auf 1,25A aufgeladen wird und 0,56mJ pro Zyklus speichert, woraus 56W Ausgangsleistung entstehen. Das sieht deutlich besser aus als unsere mageren 3,4W ohne Luftspalt! Und all das bei der gleichen Flußdichte im Kern!&lt;br /&gt;
&lt;br /&gt;
Hast du jemals gedacht, daß eine 1mm dicke Luftschicht so schrecklich wichtig sein kann?&lt;br /&gt;
&lt;br /&gt;
Die nächste Frage wäre, ob es eine Grenze für den Luftspalt gibt. Sicher, es gibt zwei Grenzen. Eine ist einfach, wenn man die gespeicherte und übertragene Energie erhöht, erhöht sich auch der Verlust in der Wicklung. An einem Punkt erreicht man die Grenze der thermischen Verluste im Kupfer, genauso wie im Netztransformator. Die Größe des Luftspalts ist meist ein Kompromiß des Entwicklers. Aber es gibt ein anderes Problem. Mit fallender effektiver Permeabilität fällt auch die Kopplung zwischen den Wicklungen. Der Transformator entwickelt ein starkes Streufeld und zeigt starke ungekoppelte Induktivität, welche zur Zerstörung des Leistungstransistors und der Diode führen kann und in den meisten Fällen einen [[Snubber]] notwendig macht. Der Entwickler muß manchmal mit weniger Luftspalt auskommen als was die Wicklungen thermisch verkraften könnten. In jedem Fall kann das Koppelproblem durch richtige Konstruktion des Transformators minimiert werden. Die Primär- und Sekundärwicklung kann gemischt sein, eine bifilare Wicklung ist manchmal möglich. Und es ist oft eine gute Idee, eine dicke Kupferfolie um den kompletten Transformator zu wickeln, welche eine Kurzschlußwindung darstellt. Diese bewirkt, daß der Fluß außerhalb zu Null wird, was bedeutet, daß der Fluß durch den Spulenaufbau gleich dem um die Spule (Seitenschenkel des Kerns) ist und damit die Kopplung verbessert.&lt;br /&gt;
&lt;br /&gt;
In vielen Fällen ist es besser ein Material mit weniger Permeabilität zu verwenden, wie z.&amp;amp;nbsp;B. Eisenpulver. Der Transformator wäre nahezu identisch, wenn wir ihn mit einem Material mit einer Permeabilität von 120 ohne Luftspalt bauen würden. Er hätte eine bessere Kopplung und weniger Streufeld. Andererseits ist der große Vorteil des Luftspalts, daß der Entwickler genau festlegen kann, wieviel effektive Permeabilität er will, ohne einen neuen Kern bestellen zu müssen!&lt;br /&gt;
&lt;br /&gt;
== Drosseln ==&lt;br /&gt;
&lt;br /&gt;
Eines der schlimmsten Dinge, die ich je in einem elektrischen Sachbuch sah, daß man verschiedene Formeln für das Gleichstrom- und Wechselstromverhalten von Spulen angegeben hat. Das ist kompletter Unsinn!!! Es gibt keinen grundlegenden Unterschied zwischen Gleich- und Wechselstrom. Zu jedem Zeitpunkt des Wechselstroms fließt ein &amp;quot;Gleichstrom&amp;quot;, und in Gleichstromanwendungen fließt auch ein Wechselstrom, wenigsten beim Ein- und Ausschalten. Deshalb können und sollten wird die gleichen Entwicklungsansätze für Drosseln nutzen.&lt;br /&gt;
&lt;br /&gt;
Schauen wir uns das in der Praxis an. Eine verbreitete Aufgabe ist die Entwicklung einer Drossel mit einer bestimmten Induktivität, welche einen bestimmten Strom aushält ohne in die Sättigung zu gehen. Beachte, daß für Gleichstromanwendungen die Grenze immer durch die Flußdichte gesetzt wird. Erinnerst du dich daran, was ich weiter oben geschrieben habe? Bei hohen Frequenzen ist die Grenze durch die Kernverluste bestimmt, und bei niedrigen durch die Sättigung. Und Gleichstrom ist einfach eine sehr, sehr niedrige Frequenz. ;-)&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, wir brauchen eine Drossel mit 100µH, die wenigstens 10A aushält, bevor sie in die Sättigung geht. Nehmen wir an, wir nutzen einen Ringkern aus Eisenpulver dafür mit einem Querschnitt von 1cm^2 und einer Pfadlänge von 10cm. Die Permeabilität ist 75 und die Sättigung beginnt bei 0,5T, Der AL-Wert ist 80nH/N^2. Allein aus dem AL-Wert können wir leicht ausrechnen, daß wir 35 Windungen brauchen. Nun, wie können wir den Fluß ausrechnen? Letztendlich wird keine Spannung an die Wicklung angelegt! Denk noch mal nach! Es &#039;&#039;&#039;muß&#039;&#039;&#039; eine Spannung angelegt worden sein, um den Strom fließen lassen zu können. Wenn wir 1V anlegen, würde es bei 100µH 1ms dauern, ehe 10A erreicht werden, wie man aus Gleichung (3) leicht errechnen kann. Zusammen mit Hilfe von Gleichung (2) können wir die Flußdichte direkt berechnen&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;math&amp;gt;B = \frac{L \cdot I}{A \cdot N}= \frac{100 \mu H \cdot 10A}{1 \cdot 10^{-4}m^2 \cdot 35}=0,28T&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
welche in einer Flußdichte von 0,28T endet in unserem Kern mit 1cm^2 Querschnitt. Bingo! Diese Drossel könnte fast das Doppelte an Strom leiten, bevor sie in die Sättigung geht. Ein kostenbewußter Entwickler würde die selbe Übung mit dem nächstkleineren Kern durchführen, welcher gerade groß genug ist, um die Drossel mit 100µH bei 10A zu erreichen.&lt;br /&gt;
&lt;br /&gt;
== Kernauswahl ==&lt;br /&gt;
&lt;br /&gt;
Es gibt unzählige Formen und Größen von magnetischen Kernen, und alle sind mit verschiedenen Materialien verfügbar. Es ist eine gute Idee, wenn man wenigsten prinzipiell weiß, was es gibt.&lt;br /&gt;
&lt;br /&gt;
===Materialien===&lt;br /&gt;
&lt;br /&gt;
Das älteste Material für Transformatoren ist &#039;&#039;&#039;Eisen&#039;&#039;&#039;, bekannt als [http://de.wikipedia.org/wiki/Dynamoblech Dynamoblech]. Es ist in dünnen Blechen verfügbar, welche voneinander isoliert werden müssen, um die Wirbelströme gering zu halten. Nur in reinen Gleichstromanwendungen kann man massives Eisen oder unisolierte Bleche nehmen. Transformatoreisen verträgt mindestens 1T bevor es in die Sättigung geht, während 1,2T für die meisten Typen OK ist, 1,5T für einige und 1,7T sind mit den Besten möglich. Die Permeabilität dieses Materials ist ca. 2000 bis 5000. Die Eisenlegierungen mit höherer Sättigungsgrenze haben die geringeren Werte. Die Verluste sind so hoch, daß sie für Frequenzen kurz über 100Hz der begrenzende Faktor sind, anstatt die Sättigung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eisenstaub&#039;&#039;&#039; wird auch genutzt, gemischt mit Epoxidharz und in Magnetkerne geformt. Die Permeabilität hängt vom Eisengehalt der Mischung ab. Da selbst eine kleine Menge Harz deutlich weniger Permeabilität als das Eisen hat, ist die effektive Permeabilität ziemlich niedrig, zwischen 2..100 sind typisch. Für höhere Permeabilitäten wird die Korngröße und Form des Eisen sehr wichtig, da man sehr enge Kornpackungen erzielen kann.&lt;br /&gt;
Sättigung setzt eher als bei massivem Eisen ein, weil der Fluß tendenziell aus den Eisenpartikeln gedrängt wird, 0,5T ist ein typischer Wert. Auf jeden Fall ist die Sättigung sehr &amp;quot;weich&amp;quot;, es gibt keinen gut definierten Punkt an dem die Sättigung einsetzt. Die Verluste sind niedrig, so daß die Typen mit geringer Permeabilität bis in den HF-Bereich verwendet werden können. Diese Pulverkerne gibt es auch mit anderen Legierungen, wie z.&amp;amp;nbsp;B. Permalloy, in einigen Fällen mit attraktiven Eigenschaften.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ferrite&#039;&#039;&#039; sind die vielseitigsten aller verfügbaren Materialien. Während sie bei niedrigeren Werten sättigen, typisch 0,3T, gibt es sie in einer riesigen Breite von Permeabilitäten. Es ist nicht schwer Ferrite mit einer Permeabilität von 20 oder 25.000 zu finden! Der unerfahren Anwender kann den Unterschied  von Außen nicht erkennen. Selbst wenn zwei Ferritkerne identisch aussehen, kann der eine 1000fach verschieden zum anderen sein! Also sollte man sicherstellen, daß man &#039;&#039;&#039;weiß&#039;&#039;&#039;, welches Material man hat, bevor man mit der Rechnung anfängt.&lt;br /&gt;
&lt;br /&gt;
In jedem Fall gibt es zwei große Kategorien von Ferriten. Leistungsferrite, genutzt in Schaltnetzteilen etc., sie haben eine Permeabilität von etwa 2000 und geringe Verluste zwischen 20..100kHz. HF-Ferrite mit Permeabilitäten zwischen 100...1000 und geringen Verlusten machen sie brauchbar bis 30MHz. Aber es gibt viele Ferrittypen, die bei weit höheren Frequenzen noch arbeiten und weniger Permeabilität haben. Die Permeabilitäten über 2000 sind reserviert für spezielle Kerne wie Breitbandübertrager, Transductoren und Rauschfilter.&lt;br /&gt;
&lt;br /&gt;
=== Formen ===&lt;br /&gt;
&lt;br /&gt;
Bei den Formen will ich nur einige nennen.&lt;br /&gt;
&lt;br /&gt;
*Ringkerne: Sie sind einfach, billig und leicht zu nutzen, haben geringe Dispersion (wenig Streufeld), gute Selbstabschirmung, können aber keinen Luftspalt enthalten, und 10.000 Windungen auf einen Ringkern wickeln ist nichts was ich gern tun würde.&lt;br /&gt;
*E-Kerne: Sehr zweckmäßig für die meisten Anwendungen, aber die scharfen Ecken sorgen für mehr Streuverluste&lt;br /&gt;
* U-Kerne: Etwas billiger und leicht ineffizienter als E-Kerne (wegen der größeren Pfadlänge)&lt;br /&gt;
*Schalenkerne: Vereint die Zweckmäßigkeit des E-Kerns mit der guten Schirmung des Ringkerns (er ist sogar besser!), aber sie kosten mehr. Manche haben einen einstellbaren Luftspalt.&lt;br /&gt;
*Stäbe: Nutzbar für Drosseln. Sie haben wirklich große Luftspalte! ;-) Aus genau diesem Grund sind sie unbrauchbar für Transformatoren, die Kopplung wäre zu schlecht.&lt;br /&gt;
*E-I Laminate: Das ist so ziemlich die einzige Form, in der man Transformatoreisen kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Ich empfehle man bestellt sich einige Kataloge der Hersteller von magnetischen Materialien und kann so mehr über die anderen 994 Formen lernen . . . Ich empfehle Amidon, Ferroxcube , Ferrinox (Thomson Composants), SiFerrit (Siemens), TDK, Philips, um einige zu nennen. Ich habe meist mit Amidon, Ferrinox und Mülleimerkernen gearbeitet. Die besten Leistungsdaten scheinen von einigen japanischen Ferriten zu kommen.&lt;br /&gt;
&lt;br /&gt;
Diese kleine Abhandlung des Elektromagnetismus kann natürlich nicht als vollständig betrachtet werden, aber ich bevorzuge es, mich auf die wichtigsten Dinge für den Entwickler bzw. Hobbybastler zu konzentrieren. Ich habe alle Dinge übersprungen, welche in meinen Augen weniger wichtig sind für die praktische Anwendung. Ich habe auch viele praktische Hinweise übersprungen, welche zwar nützlich wären, aber diesen Artikel zu sehr in ein Kochbuch verwandelt hätten. Wer Fragen hat soll nicht zögern. Meine Adresse ist auf der ersten [http://ludens.cl/index.html Seite]. Wenn genug Fragen auftauchen, werde ich ein F.A.Q. anfügen.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
*[[Spule]]&lt;br /&gt;
*[[MC34063]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.amidon.de/ Amidon, Hersteller von Kernen aller Art]&lt;br /&gt;
* [http://www.ferroxcube.com/ Ferroxcube, Hersteller von Kernen aller Art]&lt;br /&gt;
* [http://www.epcos.de Epcos, ehemals Siemens]&lt;br /&gt;
* [http://www.ferrite.de ferrite.de, Händler für Kerne aller Art]&lt;br /&gt;
* [http://www.tridelta-weichferrite.de/ TRIDELTA Weichferrite]&lt;br /&gt;
* [http://www.spulen.com/ MM Spulen für Elektronik - Der Shop rund um die Spule - Drähte, Litzen, Ferrite, Spulen aller Art]&lt;br /&gt;
* [[media:verlustarme_trafos.pdf | Sehr gute Erklärung der Wirkungsweise eines Trafos (PDF)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Grundlagen]]&lt;br /&gt;
[[Category:Spannungsversorgung und Energiequellen]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40400</id>
		<title>Wer hat was</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40400"/>
		<updated>2009-11-02T13:10:18Z</updated>

		<summary type="html">&lt;p&gt;Ivan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer hat was und wo? :)&lt;br /&gt;
http://www.mikrocontroller.net/topic/155083&lt;br /&gt;
Erstmal sollen sich hier nur Mitmachwillige ihren Wohnort aufschreiben, um zu sehen ob die Sache lohnt. Also fang ich an:&lt;br /&gt;
&lt;br /&gt;
*volatile, Oldenburg, AVRs, RC 0805 und 0603 usw usw bla&lt;br /&gt;
*deadbuglabs, Nürnberg, Atmega: m8, m328P, m168, m32, RC bedrahtet + SMD&lt;br /&gt;
*blackhat-blade, Karlsruhe: Widerstände THT (E12 ~1R - 1M), AVRs, Trafos, 1Nxxx Dioden, diverses&lt;br /&gt;
*Hotty, Karlsruhe: AVRs (DIP und SMD), Widerstände+Kondensatoren(THT und SMD(0603, 0805, 1206), Transistoren, LED-Matrixen, vieles Mehr&lt;br /&gt;
*Esko, Fürth, alles mögliche aber nie das passende ;)&lt;br /&gt;
*muetze1, Rostock, alles mögliche, auch RFT Bestände&lt;br /&gt;
*dkeipp, 36318, alles mögliche, diverse Samples (unbenutzt)&lt;br /&gt;
*bastelfinger, Wiesbaden, TTL-Bausteine, paar Quarze/Quarzoszillatoren&lt;br /&gt;
*Peter2, bei Karlsruhe AVR,TTL,OP,C,R&lt;br /&gt;
*nightstorm99, Brandenburg/Havel, AVR und viel klein Kram&lt;br /&gt;
* [http://www.mikrocontroller.net/user/show/ivan Иван], Wels/Austria: MSP430FET (USB) / einige MSP430er&lt;br /&gt;
*alois alias murkel, Eisenhüttenstadt, siehe Liste und mehr + RFT&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40257</id>
		<title>Wer hat was</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40257"/>
		<updated>2009-10-28T17:46:53Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Wer sucht was? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer hat was und wo? :)&lt;br /&gt;
http://www.mikrocontroller.net/topic/155083&lt;br /&gt;
Erstmal sollen sich hier nur Mitmachwillige ihren Wohnort aufschreiben, um zu sehen ob die Sache lohnt. Also fang ich an:&lt;br /&gt;
&lt;br /&gt;
*volatile, Oldenburg, AVRs, RC 0805 und 0603 usw usw bla&lt;br /&gt;
*deadbuglabs, Nürnberg, Atmega: m8, m328P, m168, m32, RC bedrahtet + SMD&lt;br /&gt;
*blackhat-blade, Karlsruhe: Widerstände THT (E12 ~1R - 1M), AVRs, Trafos, 1Nxxx Dioden, diverses&lt;br /&gt;
*Hotty, Karlsruhe: AVRs (DIP und SMD), Widerstände+Kondensatoren(THT und SMD(0603, 0805, 1206), Transistoren, LED-Matrixen, vieles Mehr&lt;br /&gt;
*Esko, Fürth, alles mögliche aber nie das passende ;)&lt;br /&gt;
*muetze1, Rostock, alles mögliche, auch RFT Bestände&lt;br /&gt;
*dkeipp, 36318, alles mögliche, diverse Samples (unbenutzt)&lt;br /&gt;
*bastelfinger, Wiesbaden, TTL-Bausteine, paar Quarze/Quarzoszillatoren&lt;br /&gt;
*Peter2, bei Karlsruhe AVR,TTL,OP,C,R&lt;br /&gt;
*nightstorm99, Brandenburg/Havel, AVR und viel klein Kram&lt;br /&gt;
* [http://www.mikrocontroller.net/user/show/ivan Иван], Wels/Austria: RLink für ST7, ST8, STM32, UPSD / MSP430FET (USB) / einige MSP430er&lt;br /&gt;
&lt;br /&gt;
===Wer sucht was?===&lt;br /&gt;
&lt;br /&gt;
*[http://www.mikrocontroller.net/user/show/ivan Иван], Wels/Austria: Diverse Keramik-ICs, insebesondere EPROMS und ZiLOGs, im Besonderen CLCCs und CQFPs&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40256</id>
		<title>Wer hat was</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40256"/>
		<updated>2009-10-28T17:40:43Z</updated>

		<summary type="html">&lt;p&gt;Ivan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer hat was und wo? :)&lt;br /&gt;
http://www.mikrocontroller.net/topic/155083&lt;br /&gt;
Erstmal sollen sich hier nur Mitmachwillige ihren Wohnort aufschreiben, um zu sehen ob die Sache lohnt. Also fang ich an:&lt;br /&gt;
&lt;br /&gt;
*volatile, Oldenburg, AVRs, RC 0805 und 0603 usw usw bla&lt;br /&gt;
*deadbuglabs, Nürnberg, Atmega: m8, m328P, m168, m32, RC bedrahtet + SMD&lt;br /&gt;
*blackhat-blade, Karlsruhe: Widerstände THT (E12 ~1R - 1M), AVRs, Trafos, 1Nxxx Dioden, diverses&lt;br /&gt;
*Hotty, Karlsruhe: AVRs (DIP und SMD), Widerstände+Kondensatoren(THT und SMD(0603, 0805, 1206), Transistoren, LED-Matrixen, vieles Mehr&lt;br /&gt;
*Esko, Fürth, alles mögliche aber nie das passende ;)&lt;br /&gt;
*muetze1, Rostock, alles mögliche, auch RFT Bestände&lt;br /&gt;
*dkeipp, 36318, alles mögliche, diverse Samples (unbenutzt)&lt;br /&gt;
*bastelfinger, Wiesbaden, TTL-Bausteine, paar Quarze/Quarzoszillatoren&lt;br /&gt;
*Peter2, bei Karlsruhe AVR,TTL,OP,C,R&lt;br /&gt;
*nightstorm99, Brandenburg/Havel, AVR und viel klein Kram&lt;br /&gt;
* [http://www.mikrocontroller.net/user/show/ivan Иван], Wels/Austria: RLink für ST7, ST8, STM32, UPSD / MSP430FET (USB) / einige MSP430er&lt;br /&gt;
&lt;br /&gt;
===Wer sucht was?===&lt;br /&gt;
&lt;br /&gt;
*[http://www.mikrocontroller.net/user/show/ivan Иван], Wels/Austria: Diverse Keramik-ICs, insebesondere EPROMS und ZiLOGs&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40255</id>
		<title>Wer hat was</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40255"/>
		<updated>2009-10-28T17:38:03Z</updated>

		<summary type="html">&lt;p&gt;Ivan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer hat was und wo? :)&lt;br /&gt;
http://www.mikrocontroller.net/topic/155083&lt;br /&gt;
Erstmal sollen sich hier nur Mitmachwillige ihren Wohnort aufschreiben, um zu sehen ob die Sache lohnt. Also fang ich an:&lt;br /&gt;
&lt;br /&gt;
*volatile, Oldenburg, AVRs, RC 0805 und 0603 usw usw bla&lt;br /&gt;
*deadbuglabs, Nürnberg, Atmega: m8, m328P, m168, m32, RC bedrahtet + SMD&lt;br /&gt;
*blackhat-blade, Karlsruhe: Widerstände THT (E12 ~1R - 1M), AVRs, Trafos, 1Nxxx Dioden, diverses&lt;br /&gt;
*Hotty, Karlsruhe: AVRs (DIP und SMD), Widerstände+Kondensatoren(THT und SMD(0603, 0805, 1206), Transistoren, LED-Matrixen, vieles Mehr&lt;br /&gt;
*Esko, Fürth, alles mögliche aber nie das passende ;)&lt;br /&gt;
*muetze1, Rostock, alles mögliche, auch RFT Bestände&lt;br /&gt;
*dkeipp, 36318, alles mögliche, diverse Samples (unbenutzt)&lt;br /&gt;
*bastelfinger, Wiesbaden, TTL-Bausteine, paar Quarze/Quarzoszillatoren&lt;br /&gt;
*Peter2, bei Karlsruhe AVR,TTL,OP,C,R&lt;br /&gt;
*nightstorm99, Brandenburg/Havel, AVR und viel klein Kram&lt;br /&gt;
* Iwan, Wels/Austria: RLink für ST7, ST8, STM32, UPSD / MSP430FET (USB) / einige MSP430er&lt;br /&gt;
&lt;br /&gt;
===Wer sucht was?===&lt;br /&gt;
&lt;br /&gt;
*Iwan, Wels/Austria: Diverse Keramik-ICs, insebesondere EPROMS und ZiLOGs&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40254</id>
		<title>Wer hat was</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40254"/>
		<updated>2009-10-28T17:37:50Z</updated>

		<summary type="html">&lt;p&gt;Ivan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer hat was und wo? :)&lt;br /&gt;
http://www.mikrocontroller.net/topic/155083&lt;br /&gt;
Erstmal sollen sich hier nur Mitmachwillige ihren Wohnort aufschreiben, um zu sehen ob die Sache lohnt. Also fang ich an:&lt;br /&gt;
&lt;br /&gt;
*volatile, Oldenburg, AVRs, RC 0805 und 0603 usw usw bla&lt;br /&gt;
*deadbuglabs, Nürnberg, Atmega: m8, m328P, m168, m32, RC bedrahtet + SMD&lt;br /&gt;
*blackhat-blade, Karlsruhe: Widerstände THT (E12 ~1R - 1M), AVRs, Trafos, 1Nxxx Dioden, diverses&lt;br /&gt;
*Hotty, Karlsruhe: AVRs (DIP und SMD), Widerstände+Kondensatoren(THT und SMD(0603, 0805, 1206), Transistoren, LED-Matrixen, vieles Mehr&lt;br /&gt;
*Esko, Fürth, alles mögliche aber nie das passende ;)&lt;br /&gt;
*muetze1, Rostock, alles mögliche, auch RFT Bestände&lt;br /&gt;
*dkeipp, 36318, alles mögliche, diverse Samples (unbenutzt)&lt;br /&gt;
*bastelfinger, Wiesbaden, TTL-Bausteine, paar Quarze/Quarzoszillatoren&lt;br /&gt;
*Peter2, bei Karlsruhe AVR,TTL,OP,C,R&lt;br /&gt;
*nightstorm99, Brandenburg/Havel, AVR und viel klein Kram&lt;br /&gt;
* Iwan, Wels/Austria: RLink für ST7, ST8, STM32, UPSD / MSP430FET (USB) / einige MSP430er&lt;br /&gt;
&lt;br /&gt;
===Wer sucht was?===&lt;br /&gt;
&lt;br /&gt;
Iwan, Wels/Austria: Diverse Keramik-ICs, insebesondere EPROMS und ZiLOGs&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40253</id>
		<title>Wer hat was</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40253"/>
		<updated>2009-10-28T17:28:21Z</updated>

		<summary type="html">&lt;p&gt;Ivan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer hat was und wo? :)&lt;br /&gt;
http://www.mikrocontroller.net/topic/155083&lt;br /&gt;
Erstmal sollen sich hier nur Mitmachwillige ihren Wohnort aufschreiben, um zu sehen ob die Sache lohnt. Also fang ich an:&lt;br /&gt;
&lt;br /&gt;
*volatile, Oldenburg, AVRs, RC 0805 und 0603 usw usw bla&lt;br /&gt;
*deadbuglabs, Nürnberg, Atmega: m8, m328P, m168, m32, RC bedrahtet + SMD&lt;br /&gt;
*blackhat-blade, Karlsruhe: Widerstände THT (E12 ~1R - 1M), AVRs, Trafos, 1Nxxx Dioden, diverses&lt;br /&gt;
*Hotty, Karlsruhe: AVRs (DIP und SMD), Widerstände+Kondensatoren(THT und SMD(0603, 0805, 1206), Transistoren, LED-Matrixen, vieles Mehr&lt;br /&gt;
*Esko, Fürth, alles mögliche aber nie das passende ;)&lt;br /&gt;
*muetze1, Rostock, alles mögliche, auch RFT Bestände&lt;br /&gt;
*dkeipp, 36318, alles mögliche, diverse Samples (unbenutzt)&lt;br /&gt;
*bastelfinger, Wiesbaden, TTL-Bausteine, paar Quarze/Quarzoszillatoren&lt;br /&gt;
*Peter2, bei Karlsruhe AVR,TTL,OP,C,R&lt;br /&gt;
*nightstorm99, Brandenburg/Havel, AVR und viel klein Kram&lt;br /&gt;
* Iwan, Wels/Austria: RLink für ST7, ST8, STM32, UPSD / MSP430FET (USB) / einige MSP430er&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40252</id>
		<title>Wer hat was</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Wer_hat_was&amp;diff=40252"/>
		<updated>2009-10-28T17:28:06Z</updated>

		<summary type="html">&lt;p&gt;Ivan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer hat was und wo? :)&lt;br /&gt;
http://www.mikrocontroller.net/topic/155083&lt;br /&gt;
Erstmal sollen sich hier nur Mitmachwillige ihren Wohnort aufschreiben, um zu sehen ob die Sache lohnt. Also fang ich an:&lt;br /&gt;
&lt;br /&gt;
*volatile, Oldenburg, AVRs, RC 0805 und 0603 usw usw bla&lt;br /&gt;
*deadbuglabs, Nürnberg, Atmega: m8, m328P, m168, m32, RC bedrahtet + SMD&lt;br /&gt;
*blackhat-blade, Karlsruhe: Widerstände THT (E12 ~1R - 1M), AVRs, Trafos, 1Nxxx Dioden, diverses&lt;br /&gt;
*Hotty, Karlsruhe: AVRs (DIP und SMD), Widerstände+Kondensatoren(THT und SMD(0603, 0805, 1206), Transistoren, LED-Matrixen, vieles Mehr&lt;br /&gt;
*Esko, Fürth, alles mögliche aber nie das passende ;)&lt;br /&gt;
*muetze1, Rostock, alles mögliche, auch RFT Bestände&lt;br /&gt;
*dkeipp, 36318, alles mögliche, diverse Samples (unbenutzt)&lt;br /&gt;
*bastelfinger, Wiesbaden, TTL-Bausteine, paar Quarze/Quarzoszillatoren&lt;br /&gt;
*Peter2, bei Karlsruhe AVR,TTL,OP,C,R&lt;br /&gt;
*nightstorm99, Brandenburg/Havel, AVR und viel klein Kram&lt;br /&gt;
* Iwan, Wels/Austria: RLink für ST7, ST8, STM32, UPSD / MSP430FET (USB), einige MSP430er&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Z8_encore!&amp;diff=40191</id>
		<title>Z8 encore!</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Z8_encore!&amp;diff=40191"/>
		<updated>2009-10-25T18:53:34Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Peripherie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Z8 encore!, kurz &#039;&#039;&#039;eZ8&#039;&#039;&#039; von [[Zilog]] ist ein flexibler Mikrocontroller mit interessanten Features. Es handelt sich dabei um eine Weiterentwicklung des inzwischen betagten Z8, mit dem sowohl erfahrene Z8- und Z80-Programmierer als auch Neueinsteiger ihre Freude haben können.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Registerbasierte, modifizierte Harvard-Architektur&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 256 bis 4096 Bytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 1 bis 64 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 - 3,6V, IOs 5V-tolerant&lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 20MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: DIP, PLCC, SOIC, SSOP, QFP, LQFP, QFN&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 8 bis 80&lt;br /&gt;
&lt;br /&gt;
===Peripherie===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Low Voltage Detector (LVD)&#039;&#039;&#039;: Löst bei Unterschreitung einer Versorgungsspannungs-Schwelle einen Reset aus.&lt;br /&gt;
* &#039;&#039;&#039;Watchdog Timer (WDT)&#039;&#039;&#039;: Einstellbarer Timer, der einen Reset auslöst, falls er nicht zeitgerecht zurückgesetzt wird.&lt;br /&gt;
* &#039;&#039;&#039;Timer&#039;&#039;&#039;: 16 Bit breit&lt;br /&gt;
* &#039;&#039;&#039;UART&#039;&#039;&#039;: Asynchrone serielle Schnittstelle&lt;br /&gt;
* &#039;&#039;&#039;PWM&#039;&#039;&#039;: Ausgabe eines pulsweiten-modulierten Signals&lt;br /&gt;
* &#039;&#039;&#039;SPI&#039;&#039;&#039;: Serielle Periphere Schnittstelle, mit Unterstützung aller vier Modi. (CPOL und CPHA frei einstellbar).&lt;br /&gt;
* &#039;&#039;&#039;I²C&#039;&#039;&#039;: Adressierbare serielle Schnittstelle, 400kHz, Master und Slave.&lt;br /&gt;
* &#039;&#039;&#039;ADC&#039;&#039;&#039;: Analog-Digital-Konverter, 10 Bit (single ended) 11 Bit (differenzial) Auflösung, mehrere Kanäle, Sigma-Delta.&lt;br /&gt;
* &#039;&#039;&#039;DMA&#039;&#039;&#039;: Erlaubt schnellen Speicher-Datentransfer ohne Mitwirkung der CPU&lt;br /&gt;
* &#039;&#039;&#039;IrDA&#039;&#039;&#039;: Encoder und Decoder zur drahtlosen Kommunikation via Infrarot&lt;br /&gt;
* &#039;&#039;&#039;LED&#039;&#039;&#039;: Treiber zum direkten Anschluß von Leuchtdioden&lt;br /&gt;
* &#039;&#039;&#039;Motor Control (MC)&#039;&#039;&#039;: Controller für sensorlose BLDC-Motoren&lt;br /&gt;
&lt;br /&gt;
===Input/Output===&lt;br /&gt;
&lt;br /&gt;
Die Ein- und Ausgabepins des eZ8 können einzeln als Ein- oder Ausgabepins konfiguriert werden. Es ist möglich, interne Pull-Up-Widerstände zu aktivieren. High-Current-Pins vorhanden. Die Programmierung der Ein- und Ausgänge erfolgt über die Register PxCTL (Control-Register) und PxADDR (Adress-Register). Das Beschreiben des Adressregisters aktiviert hierbei verschiedene Funktionen des Controlregisters.&lt;br /&gt;
&lt;br /&gt;
===Interrupts===&lt;br /&gt;
&lt;br /&gt;
Der eZ8 bietet eine flexible Interruptbearbeitung. Alle Interrupts sind priorisiert. Mit den Befehlen EI und DI können Interrupts global (de)aktiviert werde.Mittels den Registern IRQxENL und IRQxENH sind darüber hinaus alle Interrupts (bis auf RESET und TRAP) in drei Stufen priorisierbar und maskierbar. Ausserdem unterstützt der eZ8 Nested Interrupts, das heißt das ein höher priorisierter IRQ einen niedriger Priorisierten Unterbrechen kann. Nach Abarbeitung des höher Priorisierten wird der Unterbrochene abgearbeitet. Natürlich ist es auch möglich Software-Interrupts zu programmieren.&lt;br /&gt;
&lt;br /&gt;
===Programmierung===&lt;br /&gt;
&lt;br /&gt;
Die Programmierung der Bausteine erfolgt mittels Zilogs &amp;quot;Smart Cable&amp;quot;. Dabei handelt es sich um eine Box, welche an den USB oder die serielle Schnittstelle eines PCs angeschlossen wird. Zwischem dem Smart-Cable und der Zielapplikation reicht eine im einfachsten Falle zweipolige (DBG und RESET) Verbindung zur Programmierung aus.&lt;br /&gt;
&lt;br /&gt;
===Verweise===&lt;br /&gt;
&lt;br /&gt;
* [http://www.zilog.com/index.php?option=com_content&amp;amp;task=view&amp;amp;id=56&amp;amp;businessLine=1&amp;amp;parent_id=2&amp;amp;Itemid=184 Zilog: Hauptseite zum eZ8]&lt;br /&gt;
* [http://www.zilog.com/docs/um0128.pdf Zilog: eZ8 User Manual]&lt;br /&gt;
* [[EZ8 Beispielprogramme]]&lt;br /&gt;
* [[Mikrocontroller_Vergleich]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=EZ8_Beispielprogramme&amp;diff=40190</id>
		<title>EZ8 Beispielprogramme</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=EZ8_Beispielprogramme&amp;diff=40190"/>
		<updated>2009-10-25T18:41:43Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* LED mittels Timer0 blinken lassen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== LED mit integriertem Treiber leuchten lassen ===&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird der integrierte LED-Treiber des [[Z8 encore!]] (eZ8) von [[Zilog]] verwendet, um eine an einem beliebigen Pin an Port C (ganzer Port wird geschaltet) angeschlossene LED leuchten zu lassen. Die verwendeten Adressen beziehen sich auf den Z8F082A.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
INCLUDE &amp;quot;ez8.inc&amp;quot;                       ; Definitionsdatei für eZ8 inkludieren&lt;br /&gt;
&lt;br /&gt;
VECTOR RESET = startme                  ; Den Resetvektor nennen wir &amp;quot;startme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
startme:&lt;br /&gt;
	LDX PCADDR,#%07			; Adressregister Port C für alternative Portfunktion beladen&lt;br /&gt;
	LDX PCCTL, #%FF			; Alle Pins auf alternative Funktion (Led-Treiber)&lt;br /&gt;
	LDX LEDEN, #%FF			; LED-Treiber für alle Pins von Port C konfigurieren&lt;br /&gt;
	LDX LEDLVLH,#%FF		; LED-Treiber auf 13mA einstellen (LED leuchtet)&lt;br /&gt;
	JP startme&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LED mittels Timer0 blinken lassen ===&lt;br /&gt;
&lt;br /&gt;
Dieses Beispiel baut auf dem vorhergehenden auf, es wird wieder der integrierte LED-Treiber des Z8F082A verwendet. Jetzt wollen wir die Led jedoch blinken lassen und verwenden dazu den Timer-Interrupt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
INCLUDE &amp;quot;ez8.inc&amp;quot;              ; Definitionsdatei einbinden&lt;br /&gt;
&lt;br /&gt;
VECTOR RESET = startme         ; Resetvektor&lt;br /&gt;
VECTOR TIMER0 = tim            ; Timervektor&lt;br /&gt;
&lt;br /&gt;
startme:&lt;br /&gt;
  LDX SPL,#%FF                 ; Stackpointer (Kellerspeicher-Zeiger) initialisieren&lt;br /&gt;
  LDX SPH,#%00&lt;br /&gt;
  EI                           ; Interrupts global aktivieren&lt;br /&gt;
  LDX IRQ0ENL,#%20             ; Timer-Interrupt freigeben&lt;br /&gt;
  LDX PCADDR,#%07              ; Adressregister laden&lt;br /&gt;
  LDX PCCTL, #%FF              ; Alternative Funktion von Port C konfigurieren&lt;br /&gt;
  LDX LEDEN, #%FF              ; Led-Treiber einschalten&lt;br /&gt;
  LDX LEDLVLH,#%FF             ; LED level high value (13mA)&lt;br /&gt;
  LDX T0RL, #%00               ; Maximale Timerzeit (=0000) einstellen&lt;br /&gt;
  LDX T0RH, #%00&lt;br /&gt;
  LDX T0CTL1, #%F9             ; Timer 0 Control Register 1 (Prescaler, Mode)&lt;br /&gt;
  LDX T0CTL0, #%E0             ; Timer 0 Control Register 0 (Timer einschalten)&lt;br /&gt;
endlosschleife:                ; Wir haben sonst ja nichts zu tun ;-)&lt;br /&gt;
  JP endlosschleife&lt;br /&gt;
&lt;br /&gt;
tim:&lt;br /&gt;
  XORX LEDEN,#%FF              ; Wenn Timerinterrupt zuschlägt, Treiber XOR FFh&lt;br /&gt;
  IRET                         ; Rüksprung aus ISR&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=EZ8_Beispielprogramme&amp;diff=40189</id>
		<title>EZ8 Beispielprogramme</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=EZ8_Beispielprogramme&amp;diff=40189"/>
		<updated>2009-10-25T18:41:17Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* LED mit integriertem Treiber leuchten lassen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== LED mit integriertem Treiber leuchten lassen ===&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird der integrierte LED-Treiber des [[Z8 encore!]] (eZ8) von [[Zilog]] verwendet, um eine an einem beliebigen Pin an Port C (ganzer Port wird geschaltet) angeschlossene LED leuchten zu lassen. Die verwendeten Adressen beziehen sich auf den Z8F082A.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
INCLUDE &amp;quot;ez8.inc&amp;quot;                       ; Definitionsdatei für eZ8 inkludieren&lt;br /&gt;
&lt;br /&gt;
VECTOR RESET = startme                  ; Den Resetvektor nennen wir &amp;quot;startme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
startme:&lt;br /&gt;
	LDX PCADDR,#%07			; Adressregister Port C für alternative Portfunktion beladen&lt;br /&gt;
	LDX PCCTL, #%FF			; Alle Pins auf alternative Funktion (Led-Treiber)&lt;br /&gt;
	LDX LEDEN, #%FF			; LED-Treiber für alle Pins von Port C konfigurieren&lt;br /&gt;
	LDX LEDLVLH,#%FF		; LED-Treiber auf 13mA einstellen (LED leuchtet)&lt;br /&gt;
	JP startme&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LED mittels Timer0 blinken lassen ===&lt;br /&gt;
&lt;br /&gt;
Dieses Beispiel baut auf dem vorhergehenden auf, es wird wieder der integrierte LED-Treiber verwendet. Jetzt wollen wir die Led jedoch blinken lassen und verwenden dazu den Timer-Interrupt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
INCLUDE &amp;quot;ez8.inc&amp;quot;              ; Definitionsdatei einbinden&lt;br /&gt;
&lt;br /&gt;
VECTOR RESET = startme         ; Resetvektor&lt;br /&gt;
VECTOR TIMER0 = tim            ; Timervektor&lt;br /&gt;
&lt;br /&gt;
startme:&lt;br /&gt;
  LDX SPL,#%FF                 ; Stackpointer (Kellerspeicher-Zeiger) initialisieren&lt;br /&gt;
  LDX SPH,#%00&lt;br /&gt;
  EI                           ; Interrupts global aktivieren&lt;br /&gt;
  LDX IRQ0ENL,#%20             ; Timer-Interrupt freigeben&lt;br /&gt;
  LDX PCADDR,#%07              ; Adressregister laden&lt;br /&gt;
  LDX PCCTL, #%FF              ; Alternative Funktion von Port C konfigurieren&lt;br /&gt;
  LDX LEDEN, #%FF              ; Led-Treiber einschalten&lt;br /&gt;
  LDX LEDLVLH,#%FF             ; LED level high value (13mA)&lt;br /&gt;
  LDX T0RL, #%00               ; Maximale Timerzeit (=0000) einstellen&lt;br /&gt;
  LDX T0RH, #%00&lt;br /&gt;
  LDX T0CTL1, #%F9             ; Timer 0 Control Register 1 (Prescaler, Mode)&lt;br /&gt;
  LDX T0CTL0, #%E0             ; Timer 0 Control Register 0 (Timer einschalten)&lt;br /&gt;
endlosschleife:                ; Wir haben sonst ja nichts zu tun ;-)&lt;br /&gt;
  JP endlosschleife&lt;br /&gt;
&lt;br /&gt;
tim:&lt;br /&gt;
  XORX LEDEN,#%FF              ; Wenn Timerinterrupt zuschlägt, Treiber XOR FFh&lt;br /&gt;
  IRET                         ; Rüksprung aus ISR&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Z8_encore&amp;diff=40130</id>
		<title>Z8 encore</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Z8_encore&amp;diff=40130"/>
		<updated>2009-10-22T18:54:05Z</updated>

		<summary type="html">&lt;p&gt;Ivan: Weiterleitung nach Z8 encore! erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Z8_encore!]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Z8_encore!&amp;diff=40129</id>
		<title>Z8 encore!</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Z8_encore!&amp;diff=40129"/>
		<updated>2009-10-22T18:40:39Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Interrupts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Z8 encore!, kurz &#039;&#039;&#039;eZ8&#039;&#039;&#039; von [[Zilog]] ist ein flexibler Mikrocontroller mit interessanten Features. Es handelt sich dabei um eine Weiterentwicklung des inzwischen betagten Z8, mit dem sowohl erfahrene Z8- und Z80-Programmierer als auch Neueinsteiger ihre Freude haben können.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Registerbasierte, modifizierte Harvard-Architektur&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 256 bis 4096 Bytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 1 bis 64 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 - 3,6V, IOs 5V-tolerant&lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 20MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: DIP, PLCC, SOIC, SSOP, QFP, LQFP, QFN&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 8 bis 80&lt;br /&gt;
&lt;br /&gt;
===Peripherie===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Low Voltage Detector (LVD)&#039;&#039;&#039;: Löst bei Unterschreitung einer Versorgungsspannungs-Schwelle einen Reset aus.&lt;br /&gt;
* &#039;&#039;&#039;Watchdog Timer (WDT)&#039;&#039;&#039;: Einstellbarer Timer, der einen Reset auslöst, falls er nicht zeitgerecht zurückgesetzt wird.&lt;br /&gt;
* &#039;&#039;&#039;Timer&#039;&#039;&#039;: 16 Bit breit&lt;br /&gt;
* &#039;&#039;&#039;PWM&#039;&#039;&#039;: Ausgabe eines pulsweiten-modulierten Signals&lt;br /&gt;
* &#039;&#039;&#039;SPI&#039;&#039;&#039;: Serielle Periphere Schnittstelle, mit Unterstützung aller vier Modi. (CPOL und CPHA frei einstellbar).&lt;br /&gt;
* &#039;&#039;&#039;I²C&#039;&#039;&#039;: Adressierbare serielle Schnittstelle, 400kHz, Master und Slave.&lt;br /&gt;
* &#039;&#039;&#039;ADC&#039;&#039;&#039;: Analog-Digital-Konverter, 10 Bit (single ended) 11 Bit (differenzial) Auflösung, mehrere Kanäle, Sigma-Delta.&lt;br /&gt;
* &#039;&#039;&#039;IrDA&#039;&#039;&#039;: Encoder und Decoder zur drahtlosen Kommunikation via Infrarot&lt;br /&gt;
* &#039;&#039;&#039;LED&#039;&#039;&#039;: Treiber zum direkten Anschluß von Leuchtdioden&lt;br /&gt;
* &#039;&#039;&#039;Motor Control (MC)&#039;&#039;&#039;: Controller für sensorlose BLDC-Motoren&lt;br /&gt;
&lt;br /&gt;
===Input/Output===&lt;br /&gt;
&lt;br /&gt;
Die Ein- und Ausgabepins des eZ8 können einzeln als Ein- oder Ausgabepins konfiguriert werden. Es ist möglich, interne Pull-Up-Widerstände zu aktivieren. High-Current-Pins vorhanden. Die Programmierung der Ein- und Ausgänge erfolgt über die Register PxCTL (Control-Register) und PxADDR (Adress-Register). Das Beschreiben des Adressregisters aktiviert hierbei verschiedene Funktionen des Controlregisters.&lt;br /&gt;
&lt;br /&gt;
===Interrupts===&lt;br /&gt;
&lt;br /&gt;
Der eZ8 bietet eine flexible Interruptbearbeitung. Alle Interrupts sind priorisiert. Mit den Befehlen EI und DI können Interrupts global (de)aktiviert werde.Mittels den Registern IRQxENL und IRQxENH sind darüber hinaus alle Interrupts (bis auf RESET und TRAP) in drei Stufen priorisierbar und maskierbar. Ausserdem unterstützt der eZ8 Nested Interrupts, das heißt das ein höher priorisierter IRQ einen niedriger Priorisierten Unterbrechen kann. Nach Abarbeitung des höher Priorisierten wird der Unterbrochene abgearbeitet. Natürlich ist es auch möglich Software-Interrupts zu programmieren.&lt;br /&gt;
&lt;br /&gt;
===Programmierung===&lt;br /&gt;
&lt;br /&gt;
Die Programmierung der Bausteine erfolgt mittels Zilogs &amp;quot;Smart Cable&amp;quot;. Dabei handelt es sich um eine Box, welche an den USB oder die serielle Schnittstelle eines PCs angeschlossen wird. Zwischem dem Smart-Cable und der Zielapplikation reicht eine im einfachsten Falle zweipolige (DBG und RESET) Verbindung zur Programmierung aus.&lt;br /&gt;
&lt;br /&gt;
===Verweise===&lt;br /&gt;
&lt;br /&gt;
* [http://www.zilog.com/index.php?option=com_content&amp;amp;task=view&amp;amp;id=56&amp;amp;businessLine=1&amp;amp;parent_id=2&amp;amp;Itemid=184 Zilog: Hauptseite zum eZ8]&lt;br /&gt;
* [http://www.zilog.com/docs/um0128.pdf Zilog: eZ8 User Manual]&lt;br /&gt;
* [[EZ8 Beispielprogramme]]&lt;br /&gt;
* [[Mikrocontroller_Vergleich]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Z8_encore!&amp;diff=40128</id>
		<title>Z8 encore!</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Z8_encore!&amp;diff=40128"/>
		<updated>2009-10-22T18:39:54Z</updated>

		<summary type="html">&lt;p&gt;Ivan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Z8 encore!, kurz &#039;&#039;&#039;eZ8&#039;&#039;&#039; von [[Zilog]] ist ein flexibler Mikrocontroller mit interessanten Features. Es handelt sich dabei um eine Weiterentwicklung des inzwischen betagten Z8, mit dem sowohl erfahrene Z8- und Z80-Programmierer als auch Neueinsteiger ihre Freude haben können.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Registerbasierte, modifizierte Harvard-Architektur&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 256 bis 4096 Bytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 1 bis 64 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 - 3,6V, IOs 5V-tolerant&lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 20MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: DIP, PLCC, SOIC, SSOP, QFP, LQFP, QFN&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 8 bis 80&lt;br /&gt;
&lt;br /&gt;
===Peripherie===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Low Voltage Detector (LVD)&#039;&#039;&#039;: Löst bei Unterschreitung einer Versorgungsspannungs-Schwelle einen Reset aus.&lt;br /&gt;
* &#039;&#039;&#039;Watchdog Timer (WDT)&#039;&#039;&#039;: Einstellbarer Timer, der einen Reset auslöst, falls er nicht zeitgerecht zurückgesetzt wird.&lt;br /&gt;
* &#039;&#039;&#039;Timer&#039;&#039;&#039;: 16 Bit breit&lt;br /&gt;
* &#039;&#039;&#039;PWM&#039;&#039;&#039;: Ausgabe eines pulsweiten-modulierten Signals&lt;br /&gt;
* &#039;&#039;&#039;SPI&#039;&#039;&#039;: Serielle Periphere Schnittstelle, mit Unterstützung aller vier Modi. (CPOL und CPHA frei einstellbar).&lt;br /&gt;
* &#039;&#039;&#039;I²C&#039;&#039;&#039;: Adressierbare serielle Schnittstelle, 400kHz, Master und Slave.&lt;br /&gt;
* &#039;&#039;&#039;ADC&#039;&#039;&#039;: Analog-Digital-Konverter, 10 Bit (single ended) 11 Bit (differenzial) Auflösung, mehrere Kanäle, Sigma-Delta.&lt;br /&gt;
* &#039;&#039;&#039;IrDA&#039;&#039;&#039;: Encoder und Decoder zur drahtlosen Kommunikation via Infrarot&lt;br /&gt;
* &#039;&#039;&#039;LED&#039;&#039;&#039;: Treiber zum direkten Anschluß von Leuchtdioden&lt;br /&gt;
* &#039;&#039;&#039;Motor Control (MC)&#039;&#039;&#039;: Controller für sensorlose BLDC-Motoren&lt;br /&gt;
&lt;br /&gt;
===Input/Output===&lt;br /&gt;
&lt;br /&gt;
Die Ein- und Ausgabepins des eZ8 können einzeln als Ein- oder Ausgabepins konfiguriert werden. Es ist möglich, interne Pull-Up-Widerstände zu aktivieren. High-Current-Pins vorhanden. Die Programmierung der Ein- und Ausgänge erfolgt über die Register PxCTL (Control-Register) und PxADDR (Adress-Register). Das Beschreiben des Adressregisters aktiviert hierbei verschiedene Funktionen des Controlregisters.&lt;br /&gt;
&lt;br /&gt;
===Interrupts===&lt;br /&gt;
&lt;br /&gt;
Der eZ8 bietet eine flexible Interruptbearbeitung. Alle Interrupts sind priorisiert. Mit den Befehlen EI und DI können Interrupts global (de)aktiviert werde.Mittels den Registern IRQxENL und IRQxENH sind darüber hinaus alle Interrupts (bis auf RESET und TRAP) in drei Stufen priorisierbar und maskierbar. Ausserdem unterstützt der eZ8 Nested Interrupts, das heißt dass ein höher priorisierter IRQ einen niedriger Priorisierten Unterbrechen kann. Nach Abarbeitung des höher Priorisierten wird der Unterbrochene abgearbeitet. Natürlich ist es auch möglich Software-Interrupts zu programmieren.&lt;br /&gt;
&lt;br /&gt;
===Programmierung===&lt;br /&gt;
&lt;br /&gt;
Die Programmierung der Bausteine erfolgt mittels Zilogs &amp;quot;Smart Cable&amp;quot;. Dabei handelt es sich um eine Box, welche an den USB oder die serielle Schnittstelle eines PCs angeschlossen wird. Zwischem dem Smart-Cable und der Zielapplikation reicht eine im einfachsten Falle zweipolige (DBG und RESET) Verbindung zur Programmierung aus.&lt;br /&gt;
&lt;br /&gt;
===Verweise===&lt;br /&gt;
&lt;br /&gt;
* [http://www.zilog.com/index.php?option=com_content&amp;amp;task=view&amp;amp;id=56&amp;amp;businessLine=1&amp;amp;parent_id=2&amp;amp;Itemid=184 Zilog: Hauptseite zum eZ8]&lt;br /&gt;
* [http://www.zilog.com/docs/um0128.pdf Zilog: eZ8 User Manual]&lt;br /&gt;
* [[EZ8 Beispielprogramme]]&lt;br /&gt;
* [[Mikrocontroller_Vergleich]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Z8_encore!&amp;diff=40124</id>
		<title>Z8 encore!</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Z8_encore!&amp;diff=40124"/>
		<updated>2009-10-22T16:33:38Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Verweise */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Z8 encore!, kurz &#039;&#039;&#039;eZ8&#039;&#039;&#039; von [[Zilog]] ist ein flexibler Mikrocontroller mit interessanten Features. Es handelt sich dabei um eine Weiterentwicklung des inzwischen betagten Z8, mit dem sowohl erfahrene Z8- und Z80-Programmierer als auch Neueinsteiger ihre Freude haben können.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Registerbasierte, modifizierte Harvard-Architektur&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 256 bis 4096 Bytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 1 bis 64 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 - 3,6V, IOs 5V-tolerant&lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 20MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: DIP, PLCC, SOIC, SSOP, QFP, LQFP, QFN&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 8 bis 80&lt;br /&gt;
&lt;br /&gt;
===Peripherie===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Low Voltage Detector (LVD)&#039;&#039;&#039;: Löst bei Unterschreitung einer Versorgungsspannungs-Schwelle einen Reset aus.&lt;br /&gt;
* &#039;&#039;&#039;Watchdog Timer (WDT)&#039;&#039;&#039;: Einstellbarer Timer, der einen Reset auslöst, falls er nicht zeitgerecht zurückgesetzt wird.&lt;br /&gt;
* &#039;&#039;&#039;Timer&#039;&#039;&#039;: 16 Bit breit&lt;br /&gt;
* &#039;&#039;&#039;PWM&#039;&#039;&#039;: Ausgabe eines pulsweiten-modulierten Signals&lt;br /&gt;
* &#039;&#039;&#039;SPI&#039;&#039;&#039;: Serielle Periphere Schnittstelle, mit Unterstützung aller vier Modi. (CPOL und CPHA frei einstellbar).&lt;br /&gt;
* &#039;&#039;&#039;I²C&#039;&#039;&#039;: Adressierbare serielle Schnittstelle, 400kHz, Master und Slave.&lt;br /&gt;
* &#039;&#039;&#039;ADC&#039;&#039;&#039;: Analog-Digital-Konverter, 10 Bit (single ended) 11 Bit (differenzial) Auflösung, mehrere Kanäle, Sigma-Delta.&lt;br /&gt;
* &#039;&#039;&#039;IrDA&#039;&#039;&#039;: Encoder und Decoder zur drahtlosen Kommunikation via Infrarot&lt;br /&gt;
* &#039;&#039;&#039;LED&#039;&#039;&#039;: Treiber zum direkten Anschluß von Leuchtdioden&lt;br /&gt;
* &#039;&#039;&#039;Motor Control (MC)&#039;&#039;&#039;: Controller für sensorlose BLDC-Motoren&lt;br /&gt;
&lt;br /&gt;
===Input/Output===&lt;br /&gt;
&lt;br /&gt;
Die Ein- und Ausgabepins des eZ8 können einzeln als Ein- oder Ausgabepins konfiguriert werden. Es ist möglich, interne Pull-Up-Widerstände zu aktivieren. High-Current-Pins vorhanden. Die Programmierung der Ein- und Ausgänge erfolgt über die Register PxCTL (Control-Register) und PxADDR (Adress-Register). Das Beschreiben des Adressregisters aktiviert hierbei verschiedene Funktionen des Controlregisters&lt;br /&gt;
&lt;br /&gt;
===Programmierung===&lt;br /&gt;
&lt;br /&gt;
Die Programmierung der Bausteine erfolgt mittels Zilogs &amp;quot;Smart Cable&amp;quot;. Dabei handelt es sich um eine Box, welche an den USB oder die serielle Schnittstelle eines PCs angeschlossen wird. Zwischem dem Smart-Cable und der Zielapplikation reicht eine im einfachsten Falle zweipolige (DBG und RESET) Verbindung zur Programmierung aus.&lt;br /&gt;
&lt;br /&gt;
===Verweise===&lt;br /&gt;
&lt;br /&gt;
* [http://www.zilog.com/index.php?option=com_content&amp;amp;task=view&amp;amp;id=56&amp;amp;businessLine=1&amp;amp;parent_id=2&amp;amp;Itemid=184 Zilog: Hauptseite zum eZ8]&lt;br /&gt;
* [http://www.zilog.com/docs/um0128.pdf Zilog: eZ8 User Manual]&lt;br /&gt;
* [[EZ8 Beispielprogramme]]&lt;br /&gt;
* [[Mikrocontroller_Vergleich]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mikrocontroller_Vergleich&amp;diff=40123</id>
		<title>Mikrocontroller Vergleich</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mikrocontroller_Vergleich&amp;diff=40123"/>
		<updated>2009-10-22T16:32:28Z</updated>

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

		<summary type="html">&lt;p&gt;Ivan: /* LED mit integriertem Treiber leuchten lassen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== LED mit integriertem Treiber leuchten lassen ===&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird der integrierte LED-Treiber des [[Z8 encore!]] (eZ8) von [[Zilog]] verwendet, um eine an einem beliebigen Pin an Port C (ganzer Port wird geschaltet) angeschlossene LED leuchten zu lassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
INCLUDE &amp;quot;ez8.inc&amp;quot;                       ; Definitionsdatei für eZ8 inkludieren&lt;br /&gt;
&lt;br /&gt;
VECTOR RESET = startme                  ; Den Resetvektor nennen wir &amp;quot;startme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
startme:&lt;br /&gt;
	LDX PCADDR,#%07			; Adressregister Port C für alternative Portfunktion beladen&lt;br /&gt;
	LDX PCCTL, #%FF			; Alle Pins auf alternative Funktion (Led-Treiber)&lt;br /&gt;
	LDX LEDEN, #%FF			; LED-Treiber für alle Pins von Port C konfigurieren&lt;br /&gt;
	LDX LEDLVLH,#%FF		; LED-Treiber auf 13mA einstellen (LED leuchtet)&lt;br /&gt;
	JP startme&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LED mittels Timer0 blinken lassen ===&lt;br /&gt;
&lt;br /&gt;
Dieses Beispiel baut auf dem vorhergehenden auf, es wird wieder der integrierte LED-Treiber verwendet. Jetzt wollen wir die Led jedoch blinken lassen und verwenden dazu den Timer-Interrupt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
INCLUDE &amp;quot;ez8.inc&amp;quot;              ; Definitionsdatei einbinden&lt;br /&gt;
&lt;br /&gt;
VECTOR RESET = startme         ; Resetvektor&lt;br /&gt;
VECTOR TIMER0 = tim            ; Timervektor&lt;br /&gt;
&lt;br /&gt;
startme:&lt;br /&gt;
  LDX SPL,#%FF                 ; Stackpointer (Kellerspeicher-Zeiger) initialisieren&lt;br /&gt;
  LDX SPH,#%00&lt;br /&gt;
  EI                           ; Interrupts global aktivieren&lt;br /&gt;
  LDX IRQ0ENL,#%20             ; Timer-Interrupt freigeben&lt;br /&gt;
  LDX PCADDR,#%07              ; Adressregister laden&lt;br /&gt;
  LDX PCCTL, #%FF              ; Alternative Funktion von Port C konfigurieren&lt;br /&gt;
  LDX LEDEN, #%FF              ; Led-Treiber einschalten&lt;br /&gt;
  LDX LEDLVLH,#%FF             ; LED level high value (13mA)&lt;br /&gt;
  LDX T0RL, #%00               ; Maximale Timerzeit (=0000) einstellen&lt;br /&gt;
  LDX T0RH, #%00&lt;br /&gt;
  LDX T0CTL1, #%F9             ; Timer 0 Control Register 1 (Prescaler, Mode)&lt;br /&gt;
  LDX T0CTL0, #%E0             ; Timer 0 Control Register 0 (Timer einschalten)&lt;br /&gt;
endlosschleife:                ; Wir haben sonst ja nichts zu tun ;-)&lt;br /&gt;
  JP endlosschleife&lt;br /&gt;
&lt;br /&gt;
tim:&lt;br /&gt;
  XORX LEDEN,#%FF              ; Wenn Timerinterrupt zuschlägt, Treiber XOR FFh&lt;br /&gt;
  IRET                         ; Rüksprung aus ISR&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=EZ8_Beispielprogramme&amp;diff=40121</id>
		<title>EZ8 Beispielprogramme</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=EZ8_Beispielprogramme&amp;diff=40121"/>
		<updated>2009-10-22T16:30:14Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* LED mit integriertem Treiber leuchten lassen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== LED mit integriertem Treiber leuchten lassen ===&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird der integrierte LED-Treiber des [[Z8 encore!]] von [[Zilog]] verwendet, um eine an einem beliebigen Pin an Port C (ganzer Port wird geschaltet) angeschlossene LED leuchten zu lassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
INCLUDE &amp;quot;ez8.inc&amp;quot;                       ; Definitionsdatei für eZ8 inkludieren&lt;br /&gt;
&lt;br /&gt;
VECTOR RESET = startme                  ; Den Resetvektor nennen wir &amp;quot;startme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
startme:&lt;br /&gt;
	LDX PCADDR,#%07			; Adressregister Port C für alternative Portfunktion beladen&lt;br /&gt;
	LDX PCCTL, #%FF			; Alle Pins auf alternative Funktion (Led-Treiber)&lt;br /&gt;
	LDX LEDEN, #%FF			; LED-Treiber für alle Pins von Port C konfigurieren&lt;br /&gt;
	LDX LEDLVLH,#%FF		; LED-Treiber auf 13mA einstellen (LED leuchtet)&lt;br /&gt;
	JP startme&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LED mittels Timer0 blinken lassen ===&lt;br /&gt;
&lt;br /&gt;
Dieses Beispiel baut auf dem vorhergehenden auf, es wird wieder der integrierte LED-Treiber verwendet. Jetzt wollen wir die Led jedoch blinken lassen und verwenden dazu den Timer-Interrupt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
INCLUDE &amp;quot;ez8.inc&amp;quot;              ; Definitionsdatei einbinden&lt;br /&gt;
&lt;br /&gt;
VECTOR RESET = startme         ; Resetvektor&lt;br /&gt;
VECTOR TIMER0 = tim            ; Timervektor&lt;br /&gt;
&lt;br /&gt;
startme:&lt;br /&gt;
  LDX SPL,#%FF                 ; Stackpointer (Kellerspeicher-Zeiger) initialisieren&lt;br /&gt;
  LDX SPH,#%00&lt;br /&gt;
  EI                           ; Interrupts global aktivieren&lt;br /&gt;
  LDX IRQ0ENL,#%20             ; Timer-Interrupt freigeben&lt;br /&gt;
  LDX PCADDR,#%07              ; Adressregister laden&lt;br /&gt;
  LDX PCCTL, #%FF              ; Alternative Funktion von Port C konfigurieren&lt;br /&gt;
  LDX LEDEN, #%FF              ; Led-Treiber einschalten&lt;br /&gt;
  LDX LEDLVLH,#%FF             ; LED level high value (13mA)&lt;br /&gt;
  LDX T0RL, #%00               ; Maximale Timerzeit (=0000) einstellen&lt;br /&gt;
  LDX T0RH, #%00&lt;br /&gt;
  LDX T0CTL1, #%F9             ; Timer 0 Control Register 1 (Prescaler, Mode)&lt;br /&gt;
  LDX T0CTL0, #%E0             ; Timer 0 Control Register 0 (Timer einschalten)&lt;br /&gt;
endlosschleife:                ; Wir haben sonst ja nichts zu tun ;-)&lt;br /&gt;
  JP endlosschleife&lt;br /&gt;
&lt;br /&gt;
tim:&lt;br /&gt;
  XORX LEDEN,#%FF              ; Wenn Timerinterrupt zuschlägt, Treiber XOR FFh&lt;br /&gt;
  IRET                         ; Rüksprung aus ISR&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Z8_encore!&amp;diff=40120</id>
		<title>Z8 encore!</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Z8_encore!&amp;diff=40120"/>
		<updated>2009-10-22T16:29:27Z</updated>

		<summary type="html">&lt;p&gt;Ivan: /* Programmierung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Z8 encore!, kurz &#039;&#039;&#039;eZ8&#039;&#039;&#039; von [[Zilog]] ist ein flexibler Mikrocontroller mit interessanten Features. Es handelt sich dabei um eine Weiterentwicklung des inzwischen betagten Z8, mit dem sowohl erfahrene Z8- und Z80-Programmierer als auch Neueinsteiger ihre Freude haben können.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Architektur&#039;&#039;&#039;: Registerbasierte, modifizierte Harvard-Architektur&lt;br /&gt;
* &#039;&#039;&#039;Hauptspeicher&#039;&#039;&#039;: 256 bis 4096 Bytes SRAM&lt;br /&gt;
* &#039;&#039;&#039;Programmspeicher&#039;&#039;&#039;: 1 bis 64 kBytes Flash&lt;br /&gt;
* &#039;&#039;&#039;Spannungsversorgung&#039;&#039;&#039;: 1,8 - 3,6V, IOs 5V-tolerant&lt;br /&gt;
* &#039;&#039;&#039;Taktfrequenz&#039;&#039;&#039;: bis 20MHz&lt;br /&gt;
* &#039;&#039;&#039;Bauformen&#039;&#039;&#039;: DIP, PLCC, SOIC, SSOP, QFP, LQFP, QFN&lt;br /&gt;
* &#039;&#039;&#039;Pins&#039;&#039;&#039;: 8 bis 80&lt;br /&gt;
&lt;br /&gt;
===Peripherie===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Low Voltage Detector (LVD)&#039;&#039;&#039;: Löst bei Unterschreitung einer Versorgungsspannungs-Schwelle einen Reset aus.&lt;br /&gt;
* &#039;&#039;&#039;Watchdog Timer (WDT)&#039;&#039;&#039;: Einstellbarer Timer, der einen Reset auslöst, falls er nicht zeitgerecht zurückgesetzt wird.&lt;br /&gt;
* &#039;&#039;&#039;Timer&#039;&#039;&#039;: 16 Bit breit&lt;br /&gt;
* &#039;&#039;&#039;PWM&#039;&#039;&#039;: Ausgabe eines pulsweiten-modulierten Signals&lt;br /&gt;
* &#039;&#039;&#039;SPI&#039;&#039;&#039;: Serielle Periphere Schnittstelle, mit Unterstützung aller vier Modi. (CPOL und CPHA frei einstellbar).&lt;br /&gt;
* &#039;&#039;&#039;I²C&#039;&#039;&#039;: Adressierbare serielle Schnittstelle, 400kHz, Master und Slave.&lt;br /&gt;
* &#039;&#039;&#039;ADC&#039;&#039;&#039;: Analog-Digital-Konverter, 10 Bit (single ended) 11 Bit (differenzial) Auflösung, mehrere Kanäle, Sigma-Delta.&lt;br /&gt;
* &#039;&#039;&#039;IrDA&#039;&#039;&#039;: Encoder und Decoder zur drahtlosen Kommunikation via Infrarot&lt;br /&gt;
* &#039;&#039;&#039;LED&#039;&#039;&#039;: Treiber zum direkten Anschluß von Leuchtdioden&lt;br /&gt;
* &#039;&#039;&#039;Motor Control (MC)&#039;&#039;&#039;: Controller für sensorlose BLDC-Motoren&lt;br /&gt;
&lt;br /&gt;
===Input/Output===&lt;br /&gt;
&lt;br /&gt;
Die Ein- und Ausgabepins des eZ8 können einzeln als Ein- oder Ausgabepins konfiguriert werden. Es ist möglich, interne Pull-Up-Widerstände zu aktivieren. High-Current-Pins vorhanden. Die Programmierung der Ein- und Ausgänge erfolgt über die Register PxCTL (Control-Register) und PxADDR (Adress-Register). Das Beschreiben des Adressregisters aktiviert hierbei verschiedene Funktionen des Controlregisters&lt;br /&gt;
&lt;br /&gt;
===Programmierung===&lt;br /&gt;
&lt;br /&gt;
Die Programmierung der Bausteine erfolgt mittels Zilogs &amp;quot;Smart Cable&amp;quot;. Dabei handelt es sich um eine Box, welche an den USB oder die serielle Schnittstelle eines PCs angeschlossen wird. Zwischem dem Smart-Cable und der Zielapplikation reicht eine im einfachsten Falle zweipolige (DBG und RESET) Verbindung zur Programmierung aus.&lt;br /&gt;
&lt;br /&gt;
===Verweise===&lt;br /&gt;
&lt;br /&gt;
* [http://www.zilog.com/index.php?option=com_content&amp;amp;task=view&amp;amp;id=56&amp;amp;businessLine=1&amp;amp;parent_id=2&amp;amp;Itemid=184 Zilog: Hauptseite zum eZ8]&lt;br /&gt;
* [http://www.zilog.com/docs/um0128.pdf Zilog: eZ8 User Manual]&lt;br /&gt;
* [[EZ8 Beispielprogramme]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Ivan</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mikrocontroller_Vergleich&amp;diff=40119</id>
		<title>Mikrocontroller Vergleich</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mikrocontroller_Vergleich&amp;diff=40119"/>
		<updated>2009-10-22T16:28:23Z</updated>

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

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

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

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

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

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

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