https://rn-wissen.de/wiki/api.php?action=feedcontributions&user=PhpSupporter&feedformat=atomRN-Wissen.de - Benutzerbeiträge [de]2024-03-28T09:58:07ZBenutzerbeiträgeMediaWiki 1.25.1https://rn-wissen.de/wiki/index.php?title=RN-Wissen.de:Site_support&diff=5946RN-Wissen.de:Site support2006-02-12T23:25:04Z<p>PhpSupporter: </p>
<hr />
<div>Das Roboternetz ist ein privates Projekt an dem alle ehrenamtlich dran mitwirken.<br />
<br />
Der bisherige Erfolg ist in erster Linie von den Benutzern abhängig. Ihr könnt das Portal durch viele Dinge unterstützen:<br />
<br />
<br />
* indem Ihr einen Artikel schreibt und euer Fachwissen in einem Bereich einbringt<br />
* indem Ihr ein Bauanleitung oder Schaltung veröffentlich und beschreibt<br />
* indem Ihr einen vorhanden Artikel weiter ausbaut<br />
* indem Ihr als Lektor tätig werdet und Fehler in Artikel ausbügelt<br />
* indem Ihr die Werbebanner, der Sponsoren als auch Google beachtet und das Angebot durch einen Klick mal anschaut (diese Werbung ist notwendig und dient zumindest zur Finazierung der Betriebskosten (Serverkosten)) <br />
* wenn Ihr wollt, auch durch eine direkte Spende. [[https://www.paypal.com/cgi-bin/webscr?cmd=_xclick-subscriptions&business=frank%40brall%2ecom&item_name=Roboternetzsponsor&item_number=Roboternetzsponsor&no_shipping=1&no_note=1&currency_code=EUR&lc=DE&bn=PP%2dSubscriptionsBF&charset=UTF%2d8&a3=2%2e00&p3=12&t3=M&src=1&sra=1 Per PayPal 2,00 Euro pro Jahr sponsern]] Als kleines Dankeschön erhalten Sponsoren ein erhöhtes Upload Limit im Forum, von 5MB statt 1 MB. Forum NickName bei PayPal Anweisung angeben. <br />
<center><br />
http://www.roboternetz.de/bilder/paypal.gif<br />
</center><br />
* wenn Du schon einige Monate dabei und über 18 Jahre alt bist und vielleicht Dein Fachwissen schon durch zahlreiche Beiträger gezeigt hast, so kannst Du dich auch als Moderator bewerben (PM an Webmaster/Admin webmaster(at)roboternetz.de und ein Forum betreuen.<br />
<br />
''Es wäre schon toll wenn alle User die diese Seiten nutzen, zumindest auch durch einen Punkt Ihre Unterstützung zeigen. ''<br />
<br />
<br />
Resourcen eines zweiten Servers werden bereits durch den Admin bereitgestellt weil die<br />
Zugriffszeiten und Ausfälle ohne diesen nicht mehr erträglich waren. Zuküftig soll dieser<br />
jedoch irgendwann durch einen zweiten Roboternetz Server, der durch Sponsoren finanziert <br />
werden soll, ersetzt werden. <br />
<br />
<center><br />
http://www.roboternetz.de/phpBB2/server.png<br />
</center><br />
<br />
<br />
<br />
<br />
<center><br />
http://www.roboternetz.de/bilder/rnwissen.jpg<br />
</center><br />
<br />
<br />
==Weblinks==<br />
* [http://www.roboternetz.de/phpBB2/werbung.php Sponsoren / Werben]<br />
* [http://lambdanet.de/index.php?p=358&l=1 Rechenzentrum LambdaNet]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=RN-Wissen.de:Site_support&diff=5945RN-Wissen.de:Site support2006-02-12T23:19:52Z<p>PhpSupporter: </p>
<hr />
<div>Das Roboternetz ist ein privates Projekt an dem alle ehrenamtlich dran mitwirken.<br />
<br />
Der bisherige Erfolg ist in erster Linie von den Benutzern abhängig. Ihr könnt das Portal durch viele Dinge unterstützen:<br />
<br />
<br />
* indem Ihr einen Artikel schreibt und euer Fachwissen in einem Bereich einbringt<br />
* indem Ihr ein Bauanleitung oder Schaltung veröffentlich und beschreibt<br />
* indem Ihr einen vorhanden Artikel weiter ausbaut<br />
* indem Ihr als Lektor tätig werdet und Fehler in Artikel ausbügelt<br />
* indem Ihr die Werbebanner, der Sponsoren als auch Google beachtet und das Angebot durch einen Klick mal anschaut (diese Werbung ist notwendig und dient zumindest zur Finazierung der Betriebskosten (Serverkosten)) <br />
* wenn Ihr wollt, auch durch eine direkte Spende. [[https://www.paypal.com/cgi-bin/webscr?cmd=_xclick-subscriptions&business=frank%40brall%2ecom&item_name=Roboternetzsponsor&item_number=Roboternetzsponsor&no_shipping=1&no_note=1&currency_code=EUR&lc=DE&bn=PP%2dSubscriptionsBF&charset=UTF%2d8&a3=2%2e00&p3=12&t3=M&src=1&sra=1 Per PayPal 2,00 Euro pro Jahr sponsern]] Als kleines Dankeschön erhalten Sponsoren ein erhöhtes Upload Limit im Forum, von 5MB statt 1 MB. Forum NickName bei PayPal Anweisung angeben.<br />
* wenn Du schon einige Monate dabei und über 18 Jahre alt bist und vielleicht Dein Fachwissen schon durch zahlreiche Beiträger gezeigt hast, so kannst Du dich auch als Moderator bewerben (PM an Webmaster/Admin webmaster(at)roboternetz.de und ein Forum betreuen.<br />
<br />
''Es wäre schon toll wenn alle User die diese Seiten nutzen, zumindest auch durch einen Punkt Ihre Unterstützung zeigen. ''<br />
<br />
<br />
Resourcen eines zweiten Servers werden bereits durch den Admin bereitgestellt weil die<br />
Zugriffszeiten und Ausfälle ohne diesen nicht mehr erträglich waren. Zuküftig soll dieser<br />
jedoch irgendwann durch einen zweiten Roboternetz Server, der durch Sponsoren finanziert <br />
werden soll, ersetzt werden. <br />
<br />
<center><br />
http://www.roboternetz.de/phpBB2/server.png<br />
</center><br />
<br />
<br />
<br />
<br />
<center><br />
http://www.roboternetz.de/bilder/rnwissen.jpg<br />
</center><br />
<br />
<br />
==Weblinks==<br />
* [http://www.roboternetz.de/phpBB2/werbung.php Sponsoren / Werben]<br />
* [http://lambdanet.de/index.php?p=358&l=1 Rechenzentrum LambdaNet]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=SMD&diff=5944SMD2006-02-12T22:32:52Z<p>PhpSupporter: Wiederhergestellt zur letzten Änderung von Frank</p>
<hr />
<div>==Was sind SMD-Bauteile?==<br />
[[Bild:smdbauteile.jpg|right|SMD-Bauteile auf einer Platine]]<br />
Im Gegensatz zur "konventionellen" Durchsteck-Technik werden SMD-Bauteile (vom engl. "Surface Mounted Devices") auf der Platinenoberfläche (surface) aufgebracht und verlötet, ohne die Leiterplatte zur Befestigung zusätzlich durchbohren zu müssen. Diese Technologie wird auch als SMT bezeichnet, vom englischen "Surface Mount Technology".<br />
<br />
Im Zuge dieser "drahtlosen" Technologie werden die bislang im sogenannten "Schwallbad" mit den Drahtbeinen an der Platinenunterseite verlöteten "konventionellen" Steck-Bauteile mehr und mehr durch die wesentlich temperaturresistenteren SMD-Komponenten ersetzt. <br />
Während letztere kurzzeitig problemlos Temperaturen von bis zu 240 Grad Celcius verkraften können, ohne Schade zu nehmen, liegt die mögliche Temperaturbelastung bei den bedrahteten Bauteilen in der Regel deutlich niedriger.<br />
Zudem gelten die "neuen" SMD-Komponenten aber auch als zuverlässiger, was der Qualität der gesamten Baugruppe entscheidend zugute kommt, und sind darüberhinaus kostengünstiger und schneller zu verarbeiten.<br />
Durch den Wegfall eines kompletten Arbeitsschrittes aufgrund fehlender Bohrungen bei reinen SMD-Bestückungen und kürzerer Bestückungs- und Lötzeiten enstehen nicht nur signifikante Einsparungspotentiale. Bei konsequenter Nutzung der SMD-Technologie werden zudem erheblich höhere Packungsdichten auf der Platine möglich und damit die im allgemeinen angestrebte oder sogar notwendige Miniaturisierung des Gesamtgehäuses erst möglich.<br />
<br />
<br />
Bei den Hobby-Elektronikern sind SMD-Bauteile relativ wenig verbreitet. Dies liegt vor allem daran, dass die Bauteile wirklich winzig sind und demnach die Kontaktabstände oft unter 1 mm liegen. <br />
Das Löten von SMD Bausteinen ist dadurch wesentlich schwieriger als bei herkömmlichen Bauelementen. Noch schwieriger ist das Auslöten von defekten SMD Bauteilen, hier haben nur noch Profis Chancen. Dem Elektronik-Einsteiger können SMD-Bauteile daher weniger empfohlen werden.<br />
<br />
<br />
[[Bild:smd-dip-atmega32.png|thumb|300px|left|Grössenvergleich zwischen SMD und DIP]]<br />
<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Grundlagen]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Feldeffekttransistor&diff=5943Feldeffekttransistor2006-02-12T22:30:45Z<p>PhpSupporter: </p>
<hr />
<div>Der Feldeffekttransistor, meist als FET (Field Effect Transistor) bezeichnet, ist ein unipolarer [[Transistor]]. Unipolar daher, weil im Gegensatz des bipolaren Transistors, je nach Typ, entweder nur Löcher oder Elektronen am Energietransport beteiligt sind. <br />
<br />
Der FET hat 3 Anschlüsse, Source (Zufluss, Quelle), Gate und Drain (Abfluss). Ein vierter Anschluss Bulk (Substrat) ist bei Einzeltransistoren mit Source verbunden und nicht extra herausgeführt.<br />
<br />
Durch ein elektrisches Feld, hervorgerufen durch eine Steuerspannung zwischen Gate und Source, wird die Leitfähigkeit des Source-Drain-Kanals des Feldeffekt-Transistors beeinflusst. Je nach benutztem Effekt wird unterschieden zwischen MOSFET und JFET (Junction- oder Sperrschicht-FET). JFETs nutzen einen in Sperrrichtung betriebenen p-n-Übergang, um das elektrische Feld zu bilden. Theoretisch kann der auch in Flussrichtung betrieben werden, was allerdings den Vorteil der leistungslosen Ansteuerung zunichte macht.<br />
<br />
<br />
Es gibt folgende Formen von FET's<br />
<br />
- Sperrschicht-Feldeffekt-Transistor (JFET)<br />
<br />
- Schottky-Feldeffekt-Transistor (MESFET)<br />
<br />
- Metalloxidhalbleiter-Feldeffekt-Transistor (MOSFET)<br />
<br />
- High Electron Mobility Transistor (HEMT)<br />
<br />
- Ionen-Sensitiver Feldeffekt-Transistor (ISFET)<br />
<br />
- Organischer Feldeffekttransistor (OFET)<br />
<br />
<br />
Eine typische FET-Schaltstufe:<br />
<br />
http://www.roboternetz.de/phpBB2/files/diode.jpg<br />
<br />
[[Kategorie:Elektronik]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Feldeffekttransistor&diff=5942Feldeffekttransistor2006-02-12T22:30:03Z<p>PhpSupporter: Wiederhergestellt zur letzten Änderung von Oger</p>
<hr />
<div>.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Feldeffekttransistor&diff=5941Feldeffekttransistor2006-02-12T22:29:43Z<p>PhpSupporter: </p>
<hr />
<div>.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=L%C3%B6t-Tutorial&diff=5873Löt-Tutorial2006-02-09T12:43:13Z<p>PhpSupporter: Wiederhergestellt zur letzten Änderung von SprinterSB</p>
<hr />
<div>==Was versteht man unter Löten?==<br />
Löten ist, wenn zwei metallische Werkstücke mit Hilfe von geschmolzenen metallischen Bindemitteln (Lot) verbunden werden. Der Trick dabei ist, daß der Schmelzpunkt des Lots immer niedriger ist als der des zu verbindenden Metalls. Liegt er unter 450°C, spricht man von Weichlöten, liegt er darüber, von Hartlöten. lm Unterschied dazu werden beim Schweißen die zu<br />
verbindenden Metalle durch Erhitzen bis zu ihrem eigenen Schmelzpunkt stofflich miteinander "vereinigt".<br />
Beim Weichlöten werden die Fugen zwischen den zu verbindenden Metallen meist mit einer Legierung aus Blei und Zinn gefüllt. Wichtig ist, daß sie nach dem Erkalten nicht einfach an der Oberfäche des Fremdmetalls klebt, sondern sich mit ihr vereinigt. Dazu muß es ein wenig davon auflösen und in sich aufnehmen, also Mischkristalle in der sogenannten Diffusionszone bilden. Diese Kunst fällt dem Zinn zu, während das Blei für das Verflüssigen des Lots und die mechanische Stabilität der Verbindung verantwortlich ist. Eine gelötete Verbindung besteht aus fünf Schichten:<br />
* Grundmetall <br />
* Mischkristallschicht <br />
* Erstarrtes Lot <br />
* Mischkristallschicht <br />
* Grundmetall <br />
[[Bild:lötkolben25w.gif|right]]<br />
Für die größtmögliche mechanische Stabilität, also die Dauerhaftigkeit einer Lötstelle ist es wichtig, daß die Mischkristallschicht weder zu dick noch zu dünn sein darf. Ein idealer Wert wäre eine Mischkristalldicke von 0,5µ, welche bei 220 bis 280°C und ca. 2 Sekunden Lötzeit zustande kommt. Bei einer zu großen Mischkristallschicht wird die Lötverbindung brüchig und porös, ein geringerer Wert läßt auf schlechte oder keine mechanische Verbindung schließen. <br />
<br />
==Richtiger Lötkolben==<br />
Um das Lot zum Schmelzen zu bringen, ist Wärme erforderlich. Sie zu liefern, ist Aufgabe<br />
des Lötkolbens. Je nach Lötstelle und verwendetem Lot werden Temperaturen von<br />
200-450°C benötigt. Für den Feinelektronik-Bereich liegt die übliche Temperatur zwischen<br />
250 und 350°C. Um für jeden Lötzweck die richtige Temperatur zu haben, ist die Wärme-<br />
Lötspitze, Spitzenbefestigung, Heizkörper Griff, Anschlußdrähte, Anschlußleitung und Leistung des Lötkolbens maßgeblich. Entweder man wählt einen, der im gewünschten Temperaturbereich liegt oder man entscheidet sich für eine regelbare Lötstation. Bevorzugt werden im Feinelektronik-Bereich Lötkolben zwischen 5 und 30 Watt, aber auch Lötstationen mit mehr Leistung sind geeignet, wenn sie eine Temperaturregelung haben.<br />
<br />
==Die richtige Lötspitze ist wichtig==<br />
Die Lötspitze ist das eigentliche Herzstück des Lötkolbens. Sie ist verantwortlich<br />
für den Wärmefluß vom Heizelement über das Lot zur Lötstelle.<br />
Je nachdem, welcher Lötkolben verwendet wird, was und wie oft gelötet werden soll, stehen unterschiedlichste Lötspitzenarten zur Verfügung. Die wichtigsten Gruppen sind<br />
vernickelte Kupferlötspitzen, zunderfeste Lötspitzen und ERSADUR-Dauerlötspitzen.<br />
Letztlich entscheidet Beschaffenheit und Qualität der Lötspitze über Erfolg oder<br />
Mißerfolg der Lötung. <br />
Sie muß durch die richtige Form, perfekte Wärmeleitung, makellose Beschaffenheit und<br />
zuverlässige Beständigkeit für die technischen Voraussetzungen, aber auch für das<br />
notwendige Fingerspitzengefühl sorgen. Deshalb kann man bei der Wahl der Lötspitze<br />
gar nicht anspruchsvoll genug sein. <br />
Besonders gute Erfahrungen haben sich mit der ERSADUR-Dauerlötspitze ergeben.<br />
<br />
[[Bild:dauerlötspitzen.gif|center]]<br />
<br />
===Pflege der Lötspitze===<br />
Gute Dauerlötspitzen sind vergleichsweise teuer. Mit der richtigen Pflege erreichen sie aber sehr lange Standzeiten und sind im Effekt preiswerter als billig-Spitzen. Damit eine Dauerspitze möglichst lange hält, sind ein paar Kleinigkeiten zu beachten:<br />
* Vor jedem Lötvorgang die Spitze an einem feuchten Schwämmchen/Lappen von Oxiden und Flüssmittelresten befreien<br />
* Nach dem Lötvorgang und dazwischen die Spitze ''nicht'' am Schwämmchen abstreifen. Die Oxidschicht schützt die Lötspitze.<br />
* Nach dem Löten die Spitze ebenfalls nicht abwischen und einfach erkalten lassen.<br />
<br />
==Ohne Flußmittel geht nix==<br />
Damit sich Lot und Metall möglichst intensiv miteinander verbinden können, werden Flußmittel eingesetzt. Sie sorgen für eine metallisch reine Oberfläche der zu lötenden Teile,<br />
befreien von Oxiden sowie löthemmenden Verunreinigungen und verhindern die Bildung<br />
von neuem Oxid beim Löten. [[Bild:elektroniklod.gif|right]]<br />
Bei Flußmitteln unterscheidet man zwischen säurehaltigen (für Installateurarbeiten, Kustglasbereich) und<br />
säurefreien Produkten (für Elektrik, Elektronik, Kunstglasbereich). In der Elektrotechnik verwendet<br />
man meist Röhrenlote (Lötdrähte) mit einer oder mehreren Flußmittelseelen, im Installationsbereich sowie Kühler- und Karosseriebau in der Regel Stangenlote.<br />
Im modernem Elektroniklot ist bereits das richtige Flussmittel im Lot enthalten, so daß dieses nicht mehr extern zugeführt werden muss. Lediglich beim Löten bestimmter Bauelemente wie den [[SMD]]-Bauteilen, bedarf es zusätzlichem Flußmittel. <br />
<br />
Die SMD-Technologie gewinnt zunehmend an Bedeutung. Immer kleinere und hochintegrierte<br />
Bauteile stellen wachsende Anforderungen an die Lötausüstung. Als Werkzeuge<br />
braucht man zumindest eine Pinzette mit feiner Spitze zum Positionieren, einen Feinstlötkolben z.B. mit ERSADUR-Dauerlötspitze (ab 0,2 mm) und dünnes SMD-Lötzinn (z.B. 0,5 mm) mit säurefreier<br />
Flußmittelseele.<br />
<br />
==So gelingt das Löten==<br />
Eine wichtige Voraussetzung zum Gelingen einer guten Lötstelle ist absolute Sauberkeit.<br />
Leiter und Bauteile müssen frei von Schmutz, Öl und Oxidation sein. Entfernung durch Lösemittel<br />
bzw. Flussmittel. Die Lötspitzen (am besten Dauerlötspitzen) sollten vor dem Löten in heißem Zustand mit einem feuchten Schwamm gereinigt werden. Bitte nicht wie Kupferspitzen befeilen,<br />
weil sonst die Schutzschicht beschädigt und die Spitze unbrauchbar wird.<br />
<br />
Zunächst ist zu überlegen, ob ein geregeltes oder ungeregeltes Gerät am vorteilhaftesten<br />
ist. Für Bastelarbeiten, Verzinnen von Drähten und andere einfache Lötarbeiten genügt<br />
ein guter 230-Volt-Lötkolben. [[Bild:lötstation.gif|right]]<br />
In der Elektronik werden heute fast ausschließlich temperaturgeregelte Kleinspannungslötkolben<br />
eingesetzt, um Beschädigungen an empfindlichen elektronischen Bauelementen zu vermeiden.<br />
<br />
'''Lötvorgang''':<br />
<br />
Der Lötvorgang hat drei Phasen:<br />
* Benetzen<br />
* Fließen<br />
* Binden.<br />
[[Bild:lötbeispiel.gif|right]] Dabei ist die Arbeitstemperatur das wichtigste Kriterium. Hierbei ist die niedrigste Temperatur, mit der die drei Phasen reibungslos ablaufen können, auch die beste Arbeitstemperatur. Dazu ist etwas Erfahrung nötig. Ein temperaturgeregeltes Lötsystem erleichtert die Arbeit deutlich. <br />
Beim Lötvorgang die Lötspitze nach dem Reinigen an die Lötspitze führen und Lötstelle erwärmen.<br />
Danach Lötdraht (mit Flussmittelseele) zwischen Spitze und Lötstelle führen und Lötdraht zum Schmelzen bringen. <br />
Weiteren Lötdraht zuführen, bis die gesamte Lötstelle benetzt ist. Anschließend Lötspitze sofort entfernen, um das geschmolzene Lot nicht zu überhitzen. Lot erstarren lassen, dabei Erschütterungen vermeiden. Der Lötvorgang sollte innerhalb von zwei Sekunden ausgeführt sein. Beim Löten von Elektronikteilen braucht man mit etwas Übung nur noch eine Sekunde die berühmte<br />
Lötsekunde.<br />
Mehr als 5 Sekunden sind unzulässig und deuten auf einen zu kalten oder zu leistungsschwachen<br />
Lötkolben hin. <br />
<br />
Eine gute Elektronik-Lötstelle erkennt man u.a. daran, dass die Konturen des verlöteten Leiters noch sichtbar sind. Das Lot muß den Bauteilfuß ganz umschließen, die Oberfläche muss flach gewölbt und glänzend sein.<br />
<br />
[[Bild:lötpunkt.gif|center]]<br />
<br />
==Praxistipp==<br />
Bei der Wahl eines Lötkolbens sollte man nicht versuchen, ein paar Euro durch ein Sonderangebot zu sparen. [[Bild:dauerlötspitzen.gif|right|70px]] Oft ergibt sich daraus später das Problem, dass keine passenden Lötspitzen erhältlich sind oder dass es keine Dauerlötspitzen für das Gerät gibt. Dauerlötspitzen sind unbedingt zu empfehlen. Der teurere Preis rechnet sich, da die Lötspitzen um ein vielfaches länger halten, oft Monate oder sogar Jahre. Reine Kupferlötspitzen sind dagegen bereits nach wenigen Wochen kaum noch zu nutzen. Ein Markenlötkolben oder Markenlötstation ist daher empfehlenswert.<br />
<br />
==Quellen==<br />
* Ersa-Lötfibel - http://www.ersa.de<br />
<br />
==Weblinks==<br />
* [http://stshome.de/elektronik/smd-loeten/ SMD-Löten]<br />
* [http://www.bimbel.de/artikel/artikel-17.html Tips SMD Löten]<br />
* [http://www-user.tu-chemnitz.de/~heha/bastelecke/Monitor%20reparieren/loeten.htm Tips zum Löten und Entlöten TU-Chemnitz]<br />
<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Grundlagen]]<br />
[[Kategorie:Robotikeinstieg]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=MediaWiki:Sidebar&diff=5521MediaWiki:Sidebar2006-01-21T11:21:17Z<p>PhpSupporter: </p>
<hr />
<div>* Hauptthemen<br />
** Kategorie:Robotikeinstieg|Robotikeinstieg<br />
** Kategorie:Mechanik|Mechanik<br />
** Kategorie:Elektronik|Elektronik<br />
** Kategorie:Sensoren|Sensoren<br />
** Kategorie:Microcontroller|Microcontroller<br />
** Kategorie:Motoren|Motoren<br />
** Kategorie:Software|Software<br />
** Kategorie:Projekte|Projekte/Schaltungen<br />
** Kategorie:Praxis|Praxis<br />
** Kategorie:Grundlagen|Grundlagen<br />
** Buchvorstellungen|Buchvorstellungen<br />
** Kategorie:Abkürzung|Abkürzungen<br />
<br />
* navigation<br />
** mainpage|mainpage<br />
** randompage-url|randompage<br />
** Testseite|Testseite für Autoren<br />
** Hilfe:FAQ|FAQ<br />
** helppage|help<br />
** Spezial:Newimages|Neuste Bilder<br />
** Kategorie:Löschkandidat|Löschkandidaten<br />
** Wunschthemen|Wunschthemen<br />
** Aktuelles|Aktuelles<br />
** sitesupport-url|Unterstützen</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=TWI_Praxis&diff=5317TWI Praxis2006-01-16T00:39:38Z<p>PhpSupporter: /* Master */</p>
<hr />
<div>In diesem Artikel folgen einige Programmbeispiele um das TWI-Hardwaremodul der AVRs zu verwenden.<br />
Näheres zu [[TWI]] und [[I2C]] finden sich in den entsprechenden Artikeln.<br />
Die Beispiele sind zwar in Bascom Basic verfasst, aber so ausgeführt, das es möglich sein sollte das Prinzip mit jeder anderen Sprache nachvollziehen zu können.<br />
<br />
<br />
== Übertragungsarten ==<br />
<br />
Bei TWI gibt es die folgenden Übertragungsarten<br />
* Master Transmitter (nur Senden)<br />
* Master Receiver (nur Empfangen)<br />
* Slave Transmitter (auf Abruf Senden)<br />
* Slave Receiver (nur Empfangen)<br />
Abhängig von der Anwendung kann der [[AVR]] alle Arten der Übertragung im gleichen Programm ausführen.<br />
<br />
<br />
== Master ==<br />
[[Bild:I2C_PCF8574_RN-Control.jpg|thumb|Beispielumgebung]]<br />
Ist der AVR Master, bestimmt er was und wie schnell es auf dem [[I2C|I<sup>2</sup>C]]-Bus zugeht. (Ausnahme: [[Clock_Stretching]] )<br />
<br />
Zur Bestimmung der Bus-Geschwindigkeit ist der ''[[TWI#Bit Rate Generator|Bit Rate Generator]]'' zuständig. Mit der Formel auf der ''[[TWI#Bit Rate Generator|Bit Rate Generator]]'' Seite müssen sie den Wert für das Register ''TWBR'' berechnen<br />
<br />
<br />
In den Beispielen wird als Master das Board [[RN-Control]] mit einem [[ATMega32|Mega32]], und als Slave ein [[I2C_Chip-Übersicht#I.2FO_expanders:|PCF8574]], da sich dieser leicht ansteuern lässt. <!-- und jeden Scheiss mitmacht ;-)) --><br />
<br />
----<br />
<br />
=== Transmitter ===<br />
<br />
;Nur Senden<br />
<br />
Der Master sendet einem Slave ein (oder mehrere) Byte, und schliesst die Übertragung anschliessend ab.<br />
<br />
Das Gegenstück wäre ''Slave Receiver''.<br />
<br />
<br />
Beispielprogramm sendet ein Byte zum Slave mit Adresse 64 (0x40 bzw. &H40):<br />
<pre><br />
' TWI Testprogramm<br />
' mit PCF8574 @ &H40<br />
'<br />
' TWI ohne Interrupt<br />
' ein Byte senden<br />
<br />
$regfile = "M32def.dat" ' the used chip<br />
$crystal = 16000000 ' frequency used<br />
$baud = 9600 ' baud rate<br />
<br />
Declare Sub Twi_send_byte(slave As Byte , Zeichen As Byte)<br />
<br />
Dim Twi_control As Byte ' Controlrgister lokale kopie<br />
Dim Twi_status As Byte<br />
Dim Twi_data As Byte<br />
<br />
Dim B As Byte ' Zeichen von UART<br />
Dim Error As Byte ' Fehlermerker<br />
<br />
' TWI init<br />
Twcr = &B00000100 ' erstmal nur TWI aktivieren<br />
Twsr = 0 ' Status und Prescaler Register<br />
Twbr = 72 ' Bit Rate Register, 100kHz<br />
<br />
' Startausgabe<br />
Print "TWI Master Transmitter"<br />
<br />
' Hauptschleife<br />
Do<br />
' hier könnte ihr Code stehen<br />
<br />
' warten bis etwas über UART kommt<br />
Input B<br />
<br />
' Den Wert zum Slave senden<br />
Call Twi_send_byte(&H40 , B)<br />
<br />
' Ausgabe, damit wir sehen was geschehen ist<br />
Print B ;<br />
Print " Error : " ;<br />
Print Hex(error) ' error status Ausgeben<br />
<br />
Loop<br />
<br />
End<br />
<br />
<br />
' Unterprogramme<br />
<br />
<br />
' TWI send_byte<br />
' sendet ein Byte und schliesst die Übertragung ab<br />
Sub Twi_send_byte(slave As Byte , Zeichen As Byte)<br />
Error = 0 ' Fehler zurücksetzen<br />
<br />
' Startbedingung<br />
Twcr = &B10100100 ' TWINT | TWSTA | TWEN<br />
<br />
' warten bis TWINT gesetzt ist<br />
Gosub Twi_wait_int<br />
<br />
' wenn Zugriff auf den Bus erlaubt, Slaveadresse ausgeben<br />
If Twi_status = &H08 Or Twi_status = &H10 Then<br />
Twdr = Slave And &HFE ' slave adresse + Write<br />
Twcr = &B10000100 ' TWINT löschen, Byte senden<br />
<br />
' warten bis TWINT gesetzt ist<br />
Gosub Twi_wait_int<br />
<br />
' Slave hat sich gemeldet<br />
If Twi_status = &H18 Or Twi_status = &H20 Then<br />
Twdr = Zeichen ' Daten<br />
Twcr = &B10000100 ' TWINT löschen, Byte senden<br />
<br />
' warten bis TWINT gesetzt ist<br />
Gosub Twi_wait_int<br />
<br />
' Zeichen wurden gesendet<br />
If Twi_status = &H28 Or Twi_status = &H30 Then<br />
Error = 0 ' kein Fehler<br />
Else<br />
Error = Twi_status ' Fehler<br />
End If<br />
<br />
Else<br />
' kein slave<br />
Error = Twi_status ' Fehler<br />
End If<br />
<br />
' Stopbedingung kommt hier immer im Ablauf, egal welcher Status<br />
Twcr = &B10010100 ' TWINT löschen, Stop senden<br />
<br />
Else<br />
' Bus belegt, wird er wieder freigegeben<br />
Twcr = &B10000100 ' TWINT löschen, Bus freigeben<br />
Error = Twi_status ' Fehler<br />
End If<br />
<br />
End Sub<br />
<br />
<br />
' warten bis TWINT gesetzt ist, status auslesen<br />
Twi_wait_int:<br />
Do<br />
Twi_control = Twcr And &H80<br />
Loop Until Twi_control = &H80<br />
<br />
Twi_status = Twsr And &HF8 ' status<br />
<br />
' status nur zu Debugzwecken ausgeben, weil Bus sehr langsam wird !<br />
' Print "Err " ; Hex(twi_status)<br />
Return<br />
</pre><br />
<br />
----<br />
<br />
=== Receiver ===<br />
<br />
;Nur Empfangen<br />
Der Master holt von einem Slave ein (oder mehrere) Byte, und schliesst die Übertragung anschliessend ab.<br />
<br />
Das Gegenstück wäre ''Slave Transmitter''.<br />
<br />
<br />
Beispielprogramm holt ein Byte vom Slave mit Adresse 64 (0x40 bzw. &H40):<br />
<br />
<pre><br />
' TWI Testprogramm<br />
' mit PCF8574 @ &H40<br />
'<br />
' TWI ohne Interrupt<br />
' ein Byte lesen<br />
<br />
$regfile = "M32def.dat" ' the used chip<br />
$crystal = 16000000 ' frequency used<br />
$baud = 9600 ' baud rate<br />
<br />
Declare Function Twi_read_byte(byval Slave As Byte) As Byte<br />
<br />
Dim Twi_control As Byte ' Controlrgister lokale kopie<br />
Dim Twi_status As Byte<br />
Dim Twi_data As Byte<br />
<br />
Dim B As Byte ' Zeichen von UART<br />
Dim X As Byte ' Zeichen von TWI<br />
Dim Error As Byte ' Fehlermerker<br />
<br />
' TWI Init<br />
Twcr = &B00000100 ' erstmal nur TWI aktivieren<br />
Twsr = 0 ' Status und Prescaler Register<br />
Twbr = 72 ' Bit Rate Register, 100kHz<br />
<br />
' Startausgabe<br />
Print "TWI Master Receiver"<br />
<br />
' Hauptschleife<br />
Do<br />
' hier könnte ihr Code stehen<br />
<br />
' warten bis etwas über UART kommt (egal welcher Wert, wird nur als Startbutton genutzt)<br />
Input B<br />
<br />
' ein Byte vom Slave holen<br />
X = Twi_read_byte(&H40)<br />
<br />
' Ausgabe, damit wir sehen was geschehen ist<br />
Print X ;<br />
Print " Error : " ;<br />
Print Hex(error) ' error status Ausgeben<br />
<br />
Loop<br />
<br />
End<br />
<br />
<br />
' Unterprogramme<br />
<br />
<br />
' TWI read_byte<br />
' holt ein Byte und schliesst die Übertragung ab<br />
Function Twi_read_byte(slave As Byte) As Byte<br />
Error = 0 ' Fehler zurücksetzen<br />
<br />
Twi_read_byte = 0 ' Wert vorbelegen<br />
<br />
' Startbedingung<br />
Twcr = &B10100100 ' TWINT | TWSTA | TWEN<br />
<br />
' warten bis TWINT gesetzt ist<br />
Gosub Twi_wait_int<br />
<br />
' wenn Zugriff auf den Bus erlaubt, Slaveadresse ausgeben<br />
If Twi_status = &H08 Or Twi_status = &H10 Then<br />
Twdr = Slave Or &H01 ' slave adresse + Read<br />
Twcr = &B10000100 ' TWINT löschen, Byte senden<br />
<br />
' warten bis TWINT gesetzt ist<br />
Gosub Twi_wait_int<br />
<br />
' Slave hat sich gemeldet<br />
If Twi_status = &H40 Then<br />
Twcr = &B10000100 ' TWINT löschen, Byte senden<br />
' kein ACK (TWEA=0) senden, weil wir nur ein Byte lesen wollen<br />
<br />
' warten bis TWINT gesetzt ist<br />
Gosub Twi_wait_int<br />
<br />
' ein Byte wurde empfangen<br />
If Twi_status = &H58 Or Twi_status = &H50 Then<br />
Twi_read_byte = Twdr ' Daten lesen<br />
Error = 0 ' kein Fehler<br />
Else<br />
Error = Twi_status ' Fehler<br />
End If<br />
<br />
Else<br />
' kein slave<br />
Error = Twi_status ' Fehler<br />
End If<br />
<br />
' Stopbedingung kommt hier immer im Ablauf, egal welcher Status<br />
Twcr = &B10010100 ' TWINT löschen, Stop senden<br />
<br />
Else<br />
' Bus belegt, wird er wieder freigegeben<br />
Twcr = &B10000100 ' TWINT löschen, Bus freigeben<br />
Error = Twi_status ' Fehler<br />
End If<br />
<br />
End Function<br />
<br />
<br />
' warten bis TWINT gesetzt ist, status auslesen<br />
Twi_wait_int:<br />
Do<br />
Twi_control = Twcr And &H80<br />
Loop Until Twi_control = &H80<br />
<br />
Twi_status = Twsr And &HF8 ' status<br />
' status nur zu Debugzwecken ausgeben, weil Bus sehr langsam wird !<br />
' Print "Err " ; Hex(twi_status)<br />
Return<br />
</pre><br />
<br />
== Slave ==<br />
[[Bild:I2C_RN-M8_RN-control.jpg|thumb|100px|Beispielumgebung]]<br />
Da der TWI-Master den Takt vorgibt, sind die [[TWI#Anmerkung_zur_CPU-Frequenz|Anmerkungen zur CPU-Frequenz]] zu beachten.<br />
<br />
In den Beispielen wird als Master das Board [[RN-Control]] mit einem [[ATMega32|Mega32]], und als Slave das [[RN-Mega8]] Board verwendet. Da nur diese beiden Boards am Bus hängen, wurde ebenfalls als Slaveadresse 64 (0x40 bzw. &H40) verwendet, damit man die vorhergehenden Beispiele gleich weiterverwenden kann.<br />
<br />
----<br />
<br />
<br />
=== Transmitter ===<br />
<br />
;auf Abruf Senden<br />
<br />
Der Slave wird von einem Master über eine festgelegte Adresse angesprochen, ein (oder mehrere) Byte werden zum Master übertragen, und anschliessend die Übertragung beendet.<br />
<br />
Das Gegenstück wäre ''Master Receiver''.<br />
<br />
<br />
Das Beispielprogramm gibt Bytewerte zurück die sich bei jeder Abfrage um eins erhöhen. Verwendet man beim Master das Beispiel von ''Master Receiver'', wird der Wert nach jeder Eingabe von Enter angezeigt.<br />
<pre><br />
' TWI-slave test<br />
' zum simulieren eines PCF8574<br />
<br />
$regfile = "m8def.dat" ' the used chip<br />
$crystal = 7372800 ' frequency used<br />
'$baud = 9600 ' keine baud rate angeben !<br />
<br />
Dim Twi_control As Byte ' Controlrgister lokale kopie<br />
Dim Twi_status As Byte<br />
Dim Twi_data As Byte<br />
<br />
Dim Count As Byte ' Testwert, jedes mal +1<br />
<br />
Declare Sub Twi_init_slave<br />
<br />
' Werte zurücksetzen<br />
Count = 0<br />
Twi_data = 0<br />
Call Twi_init_slave ' TWI aktivieren<br />
<br />
<br />
' Hauptschleife<br />
Do<br />
' hier könnte ihr Code stehen<br />
<br />
<br />
' schauen ob TWINT gesetzt ist<br />
Twi_control = Twcr And &H80 ' Bit7 von Controlregister<br />
<br />
If Twi_control = &H80 Then<br />
Twi_status = Twsr And &HF8 ' Status<br />
<br />
' will der Master ein Byte haben<br />
If Twi_status = &HA8 Or Twi_status = &HB8 Then<br />
Twdr = Count ' neue Daten ausgeben<br />
Incr Count ' testwert +1<br />
End If<br />
<br />
' TWINT muss immer gelöscht werden, damit es auf dem Bus weiter geht<br />
Twcr = &B11000100 ' TWINT löschen, mit ACK<br />
End If<br />
<br />
Loop<br />
<br />
End<br />
<br />
<br />
' Unterprogramme<br />
<br />
<br />
' TWI als slave aktivieren<br />
Sub Twi_init_slave<br />
Twsr = 0 ' status und Prescaler auf 0<br />
Twdr = &HFF ' default<br />
Twar = &H40 ' Slaveadresse setzen<br />
Twcr = &B01000100 ' TWI aktivieren, ACK einschalten<br />
<br />
End Sub<br />
</pre><br />
<br />
----<br />
<br />
=== Receiver ===<br />
<br />
;Nur Empfangen<br />
<br />
Der Slave wird von einem Master über eine festgelegte Adresse angesprochen, ein (oder mehrere) Byte werden zum Slave übertragen, und anschliessend die Übertragung beendet.<br />
<br />
Das Gegenstück wäre ''Master Transmitter''.<br />
<br />
<br />
Das Beispielprogramm gibt die Bytewerte an PortD aus, an dem beim RN-M8 eine LED-Reihe angeschlossen ist. Verwendet man beim Master das Beispiel von ''Master Transmitter'', wird der Wert, den man dort eingibt am Slave Binär angezeigt.<br />
<pre><br />
' TWI-slave test<br />
' zum simulieren eines PCF8574<br />
<br />
$regfile = "m8def.dat" ' the used chip<br />
$crystal = 7372800 ' frequency used<br />
'$baud = 9600 ' keine baud rate angeben !<br />
<br />
Config Portd = Output ' kompletter PortD als Ausgang<br />
<br />
Dim Twi_control As Byte ' Controlrgister lokale kopie<br />
Dim Twi_status As Byte<br />
Dim Twi_data As Byte<br />
<br />
Dim Neuesbyte As Byte ' Bytemerker<br />
<br />
Declare Sub Twi_init_slave<br />
<br />
Twi_data = 0<br />
Call Twi_init_slave ' TWI aktivieren<br />
<br />
' alle LEDs ein<br />
Portd = 0<br />
<br />
' Hauptschleife<br />
Do<br />
' hier könnte ihr Code stehen<br />
<br />
<br />
' Merker zurücksetzen<br />
Neuesbyte = 0<br />
<br />
' schauen ob TWINT gesetzt ist<br />
Twi_control = Twcr And &H80 ' Bit7 von Controlregister<br />
<br />
If Twi_control = &H80 Then<br />
Twi_status = Twsr And &HF8 ' Status<br />
<br />
' wurde ein Byte geschickt<br />
If Twi_status = &H80 Or Twi_status = &H88 Then<br />
Twi_data = Twdr ' neue Daten merken<br />
Neuesbyte = 1 ' merken das ein neues Byte da ist<br />
End If<br />
<br />
' TWINT muss immer gelöscht werden, damit es auf dem Bus weiter geht<br />
Twcr = &B11000100 ' TWINT löschen, erzeugt ACK<br />
End If<br />
<br />
' wenn ein neues Byte gekommen ist, dieses an PortD ausgeben<br />
If Neuesbyte <> 0 Then<br />
Portd = Twi_data ' Daten auf PortD ausgeben<br />
End If<br />
<br />
Loop<br />
<br />
End<br />
<br />
<br />
' Unterprogramme<br />
<br />
<br />
' TWI als slave aktivieren<br />
Sub Twi_init_slave<br />
Twsr = 0 ' status und Prescaler auf 0<br />
Twdr = &HFF ' default<br />
Twar = &H40 ' Slaveadresse setzen<br />
Twcr = &B01000100 ' TWI aktivieren, ACK einschalten<br />
<br />
End Sub<br />
</pre><br />
Der Slave ist hier sogar in der Lage während einer Übertragung mehr als ein Byte entgegenzunehmen, da jedes Byte den gleichen Status erzeugt.<br />
<br />
Wenn der Slave schnell genug getaktet wird (> 6.4 MHz), kann der Master auch auf einen schnelleren Bus-Takt gestellt werden. Dazu beim Master das ''TWBR'' auf 12 setzen, so wird der Bus mit 400kHz betrieben.<br />
<br />
== Siehe auch ==<br />
<br />
* [[I2C]]<br />
* [[TWI]] <br />
* [[RN-Slave ID Übersicht]]<br />
<br />
<br />
{{Baustelle|linux_80}}<br />
<br />
<br />
--[[Benutzer:Linux 80|Linux 80]] 15:31, 15. Jan 2006 (CET)<br />
<br />
[[Kategorie:Abkürzung]]<br />
[[Kategorie:Grundlagen]]<br />
[[Kategorie:Kommunikation]]<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Praxis]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Quellcode Bascom]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Bootloader&diff=4981Bootloader2006-01-08T11:46:12Z<p>PhpSupporter: </p>
<hr />
<div>Ein Boot-Loader ist eine spezielle Software, die gewöhnlich im Rom bzw. Flash sitzt oder vom Betriebsystem geladen und anschließend ausgeführt wird. Der Boot-Loader lädt dann weitere Teile des Betriebssystems (gewöhnlich einen Kernel) oder ein Hauptprogramm. <br />
<br />
Die [[Atmel]] Controller ([[Avr|AVR]] [[ATMega8|Mega8]], [[Atmel Controller Mega16 und Mega32|Mega32]] usw.) besitzen einen reservierten Speicherbereich in welchen ein eigener Bootloader geladen werden kann. Dieser Bootloader kann automatisch bei einem RESET des Controllers ausgeführt werden, dies kann über die [[Fusebits]] eingestellt werden.<br />
<br />
Oft wird dies genutzt, um einen Controller auch per [[RS232]], Infrarot oder Funk programmieren zu können. <br />
<br />
Für das AVR Board [[RN-Control]] findet man im Roboternetz-Downloadbereich einen geeigneten Bootloader.<br />
<br />
<br />
http://www.microsyl.com/megaload/megalo1.jpg<br />
<br />
Leider funktionierte oben genannter Bootloader im Test nicht mit den üblichen Funkmodulen. <br />
Es gibt nun aber einen neuen Bootloader der offenbar recht gut auch die Programmierung per Funk erlaubt, siehe [[#Weblinks|Weblinks]]<br />
<br />
<br />
<br />
<br />
==Weblinks==<br />
* [http://www.microsyl.com AVR Bootloader]<br />
* [http://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=269 Funktioniert auch über Funk]<br />
<br />
<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Software]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Bootloader&diff=4980Bootloader2006-01-08T11:45:33Z<p>PhpSupporter: </p>
<hr />
<div>Ein Boot-Loader ist eine spezielle Software, die gewöhnlich im Rom bzw. Flash sitzt oder vom Betriebsystem geladen und anschließend ausgeführt wird. Der Boot-Loader lädt dann weitere Teile des Betriebssystems (gewöhnlich einen Kernel) oder ein Hauptprogramm. <br />
<br />
Die [[Atmel]] Controller ([[Avr|AVR]] [[ATMega8|Mega8]], [[Atmel Controller Mega16 und Mega32|Mega32]] usw.) besitzen einen reservierten Speicherbereich in welchen ein eigener Bootloader geladen werden kann. Dieser Bootloader kann automatisch bei einem RESET des Controllers ausgeführt werden, dies kann über die [[Fusebits]] eingestellt werden.<br />
<br />
Oft wird dies genutzt, um einen Controller auch per [[RS232]], Infrarot oder Funk programmieren zu können. <br />
<br />
Für das AVR Board [[RN-Control]] findet man im Roboternetz-Downloadbereich einen geeigneten Bootloader.<br />
<br />
<br />
http://www.microsyl.com/megaload/megalo1.jpg<br />
<br />
Leider funktionierte oben genannter Bootloader im Test nicht mit den üblichen Funkmodulen. <br />
Es gibt nun aber einen neuen Bootloader der offenbar recht gut auch die Programmierung per Funk erlaubt, siehe [[#Weblinks]]<br />
<br />
<br />
<br />
<br />
==Weblinks==<br />
* [http://www.microsyl.com AVR Bootloader]<br />
* [http://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=269 Funktioniert auch über Funk]<br />
<br />
<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Software]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Atmel_Controller_Mega8515&diff=4979Atmel Controller Mega85152006-01-08T11:40:52Z<p>PhpSupporter: /* Siehe auch */</p>
<hr />
<div>__NOTOC__<br />
== Merkmale und Pinbelegung ==<br />
<br />
* ATMega AVR 8515-16 PDIP<br />
* Gehäuse: DIL-40<br />
* MHz: max. 16<br />
* Flash: 8k<br />
* EEProm: 512<br />
* RAM: 512<br />
* I/O: 35<br />
* externes RAM: max. 64K<br />
<br />
<div align="center"><br />
[[bild:PinoutAVRM8515.png|Pinbelegung des Mega 8515]]<br />
</div><br />
<br />
desweiteren<br />
* 2 [[Timer]] 8 und 16 Bit<br />
* 3 [[PWM]] Kanäle<br />
* USART, [[SPI]]<br />
* Analog Comperator<br />
* 3 externe Interruptquellen<br />
<br />
== Einsatzmöglichkeiten ==<br />
<br />
Wenn man von den anderen Megas verwöhnt ist, fragt man sich bestimmt, was kann man mit so einem Controller alles anstellen, ohne AD-Wandler kein [[TWI]], knapper Speicher ?<br />
<br />
Evtl. als günstige alternative für [[ATMega32|Mega16/32]] ?!<br />
<br />
In Foren findet man sehr oft die Frage:<br />
"Muss man unbedingt die Pins für SPI/TWI/PWM usw. verwenden so wie sie in der Pinbelegung angegeben sind ?"<br />
<br />
Die Antwort, sehr oft: "Nein, man hat ja zB. Bascom, das macht das Softwaremässig an jedem Beliebigen Pin !"<br />
<br />
Die Anschaffungskosten betragen beim Mega8515 etwa nur halb soviel wie beim Mega32, hat allerdings deutlich weniger Programmspeicher !<br />
<br />
Natürlich kann man den Controller überall einsetzen wenn nur viele IO-Pins benötigt werden. Wie grössere Tastaturmatrix, LCDs usw.<br />
<br />
== Besonderheiten ==<br />
<br />
Dieser Controller ist Rückwärtskompatibel zu AT90S4414/8515, dies kann mit einem [[Fusebits|Fusebit]] nochmals optimiert eingestellt werden. Er ist Pinkompatibel mit den genannten Controllern, kann diese also ohne Probleme auf einer dafür geplanten Platine ersetzen.<br />
<br />
Das Besondere aber ist, das der Mega8515 einer unter den wenigen AVRs ist, der externen Speicher ansprechen kann. Es muss allerdings nicht nur RAM sein, das hierüber angesprochen wird. Es kann der 16Bit breite Adressbus und der 8 Bit breite Datenbus auch für andere Peripheriebausteine verwendet werden.<br />
Dies erfordert zwar einen höheren Hardwareaufwand, da man Adressdecodierer braucht, um die jeweilige Adresse eines Bausteines festzulegen, dafür wird es Programmiertechnisch leichter, da man nur die internen Befehle zum Speicher lesen/schreiben benutzen braucht.<br />
<br />
<br />
==Siehe auch==<br />
* [[Atmel Controller Mega16 und Mega32]]<br />
<br />
== Weblinks ==<br />
* http://www.h-mpeg.de/ - Projekt mit einem 8515, MP3-Player von CD oder Festplatte über IDE ext. Speicher und mit LCD<br />
* http://www.h-mpeg.de/data/HMpeg.pdf - Schaltbild, Bestückung<br />
<br />
<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Grundlagen]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Atmel_Controller_Mega8515&diff=4978Atmel Controller Mega85152006-01-08T11:40:36Z<p>PhpSupporter: </p>
<hr />
<div>__NOTOC__<br />
== Merkmale und Pinbelegung ==<br />
<br />
* ATMega AVR 8515-16 PDIP<br />
* Gehäuse: DIL-40<br />
* MHz: max. 16<br />
* Flash: 8k<br />
* EEProm: 512<br />
* RAM: 512<br />
* I/O: 35<br />
* externes RAM: max. 64K<br />
<br />
<div align="center"><br />
[[bild:PinoutAVRM8515.png|Pinbelegung des Mega 8515]]<br />
</div><br />
<br />
desweiteren<br />
* 2 [[Timer]] 8 und 16 Bit<br />
* 3 [[PWM]] Kanäle<br />
* USART, [[SPI]]<br />
* Analog Comperator<br />
* 3 externe Interruptquellen<br />
<br />
== Einsatzmöglichkeiten ==<br />
<br />
Wenn man von den anderen Megas verwöhnt ist, fragt man sich bestimmt, was kann man mit so einem Controller alles anstellen, ohne AD-Wandler kein [[TWI]], knapper Speicher ?<br />
<br />
Evtl. als günstige alternative für [[ATMega32|Mega16/32]] ?!<br />
<br />
In Foren findet man sehr oft die Frage:<br />
"Muss man unbedingt die Pins für SPI/TWI/PWM usw. verwenden so wie sie in der Pinbelegung angegeben sind ?"<br />
<br />
Die Antwort, sehr oft: "Nein, man hat ja zB. Bascom, das macht das Softwaremässig an jedem Beliebigen Pin !"<br />
<br />
Die Anschaffungskosten betragen beim Mega8515 etwa nur halb soviel wie beim Mega32, hat allerdings deutlich weniger Programmspeicher !<br />
<br />
Natürlich kann man den Controller überall einsetzen wenn nur viele IO-Pins benötigt werden. Wie grössere Tastaturmatrix, LCDs usw.<br />
<br />
== Besonderheiten ==<br />
<br />
Dieser Controller ist Rückwärtskompatibel zu AT90S4414/8515, dies kann mit einem [[Fusebits|Fusebit]] nochmals optimiert eingestellt werden. Er ist Pinkompatibel mit den genannten Controllern, kann diese also ohne Probleme auf einer dafür geplanten Platine ersetzen.<br />
<br />
Das Besondere aber ist, das der Mega8515 einer unter den wenigen AVRs ist, der externen Speicher ansprechen kann. Es muss allerdings nicht nur RAM sein, das hierüber angesprochen wird. Es kann der 16Bit breite Adressbus und der 8 Bit breite Datenbus auch für andere Peripheriebausteine verwendet werden.<br />
Dies erfordert zwar einen höheren Hardwareaufwand, da man Adressdecodierer braucht, um die jeweilige Adresse eines Bausteines festzulegen, dafür wird es Programmiertechnisch leichter, da man nur die internen Befehle zum Speicher lesen/schreiben benutzen braucht.<br />
<br />
<br />
==Siehe auch==<br />
* Atmel Controller Mega16 und Mega32<br />
<br />
== Weblinks ==<br />
* http://www.h-mpeg.de/ - Projekt mit einem 8515, MP3-Player von CD oder Festplatte über IDE ext. Speicher und mit LCD<br />
* http://www.h-mpeg.de/data/HMpeg.pdf - Schaltbild, Bestückung<br />
<br />
<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Grundlagen]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Avr&diff=4930Avr2006-01-06T19:23:44Z<p>PhpSupporter: </p>
<hr />
<div>[[Bild:AtmelController.jpg|thumb|Beispiel eines AVR Controllers]]<br />
'''AVR''' ist eine 8-Bit [[Microcontroller]]-Familie mit RISC-Architektur.<br />
Im Gegensatz zu vielen anderen Microcontroller-Architekturen hat die AVR-Architektur keine Vorgänger. Sie ist ein komplettes Neudesign, das Anfang der 90-Jahre an der Universität von Trondheim/Norwegen entwickelt und vom (bis heute einzigen) Hersteller [[Atmel]] aufgekauft wurde.<br />
<br />
Es gibt eine ganze Serie von AVR-Controllern. Sie alle werden ähnlich programmiert, haben vergleichbaren Befehlssatz und physikalische Eigenschaften, bieten jedoch zahlreiche Features. <br />
<br />
Es gibt inzwischen Entwicklungssysteme in den Sprachen Basic, C/C++, Pascal und Assembler für diese Controller. "AVR" steht angeblich für ''Advanced Virtual RISC'' (in einem Paper der Entwickler des AVR-Kerns Alf Egin Bogen und Vegard Wollan).<br />
<br />
AVR-Controller besitzen eine zweistufige Pipeline (fetch and execute), die es ermöglicht, die meisten Befehle innerhalb eines einzigen Prozessortaktes auszuführen. Dadurch ist ein AVR wesentlich schneller als etwa 8051-Controller, bei denen der Prozessortakt intern noch durch 12 geteilt wird.<br />
<br />
* 8 Bit Architektur ist für Hochsprachen (C) optimiert <br />
* Harvard-Architektur (getrennter Befehls- und Datenspeicher) <br />
* 32 Register, kein Akkumulator, 3 Pointerregister <br />
* In-System progammierbar. Das bedeutet, der Controller kann sehr einfach über ein Programmierkabel (oft ISP-Kabel genannt), das mit dem PC verbunden wird, programmiert werden &ndash; auch dann, wenn sich dieser in einer Schaltung befindet.<br />
* umfangreiche Peripherie<br />
** Timer/Counter mit [[PWM]], Capture/Compare, externe Betaktung, asynchrone Operation<br />
** externe Interrupts<br />
** Kommunikation: [[UART|USART]], [[SPI]], [[I2C]] ([[TWI]])<br />
** [[Watchdog]], [[Bootloader]]-Support, verschiedene Stromspar-Modi, Brownout-Erkennung, Interner Oszillator<br />
** Analog-Comparator, Analog-Digital-Wandler <br />
* JTAG (Debugerinterface)<br />
* AVR Typen (AT90 "Classic AVR", ATtiny, ATmega) <br />
* erhältlich in unterschiedlichen Gehäusen, idR Durchsteck und als [[SMD]]<br />
* Viele Entwicklungsboards erhältlich, z.B. das Roboternetzboard [[RN-Control]]<br />
<br />
<br />
<br />
===Einige Pinbelegungen der populärsten AVR-Controller===<br />
(in etwa nach Leistungsfähigkeit sortiert)<br />
<br />
* [[AT90S2313]]<br />
* [[Atmel Controller Mega8]]<br />
* [[Atmel Controller Mega48 Mega88 Mega168]]<br />
* [[Atmel Controller Mega16 und Mega32]]<br />
* [[Atmel Controller Mega128]] ([[SMD]]-Chip)<br />
<br />
<br />
----<br />
<br />
===Die AVR-Pin-Bezeichnungen und deren Funktion===<br />
Die meisten Ports sind doppelt belegt und besitzen neben der normalen Port-Funktion noch eine Sonderfunktion. Die verschiedenen Pinbezeichnungen und Sonderfunktionen werden hier beschrieben:<br />
<br />
<br />
{| {{Blauetabelle}}<br />
|'''PA 0 – 7''' <br />
|Port A - Ein 8 Bit breiter, bi-direktionaler I/O Port. Jeder Pin des Ports kann individuell als Eingang oder Ausgang konfiguriert werden. <br />
|-<br />
|'''PB 0 – 7''' <br />
|Port B - Ein 8 Bit breiter, bi-direktionaler I/O Port. Jeder Pin des Ports kann individuell als Eingang oder Ausgang konfiguriert werden. <br />
|-<br />
|'''PC 0 – 7''' <br />
|Port C - Ein 8 Bit breiter, bi-direktionaler I/O Port. Jeder Pin des Ports kann individuell als Eingang oder Ausgang konfiguriert werden. <br />
|-<br />
|'''PD 0 – 7''' <br />
|Port D - Ein 8 Bit breiter, bi-direktionaler I/O Port. Jeder Pin des Ports kann individuell als Eingang oder Ausgang konfiguriert werden. <br />
|-<br />
|'''XCK''' <br />
|Externe Takt für UART. Wird nur in Sonderfällen für Baudrate benötigt. <br />
UART ("Universal Asynchronous Receiver and Transmitter"). Das ist die serielle Schnittstelle, die zur Datenübertragung zwischen Mikrocontroller und PC genutzt wird. Zur Übertragung werden zwei Pins am Controller benötigt: TXD und RXD. Über TXD ("Transmit Data") werden Daten gesendet, RXD ("Receive Data") dient zum Empfang. <br />
|-<br />
|'''T0''' <br />
|Timer Eingang. Timer kann gestartet, gestoppt oder getaktet werden <br />
|-<br />
|'''T1''' <br />
|Timer Eingang. Timer kann gestartet, gestoppt oder getaktet werden <br />
|-<br />
|'''AIN0''' <br />
|Erster Eingang des Analog Komperators. <br />
Mit AIN0 und AIN1 kann man zwei Spannungen miteinander vergleichen. Wenn die Spannung an AIN0 höher als bei AIN1 ist, liefert der Komparator "High", wenn umgekehrt ein "Low". <br />
|-<br />
|'''AIN1''' <br />
|Zweiter Teil des Analog Komperators <br />
Mit AIN0 und AIN1 kann man zwei Spannungen miteinander vergleichen. Wenn die Spannung an AIN0 höher als bei AIN1 ist, liefert der Komparator "High", wenn umgekehrt ein "Low". <br />
|-<br />
|'''OC0''' <br />
|PWM bzw. Output Compare Ausgang des Timers 0 <br />
|-<br />
|'''SS''' <br />
|SPI-Interface – wird beneötigt um den richtigen Slave am Bus zu wählen <br />
|-<br />
|'''MOSI''' <br />
|SPI-Interface – Datenausgang (bei Slave Eingang) <br />
|-<br />
|'''MISO''' <br />
|SPI-Interface – Dateneingang (bei Slave Ausgang) <br />
|-<br />
|'''SCK''' <br />
|SPI-Interface – Bustakt vom Controller <br />
|-<br />
|'''RESET''' <br />
|Rücksetz Eingang. Ein log. 0 – Pegel an diesem Pin für die Dauer von mindestens zwei Zyklen des Systemtaktes bei aktivem Oszillator setzt den Controller zurück <br />
|-<br />
|'''VCC''' <br />
|Betriebsspannung 5 V <br />
(2,7 Volt bis 6 V bei 8 Mhz, die nächsten AVRs sollen ab 1,8 Volt funktionieren ) <br />
|-<br />
|'''GND''' <br />
|Masse <br />
|-<br />
|'''XTAL1''' <br />
|Eingang des internen Oszillators zur Erzeugung des Systemtaktes bzw. Eingang für ein externes Taktsignal, wenn der interne Oszillator nicht verwendet werden soll <br />
|-<br />
|'''XTAL2''' <br />
|Ausgang des integrierten Oszillators zur Erzeugung des Systemtaktes <br />
|-<br />
|'''RXD''' <br />
|Serielle Schnittstelle Eingang TTL-Pegel <br />
|-<br />
|'''TXD''' <br />
|Serielle Schnittstelle Ausgang TTL-Pegel <br />
|-<br />
|'''INT0''' <br />
|Externe Interrupt <br />
|-<br />
|'''INT1''' <br />
|Externe Interrupt <br />
|-<br />
|'''INT2''' <br />
|Externer Interrupt 2 <br />
|-<br />
|'''OC1A''' <br />
|Ausgang für die Compare-Funktion des integrierten Zeitgeber- / Zählerbausteines <br />
Der erste PWM Ausgang des Timers1. Er wird oft zum Regeln der Bot-Motogeschwindigkeit benutzt. <br />
|-<br />
|'''OC1B''' <br />
|Ausgang für die Compare-Funktion des integrierten Zeitgeber- / Zählerbausteines <br />
Der zweite PWM Ausgang des Timers1. Er wird oft zum Regeln der Bot-Motogeschwindigkeit benutzt. <br />
|-<br />
|'''ICP1''' <br />
|Eingang für die Capture-Funktion des integrierten Zeitgebers / Zählerbausteines <br />
|-<br />
|'''ADC0 bis ADC7''' <br />
|Eingänge des Analag nach Digital (AD) Wandlers. Spannungen können hier gemessen werden. <br />
|-<br />
|'''AREF''' <br />
|Referenzspannung für Analog-Digitalwandler (wird meist auf 5 V gesetzt) <br />
|-<br />
|'''GND''' <br />
|Masse <br />
|-<br />
|'''AVCC''' <br />
|Analog Digital Wandler (siehe Beschaltungsskizze) <br />
Die Betriebsspannung für den AD Wandler. Die Pins AVCC, AGND und AREF sollten immer beschaltet werden, da es sonst es passieren kann, dass Port A nicht richtig funktioniert, selbst wenn man den AD Wandler nicht benutzt <br />
|-<br />
|'''TOSC1''' <br />
|TOSC1 und 2 sind Eingänge für den Asyncronen Modus von Timer2. Sie sind vorgesehen für den Anschluss eines externen Uhrenquarzes ( 32.768 kHz ). Damit lässen sich zum Beispiel sehr genaue 1 Sekunden Impulse für eine Uhr generien... <br />
|-<br />
|'''TOSC2''' <br />
|TOSC1 und 2 sind Eingänge für den Asyncronen Modus von Timer2. Sie sind vorgesehen für den Anschluss eines externen Uhrenquarzes ( 32.768 kHz ). Damit lässen sich zum Beispiel sehr genaue 1 Sekunden Impulse für eine Uhr generien... <br />
|-<br />
|'''TDI''' <br />
|JTAG-Debug Interface - Über dieses Interface kann man den AVR programmieren und debuggen. Die Schnittstelle ist ähnlich wie die SPI Schnittstelle und hat getrennte Dateneingangs- und Datenausgangsleitungen sowie eine Taktleitung. TDI ist die Dateneingangsleitung<br />
|-<br />
|'''TDO''' <br />
|JTAG-Debug Interface - TDO ist die Datenausgangsleitung des JTAG Interface<br />
|-<br />
|'''TMS''' <br />
|JTAG-Debug Interface<br />
|-<br />
|'''TCK''' <br />
|JTAG-Debug Interface <br />
|-<br />
|'''SDA''' <br />
|[[I2C]]-Schnittstelle (Bus aus 2 Leitungen) Datenleitung <br />
|-<br />
|'''SCL''' <br />
|I2C-Schnittstelle (Bus aus 2 Leitungen) Clockleitung <br />
|-<br />
|'''OC2''' <br />
|[[Pwm]] bzw. Output Compare Ausgang des Timers2<br />
|-<br />
|'''PEN'''<br />
|Programming Enable - Diesen Pin gibt es nur beim Mega128/64 u.ä. Wird dieser Pin beim Power-On Reset nach Masse gezogen geht der Controller in den ISP Programmiermodus. Man kann ihn also alternativ zu Reset verwenden. In der Regel verwendet man aber die Reset Leitung und PEN sollte man direkt mit VCC verbinden.<br />
|}<br />
----<br />
<br />
== Timer der AVRs ==<br />
<br />
Die Mikrocontroller der AVR-Familie besitzen je nach Typ eine unterschiedliche Anzahl an programmierbaren [[Timer|Timern]]. Bei den aktuellen ATmegas sind das mindestens ein 8-Bit Timer und bei größeren Ausführungen der Serie auch 16-Bit Timer. Die Timer werden immer Timerx benannt, wobei x für die Timernummer steht (also 0, 1, 2, usw.). <br />
Die Konfigurationsmöglichkeiten sind von Timer zu Timer unterschiedlich.<br />
<br />
'''Hinweis:''' Die folgenden Code-Beispiele sind in C programmiert und wurden für einen [[ATmega32]] entwickelt. Sie lassen sich also ohne große Änderungen auch auf anderen Mikrocontrollern der AVR-Familie einsetzen.<br />
<br />
=== Allgemeine Funktionsweise ===<br />
Timer funktionieren nach dem allgemeinen Prinzip, dass sie eine Ganzzahl (im weiteren als Zähler bezeichnet) je nach Betriebsmodus auf- oder abwärtszählen, d.h. inkrementieren bzw. dekrementieren.<br />
<br />
Angenommen, der Timer arbeitet im einfachsten Betriebsmodus, dem normalen Modus (siehe [[Avr#Normaler Modus (Normal Mode)|Normaler Modus (Normal Mode)]]). Die Zählrichtung des Timers ist aufsteigend gerichtet. Je nach Auflösung, also 8-Bit oder 16-Bit, erreicht der Zähler irgendwann einen bestimmten Zustand. Möglich wäre, dass er überläuft, wenn z.B. bei einem 8-Bit Timer der Wert 255 inkrementiert wird (siehe Grafik).<br />
<br />
[[Bild:AbstrakterZaehlvorgang.png]]<br />
<br />
=== Der Prescaler ===<br />
Der Prescaler (eng. = Vorteiler) kann dazu genutzt werden, den Takt, der den Timern zugeführt wird, zu verkleinern. U.a. kann man damit die Timer so konfigurieren, damit diese in den unterschiedlichsten Frequenzen takten. Hier eine Grafik die den Prescaler veranschaulicht:<br />
<br />
[[Bild:Prescaler.png]]<br />
<br />
Das obere Diagramm zeigt den Betrieb ohne Prescaler, das untere mit Prescaler. Die gestrichelte Linie zeigt, wann ein Interrupt eintritt.<br />
<br />
Im Teil [[Avr#Die Betriebsmodi|Die Betriebsmodi]] wird weiter auf die praktische Verwendung des Prescalers eingegangen.<br />
<br />
=== Die Betriebsmodi ===<br />
Die AVR-Timer können in unterschiedlichen Betriebsmodi betrieben werden. Diese sind:<br />
* Normaler Modus<br />
* CTC Modus<br />
* PWM<br />
<br />
==== Normaler Modus (Normal Mode) ====<br />
Der einfachste Betriebsmodus ist der normale Modus. Er funktioniert wie im Abschnitt "[[Avr#Allgemeine Funktionsweise|Allgemeine Funktionsweise]]" beschrieben. Die Zählrichtung des Timers ist immer aufsteigend, und irgendwann kommt es zu dem Interrupt Timer-Overflow (welcher in einer passend ISR aufgefangen werden kann). Im einfachsten Fall kann man diesen Modus in folgendem Diagramm darstellen:<br />
<br />
[[Bild:NormalerModus_1.png]]<br />
<br />
Der Zähler des Timers (im Diagramm oben, die aufsteigende und dann wieder zurückgesetzte Linie) ist in dem Register TCNTx gespeichert, wobei x für eine Zahl steht. Soll z.B. auf den Timer0 (siehe Datenblatt des jeweiligen Controllers) des Controllers zugegriffen werden, so ist an TCNT eine 0 anzuhängen, also TCNT0.<br />
Wie lange es braucht, bis der Zähler einen Overflow auslöst, ist von der Taktfrequenz des Controllers, dem eingestellten Prescaler-Wert und von der Timerauflösung abhängig. Nun wäre es ja sehr unpraktisch, wenn wir den Zähler nicht anpassen könnten. Denn sonst müssten wir unsere Software die den Timer benutzt evtl. anpassen und viel rechnen um z.B. für 1000 ms zu schlafen. Deswegen kann auf den Zähler zugreifen und ihn vorladen bevor dieser wieder vom eigentlichen Timer hochgezählt wird. Dies veranschaulicht folgendes Diagramm:<br />
<br />
[[Bild:NormalerModus_1_Vorladen.png]]<br />
<br />
Dadurch kann man den Timer beeinflussen, und beeinflussen wie lange es dauert, bis ein Overflow auftritt. Um zu berechnen, welchen Wert wir vorladen müssen, kann man auch ein Java-Applet nutzen, siehe unter [[Avr#Weblinks|Weblinks Java Applet]].<br />
<br />
Natürlich kann man das auch "von Hand" rechnen. Die Berechnung des Preloader- sowie Prescalerwerts bei Verwendung der Overflow-Interrupts, eines Prescalers von 64 (nicht alle Prescaler können verwendet werden) und eines Quarzes mit der Frequenz von 8 MHz sieht folgendermaßen aus (gesuchte Frequenz beträgt 1000 Hz unter der Verwendung des Timer0 eines ATmega32):<br />
# <math>Prescale = Frequenz * 1000000 [Hz] = 8000000</math><br />
# Wir definieren den maximalen Zählerwert. Dieser ist bei einem 8-Bit Timer 256, bei einem 16-Bit Timer 65536. In unserem Fall ist der maximale Zählerwert 256, weil Timer0 verwendet wird.<br />
# Nun wird die Variable ''Prescale'' (s.o.) durch den verwendeten Prescaler (64) geteilt (<math>8000000 Hz / 64 = 125000</math>).<br />
# Als nächstes wird der im dritten Punkt errechnete Wert durch die gesuchte Frequenz geteilt <math>=125000 / 1000Hz = 125</math>.<br />
# Nun wird mathematisch überprüft, ob der errechnete Wert aus dem vierten Punkt kleiner als der maximale Zählerwert ist. Trifft dies zu, so subtrahiert man den errechneten Wert vom maximalen Zählerwert (<math>= 256 - 125 = 131</math>).<br />
<br />
Damit haben wir den Wert errechnet, der bei jedem Interrupt, den der Timer0 auslöst, in TCNTx (in diesem Fall TCNT0) nachgeladen werden muss, damit die Interrupts in dem gewünschten Zeitabstand von einer Millisekunde ausgelöst werden.<br />
<br />
Allerdings bleibt zu bemerken, dass bei der Verwendung einer "ungeraden" Quarzfrequenz (z.B. 7,3728 MHz) der Timer mit einer bestimmten Ungenauigkeit arbeitet. Würden wir z.B. den Quarz oben mit einem Quarz mit 7,3728 MHz austauschen, so wäre die Fehlerrate 0,17%. Diese Ungeauigkeit varriert von verwendetem Prescaler zu Prescaler. D.h. wenn wir einen Prescaler von 1024 (und einer Quarzfrequenz von 8 MHz) verwendet hätten, so hätten wir eine inakzeptable Ungeauigkeit von 11,61%. Deswegen sollte sie eines der genannten Programme unter [[Avr#Weblinks]] verwenden, denn diese zeigen nur die bestmögliche Konfiguration an.<br />
<br />
Die Fehlerrate kann natürlich auch ausgerechnet werden. Hier die Rechenschritte (sie sind erweiternd zu der oberen Berechnung):<br />
# Als erstes wird mathematisch überprüft, ob der Preloaderwert (siehe fünften Schritt oben) größer als 1 ist.<br />
# Trifft dies zu, so wird als nächstes die resultierende Frequenz errechnet. Die geschieht folgendermaßen: Der errechnete Preloaderwert aus der Rechnung oben wird vom maximalen Zählerwert subtrahiert, anschließend mit dem Prescaler multipliziert und dann das Ganze durch die Variable Prescale geteilt <br />
<math>(256 - 131) \cdot 64 / 8\,000\,000 \mathrm{Hz} \cdot 1\,000\,000 = 1000</math>.<br />
# Nun wird die gesuchte Frequenz vom errechneten Wert aus dem dritten Punkt subtrahiert und dann wiederum durch diese geteilt <math>(1000-1000) / 1000 = 0</math>. Damit läuft dieser Timer genau mit einer Fehlerrate von 0 %.<br />
<br />
Betreibt man den Timer im Overflow-Modus, so muss man, wie bereits erwähnt, nach/bei jedem Overflow-Interrupt den Timer nachladen. Der Interrupt heißt in diesem Fall SIG_OVERFLOWx (x steht für die Nummer des Timers). Dieser muss in einer ISR abgefangen werden.<br />
<br />
Zusammenfassend ein Beispielprogramm:<br />
<br />
<pre><br />
/* Es wird der Timer2 (8-Bit) eines ATmega32 verwendet, der mit einem Quarz mit 7,3728 MHz<br />
betrieben wird. Im Abstand von 0,001 ms erzeugt der Timer einen Interrupt, also eine<br />
Frequenz von 1000000 Hz (oder 100 kHz). Der Timer wird auf einen Prescaler von 1 und<br />
einem Preloader von 183 konfiguriert.*/<br />
<br />
volatile uint8_t countTimer2; // Speichert den aktuellen Zählerwert<br />
<br />
// ISR zum auffangen der Interrupts:<br />
SIGNAL(SIG_SIG_OVERFLOW2)<br />
{<br />
countTimer2++;<br />
TCNT2 = 183; // Nachladen<br />
}<br />
<br />
// Initialisierung:<br />
TCCR2 = (1<<CS22); // Prescaler von 1<br />
TCNT2 = 183; // Vorladen<br />
TIMSK |= (1<<TOIE2); // Interrupts aktivieren und damit Timer starten<br />
sei();<br />
<br />
// Funktionen zum benutzen der Timer:<br />
/** Diese Funktion nicht aufrufen. Wird von sleep_millisec aufgerufen.<br />
Bei t=100 schläft die Funktion 1 ms. */<br />
inline void sleep (uint8_t t)<br />
{<br />
// countTimer2 wird in der ISR oben inkrementiert<br />
countTimer2 = 0;<br />
while (countTimer2 < t);<br />
}<br />
<br />
/** Schläft x-Millisekunden. */<br />
inline void sleep_millisec(uint16_t msec)<br />
{<br />
uint16_t i;<br />
for(i=0; i<msec; i++) {<br />
sleep(100);<br />
}<br />
}<br />
</pre><br />
Allerdings wird auf diese leicht veraltete Technik nun nicht weiter eingegangen. Der Artikel wendet sich nun dem neueren "Compare Output"-Betriebsmodus zu.<br />
<br />
Beim "Compare Output"-Betriebsmodus wird genauso ein Zähler hochgezählt. Allerdings wird der Zählerwert nach jeder Inkrementierung mit einem vom Benutzer festgelegten Wert verglichen. Entspricht der Zählerwert dem gespeicherten Wert, so kommt es zu einem Interrupt. Dieser Wert wird in das Register OCRx (x steht wieder für die Timernummer) gespeichert. Je nach Auflösung des Timers ist dieses Register 8-Bit oder 16-Bit breit. <br />
<br />
Hinweis: Siehe CTC Modus unten. Dieser wird benötigt um den Timer entsprechend im "Compare Output"-Betriebsmodus vernünftig zu betreiben.<br />
<br />
Hier ein typisches Diagramm dieses Betriebsmodus (Hinweis: Das Diagramm wurde unter Verwendung des CTC Modus erstellt. Für Begriffserklärung siehe CTC Modus):<br />
<br />
[[Bild:NormalerModus_CompareMatch.png]]<br />
<br />
Das Ausrechnen des Werts, der in OCRx geschrieben werden muss, damit Frequenz x entsteht, ist nicht sonderlich schwer. Man geht wie bei der Berechnung des Werts für den Overflow-Modus vor (s.o.) nur daß man das resultierende Ergebnis vom maximalen Zählerwert (bei 8-Bit Auflösung ist dieser 256, bei 16-Bit Auflösung 65536) subtrahiert. Das Ergebnis wird dann einmalig in das Register OCRx geschrieben. Mann muss also nicht wie beim Overflow-Modus den Timer nach jedem Interrupt nachladen. Der enstehende Interrupt heißt in diesem Fall SIG_OUTPUT_COMPAREx (x steht für die Nummer des Timers). Dieser muss in einer ISR abgefangen werden.<br />
<br />
Wiederum zusammenfassend ein Beispielprogramm:<br />
<br />
<pre><br />
/* Es wird der Timer2 (8-Bit) eines ATmega32 verwendet, der mit einem Quarz mit 7,3728 MHz<br />
betrieben wird. Im Abstand von 0,001 ms erzeugt der Timer einen Interrupt, also eine Frequenz<br />
von 1000000 Hz (oder 100 kHz). Der Timer wird auf einen Prescaler von 1 und einem OCR2-Wert<br />
von 73 konfiguriert.*/<br />
<br />
volatile uint8_t countTimer2; // Speichert den aktuellen Zählerwert<br />
<br />
// ISR zum auffangen der Interrupts:<br />
SIGNAL(SIG_OUTPUT_COMPARE2)<br />
{<br />
countTimer2++;<br />
}<br />
<br />
// Initialisierung:<br />
TCCR2 = (1<<CS22) | (1<<WGM21); // Prescaler von 1 | CTC-Modus (siehe unten für Beschreibung)<br />
OCR2 = 73; // Vergleichswert<br />
TIMSK |= (1<<OCIE2); // Interrupts aktivieren und damit Timer starten<br />
sei();<br />
<br />
// Funktionen zum benutzen der Timer:<br />
/** Diese Funktion nicht aufrufen. Wird von sleep_millisec aufgerufen.<br />
Bei t=100 schläft die Funktion 1 ms. */<br />
inline void sleep(uint8_t t)<br />
{<br />
// countTimer2 wird in der ISR oben inkrementiert<br />
countTimer2 = 0;<br />
while (countTimer2 < t);<br />
}<br />
<br />
/** Schläft x-Millisekunden. */<br />
inline void sleep_millisec(uint16_t msec)<br />
{<br />
uint16_t i;<br />
for(i=0; i<msec; i++) {<br />
sleep(100);<br />
}<br />
}<br />
</pre><br />
<br />
==== CTC Modus (Clear Timer on Compare Match mode) ====<br />
Der CTC Modus ist eine Erweiterung des "Compare Output"-Betriebsmodus. Der CTC Modus wird z.B. für das obere Beispielprogramm benötigt. Wird der Timer nämlich im normalen Betriebsmodus betrieben, so ist seine Zählergrenze je nach Auflösung 255 oder entsprechend für die 16-Bit Timer. Erst wenn diese Grenze erreicht wurde, wird der Timer zurückgesetzt (also auf 0). Durch den CTC Modus wird der Timer augenblicklich automatisch nachdem ein "Compare Output"-Interrupt auftrat zurückgesetzt. Man kann also die maximalen Zählergrenze selber definieren.<br />
Dieses Diagramm veranschaulicht den CTC Modus. Nach dem Interrupt wird der Timer sofort wieder zurückgesetzt.<br />
<br />
[[Bild:NormalerModus_CompareMatch.png]]<br />
<br />
==== PWM ====<br />
Für PWM siehe [[Pwm]].<br />
<br />
=== Registerübersicht ===<br />
<br />
'''Hinweis:''' Diese Registertabelle wurde für den aktuellen [[Atmel Controller Mega16 und Mega32]] erstellt. Wenn Sie ein anderes Modell verwenden, kann es sein, dass ein oder mehrere Register nicht existieren, oder sie eine andere Bezeichnung haben.<br />
<br />
{| {{Blaueschmaltabelle}} width=100%<br />
|'''TIMSK'''<br />
|-<br />
|Mit diesem Register, der von allen Timern verwendet wird, lässt sich die Interruptausführung und Art des jeweiligen Timers bestimmen.<br/><br/><br />
<br />
{{Registertabelle8Bit|OCIE2|TOIE2|TICIE1|OCIE1A|OCIE1B|TOIE1|OCIE0|TOIE0}}<br />
<br />
|-<br />
|<br />
*'''OCIE2 (Timer/Counter2 Output Compare Match Interrupt Enable'''<br/>Wenn dieses Bit gesetzt wird, wird der Timer/Counter2 Compare Match Interrupt aktiviert (vorrausgesetzt die Interrupts sind global aktiviert).<br />
*'''TOIE2 (Timer/Counter2 Overflow Interrupt Enable)'''<br/>Wenn dieses Bit gesetzt wird, wird der Timer/Counter2 Overflow Interrupt aktiviert (vorrausgesetzt die Interrupts sind global aktiviert).<br />
*'''TICIE1 (Timer/Counter1, Input Capture Interrupt Enable)'''<br/>Wenn dieses Bit gesetzt wird, wird der Timer/Counter1 Input Capture Interrupt aktiviert (vorrausgesetzt die Interrupts sind global aktiviert).<br />
*'''OCIE1A (Timer/Counter1 Output Compare A Match Interrupt Enable)'''<br/>Wenn dieses Bit gesetzt wird, wird der Timer/Counter1 Output Compare A Match Interrupt aktiviert (vorrausgesetzt die Interrupts sind global aktiviert).<br />
*'''OCIE1B (Timer/Counter1 Output Compare B Match Interrupt Enable)'''<br/>Wenn dieses Bit gesetzt wird, wird der Timer/Counter1 Output Compare B Match Interrupt aktiviert (vorrausgesetzt die Interrupts sind global aktiviert).<br />
*'''TOIE1 (Timer/Counter1 Overflow Interrupt Enable)'''<br/>Wenn dieses Bit gesetzt wird, wird der Timer/Counter1 Overflow Interrupt aktiviert (vorrausgesetzt die Interrupts sind global aktiviert).<br />
*'''OCIE0 (Timer/Counter0 Output Compare Match Interrupt Enable)'''<br/>Wenn dieses Bit gesetzt wird, so wird der Timer/Counter0 Compare Match Interrupt aktiviert (vorrausgesetzt die Interrupts sind global aktiviert).<br />
*'''TOIE0 (Timer/Counter0 Overflow Interrupt Enable)'''<br/>Wenn dieses Bit gesetzt wird, so wird der Timer/Counter0 Overflow Interrupt aktiviert (vorrausgesetzt die Interrupts sind global aktiviert).<br />
|}<br />
<br />
----<br />
<br />
==Die Fusebits==<br />
Fusebits nennt man bestimmte Bits zur Konfigurierung eines AVR-Controllers. Bei der Auslieferung neuer AVR Controller sind die Fusebits bereits vorkonfiguriert. In vielen Fällen kann man die Konfiguration unverändert belassen, je nach Controllertyp. Bei den Typen Mega xxx bestimmen einige Fusebits beispielsweise, dass der interne Taktgeber aktiviert ist. Möchte man dagegen einen externen Quarz anschließen oder die Taktfrequenz ändern, so müssen auch die Fusebits geändert werden. Auch das Deaktivieren des "[[On Chip Debugging]]" Modus ist oft notwendig, wenn man alle Ports ausnutzen möchte. <br />
<br />
Die Fusebits werden in der Regel über die Software eingestellt, welche auch für das Übertragen des Programmcodes zuständig ist. Besonders einfach geht dies beispielsweise mit der Entwicklungsumgebung [[Bascom]]. Aber auch andere Programme wie [[PonyProg]] können für die Umstellung der Fusebits genutzt werden. Einmal eingestellte Fusebits bleiben bis zur erneuten Fusebit-Änderung erhalten. Der normale Programmiermodus verändert die Fusebits nicht. <br />
<br />
Je nach AVR Controllertyp sind unterschiedliche Fusebits (Einstellungen) vorhanden. Die genaue Beschreibung findet man im jeweiligen Datenblatt. Da aber falsch gesetzte Fusebit-Einstellungen zu den häufigsten Problemen gehören, liste ich hier die Funktion der üblichen Fusebits nochmals genauer auf:<br />
<br />
{| {{Blauetabelle}}<br />
|'''CKSEL0, CKSEL1, CKSEL2, CKSEL3'''<br />
|Die Kombination dieser 4 Fusebits bestimmt die Taktquelle des Controllers. Das kann eine interner Taktgenerator, ein Quarz, Quarzoszillator, RC-Glied und ähnliches sein.<br />
|-<br />
|'''JTAGEN'''<br />
|Hiermit wird die "[[On Chip Debugging]]" Schnittstelle aktiviert bzw. deaktiviert. Das sind die Bits mit den Bezeichnungen TDI, TDO, TMS und TCK. Möchte man diese Pins als normalen Port nutzen, so muss diese Schnittstelle immer deaktiviert werden. <br />
|-<br />
|'''SUT0, SUT1'''<br />
|Die sogenannte StartUp-Zeit (PowerOn delay). Diese Einstellung muss abhängig von der Art des Taktgenerators eingestellt werden, genaueres im jeweiligen Datenblatt. <br />
|-<br />
|'''SPIEN'''<br />
|Hiermit kann die serielle [[AVR-ISP Programmierkabel|ISP-Programmierung]], welche die meisten Programmierkabel nutzen, deaktiviert werden. Dies sollte man lieber vermeiden, denn wenn dieser Programmiermodus deaktiviert wurde, kann nur noch der Parallel-Programmiermodus genutzt werden. Der Parallel-Programmiermodus benötigt jedoch ein spezielles Programmiergerät, das die wenigsten Bastler besitzen. ''Also Vorsicht!''<br />
|-<br />
|'''BODEN'''<br />
|Über dieses Bit wird der '''Brown-out Detector''' aktiviert bzw. deaktiviert. Dies ist eine Überwachung der Betriebsspannung. Diese Überwachung soll dafür sorgen, dass bei Spannungseinbrüchen ein ordentlicher RESET durchgeführt wird. Dadurch wird verhindert, dass ein Controller in einen undefinierten Zustand gerät (hängen bleibt).<br />
|-<br />
|'''BOOTLEVEL'''<br />
|Über dieses Bit kann die Spannung festgelegt werden, ab welcher der '''Brown-out Detector''' den Controller neu startet (also RESET ausführt). <br />
|-<br />
|'''BOOTRST'''<br />
|Gewöhnlich startet ein Programm im Controller nach einem RESET ab Adresse 0. Durch dieses Fusebit kann der Controller jedoch veranlasst werden, nach einem Reset einen sogenannten Bootloader-Bereich auszuführen. Ein [[Bootloader]] kann genutzt werden, um Controller über andere Schnittstellen (z.B. RS232) zu programmieren.<br />
|-<br />
|'''BOOTSZ0, BOOTSZ1'''<br />
|Der zuvor genannte Bootloaderbereich kann bei AVR-Controllern verschieden groß sein. Über diese beiden Bits können vier verschiedene Größen eingestellt werden. Siehe unter [[Bootloader]].<br />
|-<br />
|'''EESAVE'''<br />
|Dieses Bit legt fest, ob beim Programmieren des Controllers (man nennt es auch brennen) immer das EEPROM gelöscht werden soll.<br />
|-<br />
|'''CKOPT'''<br />
|Abhängig von den Einstellungen von CKSEL kann hier dir Oszillator-Verstärkung eingestellt werden. Genaueres im Datenblatt des jeweiligen Controllers.<br />
|-<br />
|'''WDTON'''<br />
|Schaltet den WatchDog-Timer beim Booten ein/aus. Dies ist auch per Software möglich<br />
|-<br />
|'''RSTDISBL'''<br />
|Durch dieses Bit kann man den RESET-Pin deaktivieren und dann als normalen I/O-Port nutzen. Aber Vorsicht! Da die RESET-Leitung beim Programmieren (Brennen) des Chips genutzt wird, kann man nach dessen Deaktivierung den Controller mit den üblichen [[AVR-ISP Programmierkabel|ISP-Adaptern]] nicht mehr programmieren. In diesem Fall könnte man zwar den Controlle noch mit speziellen Programmiergeräten im Parallelmodus programmieren, aber in der Praxis verfügen nur wenige Bastler über ein Programmiergerät, das dies leistet.<br />
|-<br />
|'''LB1, LB2'''<br />
|Das sind die sogenannten Lockbits, mit denen sich das Auslesen des Flash- als auch EEPROM-Speichers verhindern läßt. Zwar können andere Anwender immer noch Daten lesen, allerdings handelt es sich dabei nicht mehr um den wirklichen Inhalt sondern lediglich um wirre Datenbytefolgen. Programmierer, die den erarbeiteten Code vor Raubkopierern schützen wollen, nutzen diese Lockbits. Das Programmieren ist auch bei gesetzen Lockbits noch möglich. Der Bootloader-Bereich wird nicht durch die Lockbits geschützt.<br />
|-<br />
|'''BLB01, BLB02'''<br />
|Durch diese Bits kann der Code sogar vor dem Zugriff durch den Bootloader geschützt werden<br />
|-<br />
|'''BLB11, BLB12'''<br />
|Diese Bits schützen den Bootloaderbereich selbst<br />
|}<br />
<br />
Wie man die Fusebits mit [[Bascom]] einstellt, wird im Beitrag [[Bascom - Erstes Programm in den AVR Controller übertragen]] erläutert.<br />
<br />
''Autoren des Artikels: Frank, Luma'' <br />
<br />
<br />
==Siehe auch==<br />
* [[Atmel]]<br />
* [[AVR-Einstieg leicht gemacht]]<br />
* [[Avr-gcc|avr-gcc]] - Leistungsfähiger AVR-Port des freien Compilers GCC<br />
* [[AVR_Assembler_Einf%C3%BChrung|AVR Assembler Einführung (AvrStudio)]]<br />
* [[AVR-ISP Programmierkabel]] - Bauanleitung für die AVR Controller Programmierkabel<br />
* [[RN-Control]] - Eines der beliebtestet AVR-Boards im Roboternetz<br />
* [[RNBFRA-Board]] - Größeres Board mit zwei Atmel Controllern<br />
* [[Bascom]] - Sehr gutes Basic-Entwicklungssystem<br />
* [[Bascom - Erstes Programm in den AVR Controller übertragen]]<br />
* [[On Chip Debugging]]<br />
* [[Bootloader]]<br />
* [[Timer]]<br />
<br />
==Weblinks==<br />
* [http://www.atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=part_no&Direction=ASC Aktuelle AVR Vergleichstabelle]]<br />
* [http://www.atmel.com/dyn/products/devices.asp?family_id=607 Die Datenblätter zu Atmel Controllern]<br />
* [https://mpg.dnsalias.com/~magerlu/rn-wiki/avrtimer_applet Java Applet Timer Berechnung]<br />
* [http://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=169 AvrTimer Windows Berechnungstool]<br />
* [http://people.freenet.de/gjl/helferlein/avr-uart-rechner.html AVR-Baudraten-Rechner (JavaScript)]<br />
<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Grundlagen]]<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Abkürzung|AVR]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Bezugsquellen&diff=4911Bezugsquellen2006-01-06T13:23:39Z<p>PhpSupporter: /* Materialien */</p>
<hr />
<div>{| {{Blaueschmaltabelle}}<br />
|Hier können Bezugsquellen eingetragen werden! Bitte aber pro Eintrag nicht mehr als '''2 bis 3 Zeilen''', ansonsten muss es ein Moderator kürzen! Dieser Artikel soll nicht als Werbeplattform mißbraucht werden, für Werbung gibts andere [[RN-Wissen:Site_support|Möglichkeiten]]. Er soll eine Hilfe für Bastler sein! <br />
|}<br />
<br />
<br />
<br />
==Elektronikbauteile==<br />
<br />
;Conrad http://www.conrad.de: Fast das gesamte Elektronikprogramm<br />
<br />
;Reichelt http://www.reichelt.de: Diverse Bauelemente (aktiv, passiv, Microcontroller), Literatur, PC-Komponenten, Lichttechnik, Messtechnik, Software, Kabel, Steckverbinder, Werkstattbedarf, Werkzeug, Mindestbestellwert: 10 Euro<br />
<br />
;RS Components http://www.rsonline.de: Bauelemente: (aktiv, passiv, Microcontroller), Literatur, PC-Komponenten, Lichttechnik, Messtechnik, Software, Kabel, Steckverbinder, Werkzeug<br />
<br />
;Distrelec Gruppe http://www.distrelec.com: Diverse Bauelemente (aktiv, passiv, Microcontroller), Literatur, PC-Komponenten, usw.<br />
<br />
==Sensoren==<br />
<br />
;Robotikhardware - http://www.robotikhardware.de: Drehgeber, Sharp-Entfernungssensoren, Neigungssensoren, Temperatursendoren usw. speziell für Robotik-Bastler<br />
<br />
;Micromaus - http://www.micromaus.de: Sharp-Entfernungssensoren, Farbsensoren, Feuchtesensoren, Flexsensoren, Beschleunigungssensoren, Drucksensoren usw.<br />
<br />
==Platinen==<br />
<br />
;Multipcb - http://www.multipcb.de: Platinenservice für gewerbliche Kunden<br />
<br />
;PCB-Pool - http://pcb-pool.com: Platinenservice für private und gewerbliche Kunden<br />
<br />
==Materialien==<br />
<br />
;Modulor - http://www.modulor.de/: Diverse Materialien Kunststoff, Gummi, Papier, Pappe, Holz, Metall, Textilien, Plexiglas ...<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Kategorie:Praxis|!]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Aktuelles&diff=4910Aktuelles2006-01-06T13:14:48Z<p>PhpSupporter: </p>
<hr />
<div>{| width="100%"<br />
|-<br />
| style="vertical-align:top; width:52%;" |<br />
<div style="margin:0; margin-right:10px; border:2px solid #dfdfdf; background-color:#f8f8ff;"><br />
<div style="padding:0.3em 1em 0.7em 1em;"><br />
'''Aktuelles in RN-Wissen'''<br />
<br />
Auf dieser Seite findet man im schnellen Überblick die letzten Artikel die in den wichtigsten Kategorien verändert wurden. <br />
<br />
http://www.roboternetz.de/bilder/news.gif<br />
<br />
''Stand der Übersicht: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}}''<br><br />
</div><br />
</div><br />
<br />
<br />
<br />
<!-- RECHTE SPALTE --><br />
| style="vertical-align:top; width:48%;" |<br />
<div style="margin:0; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Löschkandidaten'''<br />
<DynamicPageList><br />
category=Löschkandidat<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Löschkandidat|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#fff8ff;"> <br />
'''Aktuelle Diskussionen (Top 3)'''<br />
<DynamicArticleList><br />
type=discussion<br />
count=3<br />
</DynamicArticleList><br />
</div><br />
<br />
|}<br />
<br />
<br />
<br />
<br />
{| {{Blaueschmaltabelle}} width=100%<br />
| <DynamicArticleList><br />
title=Neusten Artikel (Top 20)<br />
type=new<br />
count=20<br />
</DynamicArticleList><br />
| <DynamicArticleList><br />
title=Geänderte Artikel (Top 20)<br />
type=update<br />
count=20<br />
</DynamicArticleList><br />
|}<br />
<br />
<br />
{| {{Blaueschmaltabelle}} width=100%<br />
| <DynamicArticleList><br />
title=Die beliebtesten Artikel (Top 10)<br />
type=hot<br />
count=10<br />
</DynamicArticleList><br />
| <DynamicArticleList><br />
title=Geänderte Diskussionen (Top 10)<br />
type=discussion<br />
count=10<br />
</DynamicArticleList><br />
|}<br />
<br />
<br />
<br />
<br />
[[Kategorie:RN-Wissen]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Vorlage:FarbigerRahmen&diff=4738Vorlage:FarbigerRahmen2006-01-03T17:16:56Z<p>PhpSupporter: </p>
<hr />
<div><div style="margin:1em; padding:1em; border:solid 2px #FF0040; background-color:#FFFFFF"><br />
{{{1}}}<br />
</div></div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Datei:78s05.jpg&diff=4626Datei:78s05.jpg2005-12-31T00:00:06Z<p>PhpSupporter: Spannungsregler 78S05</p>
<hr />
<div>Spannungsregler 78S05</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=AVR-Einstieg_leicht_gemacht&diff=4625AVR-Einstieg leicht gemacht2005-12-30T23:59:43Z<p>PhpSupporter: /* Spannung stabilisieren */</p>
<hr />
<div>Immer wieder gibt es in Foren, wie dem Roboternetz, Einsteiger die das erste mal mir einem [[Microcontroller]] in Berührung kommen. Trotz zahlreicher Einstiegsbeiträge im Forum wiederholen sich doch bestimmte Anfängerfragen immer wieder, daher soll dieser Artikel noch einmal aufzeigen, wie man den ersten Schritt tut und einen Controller zum Leben erweckt. Es werden verschiedene Grundschaltungen aufgezeigt und erläutert welche Bauteile welche Funktion besitzen.<br />
Als Controller verwenden wir einen [[AVR]] [[ATMega32]]. Der derzeit größe [[AVR]]-Controller welcher noch im bastlerfreundlichen DIP-Gehäuse verfügbar ist. Für kleine bis mittlere Projekte ein sehr empfehlenswerter Controller zumal er preislich mit ca. 6-7 Euro noch sehr günstig ist und zudem mit seinem 40 Pin Gehäuse auch reichlich Anschlußmöglichkeiten besitzt.<br />
<br />
Die Frage, ob man mit einem fertigen Controllerboard, Experimentierplatine oder einem Steckbrett beginnen sollte, wurde ja in dem RN-Wissen Wiki Beitrag "[[Mit welchem Controllerboard fang ich an]]" angesprochen. In den meisten Fällen favorisiert der Autor dieses Artikels ein fertiges Controllerboard. Warum da sso ist, dazu am Ende noch ein paar Anmerkungen Dennoch soll diese Einführung schrittweise anhand eines Steckbrettes erläutert werden. <br />
<br />
==Start mit handelsüblichen Steckbrett==<br />
Ein Steckbrett hat den Vorteil das manr theoretisch ohne Löten alle Bauteile relativ zügig zusammenstecken kann. Bestimmte Steckkontakte innerhalb einer Reihe sind im Steckbrett miteinander verbunden, so das man nachher pro Bauteilbeinchen noch einige Steckkontakte zum Verdrahten mit Schaltdraht oder speziell konfigurierter Litze verwenden kann.<br />
<br />
'''Dir Vorteile von einem Steckbrett:<br />
<br />
*Bauteile ohne Löten einsetzen und verdrahten<br />
*recht zügiger Schaltungsaufbau<br />
<br />
'''Die Nachteile von einem Steckbrett gegenüber gedruckten Schaltungen und Experimentierplatinen sind:'''<br />
<br />
*nicht alle Bauteile passen, so das wir doch noch etwas löten müssen<br />
*nur geringer Schaltungsumfang möglich da es schnell unübersichtlich wird<br />
*sehr Störanfällig wegen Kabellängen, dadurch oft Funktionsstörungen<br />
*Bauteile müssen zum Teil verbogen werden damit sie passen<br />
<br />
<br />
Man beginnt indem man den Controller Avr [[ATMega32]] auf das Board aufsetzt:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrettmega32.jpg|center]]<br />
<br />
==Die Grundschaltung==<br />
Damit ein Controller erst mal zum laufen kommt, benötigt man zumindest einen 10k Widerstand, einen 100 nF Kondensator und eine 5V Spannungsquelle. Das ganze muss entsprechend dem unteren Schaltplan verschaltet werden, man spricht von einer sogenannten Grundschaltung. In dem Schaltplan wurde der Controller im übrigen Pinkompatibel als Schaltzeichen verwendet, die Pinreihenfolge ist also im Schaltplan identisch mit den echten Bauteilpin-Reihenfolge. Diese Darstellung erleichtert den Nachbau der Schaltung auf einem Steckbrett aber auch einer Experimentierplatine ungemein. Gewöhnlich verwendet man in Schaltplänen eine etwas andere Darstellung bei der die Pin´s nach Funktionsgruppen geordnet sind. Bei solchen Schaltplänen muss man sich dann anhand der Pin-Nummern orientieren, man wird dies am Ende des Artikels noch bei dem IC MAX232 sehen.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mega32.gif|center|500px]]<br />
<br />
<br />
Wenn man schon einige Grundschaltungen in anderen Tutorials gesehen hat, dann wird man bemerken das unsere doch noch etwas einfacher ist und weniger Bauteile benötigt. Hier wird beispielsweise kein Quarz verwendet, da der ATMega32 auch intern einen Takt generieren kann.<br />
<br />
Auf dem Steckbrett sieht die obere Schaltung wie folgt aus:<br />
<br />
[[Bild:avrtutorial_steckbrett1.jpg|center]]<br />
<br />
<br />
Um den Controller in Betrieb zu nehmen, benötigt man bei dieser Schaltung ein Netzteil das eine stabilisierte Spannung von 4 bis 5V liefert. Wir gehen erst einmal davon aus das man über dieses verfügt. <br />
Erwähnenswert ist noch das der Kondensator als [[Abblockkondensator]] zur Unterdrückung von Störungen dient. Er muss so nah wie möglich an die Spannungszuführung am Controller selbst gesetzt werden. Der Widerstand dient dazu die Reset Leitung konstant auf definierten High Pegel. Verbindet man diesen RESET Pin später kurz mit GND (Masse), dann wird das Programm im Controller neu gestartet.<br />
<br />
==Woran merkt man das der Controller funktioniert?==<br />
Gute Frage! Man merkt es garnicht. Genau genommen funktioniert ja auch trotz korrekter Schaltung noch immer nix denn es muss zuerst ein Programm in den Controller geladen werden, damit er überhaupt weiss was zu tun ist. Ohne Programm ist der Controller quasi tot.<br />
<br />
<br />
==Wie bekommt man das Programm in den Controller?==<br />
Der Controller verfügt über eine sogenannte [[ISP]]-Schnittstelle. Das bedeutet über bestimmte Pin´s ([[SPI]]) kann der Controller mit einer geeigneten PC-Software (zum Beispiel Bascom) programmiert werden. Zum Anschluß an den PC benötigt man jedoch einen sogenannten ISP-Dongel oder auch Programmieradapter genannt. Hier gibt es verschiedene Lösungen, serielle und parallele Adapter. Original von Atmel oder kompatible Lösungen. Der am meisten verwendetet ISP-Dongel wird am Druckerport betrieben. Diese gibt es inzwischen recht preiswert, so das das selbstbauen eigentlich nicht lohnt. Da man auch gern auf ein paar Fehlerquellen verzichten sollte, würde ich eine Fertiglösung empfehlen. Wer ihn selbst bauen möchte, findet ([[AVR-ISP_Programmierkabel|hier]] eine ISP-Dongel Bauanleitung und sogar eine fertige Platine dafür ([[AVR-ISP_Programmierkabel]]).<br />
<br />
Sowas sieht dann so aus:<br />
<br />
[[Bild:avrtutorial_ispkabel.jpg|center]]<br />
<br />
<br />
Der Schaltplan eines solchen Programmierkabels:<br />
<center><br />
http://www.robotikhardware.de/bilder/ispplan.gif<br />
</center><br />
<br />
Das Problem ist nun, wie schließe ich einen handelsüblichen ISP-Programmieradapter an den Controller auf dem Steckbrett an. Der normale 10 polige Wannenstecker (nach [[RN-Definitionen]]) paßt nicht in ein Steckbrett. Das ist wieder so ein typischer Nachteil bei Steckbrettern! In unserem Beispiel haben wir dazu auf einem kleinen Stück Experimentierplatine einen steckbaren Adapter für das Steckboard gelötet.<br />
Somit kann man die Schaltung um einen üblichen 10 poligen ISP-Programmieranschluß ergänzen:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitisp.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett sieht das gleiche so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitisp.jpg|center]]<br />
<br />
<br />
Jetzt endlich ist es soweit, jetzt kann man den Controller über ein ISP-Programmieradapter mit dem PC verbinden. Aber unbedingt darauf achten das auch alles korrekt nach Schaltplan gesteckt wurde und das die Betriebsspannung 5V nicht übersteigt. Ansonsten könnte man sich Dongel oder sogar die PC-Schnittstelle beschädigen.<br />
Als Entwicklungsumgebung nutzen wir hier im Tutorial [[Bascom]]. [[Bascom]] ist ein sehr beliebter Basic [[Compiler]] der zahlreiche [[AVR]] Controllertypen programmieren kann. Da auch ein [[Terminalprogramm]] und ein Programmer integriert ist, enthält diese PC-Software alles was man braucht, das erleichtert den Einstieg zusätzlich. Die Software gibt’s kostenlos als Demo bis 4K Code, für unsere Beispiele und den Einstieg reich das allemal, siehe dazu Artikel Bascom.<br />
Wie man ein Programm schreibt, compiliert und überträgt wurde schon in diesem Beitrag [[Bascom - Erstes Programm in den AVR Controller übertragen]] ausführlich behandelt, wir ersparen uns deshalb diese Details. <br />
<br />
Als erstes compilieren und übertragen wir folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step1.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Do<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
Das Programm macht eigentlich nichts, außer das es eine Endlosschleife ausführt. Aber da wir noch überhaupt nix am Controller angeschlossen haben, können wir eh noch nicht sehen ob ein Programm nun richtig ausgeführt wird oder nicht.<br />
Allerdings können wir schonmal üben das Programm mit Bascom zu übertragen. Wenn wir alles richtig ausgebaut haben und Spannung anliegt, dann sollte automatisch der Controller in Bascom erkannt werden. Die Übertragung sollte dann ohne Fehlermeldung erfolgen können. Wenn wir das geschafft haben, geht’s weiter.<br />
<br />
==Läuft die Schaltung und das Programm?==<br />
Damit wir nun endlich sehen ob sich bei unserer Schaltung auch was tut, schließen wir eine LED über einen 1K Vorwiderstand an einen Port an. Da wir die Kathode an den Controllerpin und die Anode an Plus legen, leuchtet die LED immer dann wenn dieser Pin auf Low geschaltet wird.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitled.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts nun so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitled.jpg|center]]<br />
<br />
<br />
Damit man nun auch wirklich sieht ob das Programm läuft, schreiben wir ein kleines Basic Programm welches eine LED abwechselnd ein – und ausschaltet. Wir compilieren und übertragen also folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step2.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Do<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Waitms 100<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Waitms 100<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
<br />
Wenn die LED nun schnell blinkt, dann funktioniert die aufgebaute Schaltung perfekt. Wir haben gleichzeitig gelernt wie man einen Ausgangsport, also Controllerpin ein -und ausschalten kann. Nahezu alle Pin´s beim ATMega32 können auf diese Weise als Ausgangsport betrieben werden. Somit alssen sich nicht nur viele Led´s, sondern unter Zuhilfenahme eines Treibers (z.B-Transistors) auch Relais und andere Aktoren schalten.<br />
<br />
==Eingangsport fragt Taster ab==<br />
Nun erweitern wir die Schaltung noch um einen Taster. Nahezu jede rPort kann bei einem ATMega32 auch per Software als Eingangsport konfiguriert werden. Wir schließen einen Taster an Port-Pin PA7 an. <br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mittaster.gif|center|500px]]<br />
<br />
<br />
Der Port wird in der Software so konfiguriert, das er als Eingang arbeitet und indern über einen hohen Widerstand (Pullup-Widerstand) ständig auf High Pegel gelegt wird. Wird nun eine Taste gedrückt, so wird der Pegel auf Low gezogen.<br />
Das Beispielprogramm ist nun so gestaltet das bei gedrückter Taste die LED leuchtet und bei, loslassen wieder aus geht.<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step3.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
End If<br />
Loop<br />
<br />
<br />
End<br />
</pre><br />
<br />
==Grundschaltung mit Quarz==<br />
Obwohl wir ab der letzten Schaltung schon einiges mit dem Controller anfangen können, so fehlt doch noch was wichtiges. Oft ist es nämlich wichtig das ein Controller sehr genaue Frequenzen messen oder ganz genaue Taktraten ausgeben kann. Leider ist der interne Taktgenerator nicht 100% exakt, was bei manchen Anwendungen störend ist. Zum Beispiel können über die RS232 Schnittstelle Daten nicht immer ganz Fehlerfrei übertragen werden wenn die Taktfrequenz nicht genau stimmt. Daher wird in den meisten Anwendungsfällen ein Quarz zur Takterzeugung genutzt, sie kennen das sicher aus anderen Grundschaltungen. Also erweitern wir unsere Schaltung gleich noch um einen Quarz mit den zugehörigen 22pF Kondensatoren.<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitquarz.gif|center|500px]]<br />
<br />
<br />
Auf unserem Steckbrett wird’s langsam voller, hier siehts also inzwischen so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitquarz.jpg|center|500px]]<br />
<br />
<br />
Normalerweise sollte der Quarz genauso wie die beiden 22pF Kondensatoren, die zum Anschwingen des Quarzes dienen, möglichst nahe am Controller plaziert werden. Auf dem Steckbrett ist das manchmal garnicht so einfach insbesondere wenn man wie in diesem fall den Quarz erst später hinzufügt. Wichtig ist nämlich das die Leitungen vom Quarz zum Controller möglichst kurz sind, bei gedruckten Schaltungen oft nur 1 bis 2 cm! Auch die einzelnen Bauteilbeinchen, z.B. der Kondensatoren sollten normalerweise so kurz wie möglich sein.<br />
Ist dies nicht der Fall, wie auch in unserem Bild, dann fungieren quasi diese Leitungen fast wie eine Funkantenne. Dies führt in der Regel zu starken Hochfrequenzsignalen die nicht nur unsere Schaltung sondern auch andere Schaltungen in der Nähe stören könnten. Man merkt dies auch oft daran das sich ein Board bei höherer Quarzfrequenz immer seltener fehlerfrei ohne Übertragungsfehler programmieren läßt.<br />
Grundsätzlich sind daher Schaltungen mit Quarz auf einem Steckbrett nicht sonderlich zu empfehlen, die Betriebssicherheit ist nicht immer gegeben. <br />
<br />
Auch wenn nun ein Quarz angeschlossen ist, so wird er noch immer nicht genutzt. Noch immer arbeiten der [[ATMega32]] mit seiner intern voreingestellten 1 Mhz Taktfrequenz. Um dies umzustellen, muss man ein sogenanntes [[Fusebits|Fusebit]] im Controller umprogrammieren. Auch dies wurde schon im Beitrag [[Bascom - Erstes Programm in den AVR_Controller übertragen]] näher beschrieben. Hier sei daher nur nochmals gesagt das dies auch sehr bequem in [[Bascom]] erfolgt:<br />
<br />
<br />
[[Bild:avrtutorial_bascomfusebitquarz.gif|center]]<br />
<br />
<br />
Sobald wir das umgestellt haben, müssen wir auch in dem Programm die Anweisung <br />
<br />
$crystal = 1000000 <br />
<br />
durch <br />
<br />
$crystal = 16000000 <br />
<br />
ersetzen, denn unser Quarz taktet nun mit 16 Mhz.<br />
<br />
==Spannung stabilisieren==<br />
Auch wenn unser Basis-Schaltung für Experimente inzwischen schon ganz nett ist, so ist es doch etwas ungünstig das wir stets 5V zur Verfügung haben müssen. Nicht immer steht ein geeignetes Netzteil zur Verfügung zudem soll ein Controller auch oft mit Batterien versorgt werden. Aus diesem Grund verfügen fas alle Entwicklungsboards wie ([[RN-Control]], STK500 etc.) über einen Spannungsregler.<br />
[[Bild:78s05.jpg|thumb|Spannungsregler 78S05]] Dieser wandelt eine höhere Eingangsspannung ca. 7 bis 20 V immer genau in 5V um. Sowas erhöht die Betriebssicherheit einer Schaltung nochmals immens. Als Spannungsregler (IC2) wird oft der 7805 genutzt, empfehlenswert ist der Typ 78S05 welcher 2A verträgt sowie über einen Kurzschluss- und Überlastungsschutz verfügt. <br />
Die beiden 100nF Kondensatoren sind wichtig, Sie sollen HF-Störungen, Schwingungen vermeiden. Das Elko vor dem Spannungsregler ist vorallem dann wichtig, wenn die Spannung von einem Netzgerät kommt und noch etwas geglättet werden muss. Je höher der STrombedarf der Schaltung, desto größer kann man die Kapazität wählen. Es schadet nicht wenn man das Elko einige Nummern größer wählt, man ist dann quasi für alle Fälle gerüstet. So sind Werte zwischen 100uF und 2200 uF durchaus denkbar. <br />
<br />
<br />
Wir erweitern unsere Schaltung somit wie folgt:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_spannung.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts wie folgt aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_spannung.jpg|center]]<br />
<br />
==Daten und Texte zum PC übertragen==<br />
In vielen Programmen müssen Daten oder Texte vom Controller an den PC oder umgekehrt gesendet werden. Insbesondere bei komplexen Programmen kann man auf diese Weise Variableninhalte ausgeben und somit auch Fehler im Programmcode schneller finden und korrigieren. In der Regel ist das ganz einfach, denn der [[Microcontroller]] [[ATMega32]] verfügt über einen internen [[UART]], also ein Modul das Daten über die [[RS232]] Schnittstelle zum PC senden bzw. auch empfangen kann. Leider arbeitet jedoch die Controllerschnittstelle mit 5V und die PC Schnittstelle der Norm entsprechend mit +-12V. Daher muss unbedingt ein Schaltkreis dazwischen welcher die Pegel anpaßt. Gewöhnlich nimmt man hier das IC MAX232, welches inzwischen sehr preiswert erhältlich ist.<br />
<br />
Wir müssen also die Schaltung nochmals erweitern:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_max232.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_max232.jpg|center|500px]]<br />
<br />
<br />
Über eine dreipolige Stiftleiste ([[RN-Definitionen]]) wird nun das Steckboard mit der [[RS232]] Schnittstelle des PC-verbunden. Es ist nun ein leichtes mit einem Programm Daten zum PC zu senden. Das nachfolgende Programm gibt Hinweise mit der Anweisung '''PRINT''' aus:<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step5.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 16000000<br />
$baud = 9600<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Print "Schalter nicht gedrückt"<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Print "Schalter gedrückt"<br />
End If<br />
Wait 1<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
==Möglichkeiten des Steckbrettes erreicht==<br />
Inzwischen füllt der Schaltplan fast ein DIN A4 Blatt und auf dem Steckbrett siehts auch schon recht wirr aus, dabei haben wir nur die wichtigsten Grundelemente auf dem Steckbrett. Für eine Roboter-Steuerung oder andere Anwendung fehlt doch noch einiges. Zum Beispiel weitere Taster, weitere LED´s, Motortreiber damit der Controller auch Motoren ansteuern und [[I2C]]-Bus Anschuß.<br />
Dies alles noch auf einem Steckbrett zu realisieren macht wenig Sinn, zumal bereits jetzt schon durch die doch recht langen Leitungen/Verkabelungen erhebliche Störungen auftreten. In der letzten Phase ist es immer öfters zu Übertragungsfehlern beim programmieren gekommen, oft musste dies 20 mal wiederholt werden. Dies zeigt das ein Steckbrett bestenfalls für ganz kleine Controller-Experimente herhalten kann. Für größere Dinge sollte man dann doch zu einer Lösung auf einer gedruckten Platine greifen. Spezielle Experimentierboard´s bieten mehr Sicherheit und haben neben den Grundelementen die hier beschrieben wurden noch eine ganze Menge mehr drauf. Bei [[RN-Control]] zum Beispiel 5 Tasten, 8 Leds, Motortreiber, Lautsprecher, diverse Anschlüsse etc. <br />
Der Größenunterschied wird im Bild deutlich:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_rncontrol.jpg|center|500px]]<br />
<br />
<br />
Auch wenn das Steckbrett also kein Controllerboard ersetzen kann, so hat das kleine Tutorial doch gezeigt wie eine [[Avr]]-Schaltung aufzubauen ist. Dieses Wissen sollte man auch besitzen, wenn man ein Controllerboard nutzt. Das war Ziel dieses Artikels.<br />
<br />
==Autor==<br />
*[[Benutzer:Frank|Frank]]<br />
<br />
==Siehe auch==<br />
*[[AVR-ISP Programmierkabel]]<br />
*[[Mit welchem Controllerboard fang ich an]]<br />
*[[Abblockkondensator]]<br />
*[[Bascom]]<br />
*[[Bascom - Erstes Programm in den AVR_Controller übertragen]]<br />
*[[Avr]]<br />
*[[Atmel Controller Mega16 und Mega32]]<br />
<br />
<br />
[[Kategorie:Robotikeinstieg]]<br />
[[Kategorie:Praxis]]<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Projekte]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=AVR-Einstieg_leicht_gemacht&diff=4624AVR-Einstieg leicht gemacht2005-12-30T23:54:35Z<p>PhpSupporter: /* Wie bekommt man das Programm in den Controller? */</p>
<hr />
<div>Immer wieder gibt es in Foren, wie dem Roboternetz, Einsteiger die das erste mal mir einem [[Microcontroller]] in Berührung kommen. Trotz zahlreicher Einstiegsbeiträge im Forum wiederholen sich doch bestimmte Anfängerfragen immer wieder, daher soll dieser Artikel noch einmal aufzeigen, wie man den ersten Schritt tut und einen Controller zum Leben erweckt. Es werden verschiedene Grundschaltungen aufgezeigt und erläutert welche Bauteile welche Funktion besitzen.<br />
Als Controller verwenden wir einen [[AVR]] [[ATMega32]]. Der derzeit größe [[AVR]]-Controller welcher noch im bastlerfreundlichen DIP-Gehäuse verfügbar ist. Für kleine bis mittlere Projekte ein sehr empfehlenswerter Controller zumal er preislich mit ca. 6-7 Euro noch sehr günstig ist und zudem mit seinem 40 Pin Gehäuse auch reichlich Anschlußmöglichkeiten besitzt.<br />
<br />
Die Frage, ob man mit einem fertigen Controllerboard, Experimentierplatine oder einem Steckbrett beginnen sollte, wurde ja in dem RN-Wissen Wiki Beitrag "[[Mit welchem Controllerboard fang ich an]]" angesprochen. In den meisten Fällen favorisiert der Autor dieses Artikels ein fertiges Controllerboard. Warum da sso ist, dazu am Ende noch ein paar Anmerkungen Dennoch soll diese Einführung schrittweise anhand eines Steckbrettes erläutert werden. <br />
<br />
==Start mit handelsüblichen Steckbrett==<br />
Ein Steckbrett hat den Vorteil das manr theoretisch ohne Löten alle Bauteile relativ zügig zusammenstecken kann. Bestimmte Steckkontakte innerhalb einer Reihe sind im Steckbrett miteinander verbunden, so das man nachher pro Bauteilbeinchen noch einige Steckkontakte zum Verdrahten mit Schaltdraht oder speziell konfigurierter Litze verwenden kann.<br />
<br />
'''Dir Vorteile von einem Steckbrett:<br />
<br />
*Bauteile ohne Löten einsetzen und verdrahten<br />
*recht zügiger Schaltungsaufbau<br />
<br />
'''Die Nachteile von einem Steckbrett gegenüber gedruckten Schaltungen und Experimentierplatinen sind:'''<br />
<br />
*nicht alle Bauteile passen, so das wir doch noch etwas löten müssen<br />
*nur geringer Schaltungsumfang möglich da es schnell unübersichtlich wird<br />
*sehr Störanfällig wegen Kabellängen, dadurch oft Funktionsstörungen<br />
*Bauteile müssen zum Teil verbogen werden damit sie passen<br />
<br />
<br />
Man beginnt indem man den Controller Avr [[ATMega32]] auf das Board aufsetzt:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrettmega32.jpg|center]]<br />
<br />
==Die Grundschaltung==<br />
Damit ein Controller erst mal zum laufen kommt, benötigt man zumindest einen 10k Widerstand, einen 100 nF Kondensator und eine 5V Spannungsquelle. Das ganze muss entsprechend dem unteren Schaltplan verschaltet werden, man spricht von einer sogenannten Grundschaltung. In dem Schaltplan wurde der Controller im übrigen Pinkompatibel als Schaltzeichen verwendet, die Pinreihenfolge ist also im Schaltplan identisch mit den echten Bauteilpin-Reihenfolge. Diese Darstellung erleichtert den Nachbau der Schaltung auf einem Steckbrett aber auch einer Experimentierplatine ungemein. Gewöhnlich verwendet man in Schaltplänen eine etwas andere Darstellung bei der die Pin´s nach Funktionsgruppen geordnet sind. Bei solchen Schaltplänen muss man sich dann anhand der Pin-Nummern orientieren, man wird dies am Ende des Artikels noch bei dem IC MAX232 sehen.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mega32.gif|center|500px]]<br />
<br />
<br />
Wenn man schon einige Grundschaltungen in anderen Tutorials gesehen hat, dann wird man bemerken das unsere doch noch etwas einfacher ist und weniger Bauteile benötigt. Hier wird beispielsweise kein Quarz verwendet, da der ATMega32 auch intern einen Takt generieren kann.<br />
<br />
Auf dem Steckbrett sieht die obere Schaltung wie folgt aus:<br />
<br />
[[Bild:avrtutorial_steckbrett1.jpg|center]]<br />
<br />
<br />
Um den Controller in Betrieb zu nehmen, benötigt man bei dieser Schaltung ein Netzteil das eine stabilisierte Spannung von 4 bis 5V liefert. Wir gehen erst einmal davon aus das man über dieses verfügt. <br />
Erwähnenswert ist noch das der Kondensator als [[Abblockkondensator]] zur Unterdrückung von Störungen dient. Er muss so nah wie möglich an die Spannungszuführung am Controller selbst gesetzt werden. Der Widerstand dient dazu die Reset Leitung konstant auf definierten High Pegel. Verbindet man diesen RESET Pin später kurz mit GND (Masse), dann wird das Programm im Controller neu gestartet.<br />
<br />
==Woran merkt man das der Controller funktioniert?==<br />
Gute Frage! Man merkt es garnicht. Genau genommen funktioniert ja auch trotz korrekter Schaltung noch immer nix denn es muss zuerst ein Programm in den Controller geladen werden, damit er überhaupt weiss was zu tun ist. Ohne Programm ist der Controller quasi tot.<br />
<br />
<br />
==Wie bekommt man das Programm in den Controller?==<br />
Der Controller verfügt über eine sogenannte [[ISP]]-Schnittstelle. Das bedeutet über bestimmte Pin´s ([[SPI]]) kann der Controller mit einer geeigneten PC-Software (zum Beispiel Bascom) programmiert werden. Zum Anschluß an den PC benötigt man jedoch einen sogenannten ISP-Dongel oder auch Programmieradapter genannt. Hier gibt es verschiedene Lösungen, serielle und parallele Adapter. Original von Atmel oder kompatible Lösungen. Der am meisten verwendetet ISP-Dongel wird am Druckerport betrieben. Diese gibt es inzwischen recht preiswert, so das das selbstbauen eigentlich nicht lohnt. Da man auch gern auf ein paar Fehlerquellen verzichten sollte, würde ich eine Fertiglösung empfehlen. Wer ihn selbst bauen möchte, findet ([[AVR-ISP_Programmierkabel|hier]] eine ISP-Dongel Bauanleitung und sogar eine fertige Platine dafür ([[AVR-ISP_Programmierkabel]]).<br />
<br />
Sowas sieht dann so aus:<br />
<br />
[[Bild:avrtutorial_ispkabel.jpg|center]]<br />
<br />
<br />
Der Schaltplan eines solchen Programmierkabels:<br />
<center><br />
http://www.robotikhardware.de/bilder/ispplan.gif<br />
</center><br />
<br />
Das Problem ist nun, wie schließe ich einen handelsüblichen ISP-Programmieradapter an den Controller auf dem Steckbrett an. Der normale 10 polige Wannenstecker (nach [[RN-Definitionen]]) paßt nicht in ein Steckbrett. Das ist wieder so ein typischer Nachteil bei Steckbrettern! In unserem Beispiel haben wir dazu auf einem kleinen Stück Experimentierplatine einen steckbaren Adapter für das Steckboard gelötet.<br />
Somit kann man die Schaltung um einen üblichen 10 poligen ISP-Programmieranschluß ergänzen:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitisp.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett sieht das gleiche so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitisp.jpg|center]]<br />
<br />
<br />
Jetzt endlich ist es soweit, jetzt kann man den Controller über ein ISP-Programmieradapter mit dem PC verbinden. Aber unbedingt darauf achten das auch alles korrekt nach Schaltplan gesteckt wurde und das die Betriebsspannung 5V nicht übersteigt. Ansonsten könnte man sich Dongel oder sogar die PC-Schnittstelle beschädigen.<br />
Als Entwicklungsumgebung nutzen wir hier im Tutorial [[Bascom]]. [[Bascom]] ist ein sehr beliebter Basic [[Compiler]] der zahlreiche [[AVR]] Controllertypen programmieren kann. Da auch ein [[Terminalprogramm]] und ein Programmer integriert ist, enthält diese PC-Software alles was man braucht, das erleichtert den Einstieg zusätzlich. Die Software gibt’s kostenlos als Demo bis 4K Code, für unsere Beispiele und den Einstieg reich das allemal, siehe dazu Artikel Bascom.<br />
Wie man ein Programm schreibt, compiliert und überträgt wurde schon in diesem Beitrag [[Bascom - Erstes Programm in den AVR Controller übertragen]] ausführlich behandelt, wir ersparen uns deshalb diese Details. <br />
<br />
Als erstes compilieren und übertragen wir folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step1.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Do<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
Das Programm macht eigentlich nichts, außer das es eine Endlosschleife ausführt. Aber da wir noch überhaupt nix am Controller angeschlossen haben, können wir eh noch nicht sehen ob ein Programm nun richtig ausgeführt wird oder nicht.<br />
Allerdings können wir schonmal üben das Programm mit Bascom zu übertragen. Wenn wir alles richtig ausgebaut haben und Spannung anliegt, dann sollte automatisch der Controller in Bascom erkannt werden. Die Übertragung sollte dann ohne Fehlermeldung erfolgen können. Wenn wir das geschafft haben, geht’s weiter.<br />
<br />
==Läuft die Schaltung und das Programm?==<br />
Damit wir nun endlich sehen ob sich bei unserer Schaltung auch was tut, schließen wir eine LED über einen 1K Vorwiderstand an einen Port an. Da wir die Kathode an den Controllerpin und die Anode an Plus legen, leuchtet die LED immer dann wenn dieser Pin auf Low geschaltet wird.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitled.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts nun so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitled.jpg|center]]<br />
<br />
<br />
Damit man nun auch wirklich sieht ob das Programm läuft, schreiben wir ein kleines Basic Programm welches eine LED abwechselnd ein – und ausschaltet. Wir compilieren und übertragen also folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step2.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Do<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Waitms 100<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Waitms 100<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
<br />
Wenn die LED nun schnell blinkt, dann funktioniert die aufgebaute Schaltung perfekt. Wir haben gleichzeitig gelernt wie man einen Ausgangsport, also Controllerpin ein -und ausschalten kann. Nahezu alle Pin´s beim ATMega32 können auf diese Weise als Ausgangsport betrieben werden. Somit alssen sich nicht nur viele Led´s, sondern unter Zuhilfenahme eines Treibers (z.B-Transistors) auch Relais und andere Aktoren schalten.<br />
<br />
==Eingangsport fragt Taster ab==<br />
Nun erweitern wir die Schaltung noch um einen Taster. Nahezu jede rPort kann bei einem ATMega32 auch per Software als Eingangsport konfiguriert werden. Wir schließen einen Taster an Port-Pin PA7 an. <br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mittaster.gif|center|500px]]<br />
<br />
<br />
Der Port wird in der Software so konfiguriert, das er als Eingang arbeitet und indern über einen hohen Widerstand (Pullup-Widerstand) ständig auf High Pegel gelegt wird. Wird nun eine Taste gedrückt, so wird der Pegel auf Low gezogen.<br />
Das Beispielprogramm ist nun so gestaltet das bei gedrückter Taste die LED leuchtet und bei, loslassen wieder aus geht.<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step3.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
End If<br />
Loop<br />
<br />
<br />
End<br />
</pre><br />
<br />
==Grundschaltung mit Quarz==<br />
Obwohl wir ab der letzten Schaltung schon einiges mit dem Controller anfangen können, so fehlt doch noch was wichtiges. Oft ist es nämlich wichtig das ein Controller sehr genaue Frequenzen messen oder ganz genaue Taktraten ausgeben kann. Leider ist der interne Taktgenerator nicht 100% exakt, was bei manchen Anwendungen störend ist. Zum Beispiel können über die RS232 Schnittstelle Daten nicht immer ganz Fehlerfrei übertragen werden wenn die Taktfrequenz nicht genau stimmt. Daher wird in den meisten Anwendungsfällen ein Quarz zur Takterzeugung genutzt, sie kennen das sicher aus anderen Grundschaltungen. Also erweitern wir unsere Schaltung gleich noch um einen Quarz mit den zugehörigen 22pF Kondensatoren.<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitquarz.gif|center|500px]]<br />
<br />
<br />
Auf unserem Steckbrett wird’s langsam voller, hier siehts also inzwischen so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitquarz.jpg|center|500px]]<br />
<br />
<br />
Normalerweise sollte der Quarz genauso wie die beiden 22pF Kondensatoren, die zum Anschwingen des Quarzes dienen, möglichst nahe am Controller plaziert werden. Auf dem Steckbrett ist das manchmal garnicht so einfach insbesondere wenn man wie in diesem fall den Quarz erst später hinzufügt. Wichtig ist nämlich das die Leitungen vom Quarz zum Controller möglichst kurz sind, bei gedruckten Schaltungen oft nur 1 bis 2 cm! Auch die einzelnen Bauteilbeinchen, z.B. der Kondensatoren sollten normalerweise so kurz wie möglich sein.<br />
Ist dies nicht der Fall, wie auch in unserem Bild, dann fungieren quasi diese Leitungen fast wie eine Funkantenne. Dies führt in der Regel zu starken Hochfrequenzsignalen die nicht nur unsere Schaltung sondern auch andere Schaltungen in der Nähe stören könnten. Man merkt dies auch oft daran das sich ein Board bei höherer Quarzfrequenz immer seltener fehlerfrei ohne Übertragungsfehler programmieren läßt.<br />
Grundsätzlich sind daher Schaltungen mit Quarz auf einem Steckbrett nicht sonderlich zu empfehlen, die Betriebssicherheit ist nicht immer gegeben. <br />
<br />
Auch wenn nun ein Quarz angeschlossen ist, so wird er noch immer nicht genutzt. Noch immer arbeiten der [[ATMega32]] mit seiner intern voreingestellten 1 Mhz Taktfrequenz. Um dies umzustellen, muss man ein sogenanntes [[Fusebits|Fusebit]] im Controller umprogrammieren. Auch dies wurde schon im Beitrag [[Bascom - Erstes Programm in den AVR_Controller übertragen]] näher beschrieben. Hier sei daher nur nochmals gesagt das dies auch sehr bequem in [[Bascom]] erfolgt:<br />
<br />
<br />
[[Bild:avrtutorial_bascomfusebitquarz.gif|center]]<br />
<br />
<br />
Sobald wir das umgestellt haben, müssen wir auch in dem Programm die Anweisung <br />
<br />
$crystal = 1000000 <br />
<br />
durch <br />
<br />
$crystal = 16000000 <br />
<br />
ersetzen, denn unser Quarz taktet nun mit 16 Mhz.<br />
<br />
==Spannung stabilisieren==<br />
Auch wenn unser Basis-Schaltung für Experimente inzwischen schon ganz nett ist, so ist es doch etwas ungünstig das wir stets 5V zur Verfügung haben müssen. Nicht immer steht ein geeignetes Netzteil zur Verfügung zudem soll ein Controller auch oft mit Batterien versorgt werden. Aus diesem Grund verfügen fas alle Entwicklungsboards wie ([[RN-Control]], STK500 etc.) über einen Spannungsregler. Dieser wandelt eine höhere Eingangsspannung ca. 7 bis 20 V immer genau in 5V um. Sowas erhöht die Betriebssicherheit einer Schaltung nochmals immens. Als Spannungsregler (IC2) wird oft der 7805 genutzt, empfehlenswert ist der Typ 78S05 welcher 2A verträgt sowie über einen Kurzschluss- und Überlastungsschutz verfügt. Die beiden 100nF Kondensatoren sind wichtig, Sie sollen HF-Störungen, Schwingungen vermeiden. Das Elko vor dem Spannungsregler ist vorallem dann wichtig, wenn die Spannung von einem Netzgerät kommt und noch etwas geglättet werden muss. Je höher der STrombedarf der Schaltung, desto größer kann man die Kapazität wählen. Es schadet nicht wenn man das Elko einige Nummern größer wählt, man ist dann quasi für alle Fälle gerüstet. So sind Werte zwischen 100uF und 2200 uF durchaus denkbar. <br />
<br />
<br />
Wir erweitern unsere Schaltung somit wie folgt:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_spannung.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts wie folgt aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_spannung.jpg|center]]<br />
<br />
==Daten und Texte zum PC übertragen==<br />
In vielen Programmen müssen Daten oder Texte vom Controller an den PC oder umgekehrt gesendet werden. Insbesondere bei komplexen Programmen kann man auf diese Weise Variableninhalte ausgeben und somit auch Fehler im Programmcode schneller finden und korrigieren. In der Regel ist das ganz einfach, denn der [[Microcontroller]] [[ATMega32]] verfügt über einen internen [[UART]], also ein Modul das Daten über die [[RS232]] Schnittstelle zum PC senden bzw. auch empfangen kann. Leider arbeitet jedoch die Controllerschnittstelle mit 5V und die PC Schnittstelle der Norm entsprechend mit +-12V. Daher muss unbedingt ein Schaltkreis dazwischen welcher die Pegel anpaßt. Gewöhnlich nimmt man hier das IC MAX232, welches inzwischen sehr preiswert erhältlich ist.<br />
<br />
Wir müssen also die Schaltung nochmals erweitern:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_max232.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_max232.jpg|center|500px]]<br />
<br />
<br />
Über eine dreipolige Stiftleiste ([[RN-Definitionen]]) wird nun das Steckboard mit der [[RS232]] Schnittstelle des PC-verbunden. Es ist nun ein leichtes mit einem Programm Daten zum PC zu senden. Das nachfolgende Programm gibt Hinweise mit der Anweisung '''PRINT''' aus:<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step5.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 16000000<br />
$baud = 9600<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Print "Schalter nicht gedrückt"<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Print "Schalter gedrückt"<br />
End If<br />
Wait 1<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
==Möglichkeiten des Steckbrettes erreicht==<br />
Inzwischen füllt der Schaltplan fast ein DIN A4 Blatt und auf dem Steckbrett siehts auch schon recht wirr aus, dabei haben wir nur die wichtigsten Grundelemente auf dem Steckbrett. Für eine Roboter-Steuerung oder andere Anwendung fehlt doch noch einiges. Zum Beispiel weitere Taster, weitere LED´s, Motortreiber damit der Controller auch Motoren ansteuern und [[I2C]]-Bus Anschuß.<br />
Dies alles noch auf einem Steckbrett zu realisieren macht wenig Sinn, zumal bereits jetzt schon durch die doch recht langen Leitungen/Verkabelungen erhebliche Störungen auftreten. In der letzten Phase ist es immer öfters zu Übertragungsfehlern beim programmieren gekommen, oft musste dies 20 mal wiederholt werden. Dies zeigt das ein Steckbrett bestenfalls für ganz kleine Controller-Experimente herhalten kann. Für größere Dinge sollte man dann doch zu einer Lösung auf einer gedruckten Platine greifen. Spezielle Experimentierboard´s bieten mehr Sicherheit und haben neben den Grundelementen die hier beschrieben wurden noch eine ganze Menge mehr drauf. Bei [[RN-Control]] zum Beispiel 5 Tasten, 8 Leds, Motortreiber, Lautsprecher, diverse Anschlüsse etc. <br />
Der Größenunterschied wird im Bild deutlich:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_rncontrol.jpg|center|500px]]<br />
<br />
<br />
Auch wenn das Steckbrett also kein Controllerboard ersetzen kann, so hat das kleine Tutorial doch gezeigt wie eine [[Avr]]-Schaltung aufzubauen ist. Dieses Wissen sollte man auch besitzen, wenn man ein Controllerboard nutzt. Das war Ziel dieses Artikels.<br />
<br />
==Autor==<br />
*[[Benutzer:Frank|Frank]]<br />
<br />
==Siehe auch==<br />
*[[AVR-ISP Programmierkabel]]<br />
*[[Mit welchem Controllerboard fang ich an]]<br />
*[[Abblockkondensator]]<br />
*[[Bascom]]<br />
*[[Bascom - Erstes Programm in den AVR_Controller übertragen]]<br />
*[[Avr]]<br />
*[[Atmel Controller Mega16 und Mega32]]<br />
<br />
<br />
[[Kategorie:Robotikeinstieg]]<br />
[[Kategorie:Praxis]]<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Projekte]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Aktuelles&diff=4623Aktuelles2005-12-30T22:23:20Z<p>PhpSupporter: </p>
<hr />
<div>{| {{Blaueschmaltabelle}} width=100%<br />
| <DynamicArticleList><br />
title=Die fünf neusten Artikel<br />
type=new<br />
count=5<br />
</DynamicArticleList><br />
| <DynamicArticleList><br />
title=Zuletzt geänderte Artikel Top 5<br />
type=update<br />
count=5<br />
</DynamicArticleList><br />
|}<br />
<br />
<br />
{| {{Blaueschmaltabelle}} width=100%<br />
| <DynamicArticleList><br />
title=Die fünf beliebtesten Artikel<br />
type=hot<br />
count=5<br />
</DynamicArticleList><br />
| <DynamicArticleList><br />
title=Zuletzt geänderte Diskussionen Top 5<br />
type=discussion<br />
count=5<br />
</DynamicArticleList><br />
|}<br />
<br />
<br />
<div align="center"><br />
=Die letzten 5 geänderten Artikel in jeder Kategorie=<br />
</div><br />
<br />
{| width="100%"<br />
|-<br />
| style="vertical-align:top; width:52%;" |<br />
<div style="margin:0; margin-right:10px; border:2px solid #dfdfdf; background-color:#f8f8ff;"><br />
<div style="padding:0.3em 1em 0.7em 1em;"><br />
'''Aktuelles in RN-Wissen'''<br />
<br />
Auf dieser Seite findet man im schnellen Überblick die letzten 5 Artikel die jeweils in den wichtigsten Kategorien verändert wurden. Da einige Themen zu mehreren Kategorien zählen, erscheinen diese hier unter Umständen mehrfach.<br />
<br />
''Stand der Übersicht: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}}''<br><br />
</div><br />
</div><br />
<br />
<!--<br />
<div style="margin:10px 10px 0px 0px; border:2px solid #dfdfdf; padding:0.6em; background-color:#dfefdf;"><br />
'''Wikipedia aktuell'''<br />
<br />
</div> <br />
</div>--><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Microcontroller'''<br />
<DynamicPageList><br />
category=Microcontroller<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Microcontroller|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Motoren'''<br />
<DynamicPageList><br />
category=Motoren<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Motoren|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Elektronik'''<br />
<DynamicPageList><br />
category=Elektronik<br />
notcategory=Microcontroller<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Elektronik|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Projekte'''<br />
<DynamicPageList><br />
category=Projekte<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Projekte|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Sensoren'''<br />
<DynamicPageList><br />
category=Sensoren<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Sensoren|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Mechanik'''<br />
<DynamicPageList><br />
category=Mechanik<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Mechanik|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<br />
<!-- RECHTE SPALTE --><br />
| style="vertical-align:top; width:48%;" |<br />
<div style="margin:0; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Robotikeinstieg'''<br />
<DynamicPageList><br />
category=Robotikeinstieg<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Robotikeinstieg|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#efefef; margin-top:10px;"><br />
'''Kategorie Software'''<br />
<DynamicPageList><br />
category=Software<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Software|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Grundlagen'''<br />
<DynamicPageList><br />
category=Grundlagen<br />
notcategory=Software<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Grundlagen|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Praxis'''<br />
<DynamicPageList><br />
category=Projekte<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Praxis|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Quellcode C'''<br />
<DynamicPageList><br />
category=Quellcode C<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Quellcode C|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Quellcode Bascom'''<br />
<DynamicPageList><br />
category=Quellcode Bascom<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Quellcode Bascom|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#efefef; margin-top:10px;"><br />
'''Löschkandidaten'''<br />
<DynamicPageList><br />
category=Löschkandidat<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Löschkandidat|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<br />
|}<br />
<br />
<br />
[[Kategorie:RN-Wissen]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Hauptseite&diff=4622Hauptseite2005-12-30T22:12:15Z<p>PhpSupporter: </p>
<hr />
<div>{| border=0<br />
|<span style="color:#cf7606; font-size:200%;">'''Willkommen bei'''&nbsp;</span><span style="color:#005288; font-size:200%;">'''RN-Wissen'''</span><br /><br /><br />
<br />
<span style="font-size:150%;">RN-Wissen, die Wissenbasis der Roboternetz Community</span><br /><br />
[[Image:rnwissenlogo.jpg|100px|left|Roboternetz Logo]]<br />
Du kennst sicher die Roboternetz Community / Foren, wohl eine der größten Robotik- und Technik-Communities im deustchsprachigen Internet. Ergänzend zur Community gibt es nun diesen Wissens-Bereich, kurz RN-WISSEN genannt. Hier findet man Informationen, Grundlagen als auch Praxistips zu den Bereichen Elektronik, Microelektronik und Robotik speziell in Artikelform und thematisch in Kategorien eingeteilt. Die Seiten sollen sowohl den Einstieg in dieses Hobby erleichtern, als auch dem erfahreneren Bastler als Nachschlagewerk dienen. <br />
Vielleicht wird dir die Seitenstruktur nicht ganz unbekannt sein. Richtig, der Aufbau ist sehr ähnlich der weltberühmten freien Enzyklopädie Wikipedia. Dies ist auch kein Wunder, wir verwenden das gleiche System, nämlich MediaWiki. MediaWiki ist ein System das für größte Nachschlagewerke und Artikelbereiche ausgelegt ist. Der Vorteil auch, viele kommen mit diesem System bereits durch den Bekanntheitsgrad von Wikipedia klar. <p><br />
<br />
Hier kannst Du tatsächlich einfach Seiten verändern und (zeitweilig) falsche Tatsachen veröffentlichen, ja, Du kannst sogar eine [[Testseite]] dieses Wikis (zeitweilig) völlig zerstören. Bevor Du längere Artikel schreibst solltest Du einfach mal auf der [[Testseite]] kurz üben. <br />
<br />
<br style="clear:left;" /><br /><br />
<span style="font-size:150%;">Einfach mal stöbern oder gezielt suchen</span><br /><br /><br />
Jeder Artikel in RN-Wissen kann verschiedenen Kategorien zugeordnet werden. Die Kategorien werden einfach am Schluss des Artikels durch den Autor selbst bestimmt. Die wichtigsten Kategorien finden Sie links am Rand aufgelistet. Dadurch wird die Artikelsuche und das blättern auf den RN-Wissen Seiten besonders bequem. Natürlich kannst Du auch nach beliebigen Begriffen einfach Suchen lassen.<br />
<br><br />
<br><br />
{| {{GrauRotDesignSchmal}} width="99%"<br />
|[[Bild:Verlosung.jpg|120px|right]]'''Letzte RN-Wissen News: ''' (Stand: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}})<br><br />
29.12.05 - Neu eingeführt die automatische Artikel-Änderungsübersicht unter: [[Aktuelles]]<br><br />
23.12.05 - Ungeeignete Artikel können jetzt zur Löschung vorschlagen werden (siehe [[Hilfe:FAQ|FAQ]])<br><br />
14.12.05 - Weitere Design/Browser Anpassungen, auch an IE Alternativen wie Firefox und Opera <br><br />
08.12.05 - [[Verlosung|Buchverlosung]] unter allen Mitglieder von RN-Wissen gestartet - [[Verlosung|siehe hier]])<br><br />
06.12.05 - Design Anpassungen für Browser Mozilla Firefox durchgeführt <br><br />
05.12.05 - RN-Wissen unterstützt nun auch die Latex-Darstellung [[Hilfe:Mathematische Formeln|mathematischer Formeln]]. <br><br />
23.11.05 - Der Artikelbereich RN-Wissen wurde zur Unterstützung der Community Roboternetz.de freigegeben<br />
|}<br />
<br />
| width=200px valign="top" |<br />
{{AktuelleMeldung}}<br />
<br><br />
<div style="text-align:center;>'''Erste Hilfe:'''</div><br />
<br />
*[[Hilfe:FAQ|Wie erstellt man neue Seiten?]]<br />
*[[RN-Wissen:Hilfe|Anleitung in der Hilfe]]<br />
*[[Hilfe:FAQ|Fragen und Antworten]]<br />
*[[Diskussion:Wunschthemen|Wunschthemen der Leser!]] <br />
<br />
<br />
<div style="text-align:center;>'''Top 5 Artikel:'''</div><br />
<DynamicArticleList><br />
type=hot<br />
count=5<br />
</DynamicArticleList><br />
|}<br />
<br />
<br />
{| {{Blaueschmaltabelle}} width=100%<br />
| valign="top" |<DynamicArticleList><br />
title=Die fünf neusten Artikel<br />
type=new<br />
count=5<br />
</DynamicArticleList><br />
| valign="top" |<DynamicArticleList><br />
title=Zuletzt geänderte Artikel<br />
type=update<br />
count=5<br />
</DynamicArticleList><br />
|}</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Hauptseite&diff=4621Hauptseite2005-12-30T22:08:09Z<p>PhpSupporter: </p>
<hr />
<div>{| border=0<br />
|<span style="color:#cf7606; font-size:200%;">'''Willkommen bei'''&nbsp;</span><span style="color:#005288; font-size:200%;">'''RN-Wissen'''</span><br /><br /><br />
<br />
<span style="font-size:150%;">RN-Wissen, die Wissenbasis der Roboternetz Community</span><br /><br />
[[Image:rnwissenlogo.jpg|100px|left|Roboternetz Logo]]<br />
Du kennst sicher die Roboternetz Community / Foren, wohl eine der größten Robotik- und Technik-Communities im deustchsprachigen Internet. Ergänzend zur Community gibt es nun diesen Wissens-Bereich, kurz RN-WISSEN genannt. Hier findet man Informationen, Grundlagen als auch Praxistips zu den Bereichen Elektronik, Microelektronik und Robotik speziell in Artikelform und thematisch in Kategorien eingeteilt. Die Seiten sollen sowohl den Einstieg in dieses Hobby erleichtern, als auch dem erfahreneren Bastler als Nachschlagewerk dienen. <br />
Vielleicht wird dir die Seitenstruktur nicht ganz unbekannt sein. Richtig, der Aufbau ist sehr ähnlich der weltberühmten freien Enzyklopädie Wikipedia. Dies ist auch kein Wunder, wir verwenden das gleiche System, nämlich MediaWiki. MediaWiki ist ein System das für größte Nachschlagewerke und Artikelbereiche ausgelegt ist. Der Vorteil auch, viele kommen mit diesem System bereits durch den Bekanntheitsgrad von Wikipedia klar. <p><br />
<br />
Hier kannst Du tatsächlich einfach Seiten verändern und (zeitweilig) falsche Tatsachen veröffentlichen, ja, Du kannst sogar eine [[Testseite]] dieses Wikis (zeitweilig) völlig zerstören. Bevor Du längere Artikel schreibst solltest Du einfach mal auf der [[Testseite]] kurz üben. <br />
<br />
<br style="clear:left;" /><br /><br />
<span style="font-size:150%;">Einfach mal stöbern oder gezielt suchen</span><br /><br /><br />
Jeder Artikel in RN-Wissen kann verschiedenen Kategorien zugeordnet werden. Die Kategorien werden einfach am Schluss des Artikels durch den Autor selbst bestimmt. Die wichtigsten Kategorien finden Sie links am Rand aufgelistet. Dadurch wird die Artikelsuche und das blättern auf den RN-Wissen Seiten besonders bequem. Natürlich kannst Du auch nach beliebigen Begriffen einfach Suchen lassen.<br />
<br><br />
<br><br />
{| {{GrauRotDesignSchmal}} width="99%"<br />
|[[Bild:Verlosung.jpg|120px|right]]'''Letzte RN-Wissen News: ''' (Stand: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}})<br><br />
29.12.05 - Neu eingeführt die automatische Artikel-Änderungsübersicht unter: [[Aktuelles]]<br><br />
23.12.05 - Ungeeignete Artikel können jetzt zur Löschung vorschlagen werden (siehe [[Hilfe:FAQ|FAQ]])<br><br />
14.12.05 - Weitere Design/Browser Anpassungen, auch an IE Alternativen wie Firefox und Opera <br><br />
08.12.05 - [[Verlosung|Buchverlosung]] unter allen Mitglieder von RN-Wissen gestartet - [[Verlosung|siehe hier]])<br><br />
06.12.05 - Design Anpassungen für Browser Mozilla Firefox durchgeführt <br><br />
05.12.05 - RN-Wissen unterstützt nun auch die Latex-Darstellung [[Hilfe:Mathematische Formeln|mathematischer Formeln]]. <br><br />
23.11.05 - Der Artikelbereich RN-Wissen wurde zur Unterstützung der Community Roboternetz.de freigegeben<br />
|}<br />
<br />
| width=200px valign="top" |<br />
{{AktuelleMeldung}}<br />
<br><br />
<div style="text-align:center;>'''Erste Hilfe:'''</div><br />
<br />
*[[Hilfe:FAQ|Wie erstellt man neue Seiten?]]<br />
*[[RN-Wissen:Hilfe|Anleitung in der Hilfe]]<br />
*[[Hilfe:FAQ|Fragen und Antworten]]<br />
*[[Diskussion:Wunschthemen|Wunschthemen der Leser!]] <br />
<br />
|}<br />
<br />
<br />
{| {{Blaueschmaltabelle}} width=100%<br />
| valign="top" |<DynamicArticleList><br />
title=Die fünf neusten Artikel<br />
type=new<br />
count=5<br />
</DynamicArticleList><br />
| valign="top" |<DynamicArticleList><br />
title=Zuletzt geänderte Artikel<br />
type=update<br />
count=5<br />
</DynamicArticleList><br />
|}</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Hauptseite&diff=4594Hauptseite2005-12-30T18:01:05Z<p>PhpSupporter: </p>
<hr />
<div>{| border=0<br />
|<span style="color:#cf7606; font-size:200%;">'''Willkommen bei'''&nbsp;</span><span style="color:#005288; font-size:200%;">'''RN-Wissen'''</span><br /><br /><br />
<br />
<span style="font-size:150%;">RN-Wissen, die Wissenbasis der Roboternetz Community</span><br /><br />
[[Image:rnwissenlogo.jpg|100px|left|Roboternetz Logo]]<br />
Du kennst sicher die Roboternetz Community / Foren, wohl eine der größten Robotik- und Technik-Communities im deustchsprachigen Internet. Ergänzend zur Community gibt es nun diesen Wissens-Bereich, kurz RN-WISSEN genannt. Hier findet man Informationen, Grundlagen als auch Praxistips zu den Bereichen Elektronik, Microelektronik und Robotik speziell in Artikelform und thematisch in Kategorien eingeteilt. Die Seiten sollen sowohl den Einstieg in dieses Hobby erleichtern, als auch dem erfahreneren Bastler als Nachschlagewerk dienen. <br />
Vielleicht wird dir die Seitenstruktur nicht ganz unbekannt sein. Richtig, der Aufbau ist sehr ähnlich der weltberühmten freien Enzyklopädie Wikipedia. Dies ist auch kein Wunder, wir verwenden das gleiche System, nämlich MediaWiki. MediaWiki ist ein System das für größte Nachschlagewerke und Artikelbereiche ausgelegt ist. Der Vorteil auch, viele kommen mit diesem System bereits durch den Bekanntheitsgrad von Wikipedia klar. <p><br />
<br />
Hier kannst Du tatsächlich einfach Seiten verändern und (zeitweilig) falsche Tatsachen veröffentlichen, ja, Du kannst sogar eine [[Testseite]] dieses Wikis (zeitweilig) völlig zerstören. Bevor Du längere Artikel schreibst solltest Du einfach mal auf der [[Testseite]] kurz üben. <br />
<br />
<br style="clear:left;" /><br /><br />
<span style="font-size:150%;">Einfach mal stöbern oder gezielt suchen</span><br /><br /><br />
Jeder Artikel in RN-Wissen kann verschiedenen Kategorien zugeordnet werden. Die Kategorien werden einfach am Schluss des Artikels durch den Autor selbst bestimmt. Die wichtigsten Kategorien finden Sie links am Rand aufgelistet. Dadurch wird die Artikelsuche und das blättern auf den RN-Wissen Seiten besonders bequem. Natürlich kannst Du auch nach beliebigen Begriffen einfach Suchen lassen.<br />
<br><br />
<br><br />
{| {{GrauRotDesignSchmal}} width="99%"<br />
|[[Bild:Verlosung.jpg|120px|right]]'''Letzte RN-Wissen News: ''' (Stand: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}})<br><br />
29.12.05 - Neu eingeführt die automatische Artikel-Änderungsübersicht unter: [[Aktuelles]]<br><br />
23.12.05 - Ungeeignete Artikel können jetzt zur Löschung vorschlagen werden (siehe [[Hilfe:FAQ|FAQ]])<br><br />
14.12.05 - Weitere Design/Browser Anpassungen, auch an IE Alternativen wie Firefox und Opera <br><br />
08.12.05 - [[Verlosung|Buchverlosung]] unter allen Mitglieder von RN-Wissen gestartet - [[Verlosung|siehe hier]])<br><br />
06.12.05 - Design Anpassungen für Browser Mozilla Firefox durchgeführt <br><br />
05.12.05 - RN-Wissen unterstützt nun auch die Latex-Darstellung [[Hilfe:Mathematische Formeln|mathematischer Formeln]]. <br><br />
23.11.05 - Der Artikelbereich RN-Wissen wurde zur Unterstützung der Community Roboternetz.de freigegeben<br />
|}<br />
<br />
| width=200px valign="top" |<br />
{{AktuelleMeldung}}<br />
<br><br />
<div style="text-align:center;>'''Erste Hilfe:'''</div><br />
<br />
*[[Hilfe:FAQ|Wie erstellt man neue Seiten?]]<br />
*[[RN-Wissen:Hilfe|Anleitung in der Hilfe]]<br />
*[[Hilfe:FAQ|Fragen und Antworten]]<br />
*[[Diskussion:Wunschthemen|Wunschthemen der Leser!]] <br />
<br />
|}<br />
<br />
<br />
{| {{Blaueschmaltabelle}} width=100%<br />
| valign="top" |<DynamicArticleList><br />
title=Die fünf neusten Artikel<br />
type=new<br />
count=5<br />
</DynamicArticleList><br />
| valign="top" |<DynamicArticleList><br />
title=Zuletzt geänderte Artikel<br />
type=update<br />
count=5<br />
</DynamicArticleList><br />
| valign="top" |<DynamicArticleList><br />
title=Die fünf beliebtesten Artikel<br />
type=hot<br />
count=5<br />
</DynamicArticleList><br />
|}</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Hauptseite&diff=4593Hauptseite2005-12-30T17:59:49Z<p>PhpSupporter: </p>
<hr />
<div>{| border=0<br />
|<span style="color:#cf7606; font-size:200%;">'''Willkommen bei'''&nbsp;</span><span style="color:#005288; font-size:200%;">'''RN-Wissen'''</span><br /><br /><br />
<br />
<span style="font-size:150%;">RN-Wissen, die Wissenbasis der Roboternetz Community</span><br /><br />
[[Image:rnwissenlogo.jpg|100px|left|Roboternetz Logo]]<br />
Du kennst sicher die Roboternetz Community / Foren, wohl eine der größten Robotik- und Technik-Communities im deustchsprachigen Internet. Ergänzend zur Community gibt es nun diesen Wissens-Bereich, kurz RN-WISSEN genannt. Hier findet man Informationen, Grundlagen als auch Praxistips zu den Bereichen Elektronik, Microelektronik und Robotik speziell in Artikelform und thematisch in Kategorien eingeteilt. Die Seiten sollen sowohl den Einstieg in dieses Hobby erleichtern, als auch dem erfahreneren Bastler als Nachschlagewerk dienen. <br />
Vielleicht wird dir die Seitenstruktur nicht ganz unbekannt sein. Richtig, der Aufbau ist sehr ähnlich der weltberühmten freien Enzyklopädie Wikipedia. Dies ist auch kein Wunder, wir verwenden das gleiche System, nämlich MediaWiki. MediaWiki ist ein System das für größte Nachschlagewerke und Artikelbereiche ausgelegt ist. Der Vorteil auch, viele kommen mit diesem System bereits durch den Bekanntheitsgrad von Wikipedia klar. <p><br />
<br />
Hier kannst Du tatsächlich einfach Seiten verändern und (zeitweilig) falsche Tatsachen veröffentlichen, ja, Du kannst sogar eine [[Testseite]] dieses Wikis (zeitweilig) völlig zerstören. Bevor Du längere Artikel schreibst solltest Du einfach mal auf der [[Testseite]] kurz üben. <br />
<br />
<br style="clear:left;" /><br /><br />
<span style="font-size:150%;">Einfach mal stöbern oder gezielt suchen</span><br /><br /><br />
Jeder Artikel in RN-Wissen kann verschiedenen Kategorien zugeordnet werden. Die Kategorien werden einfach am Schluss des Artikels durch den Autor selbst bestimmt. Die wichtigsten Kategorien finden Sie links am Rand aufgelistet. Dadurch wird die Artikelsuche und das blättern auf den RN-Wissen Seiten besonders bequem. Natürlich kannst Du auch nach beliebigen Begriffen einfach Suchen lassen.<br />
<br><br />
<br><br />
{| {{GrauRotDesignSchmal}} width="99%"<br />
|[[Bild:Verlosung.jpg|120px|right]]'''Letzte RN-Wissen News: ''' (Stand: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}})<br><br />
29.12.05 - Neu eingeführt die automatische Artikel-Änderungsübersicht unter: [[Aktuelles]]<br><br />
23.12.05 - Ungeeignete Artikel können jetzt zur Löschung vorschlagen werden (siehe [[Hilfe:FAQ|FAQ]])<br><br />
14.12.05 - Weitere Design/Browser Anpassungen, auch an IE Alternativen wie Firefox und Opera <br><br />
08.12.05 - [[Verlosung|Buchverlosung]] unter allen Mitglieder von RN-Wissen gestartet - [[Verlosung|siehe hier]])<br><br />
06.12.05 - Design Anpassungen für Browser Mozilla Firefox durchgeführt <br><br />
05.12.05 - RN-Wissen unterstützt nun auch die Latex-Darstellung [[Hilfe:Mathematische Formeln|mathematischer Formeln]]. <br><br />
23.11.05 - Der Artikelbereich RN-Wissen wurde zur Unterstützung der Community Roboternetz.de freigegeben<br />
|}<br />
<br />
| width=200px valign="top" |<br />
{{AktuelleMeldung}}<br />
<br><br />
<div style="text-align:center;>'''Erste Hilfe:'''</div><br />
<br />
*[[Hilfe:FAQ|Wie erstellt man neue Seiten?]]<br />
*[[RN-Wissen:Hilfe|Anleitung in der Hilfe]]<br />
*[[Hilfe:FAQ|Fragen und Antworten]]<br />
*[[Diskussion:Wunschthemen|Wunschthemen der Leser!]] <br />
<br />
|}<br />
<br />
{| {{Blaueschmaltabelle}} width=100%<br />
| valign="top" |<DynamicArticleList><br />
title=Die fünf neusten Artikel<br />
type=new<br />
count=5<br />
</DynamicArticleList><br />
| valign="top" |<DynamicArticleList><br />
title=Zuletzt geänderte Artikel<br />
type=update<br />
count=5<br />
</DynamicArticleList><br />
| valign="top" |<DynamicArticleList><br />
title=Die fünf beliebtesten Artikel<br />
type=hot<br />
count=5<br />
</DynamicArticleList><br />
|}</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Vorlage:GrauRotDesignSchmal&diff=4592Vorlage:GrauRotDesignSchmal2005-12-30T17:53:46Z<p>PhpSupporter: </p>
<hr />
<div>border="0" cellspacing="8" cellpadding="0" style="background-color: #f9f9f8; border: 2px solid #c00000; font-size: 85%"</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Hauptseite&diff=4591Hauptseite2005-12-30T17:53:03Z<p>PhpSupporter: </p>
<hr />
<div>{| border=0<br />
|<span style="color:#cf7606; font-size:200%;">'''Willkommen bei'''&nbsp;</span><span style="color:#005288; font-size:200%;">'''RN-Wissen'''</span><br /><br /><br />
<br />
<span style="font-size:150%;">RN-Wissen, die Wissenbasis der Roboternetz Community</span><br /><br />
[[Image:rnwissenlogo.jpg|100px|left|Roboternetz Logo]]<br />
Du kennst sicher die Roboternetz Community / Foren, wohl eine der größten Robotik- und Technik-Communities im deustchsprachigen Internet. Ergänzend zur Community gibt es nun diesen Wissens-Bereich, kurz RN-WISSEN genannt. Hier findet man Informationen, Grundlagen als auch Praxistips zu den Bereichen Elektronik, Microelektronik und Robotik speziell in Artikelform und thematisch in Kategorien eingeteilt. Die Seiten sollen sowohl den Einstieg in dieses Hobby erleichtern, als auch dem erfahreneren Bastler als Nachschlagewerk dienen. <br />
Vielleicht wird dir die Seitenstruktur nicht ganz unbekannt sein. Richtig, der Aufbau ist sehr ähnlich der weltberühmten freien Enzyklopädie Wikipedia. Dies ist auch kein Wunder, wir verwenden das gleiche System, nämlich MediaWiki. MediaWiki ist ein System das für größte Nachschlagewerke und Artikelbereiche ausgelegt ist. Der Vorteil auch, viele kommen mit diesem System bereits durch den Bekanntheitsgrad von Wikipedia klar. <p><br />
<br />
Hier kannst Du tatsächlich einfach Seiten verändern und (zeitweilig) falsche Tatsachen veröffentlichen, ja, Du kannst sogar eine [[Testseite]] dieses Wikis (zeitweilig) völlig zerstören. Bevor Du längere Artikel schreibst solltest Du einfach mal auf der [[Testseite]] kurz üben. <br />
<br />
<br style="clear:left;" /><br /><br />
<span style="font-size:150%;">Einfach mal stöbern oder gezielt suchen</span><br /><br /><br />
Jeder Artikel in RN-Wissen kann verschiedenen Kategorien zugeordnet werden. Die Kategorien werden einfach am Schluss des Artikels durch den Autor selbst bestimmt. Die wichtigsten Kategorien finden Sie links am Rand aufgelistet. Dadurch wird die Artikelsuche und das blättern auf den RN-Wissen Seiten besonders bequem. Natürlich kannst Du auch nach beliebigen Begriffen einfach Suchen lassen.<br />
<br><br />
<br><br />
{| {{GrauRotDesignSchmal}} width="99%"<br />
|[[Bild:Verlosung.jpg|120px|right]]'''Letzte RN-Wissen News: ''' (Stand: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}})<br><br />
29.12.05 - Neu eingeführt die automatische Artikel-Änderungsübersicht unter: [[Aktuelles]]<br><br />
23.12.05 - Ungeeignete Artikel können jetzt zur Löschung vorschlagen werden (siehe [[Hilfe:FAQ|FAQ]])<br><br />
14.12.05 - Weitere Design/Browser Anpassungen, auch an IE Alternativen wie Firefox und Opera <br><br />
08.12.05 - [[Verlosung|Buchverlosung]] unter allen Mitglieder von RN-Wissen gestartet - [[Verlosung|siehe hier]])<br><br />
06.12.05 - Design Anpassungen für Browser Mozilla Firefox durchgeführt <br><br />
05.12.05 - RN-Wissen unterstützt nun auch die Latex-Darstellung [[Hilfe:Mathematische Formeln|mathematischer Formeln]]. <br><br />
23.11.05 - Der Artikelbereich RN-Wissen wurde zur Unterstützung der Community Roboternetz.de freigegeben<br />
|}<br />
<br />
| width=200px valign="top" |<br />
{{AktuelleMeldung}}<br />
<br><br />
<div style="text-align:center;>'''Erste Hilfe:'''</div><br />
<br />
*[[Hilfe:FAQ|Wie erstellt man neue Seiten?]]<br />
*[[RN-Wissen:Hilfe|Anleitung in der Hilfe]]<br />
*[[Hilfe:FAQ|Fragen und Antworten]]<br />
*[[Diskussion:Wunschthemen|Wunschthemen der Leser!]] <br />
<br />
|}<br />
<br />
{| {{Blaueschmaltabelle}} width=100%<br />
| <DynamicArticleList><br />
title=Die fünf neusten Artikel<br />
type=new<br />
count=5<br />
</DynamicArticleList><br />
| <DynamicArticleList><br />
title=Zuletzt geänderte Artikel<br />
type=update<br />
count=5<br />
</DynamicArticleList><br />
| <DynamicArticleList><br />
title=Die fünf beliebtesten Artikel<br />
type=hot<br />
count=5<br />
</DynamicArticleList><br />
|}</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Hauptseite&diff=4590Hauptseite2005-12-30T17:51:05Z<p>PhpSupporter: </p>
<hr />
<div>{| border=0<br />
|<span style="color:#cf7606; font-size:200%;">'''Willkommen bei'''&nbsp;</span><span style="color:#005288; font-size:200%;">'''RN-Wissen'''</span><br /><br /><br />
<br />
<span style="font-size:150%;">RN-Wissen, die Wissenbasis der Roboternetz Community</span><br /><br />
[[Image:rnwissenlogo.jpg|100px|left|Roboternetz Logo]]<br />
Du kennst sicher die Roboternetz Community / Foren, wohl eine der größten Robotik- und Technik-Communities im deustchsprachigen Internet. Ergänzend zur Community gibt es nun diesen Wissens-Bereich, kurz RN-WISSEN genannt. Hier findet man Informationen, Grundlagen als auch Praxistips zu den Bereichen Elektronik, Microelektronik und Robotik speziell in Artikelform und thematisch in Kategorien eingeteilt. Die Seiten sollen sowohl den Einstieg in dieses Hobby erleichtern, als auch dem erfahreneren Bastler als Nachschlagewerk dienen. <br />
Vielleicht wird dir die Seitenstruktur nicht ganz unbekannt sein. Richtig, der Aufbau ist sehr ähnlich der weltberühmten freien Enzyklopädie Wikipedia. Dies ist auch kein Wunder, wir verwenden das gleiche System, nämlich MediaWiki. MediaWiki ist ein System das für größte Nachschlagewerke und Artikelbereiche ausgelegt ist. Der Vorteil auch, viele kommen mit diesem System bereits durch den Bekanntheitsgrad von Wikipedia klar. <p><br />
<br />
Hier kannst Du tatsächlich einfach Seiten verändern und (zeitweilig) falsche Tatsachen veröffentlichen, ja, Du kannst sogar eine [[Testseite]] dieses Wikis (zeitweilig) völlig zerstören. Bevor Du längere Artikel schreibst solltest Du einfach mal auf der [[Testseite]] kurz üben. <br />
<br />
<br style="clear:left;" /><br /><br />
<span style="font-size:150%;">Einfach mal stöbern oder gezielt suchen</span><br /><br /><br />
Jeder Artikel in RN-Wissen kann verschiedenen Kategorien zugeordnet werden. Die Kategorien werden einfach am Schluss des Artikels durch den Autor selbst bestimmt. Die wichtigsten Kategorien finden Sie links am Rand aufgelistet. Dadurch wird die Artikelsuche und das blättern auf den RN-Wissen Seiten besonders bequem. Natürlich kannst Du auch nach beliebigen Begriffen einfach Suchen lassen.<br />
<br><br />
<br><br />
{| {{GrauRotDesign}} width="99%"<br />
|[[Bild:Verlosung.jpg|120px|right]]'''Letzte RN-Wissen News: ''' (Stand: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}})<br><br />
29.12.05 - Neu eingeführt die automatische Artikel-Änderungsübersicht unter: [[Aktuelles]]<br><br />
23.12.05 - Ungeeignete Artikel können jetzt zur Löschung vorschlagen werden (siehe [[Hilfe:FAQ|FAQ]])<br><br />
14.12.05 - Weitere Design/Browser Anpassungen, auch an IE Alternativen wie Firefox und Opera <br><br />
08.12.05 - [[Verlosung|Buchverlosung]] unter allen Mitglieder von RN-Wissen gestartet - [[Verlosung|siehe hier]])<br><br />
06.12.05 - Design Anpassungen für Browser Mozilla Firefox durchgeführt <br><br />
05.12.05 - RN-Wissen unterstützt nun auch die Latex-Darstellung [[Hilfe:Mathematische Formeln|mathematischer Formeln]]. <br><br />
23.11.05 - Der Artikelbereich RN-Wissen wurde zur Unterstützung der Community Roboternetz.de freigegeben<br />
|}<br />
<br />
| width=200px valign="top" |<br />
{{AktuelleMeldung}}<br />
<br><br />
<div style="text-align:center;>'''Erste Hilfe:'''</div><br />
<br />
*[[Hilfe:FAQ|Wie erstellt man neue Seiten?]]<br />
*[[RN-Wissen:Hilfe|Anleitung in der Hilfe]]<br />
*[[Hilfe:FAQ|Fragen und Antworten]]<br />
*[[Diskussion:Wunschthemen|Wunschthemen der Leser!]] <br />
<br />
|}<br />
<br />
{| {{Blaueschmaltabelle}} width=100%<br />
| <DynamicArticleList><br />
title=Die fünf neusten Artikel<br />
type=new<br />
count=5<br />
</DynamicArticleList><br />
| <DynamicArticleList><br />
title=Zuletzt geänderte Artikel<br />
type=update<br />
count=5<br />
</DynamicArticleList><br />
| <DynamicArticleList><br />
title=Die fünf beliebtesten Artikel<br />
type=hot<br />
count=5<br />
</DynamicArticleList><br />
|}</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Aktuelles&diff=4589Aktuelles2005-12-30T17:47:32Z<p>PhpSupporter: </p>
<hr />
<div>{| {{Blaueschmaltabelle}} width=100%<br />
| <DynamicArticleList><br />
title=Die fünf neusten Artikel<br />
type=new<br />
count=5<br />
</DynamicArticleList><br />
| <DynamicArticleList><br />
title=Zuletzt geänderte Artikel<br />
type=update<br />
count=5<br />
</DynamicArticleList><br />
| <DynamicArticleList><br />
title=Die fünf beliebtesten Artikel<br />
type=hot<br />
count=5<br />
</DynamicArticleList><br />
|}<br />
<br />
<br />
<div align="center"><br />
=Die letzten 5 geänderten Artikel in jeder Kategorie=<br />
</div><br />
<br />
{| width="100%"<br />
|-<br />
| style="vertical-align:top; width:52%;" |<br />
<div style="margin:0; margin-right:10px; border:2px solid #dfdfdf; background-color:#f8f8ff;"><br />
<div style="padding:0.3em 1em 0.7em 1em;"><br />
'''Aktuelles in RN-Wissen'''<br />
<br />
Auf dieser Seite findet man im schnellen Überblick die letzten 5 Artikel die jeweils in den wichtigsten Kategorien verändert wurden. Da einige Themen zu mehreren Kategorien zählen, erscheinen diese hier unter Umständen mehrfach.<br />
<br />
''Stand der Übersicht: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}}''<br><br />
</div><br />
</div><br />
<br />
<!--<br />
<div style="margin:10px 10px 0px 0px; border:2px solid #dfdfdf; padding:0.6em; background-color:#dfefdf;"><br />
'''Wikipedia aktuell'''<br />
<br />
</div> <br />
</div>--><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Microcontroller'''<br />
<DynamicPageList><br />
category=Microcontroller<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Microcontroller|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Motoren'''<br />
<DynamicPageList><br />
category=Motoren<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Motoren|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Elektronik'''<br />
<DynamicPageList><br />
category=Elektronik<br />
notcategory=Microcontroller<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Elektronik|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Projekte'''<br />
<DynamicPageList><br />
category=Projekte<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Projekte|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Sensoren'''<br />
<DynamicPageList><br />
category=Sensoren<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Sensoren|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Mechanik'''<br />
<DynamicPageList><br />
category=Mechanik<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Mechanik|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<br />
<!-- RECHTE SPALTE --><br />
| style="vertical-align:top; width:48%;" |<br />
<div style="margin:0; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Robotikeinstieg'''<br />
<DynamicPageList><br />
category=Robotikeinstieg<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Robotikeinstieg|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#efefef; margin-top:10px;"><br />
'''Kategorie Software'''<br />
<DynamicPageList><br />
category=Software<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Software|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Grundlagen'''<br />
<DynamicPageList><br />
category=Grundlagen<br />
notcategory=Software<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Grundlagen|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Praxis'''<br />
<DynamicPageList><br />
category=Projekte<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Praxis|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Quellcode C'''<br />
<DynamicPageList><br />
category=Quellcode C<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Quellcode C|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Quellcode Bascom'''<br />
<DynamicPageList><br />
category=Quellcode Bascom<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Quellcode Bascom|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#efefef; margin-top:10px;"><br />
'''Löschkandidaten'''<br />
<DynamicPageList><br />
category=Löschkandidat<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Löschkandidat|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<br />
|}<br />
<br />
<br />
[[Kategorie:RN-Wissen]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Hauptseite&diff=4588Hauptseite2005-12-30T17:46:38Z<p>PhpSupporter: </p>
<hr />
<div>{| border=0<br />
|<span style="color:#cf7606; font-size:200%;">'''Willkommen bei'''&nbsp;</span><span style="color:#005288; font-size:200%;">'''RN-Wissen'''</span><br /><br /><br />
<br />
<span style="font-size:150%;">RN-Wissen, die Wissenbasis der Roboternetz Community</span><br /><br />
[[Image:rnwissenlogo.jpg|100px|left|Roboternetz Logo]]<br />
Du kennst sicher die Roboternetz Community / Foren, wohl eine der größten Robotik- und Technik-Communities im deustchsprachigen Internet. Ergänzend zur Community gibt es nun diesen Wissens-Bereich, kurz RN-WISSEN genannt. Hier findet man Informationen, Grundlagen als auch Praxistips zu den Bereichen Elektronik, Microelektronik und Robotik speziell in Artikelform und thematisch in Kategorien eingeteilt. Die Seiten sollen sowohl den Einstieg in dieses Hobby erleichtern, als auch dem erfahreneren Bastler als Nachschlagewerk dienen. <br />
Vielleicht wird dir die Seitenstruktur nicht ganz unbekannt sein. Richtig, der Aufbau ist sehr ähnlich der weltberühmten freien Enzyklopädie Wikipedia. Dies ist auch kein Wunder, wir verwenden das gleiche System, nämlich MediaWiki. MediaWiki ist ein System das für größte Nachschlagewerke und Artikelbereiche ausgelegt ist. Der Vorteil auch, viele kommen mit diesem System bereits durch den Bekanntheitsgrad von Wikipedia klar. <p><br />
<br />
Hier kannst Du tatsächlich einfach Seiten verändern und (zeitweilig) falsche Tatsachen veröffentlichen, ja, Du kannst sogar eine [[Testseite]] dieses Wikis (zeitweilig) völlig zerstören. Bevor Du längere Artikel schreibst solltest Du einfach mal auf der [[Testseite]] kurz üben. <br />
<br />
<br style="clear:left;" /><br /><br />
<span style="font-size:150%;">Einfach mal stöbern oder gezielt suchen</span><br /><br /><br />
Jeder Artikel in RN-Wissen kann verschiedenen Kategorien zugeordnet werden. Die Kategorien werden einfach am Schluss des Artikels durch den Autor selbst bestimmt. Die wichtigsten Kategorien finden Sie links am Rand aufgelistet. Dadurch wird die Artikelsuche und das blättern auf den RN-Wissen Seiten besonders bequem. Natürlich kannst Du auch nach beliebigen Begriffen einfach Suchen lassen.<br />
<br><br />
<br><br />
{| {{Blaueschmaltabelle}} width="99%"<br />
|[[Bild:Verlosung.jpg|120px|right]]'''Letzte RN-Wissen News: ''' (Stand: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}})<br><br />
29.12.05 - Neu eingeführt die automatische Artikel-Änderungsübersicht unter: [[Aktuelles]]<br><br />
23.12.05 - Ungeeignete Artikel können jetzt zur Löschung vorschlagen werden (siehe [[Hilfe:FAQ|FAQ]])<br><br />
14.12.05 - Weitere Design/Browser Anpassungen, auch an IE Alternativen wie Firefox und Opera <br><br />
08.12.05 - [[Verlosung|Buchverlosung]] unter allen Mitglieder von RN-Wissen gestartet - [[Verlosung|siehe hier]])<br><br />
06.12.05 - Design Anpassungen für Browser Mozilla Firefox durchgeführt <br><br />
05.12.05 - RN-Wissen unterstützt nun auch die Latex-Darstellung [[Hilfe:Mathematische Formeln|mathematischer Formeln]]. <br><br />
23.11.05 - Der Artikelbereich RN-Wissen wurde zur Unterstützung der Community Roboternetz.de freigegeben<br />
|}<br />
<br />
| width=200px valign="top" |<br />
{{AktuelleMeldung}}<br />
<br><br />
<div style="text-align:center;>'''Erste Hilfe:'''</div><br />
<br />
*[[Hilfe:FAQ|Wie erstellt man neue Seiten?]]<br />
*[[RN-Wissen:Hilfe|Anleitung in der Hilfe]]<br />
*[[Hilfe:FAQ|Fragen und Antworten]]<br />
*[[Diskussion:Wunschthemen|Wunschthemen der Leser!]] <br />
<br />
|}<br />
<br />
{| {{Blaueschmaltabelle}} width=100%<br />
| <DynamicArticleList><br />
title=Die fünf neusten Artikel<br />
type=new<br />
count=5<br />
</DynamicArticleList><br />
| <DynamicArticleList><br />
title=Zuletzt geänderte Artikel<br />
type=update<br />
count=5<br />
</DynamicArticleList><br />
| <DynamicArticleList><br />
title=Die fünf beliebtesten Artikel<br />
type=hot<br />
count=5<br />
</DynamicArticleList><br />
|}</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Testseite&diff=4587Testseite2005-12-30T17:33:33Z<p>PhpSupporter: /* KÜ */</p>
<hr />
<div>= Testseite =<br />
<br />
Hier kann man ein wenig experimentieren wie was geht! Einfach auf bearbeiten klicken und schreiben!<br />
Wieso ist das jetzt in so einem Kästchen?<br />
Eine neue Zeile im Haupttext.<br />
So strukturiert man Seiten: <br />
Bla ??? blablabla<br />
Test1234<br />
Das geht ja gut!!!<br />
<br />
==Neuer Abschnitt==<br />
<math> E=m\cdot\underbrace{(a^2+b^2)}_{=c^222} </math><br />
<br />
== Neuer Abschnitt ==<br />
bla bla bla ...<br />
<br />
=== Unterabschnitt ===<br />
bla bla bla ...<br />
==== Unter-Unterabschnitt ====<br />
[[Bild:AtmelController.jpg|thumb|Bildunterzeile für Beschreibung]]<br />
bla bla bla ...<br />
* Aufzählung<br />
* Aufzählung<br />
* Aufzählung<br />
* Aufzählung<br />
<br />
# Aufzählung<br />
# Aufzählung<br />
# Aufzählung<br />
# Aufzählung<br />
<br />
== Ab hier Testbereich zum ausprobieren - kann ruhig verschandelt werden!!!==<br />
<br />
=== Negation ===<br />
<br />
Hier wäre ein [[Abblockkondensator]] nötig:<br />
[[Bild:Abblockkondensator OhneC amAVR.jpg]]<br />
<br />
Wieso? Sieht ein bisschen wie ''Tannennadeln'' [http://de.wikipedia.org/wiki/Tannengr%C3%BCn] aus.<br />
<br />
Das passt doch ganz gut in die '''Vorweihnachtszeit'''!<br />
<br />
klar, als Deko würds was taugen, aber auf ne Stromversorgungsleitung ist so ein Muster mit 4MHz etwas fehl am Platze... Und wenn man zu Weihnachten nen Kondensator geschenkt bekommt, kann man ihn schnell mal einbauen, und dann hats sichs ausgenadelt: <br />
<br />
[[Bild:Abblockkondensator 100nF amAVR.jpg]]<br />
<br />
== Ebene 2 Überschrift ==<br />
<br />
<br />
{{Registertabelle8Bit|OCIE2|TOIE2|TICIE1|OCIE1A|OCIE1B|TOIE1|OCIE0|TOIE0}}<br />
<br />
{| {{GrauRotDesign}}<br />
|<math>\overline{}OSC1/CLKIN</math><br />
|Quartz Input oder Input für externe Clock-Source. <br />
|-<br />
|<math>\overline{MCLR}/Vpp</math> <br />
|Wird ja Grafik generiert, geht leider nicht anders<br />
|-<br />
|<math>\overline{}RA0/AN0</math><br />
|PORTA Bit 0 (TTL) oder Analog Input 0. <br />
|-<br />
|}<br />
<br />
<div {{GrauRotDesign}}><br />
Text<br />
</div><br />
<br />
{| {{Blauetabelle}}<br />
|<math>\overline{}OSC1/CLKIN</math><br />
|Quartz Input oder Input für externe Clock-Source. <br />
|-<br />
|<math>\overline{MCLR}/Vpp</math> <br />
|Wird ja Grafik generiert, geht leider nicht anders<br />
|-<br />
|<math>\overline{}RA0/AN0</math><br />
|PORTA Bit 0 (TTL) oder Analog Input 0. <br />
|-<br />
|}<br />
<math>\overline{}OSC1/CLKIN</math> <br />
<br />
<br />
<br />
Ein Link [[Testseite2]]<br />
<br />
Versuche:<br />
<br />
<table border=1><br />
<tr><br />
<br />
<td>Test<br />
<td>test<br />
</td><br />
</tr><br />
</table><br />
<br />
man kann ja html anwenden :-)<br />
<br />
Bild einfügen ganz einfach <br />
nur den genauen dateinamen in dieser Form eingeben [ [ B i l d : B e i s p i e l . j p e g ] ] ( Leerzeichen nur zum Besseren Verständnis<br />
<br />
[[Bild:Beispiel.jpeg|thumb|600px|center|Testbild]]<br />
<br />
bla bla ... Test bla ...<br />
<br />
Test von mir<br />
a_2<br />
<br />
[[Category:Test]]<br />
<br />
<br />
----<br />
<br />
----<br />
<br />
H<sub>2</sub>O<br />
<br />
<strong>a<sup>2</sup>+ 2ab + b<sup>2</sup> = (a + b)<sup>2</sup></strong><br />
<br />
<br />
[[Bild:Beine65.jpg]]<br />
<br />
Blablubb<br />
<br />
==LaTeX==<br />
<br />
<math>sum_{i=0}^n i^2</math><br />
h<br />
<br />
:<math>Z(\{x[n]\}) = X(z) := \sum_{n=-\infty}^{\infty}x(n)z^{-n}</math><br />
hgbn<br />
bbv<br />
fvvcbbb<br />
[[Vorlage:testvorlage]]<br />
{{testvorlage}}<br />
hhh<br />
vfffj<br />
xfc bbjjh<br />
f<br />
<math>\int_{0}^{\pi} \cos\left(x\right)\, \sin\left(x\right) \,\mathrm{d}\ x = 0</math><br />
<br />
<math>\int \cos\left(x\right)\, \sin\left(x\right) \,\mathrm{d} x = -\frac{\cos\left(2\, x\right)}{4}</math><br />
nn<br />
h<br />
<br />
öößßk<br />
n<br />
[[Bild:Beine.jpg]]<br />
<br />
=G=<br />
<br />
<nowiki><a name="GND">&nbsp;</a></nowiki><br />
;GND: "''Ground''": Masse einer Schaltung, auf die sich andere Potentiale beziehen. Damit liegt GND selber auf 0V. Alle GND-[[Schaltsymbole|Symbole]] eines Schaltplans sind miteinander verbunden, auch wenn im Schaltplan keine Verbindung zwischen ihnen eingezeichnet wurde, um die Übersichtlichkeit zu erhöhen.<br />
Test<br />
<br />
Test2<br />
<br />
Tähst ...<br />
<br />
==Gschau==<br />
schauerei<br />
=== i schau ===<br />
<br />
Ja, dann [[schaumamoi|schaumamoi]] ...<br />
<br />
==Überschrift==<br />
<br />
<br />
<DynamicArticleList><br />
title=Newly Posted Articles<br />
type=new<br />
count=5<br />
</DynamicArticleList></div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Hauptseite&diff=4586Hauptseite2005-12-30T12:34:16Z<p>PhpSupporter: </p>
<hr />
<div>{| border=0<br />
|<span style="color:#cf7606; font-size:200%;">'''Willkommen bei'''&nbsp;</span><span style="color:#005288; font-size:200%;">'''RN-Wissen'''</span><br /><br /><br />
<br />
<span style="font-size:150%;">RN-Wissen, die Wissenbasis der Roboternetz Community</span><br /><br />
[[Image:rnwissenlogo.jpg|100px|left|Roboternetz Logo]]<br />
Du kennst sicher die Roboternetz Community / Foren, wohl eine der größten Robotik- und Technik-Communities im deustchsprachigen Internet. Ergänzend zur Community gibt es nun diesen Wissens-Bereich, kurz RN-WISSEN genannt. Hier findet man Informationen, Grundlagen als auch Praxistips zu den Bereichen Elektronik, Microelektronik und Robotik speziell in Artikelform und thematisch in Kategorien eingeteilt. Die Seiten sollen sowohl den Einstieg in dieses Hobby erleichtern, als auch dem erfahreneren Bastler als Nachschlagewerk dienen. <br />
Vielleicht wird dir die Seitenstruktur nicht ganz unbekannt sein. Richtig, der Aufbau ist sehr ähnlich der weltberühmten freien Enzyklopädie Wikipedia. Dies ist auch kein Wunder, wir verwenden das gleiche System, nämlich MediaWiki. MediaWiki ist ein System das für größte Nachschlagewerke und Artikelbereiche ausgelegt ist. Der Vorteil auch, viele kommen mit diesem System bereits durch den Bekanntheitsgrad von Wikipedia klar. <p><br />
<br />
Hier kannst Du tatsächlich einfach Seiten verändern und (zeitweilig) falsche Tatsachen veröffentlichen, ja, Du kannst sogar eine [[Testseite]] dieses Wikis (zeitweilig) völlig zerstören. Bevor Du längere Artikel schreibst solltest Du einfach mal auf der [[Testseite]] kurz üben. <br />
<br />
<br style="clear:left;" /><br /><br />
<span style="font-size:150%;">Einfach mal stöbern oder gezielt suchen</span><br /><br /><br />
Jeder Artikel in RN-Wissen kann verschiedenen Kategorien zugeordnet werden. Die Kategorien werden einfach am Schluss des Artikels durch den Autor selbst bestimmt. Die wichtigsten Kategorien finden Sie links am Rand aufgelistet. Dadurch wird die Artikelsuche und das blättern auf den RN-Wissen Seiten besonders bequem. Natürlich kannst Du auch nach beliebigen Begriffen einfach Suchen lassen.<br />
<br><br />
<br><br />
{| {{Blaueschmaltabelle}} width="99%"<br />
|[[Bild:Verlosung.jpg|120px|right]]'''Letzte RN-Wissen News: ''' (Stand: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}})<br><br />
29.12.05 - Neu eingeführt die automatische Artikel-Änderungsübersicht unter: [[Aktuelles]]<br><br />
23.12.05 - Ungeeignete Artikel können jetzt zur Löschung vorschlagen werden (siehe [[Hilfe:FAQ|FAQ]])<br><br />
14.12.05 - Weitere Design/Browser Anpassungen, auch an IE Alternativen wie Firefox und Opera <br><br />
08.12.05 - [[Verlosung|Buchverlosung]] unter allen Mitglieder von RN-Wissen gestartet - [[Verlosung|siehe hier]])<br><br />
06.12.05 - Design Anpassungen für Browser Mozilla Firefox durchgeführt <br><br />
05.12.05 - RN-Wissen unterstützt nun auch die Latex-Darstellung [[Hilfe:Mathematische Formeln|mathematischer Formeln]]. <br><br />
23.11.05 - Der Artikelbereich RN-Wissen wurde zur Unterstützung der Community Roboternetz.de freigegeben<br />
|}<br />
<br />
| width=200px valign="top" |<br />
{{AktuelleMeldung}}<br />
<br><br />
<div style="text-align:center;>'''Erste Hilfe:'''</div><br />
<br />
*[[Hilfe:FAQ|Wie erstellt man neue Seiten?]]<br />
*[[RN-Wissen:Hilfe|Anleitung in der Hilfe]]<br />
*[[Hilfe:FAQ|Fragen und Antworten]]<br />
*[[Diskussion:Wunschthemen|Wunschthemen der Leser!]] <br />
<br />
|}</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=RN-Wissen.de:Site_support&diff=4585RN-Wissen.de:Site support2005-12-30T12:28:48Z<p>PhpSupporter: </p>
<hr />
<div>Das Roboternetz ist ein privates Projekt andem alle ehrenamtlich dran mitwirken.<br />
<br />
Der bisherige Erfolg ist in erster Linie von den Benutzern abhängig. Ihr könnt das Portal durch viele Dinge unterstützen:<br />
<br />
<br />
* indem Ihr einen Artikel schreibt und euer Fachwissen in einem Bereich einbringt<br />
* indem Ihr ein Bauanleitung oder Schaltung veröffentlich und beschreibt<br />
* indem Ihr einen vorhanden Artikel weiter ausbaut<br />
* indem Ihr als Lektor tätig werdet und Fehler in Artikel ausbügelt<br />
* indem Ihr die Werbebanner, der Sponsoren als auch Google beachtet und das Angebot durch einen Klick mal anschaut (diese Werbung ist notwendig und dient zumindest zur Finazierung der Betriebskosten (Serverkosten)) <br />
* wenn Ihr wollt, auch durch eine direkte Spende. [[https://www.paypal.com/cgi-bin/webscr?cmd=_xclick-subscriptions&business=frank%40brall%2ecom&item_name=Roboternetzsponsor&item_number=Roboternetzsponsor&no_shipping=1&no_note=1&currency_code=EUR&lc=DE&bn=PP%2dSubscriptionsBF&charset=UTF%2d8&a3=2%2e00&p3=12&t3=M&src=1&sra=1 Per PayPal 2,00 Euro pro Jahr sponsern]]<br />
* wenn Du schon einige Monate dabei und über 18 Jahre alt bist und vielleicht Dein Fachwissen schon durch zahlreiche Beiträger gezeigt hast, so kannst Du dich auch als Moderator bewerben (PM an Webmaster/Admin webmaster(at)roboternetz.de und ein Forum betreuen.<br />
<br />
<br />
Geplant ist derzeit ein zweiter rechenstarker Server zur Entlastung, sobald Finanzierung steht!<br />
Finanzierungstand derzeit: ca. 15% !<br />
<br />
<br />
<br />
''Es wäre schon toll wenn alle User die diese Seiten nutzen, zumindest auch durch einen Punkt Ihre Unterstützung zeigen. ''<br />
<br />
<br />
<center><br />
http://www.roboternetz.de/bilder/rnwissen.jpg<br />
</center></div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=RN-Wissen.de:Site_support&diff=4584RN-Wissen.de:Site support2005-12-30T12:26:22Z<p>PhpSupporter: </p>
<hr />
<div>Das Roboternetz ist ein privates Projekt andem alle ehrenamtlich dran mitwirken.<br />
<br />
Der bisherige Erfolg ist in erster Linie von den Benutzern abhängig. Ihr könnt das Portal durch viele Dinge unterstützen:<br />
<br />
<br />
* indem Ihr einen Artikel schreibt und euer Fachwissen in einem Bereich einbringt<br />
* indem Ihr ein Bauanleitung oder Schaltung veröffentlich und beschreibt<br />
* indem Ihr einen vorhanden Artikel weiter ausbaut<br />
* indem Ihr als Lektor tätig werdet und Fehler in Artikel ausbügelt<br />
* indem Ihr die Werbebanner, der Sponsoren als auch Google beachtet und das Angebot durch einen Klick mal anschaut (diese Werbung ist notwendig und dient zumindest zur Finazierung der Betriebskosten (Serverkosten)) <br />
* wenn Ihr wollt, auch durch eine direkte Spende. [[https://www.paypal.com/cgi-bin/webscr?cmd=_xclick-subscriptions&business=frank%40brall%2ecom&item_name=Roboternetzsponsor&item_number=Roboternetzsponsor&no_shipping=1&no_note=1&currency_code=EUR&lc=DE&bn=PP%2dSubscriptionsBF&charset=UTF%2d8&a3=2%2e00&p3=12&t3=M&src=1&sra=1 Per PayPal 2,00 Euro pro Jahr sponsern]]<br />
* wenn Du schon einige Monate dabei und über 18 Jahre alt bist und vielleicht Dein Fachwissen schon durch zahlreiche Beiträger gezeigt hast, so kannst Du dich auch als Moderator bewerben (PM an Webmaster/Admin webmaster(at)roboternetz.de und ein Forum betreuen.<br />
<br />
<br />
Geplant ist derzeit ein zweiter rechenstarker Server zur Entlastung, sobald Finanzierung steht!<br />
Finanzierungstand derzeit: ca. 15% !<br />
<br />
<br />
<br />
''Es wäre schon toll wenn alle User die diese Seiten nutzen, zumindest auch durch einen Punkt Ihre Unterstützung zeigen.''</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=RN-Wissen.de:Site_support&diff=4582RN-Wissen.de:Site support2005-12-30T12:22:00Z<p>PhpSupporter: </p>
<hr />
<div>Das Roboternetz ist ein privates Projekt andem alle ehrenamtlich dran mitwirken.<br />
<br />
Der Erfolg ist in erster Linie von den Benutzern abhängig. Ihr könnt das Portal durch viele Dinge unterstützen:<br />
<br />
<br />
* indem Ihr einen Artikel schreibt und euer Fachwissen in einem Bereich einbringt<br />
* indem Ihr ein Bauanleitung oder Schaltung veröffentlich und beschreibt<br />
* indem Ihr einen vorhanden Artikel weiter ausbaut<br />
* indem Ihr als Lektor tätig werdet und Fehler in Artikel ausbügelt<br />
* indem Ihr die Werbebanner, der Sponsoren als auch Google beachtet und das Angebot durch einen Klick mal anschaut (diese Werbung ist notwendig und dient zumindest zur Finazierung der Betriebskosten (Serverkosten)) <br />
* wenn Ihr wollt, auch durch eine direkte Spende. [[https://www.paypal.com/cgi-bin/webscr?cmd=_xclick-subscriptions&business=frank%40brall%2ecom&item_name=Roboternetzsponsor&item_number=Roboternetzsponsor&no_shipping=1&no_note=1&currency_code=EUR&lc=DE&bn=PP%2dSubscriptionsBF&charset=UTF%2d8&a3=2%2e00&p3=12&t3=M&src=1&sra=1 Per PayPal 2,00 Euro pro Jahr sponsern]]<br />
* wenn Du schon einige Monate dabei und über 18 Jahre alt bist und vielleicht Dein Fachwissen schon durch zahlreiche Beiträger gezeigt hast, so kannst Du dich auch als Moderator bewerben (PM an Webmaster/Admin webmaster(at)roboternetz.de und ein Forum betreuen.<br />
<br />
<br />
Geplant ist derzeit ein zweiter rechenstarker Server zur Entlastung, sobald Finanzierung steht!<br />
<br />
<br />
''Es wäre schon toll wenn alle User die diese Seiten nutzen, zumindest auch durch einen Punkt Ihre Unterstützung zeigen.''</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Aktuelles&diff=4566Aktuelles2005-12-29T22:47:34Z<p>PhpSupporter: </p>
<hr />
<div><div align="center"><br />
=Die letzten 5 geänderten Artikel in jeder Kategorie=<br />
</div><br />
<br />
{| width="100%"<br />
|-<br />
| style="vertical-align:top; width:52%;" |<br />
<div style="margin:0; margin-right:10px; border:2px solid #dfdfdf; background-color:#f8f8ff;"><br />
<div style="padding:0.3em 1em 0.7em 1em;"><br />
'''Aktuelles in RN-Wissen'''<br />
<br />
Auf dieser Seite findet man im schnellen Überblick die letzten 5 Artikel die jeweils in den wichtigsten Kategorien verändert wurden. Da einige Themen zu mehreren Kategorien zählen, erscheinen diese hier unter Umständen mehrfach.<br />
<br />
''Stand der Übersicht: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}}''<br><br />
</div><br />
</div><br />
<br />
<!--<br />
<div style="margin:10px 10px 0px 0px; border:2px solid #dfdfdf; padding:0.6em; background-color:#dfefdf;"><br />
'''Wikipedia aktuell'''<br />
<br />
</div> <br />
</div>--><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Microcontroller'''<br />
<DynamicPageList><br />
category=Microcontroller<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Microcontroller|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Motoren'''<br />
<DynamicPageList><br />
category=Motoren<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Motoren|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Elektronik'''<br />
<DynamicPageList><br />
category=Elektronik<br />
notcategory=Microcontroller<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Elektronik|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Projekte'''<br />
<DynamicPageList><br />
category=Projekte<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Projekte|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Sensoren'''<br />
<DynamicPageList><br />
category=Sensoren<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Sensoren|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Mechanik'''<br />
<DynamicPageList><br />
category=Mechanik<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Mechanik|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<br />
<!-- RECHTE SPALTE --><br />
| style="vertical-align:top; width:48%;" |<br />
<div style="margin:0; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Robotikeinstieg'''<br />
<DynamicPageList><br />
category=Robotikeinstieg<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Robotikeinstieg|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#efefef; margin-top:10px;"><br />
'''Kategorie Software'''<br />
<DynamicPageList><br />
category=Software<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Software|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Grundlagen'''<br />
<DynamicPageList><br />
category=Grundlagen<br />
notcategory=Software<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Grundlagen|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Praxis'''<br />
<DynamicPageList><br />
category=Projekte<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Praxis|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Quellcode C'''<br />
<DynamicPageList><br />
category=Quellcode C<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Quellcode C|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Quellcode Bascom'''<br />
<DynamicPageList><br />
category=Quellcode Bascom<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Quellcode Bascom|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#efefef; margin-top:10px;"><br />
'''Löschkandidaten'''<br />
<DynamicPageList><br />
category=Löschkandidat<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Löschkandidat|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<br />
|}<br />
<br />
<br />
[[Kategorie:RN-Wissen]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=MediaWiki:Sidebar&diff=4560MediaWiki:Sidebar2005-12-29T19:29:29Z<p>PhpSupporter: </p>
<hr />
<div>* Hauptthemen<br />
** Kategorie:Robotikeinstieg|Robotikeinstieg<br />
** Kategorie:Mechanik|Mechanik<br />
** Kategorie:Elektronik|Elektronik<br />
** Kategorie:Sensoren|Sensoren<br />
** Kategorie:Microcontroller|Microcontroller<br />
** Kategorie:Motoren|Motoren<br />
** Kategorie:Software|Software<br />
** Kategorie:Projekte|Projekte/Schaltungen<br />
** Kategorie:Praxis|Praxis<br />
** Kategorie:Grundlagen|Grundlagen<br />
** Buchvorstellungen|Buchvorstellungen<br />
** Kategorie:Abkürzung|Abkürzungen<br />
<br />
* navigation<br />
** mainpage|mainpage<br />
** randompage-url|randompage<br />
** Testseite|Testseite für Autoren<br />
** Hilfe:FAQ|FAQ<br />
** helppage|help<br />
** Spezial:Newimages|Neuste Bilder<br />
** Kategorie:Löschkandidat|Löschkandidaten<br />
** Diskussion:Wunschthemen|Wunschthemen<br />
** Aktuelles|Aktuelles<br />
** sitesupport-url|Unterstützen</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=MediaWiki:Sidebar&diff=4559MediaWiki:Sidebar2005-12-29T19:28:50Z<p>PhpSupporter: </p>
<hr />
<div>* Hauptthemen<br />
** Kategorie:Robotikeinstieg|Robotikeinstieg<br />
** Kategorie:Mechanik|Mechanik<br />
** Kategorie:Elektronik|Elektronik<br />
** Kategorie:Sensoren|Sensoren<br />
** Kategorie:Microcontroller|Microcontroller<br />
** Kategorie:Motoren|Motoren<br />
** Kategorie:Software|Software<br />
** Kategorie:Projekte|Projekte/Schaltungen<br />
** Kategorie:Praxis|Praxis<br />
** Kategorie:Grundlagen|Grundlagen<br />
** Buchvorstellungen|Buchvorstellungen<br />
** Kategorie:Abkürzung|Abkürzungen<br />
<br />
* navigation<br />
** mainpage|mainpage<br />
** randompage-url|randompage<br />
** Testseite|Testseite für Autoren<br />
** Hilfe:FAQ|FAQ<br />
** helppage|help<br />
** Spezial:Newimages|Neuste Bilder<br />
** Kategorie:Löschkandidat|Löschkandidaten<br />
** Diskussion:Wunschthemen|Wunschthemen<br />
** Diskussion:Aktuelles|Aktuelles<br />
** sitesupport-url|Unterstützen</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Aktuelles&diff=4558Aktuelles2005-12-29T19:25:32Z<p>PhpSupporter: </p>
<hr />
<div>{| width="100%"<br />
|-<br />
| style="vertical-align:top; width:52%;" |<br />
<div style="margin:0; margin-right:10px; border:2px solid #dfdfdf; background-color:#f8f8ff;"><br />
<div style="padding:0.3em 1em 0.7em 1em;"><br />
'''Aktuelles in RN-Wissen'''<br />
<br />
Auf dieser Seite findet man im schnellen Überblick die letzten 5 Artikel die jeweils in den wichtigsten Kategorien verändert wurden. Da einige Themen zu mehreren Kategorien zählen, erscheinen diese hier unter Umständen mehrfach.<br />
</div><br />
<br />
</div><br />
<br />
<!--<br />
<div style="margin:10px 10px 0px 0px; border:2px solid #dfdfdf; padding:0.6em; background-color:#dfefdf;"><br />
'''Wikipedia aktuell'''<br />
<br />
</div> <br />
</div>--><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Microcontroller'''<br />
<DynamicPageList><br />
category=Microcontroller<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Microcontroller|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Motoren'''<br />
<DynamicPageList><br />
category=Motoren<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Motoren|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Elektronik'''<br />
<DynamicPageList><br />
category=Elektronik<br />
notcategory=Microcontroller<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Elektronik|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Projekte'''<br />
<DynamicPageList><br />
category=Projekte<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Projekte|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Sensoren'''<br />
<DynamicPageList><br />
category=Sensoren<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Sensoren|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Mechanik'''<br />
<DynamicPageList><br />
category=Mechanik<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Mechanik|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<br />
<!-- RECHTE SPALTE --><br />
| style="vertical-align:top; width:48%;" |<br />
<div style="margin:0; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Robotikeinstieg'''<br />
<DynamicPageList><br />
category=Robotikeinstieg<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Robotikeinstieg|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#efefef; margin-top:10px;"><br />
'''Kategorie Software'''<br />
<DynamicPageList><br />
category=Software<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Software|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Grundlagen'''<br />
<DynamicPageList><br />
category=Grundlagen<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Grundlagen|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#f8f8ff;"><br />
'''Kategorie Praxis'''<br />
<DynamicPageList><br />
category=Projekte<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Praxis|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Quellcode C'''<br />
<DynamicPageList><br />
category=Quellcode C<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Quellcode C|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<div style="margin:0; margin-top:10px; margin-right:10px; border:2px solid #dfdfdf; padding:0em 1em 1em 1em; background-color:#ffffff;"><br />
'''Kategorie Quellcode Bascom'''<br />
<DynamicPageList><br />
category=Quellcode Bascom<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<div style="text-align:right;"><small>'''[[:Kategorie:Quellcode Bascom|Weitere Artikel in der Kategorie]]''' </small></div><br />
</div><br />
<br />
<br />
|}<br />
<br />
<br />
[[Kategorie:RN-Wissen]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Hauptseite&diff=4547Hauptseite2005-12-29T15:58:14Z<p>PhpSupporter: </p>
<hr />
<div>{| border=0<br />
|<span style="color:#cf7606; font-size:200%;">'''Willkommen bei'''&nbsp;</span><span style="color:#005288; font-size:200%;">'''RN-Wissen'''</span><br /><br /><br />
<br />
<span style="font-size:150%;">RN-Wissen, die Wissenbasis der Roboternetz Community</span><br /><br />
[[Image:rnwissenlogo.jpg|100px|left|Roboternetz Logo]]<br />
Du kennst sicher die Roboternetz Community / Foren, wohl eine der größten Robotik- und Technik-Communities im deustchsprachigen Internet. Ergänzend zur Community gibt es nun diesen Wissens-Bereich, kurz RN-WISSEN genannt. Hier findet man Informationen, Grundlagen als auch Praxistips zu den Bereichen Elektronik, Microelektronik und Robotik speziell in Artikelform und thematisch in Kategorien eingeteilt. Die Seiten sollen sowohl den Einstieg in dieses Hobby erleichtern, als auch dem erfahreneren Bastler als Nachschlagewerk dienen. <br />
Vielleicht wird dir die Seitenstruktur nicht ganz unbekannt sein. Richtig, der Aufbau ist sehr ähnlich der weltberühmten freien Enzyklopädie Wikipedia. Dies ist auch kein Wunder, wir verwenden das gleiche System, nämlich MediaWiki. MediaWiki ist ein System das für größte Nachschlagewerke und Artikelbereiche ausgelegt ist. Der Vorteil auch, viele kommen mit diesem System bereits durch den Bekanntheitsgrad von Wikipedia klar. <p><br />
<br />
Hier kannst Du tatsächlich einfach Seiten verändern und (zeitweilig) falsche Tatsachen veröffentlichen, ja, Du kannst sogar eine [[Testseite]] dieses Wikis (zeitweilig) völlig zerstören. Bevor Du längere Artikel schreibst solltest Du einfach mal auf der [[Testseite]] kurz üben. <br />
<br />
<br style="clear:left;" /><br /><br />
<span style="font-size:150%;">Einfach mal stöbern oder gezielt suchen</span><br /><br /><br />
Jeder Artikel in RN-Wissen kann verschiedenen Kategorien zugeordnet werden. Die Kategorien werden einfach am Schluss des Artikels durch den Autor selbst bestimmt. Die wichtigsten Kategorien finden Sie links am Rand aufgelistet. Dadurch wird die Artikelsuche und das blättern auf den RN-Wissen Seiten besonders bequem. Natürlich kannst Du auch nach beliebigen Begriffen einfach Suchen lassen.<br />
<br><br />
<br><br />
{| {{Blaueschmaltabelle}} width="99%"<br />
|[[Bild:Verlosung.jpg|120px|right]]'''Letzte RN-Wissen News: ''' (Stand: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}})<br><br />
23.12.05 - Ungeeignete Artikel können jetzt zur Löschung vorschlagen werden (siehe [[Hilfe:FAQ|FAQ]])<br><br />
14.12.05 - Weitere Design/Browser Anpassungen, auch an IE Alternativen wie Firefox und Opera <br><br />
08.12.05 - [[Verlosung|Buchverlosung]] unter allen Mitglieder von RN-Wissen gestartet - [[Verlosung|siehe hier]])<br><br />
06.12.05 - Design Anpassungen für Browser Mozilla Firefox durchgeführt <br><br />
05.12.05 - RN-Wissen unterstützt nun auch die Latex-Darstellung [[Hilfe:Mathematische Formeln|mathematischer Formeln]]. <br><br />
23.11.05 - Der Artikelbereich RN-Wissen wurde zur Unterstützung der Community Roboternetz.de freigegeben<br />
|}<br />
<br />
| width=200px valign="top" |<br />
{{AktuelleMeldung}}<br />
<br><br />
<div style="text-align:center;>'''Erste Hilfe:'''</div><br />
<br />
*[[Hilfe:FAQ|Wie erstellt man neue Seiten?]]<br />
*[[RN-Wissen:Hilfe|Anleitung in der Hilfe]]<br />
*[[Hilfe:FAQ|Fragen und Antworten]]<br />
<br />
<br />
|}</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Hauptseite&diff=4544Hauptseite2005-12-29T15:45:42Z<p>PhpSupporter: </p>
<hr />
<div>{| border=0<br />
|<span style="color:#cf7606; font-size:200%;">'''Willkommen bei'''&nbsp;</span><span style="color:#005288; font-size:200%;">'''RN-Wissen'''</span><br /><br /><br />
<br />
<span style="font-size:150%;">RN-Wissen, die Wissenbasis der Roboternetz Community</span><br /><br />
[[Image:rnwissenlogo.jpg|100px|left|Roboternetz Logo]]<br />
Du kennst sicher die Roboternetz Community / Foren, wohl eine der größten Robotik- und Technik-Communities im deustchsprachigen Internet. Ergänzend zur Community gibt es nun diesen Wissens-Bereich, kurz RN-WISSEN genannt. Hier findet man Informationen, Grundlagen als auch Praxistips zu den Bereichen Elektronik, Microelektronik und Robotik speziell in Artikelform und thematisch in Kategorien eingeteilt. Die Seiten sollen sowohl den Einstieg in dieses Hobby erleichtern, als auch dem erfahreneren Bastler als Nachschlagewerk dienen. <br />
Vielleicht wird dir die Seitenstruktur nicht ganz unbekannt sein. Richtig, der Aufbau ist sehr ähnlich der weltberühmten freien Enzyklopädie Wikipedia. Dies ist auch kein Wunder, wir verwenden das gleiche System, nämlich MediaWiki. MediaWiki ist ein System das für größte Nachschlagewerke und Artikelbereiche ausgelegt ist. Der Vorteil auch, viele kommen mit diesem System bereits durch den Bekanntheitsgrad von Wikipedia klar. <p><br />
<br />
Hier kannst Du tatsächlich einfach Seiten verändern und (zeitweilig) falsche Tatsachen veröffentlichen, ja, Du kannst sogar eine [[Testseite]] dieses Wikis (zeitweilig) völlig zerstören. Bevor Du längere Artikel schreibst solltest Du einfach mal auf der [[Testseite]] kurz üben. <br />
<br />
<br style="clear:left;" /><br /><br />
<span style="font-size:150%;">Einfach mal stöbern oder gezielt suchen</span><br /><br /><br />
Jeder Artikel in RN-Wissen kann verschiedenen Kategorien zugeordnet werden. Die Kategorien werden einfach am Schluss des Artikels durch den Autor selbst bestimmt. Die wichtigsten Kategorien finden Sie links am Rand aufgelistet. Dadurch wird die Artikelsuche und das blättern auf den RN-Wissen Seiten besonders bequem. Natürlich kannst Du auch nach beliebigen Begriffen einfach Suchen lassen.<br />
<br><br />
<br><br />
{| {{Blaueschmaltabelle}} width="99%"<br />
|[[Bild:Verlosung.jpg|120px|right]]'''Letzte RN-Wissen News: ''' (Stand: {{CURRENTDAY}}.{{CURRENTMONTHNAME}}.{{CURRENTYEAR}})<br><br />
23.12.05 - Ungeeignete Artikel können jetzt zur Löschung vorschlagen werden (siehe [[Hilfe:FAQ|FAQ]])<br><br />
14.12.05 - Weitere Design/Browser Anpassungen, auch an IE Alternativen wie Firefox und Opera <br><br />
08.12.05 - [[Verlosung|Buchverlosung]] unter allen Mitglieder von RN-Wissen gestartet - [[Verlosung|siehe hier]])<br><br />
06.12.05 - Design Anpassungen für Browser Mozilla Firefox durchgeführt <br><br />
05.12.05 - RN-Wissen unterstützt nun auch die Latex-Darstellung [[Hilfe:Mathematische Formeln|mathematischer Formeln]]. <br><br />
23.11.05 - Der Artikelbereich RN-Wissen wurde zur Unterstützung der Community Roboternetz.de freigegeben<br />
|}<br />
<br />
| width=200px valign="top" |<br />
{{AktuelleMeldung}}<br />
<br><br />
<div style="text-align:center;>'''Erste Hilfe:'''</div><br />
<br />
*[[Hilfe:FAQ|Wie erstellt man neue Seiten?]]<br />
*[[RN-Wissen:Hilfe|Anleitung in der Hilfe]]<br />
*[[Hilfe:FAQ|Fragen und Antworten]]<br />
<br />
'''Zuletzt geänderte Artikel Top 5:'''<br />
<DynamicPageList><br />
category=Praxis<br />
categorie=Software <br />
category=Grundlagen<br />
ordermethod=lastedit<br />
count=5<br />
</DynamicPageList><br />
<br />
|}</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=AVR-Einstieg_leicht_gemacht&diff=4543AVR-Einstieg leicht gemacht2005-12-29T13:15:05Z<p>PhpSupporter: /* Start mit handelsüblichen Steckbrett */</p>
<hr />
<div>Immer wieder gibt es in Foren, wie dem Roboternetz, Einsteiger die das erste mal mir einem [[Microcontroller]] in Berührung kommen. Trotz zahlreicher Einstiegsbeiträge im Forum wiederholen sich doch bestimmte Anfängerfragen immer wieder, daher soll dieser Artikel noch einmal aufzeigen, wie man den ersten Schritt tut und einen Controller zum Leben erweckt. Es werden verschiedene Grundschaltungen aufgezeigt und erläutert welche Bauteile welche Funktion besitzen.<br />
Als Controller verwenden wir einen [[AVR]] [[ATMega32]]. Der derzeit größe [[AVR]]-Controller welcher noch im bastlerfreundlichen DIP-Gehäuse verfügbar ist. Für kleine bis mittlere Projekte ein sehr empfehlenswerter Controller zumal er preislich mit ca. 6-7 Euro noch sehr günstig ist und zudem mit seinem 40 Pin Gehäuse auch reichlich Anschlußmöglichkeiten besitzt.<br />
<br />
Die Frage, ob man mit einem fertigen Controllerboard, Experimentierplatine oder einem Steckbrett beginnen sollte, wurde ja in dem RN-Wissen Wiki Beitrag "[[Mit welchem Controllerboard fang ich an]]" angesprochen. In den meisten Fällen favorisiert der Autor dieses Artikels ein fertiges Controllerboard. Warum da sso ist, dazu am Ende noch ein paar Anmerkungen Dennoch soll diese Einführung schrittweise anhand eines Steckbrettes erläutert werden. <br />
<br />
==Start mit handelsüblichen Steckbrett==<br />
Ein Steckbrett hat den Vorteil das manr theoretisch ohne Löten alle Bauteile relativ zügig zusammenstecken kann. Bestimmte Steckkontakte innerhalb einer Reihe sind im Steckbrett miteinander verbunden, so das man nachher pro Bauteilbeinchen noch einige Steckkontakte zum Verdrahten mit Schaltdraht oder speziell konfigurierter Litze verwenden kann.<br />
<br />
'''Dir Vorteile von einem Steckbrett:<br />
<br />
*Bauteile ohne Löten einsetzen und verdrahten<br />
*recht zügiger Schaltungsaufbau<br />
<br />
'''Die Nachteile von einem Steckbrett gegenüber gedruckten Schaltungen und Experimentierplatinen sind:'''<br />
<br />
*nicht alle Bauteile passen, so das wir doch noch etwas löten müssen<br />
*nur geringer Schaltungsumfang möglich da es schnell unübersichtlich wird<br />
*sehr Störanfällig wegen Kabellängen, dadurch oft Funktionsstörungen<br />
*Bauteile müssen zum Teil verbogen werden damit sie passen<br />
<br />
<br />
Man beginnt indem man den Controller Avr [[ATMega32]] auf das Board aufsetzt:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrettmega32.jpg|center]]<br />
<br />
==Die Grundschaltung==<br />
Damit ein Controller erst mal zum laufen kommt, benötigt man zumindest einen 10k Widerstand, einen 100 nF Kondensator und eine 5V Spannungsquelle. Das ganze muss entsprechend dem unteren Schaltplan verschaltet werden, man spricht von einer sogenannten Grundschaltung. In dem Schaltplan wurde der Controller im übrigen Pinkompatibel als Schaltzeichen verwendet, die Pinreihenfolge ist also im Schaltplan identisch mit den echten Bauteilpin-Reihenfolge. Diese Darstellung erleichtert den Nachbau der Schaltung auf einem Steckbrett aber auch einer Experimentierplatine ungemein. Gewöhnlich verwendet man in Schaltplänen eine etwas andere Darstellung bei der die Pin´s nach Funktionsgruppen geordnet sind. Bei solchen Schaltplänen muss man sich dann anhand der Pin-Nummern orientieren, man wird dies am Ende des Artikels noch bei dem IC MAX232 sehen.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mega32.gif|center|500px]]<br />
<br />
<br />
Wenn man schon einige Grundschaltungen in anderen Tutorials gesehen hat, dann wird man bemerken das unsere doch noch etwas einfacher ist und weniger Bauteile benötigt. Hier wird beispielsweise kein Quarz verwendet, da der ATMega32 auch intern einen Takt generieren kann.<br />
<br />
Auf dem Steckbrett sieht die obere Schaltung wie folgt aus:<br />
<br />
[[Bild:avrtutorial_steckbrett1.jpg|center]]<br />
<br />
<br />
Um den Controller in Betrieb zu nehmen, benötigt man bei dieser Schaltung ein Netzteil das eine stabilisierte Spannung von 4 bis 5V liefert. Wir gehen erst einmal davon aus das man über dieses verfügt. <br />
Erwähnenswert ist noch das der Kondensator als [[Abblockkondensator]] zur Unterdrückung von Störungen dient. Er muss so nah wie möglich an die Spannungszuführung am Controller selbst gesetzt werden. Der Widerstand dient dazu die Reset Leitung konstant auf definierten High Pegel. Verbindet man diesen RESET Pin später kurz mit GND (Masse), dann wird das Programm im Controller neu gestartet.<br />
<br />
==Woran merkt man das der Controller funktioniert?==<br />
Gute Frage! Man merkt es garnicht. Genau genommen funktioniert ja auch trotz korrekter Schaltung noch immer nix denn es muss zuerst ein Programm in den Controller geladen werden, damit er überhaupt weiss was zu tun ist. Ohne Programm ist der Controller quasi tot.<br />
<br />
<br />
==Wie bekommt man das Programm in den Controller?==<br />
Der Controller verfügt über eine sogenannte [[ISP]]-Schnittstelle. Das bedeutet über bestimmte Pin´s ([[SPI]]) kann der Controller mit einer geeigneten PC-Software (zum Beispiel Bascom) programmiert werden. Zum Anschluß an den PC benötigt man jedoch einen sogenannten ISP-Dongel oder auch Programmieradapter genannt. Hier gibt es verschiedene Lösungen, serielle und parallele Adapter. Original von Atmel oder kompatible Lösungen. Der am meisten verwendetet ISP-Dongel wird am Druckerport betrieben. Diese gibt es inzwischen recht preiswert, so das das selbstbauen eigentlich nicht lohnt. Da man auch gern auf ein paar Fehlerquellen verzichten sollte, würde ich eine Fertiglösung empfehlen. Wer ihn selbst bauen möchte, findet ([[AVR-ISP_Programmierkabel|hier]] eine ISP-Dongel Bauanleitung und sogar eine fertige Platine dafür ([[AVR-ISP_Programmierkabel]]).<br />
<br />
Sowas sieht dann so aus:<br />
<br />
[[Bild:avrtutorial_ispkabel.jpg|center]]<br />
<br />
<br />
Das Problem ist nun, wie schließe ich einen handelsüblichen ISP-Programmieradapter an den Controller auf dem Steckbrett an. Der normale 10 polige Wannenstecker (nach [[RN-Definitionen]]) paßt nicht in ein Steckbrett. Das ist wieder so ein typischer Nachteil bei Steckbrettern! In unserem Beispiel haben wir dazu auf einem kleinen Stück Experimentierplatine einen steckbaren Adapter für das Steckboard gelötet.<br />
Somit kann man die Schaltung um einen üblichen 10 poligen ISP-Programmieranschluß ergänzen:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitisp.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett sieht das gleiche so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitisp.jpg|center]]<br />
<br />
<br />
Jetzt endlich ist es soweit, jetzt kann man den Controller über ein ISP-Programmieradapter mit dem PC verbinden. Aber unbedingt darauf achten das auch alles korrekt nach Schaltplan gesteckt wurde und das die Betriebsspannung 5V nicht übersteigt. Ansonsten könnte man sich Dongel oder sogar die PC-Schnittstelle beschädigen.<br />
Als Entwicklungsumgebung nutzen wir hier im Tutorial [[Bascom]]. [[Bascom]] ist ein sehr beliebter Basic [[Compiler]] der zahlreiche [[AVR]] Controllertypen programmieren kann. Da auch ein [[Terminalprogramm]] und ein Programmer integriert ist, enthält diese PC-Software alles was man braucht, das erleichtert den Einstieg zusätzlich. Die Software gibt’s kostenlos als Demo bis 4K Code, für unsere Beispiele und den Einstieg reich das allemal, siehe dazu Artikel Bascom.<br />
Wie man ein Programm schreibt, compiliert und überträgt wurde schon in diesem Beitrag [[Bascom - Erstes Programm in den AVR Controller übertragen]] ausführlich behandelt, wir ersparen uns deshalb diese Details. <br />
<br />
Als erstes compilieren und übertragen wir folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step1.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Do<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
Das Programm macht eigentlich nichts, außer das es eine Endlosschleife ausführt. Aber da wir noch überhaupt nix am Controller angeschlossen haben, können wir eh noch nicht sehen ob ein Programm nun richtig ausgeführt wird oder nicht.<br />
Allerdings können wir schonmal üben das Programm mit Bascom zu übertragen. Wenn wir alles richtig ausgebaut haben und Spannung anliegt, dann sollte automatisch der Controller in Bascom erkannt werden. Die Übertragung sollte dann ohne Fehlermeldung erfolgen können. Wenn wir das geschafft haben, geht’s weiter.<br />
<br />
==Läuft die Schaltung und das Programm?==<br />
Damit wir nun endlich sehen ob sich bei unserer Schaltung auch was tut, schließen wir eine LED über einen 1K Vorwiderstand an einen Port an. Da wir die Kathode an den Controllerpin und die Anode an Plus legen, leuchtet die LED immer dann wenn dieser Pin auf Low geschaltet wird.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitled.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts nun so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitled.jpg|center]]<br />
<br />
<br />
Damit man nun auch wirklich sieht ob das Programm läuft, schreiben wir ein kleines Basic Programm welches eine LED abwechselnd ein – und ausschaltet. Wir compilieren und übertragen also folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step2.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Do<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Waitms 100<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Waitms 100<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
<br />
Wenn die LED nun schnell blinkt, dann funktioniert die aufgebaute Schaltung perfekt. Wir haben gleichzeitig gelernt wie man einen Ausgangsport, also Controllerpin ein -und ausschalten kann. Nahezu alle Pin´s beim ATMega32 können auf diese Weise als Ausgangsport betrieben werden. Somit alssen sich nicht nur viele Led´s, sondern unter Zuhilfenahme eines Treibers (z.B-Transistors) auch Relais und andere Aktoren schalten.<br />
<br />
==Eingangsport fragt Taster ab==<br />
Nun erweitern wir die Schaltung noch um einen Taster. Nahezu jede rPort kann bei einem ATMega32 auch per Software als Eingangsport konfiguriert werden. Wir schließen einen Taster an Port-Pin PA7 an. <br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mittaster.gif|center|500px]]<br />
<br />
<br />
Der Port wird in der Software so konfiguriert, das er als Eingang arbeitet und indern über einen hohen Widerstand (Pullup-Widerstand) ständig auf High Pegel gelegt wird. Wird nun eine Taste gedrückt, so wird der Pegel auf Low gezogen.<br />
Das Beispielprogramm ist nun so gestaltet das bei gedrückter Taste die LED leuchtet und bei, loslassen wieder aus geht.<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step3.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
End If<br />
Loop<br />
<br />
<br />
End<br />
</pre><br />
<br />
==Grundschaltung mit Quarz==<br />
Obwohl wir ab der letzten Schaltung schon einiges mit dem Controller anfangen können, so fehlt doch noch was wichtiges. Oft ist es nämlich wichtig das ein Controller sehr genaue Frequenzen messen oder ganz genaue Taktraten ausgeben kann. Leider ist der interne Taktgenerator nicht 100% exakt, was bei manchen Anwendungen störend ist. Zum Beispiel können über die RS232 Schnittstelle Daten nicht immer ganz Fehlerfrei übertragen werden wenn die Taktfrequenz nicht genau stimmt. Daher wird in den meisten Anwendungsfällen ein Quarz zur Takterzeugung genutzt, sie kennen das sicher aus anderen Grundschaltungen. Also erweitern wir unsere Schaltung gleich noch um einen Quarz mit den zugehörigen 22pF Kondensatoren.<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitquarz.gif|center|500px]]<br />
<br />
<br />
Auf unserem Steckbrett wird’s langsam voller, hier siehts also inzwischen so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitquarz.jpg|center|500px]]<br />
<br />
<br />
Normalerweise sollte der Quarz genauso wie die beiden 22pF Kondensatoren, die zum Anschwingen des Quarzes dienen, möglichst nahe am Controller plaziert werden. Auf dem Steckbrett ist das manchmal garnicht so einfach insbesondere wenn man wie in diesem fall den Quarz erst später hinzufügt. Wichtig ist nämlich das die Leitungen vom Quarz zum Controller möglichst kurz sind, bei gedruckten Schaltungen oft nur 1 bis 2 cm! Auch die einzelnen Bauteilbeinchen, z.B. der Kondensatoren sollten normalerweise so kurz wie möglich sein.<br />
Ist dies nicht der Fall, wie auch in unserem Bild, dann fungieren quasi diese Leitungen fast wie eine Funkantenne. Dies führt in der Regel zu starken Hochfrequenzsignalen die nicht nur unsere Schaltung sondern auch andere Schaltungen in der Nähe stören könnten. Man merkt dies auch oft daran das sich ein Board bei höherer Quarzfrequenz immer seltener fehlerfrei ohne Übertragungsfehler programmieren läßt.<br />
Grundsätzlich sind daher Schaltungen mit Quarz auf einem Steckbrett nicht sonderlich zu empfehlen, die Betriebssicherheit ist nicht immer gegeben. <br />
<br />
Auch wenn nun ein Quarz angeschlossen ist, so wird er noch immer nicht genutzt. Noch immer arbeiten der [[ATMega32]] mit seiner intern voreingestellten 1 Mhz Taktfrequenz. Um dies umzustellen, muss man ein sogenanntes [[Fusebits|Fusebit]] im Controller umprogrammieren. Auch dies wurde schon im Beitrag [[Bascom - Erstes Programm in den AVR_Controller übertragen]] näher beschrieben. Hier sei daher nur nochmals gesagt das dies auch sehr bequem in [[Bascom]] erfolgt:<br />
<br />
<br />
[[Bild:avrtutorial_bascomfusebitquarz.gif|center]]<br />
<br />
<br />
Sobald wir das umgestellt haben, müssen wir auch in dem Programm die Anweisung <br />
<br />
$crystal = 1000000 <br />
<br />
durch <br />
<br />
$crystal = 16000000 <br />
<br />
ersetzen, denn unser Quarz taktet nun mit 16 Mhz.<br />
<br />
==Spannung stabilisieren==<br />
Auch wenn unser Basis-Schaltung für Experimente inzwischen schon ganz nett ist, so ist es doch etwas ungünstig das wir stets 5V zur Verfügung haben müssen. Nicht immer steht ein geeignetes Netzteil zur Verfügung zudem soll ein Controller auch oft mit Batterien versorgt werden. Aus diesem Grund verfügen fas alle Entwicklungsboards wie ([[RN-Control]], STK500 etc.) über einen Spannungsregler. Dieser wandelt eine höhere Eingangsspannung ca. 7 bis 20 V immer genau in 5V um. Sowas erhöht die Betriebssicherheit einer Schaltung nochmals immens. Als Spannungsregler (IC2) wird oft der 7805 genutzt, empfehlenswert ist der Typ 78S05 welcher 2A verträgt sowie über einen Kurzschluss- und Überlastungsschutz verfügt. Die beiden 100nF Kondensatoren sind wichtig, Sie sollen HF-Störungen, Schwingungen vermeiden. Das Elko vor dem Spannungsregler ist vorallem dann wichtig, wenn die Spannung von einem Netzgerät kommt und noch etwas geglättet werden muss. Je höher der STrombedarf der Schaltung, desto größer kann man die Kapazität wählen. Es schadet nicht wenn man das Elko einige Nummern größer wählt, man ist dann quasi für alle Fälle gerüstet. So sind Werte zwischen 100uF und 2200 uF durchaus denkbar. <br />
<br />
<br />
Wir erweitern unsere Schaltung somit wie folgt:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_spannung.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts wie folgt aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_spannung.jpg|center]]<br />
<br />
==Daten und Texte zum PC übertragen==<br />
In vielen Programmen müssen Daten oder Texte vom Controller an den PC oder umgekehrt gesendet werden. Insbesondere bei komplexen Programmen kann man auf diese Weise Variableninhalte ausgeben und somit auch Fehler im Programmcode schneller finden und korrigieren. In der Regel ist das ganz einfach, denn der [[Microcontroller]] [[ATMega32]] verfügt über einen internen [[UART]], also ein Modul das Daten über die [[RS232]] Schnittstelle zum PC senden bzw. auch empfangen kann. Leider arbeitet jedoch die Controllerschnittstelle mit 5V und die PC Schnittstelle der Norm entsprechend mit +-12V. Daher muss unbedingt ein Schaltkreis dazwischen welcher die Pegel anpaßt. Gewöhnlich nimmt man hier das IC MAX232, welches inzwischen sehr preiswert erhältlich ist.<br />
<br />
Wir müssen also die Schaltung nochmals erweitern:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_max232.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_max232.jpg|center|500px]]<br />
<br />
<br />
Über eine dreipolige Stiftleiste ([[RN-Definitionen]]) wird nun das Steckboard mit der [[RS232]] Schnittstelle des PC-verbunden. Es ist nun ein leichtes mit einem Programm Daten zum PC zu senden. Das nachfolgende Programm gibt Hinweise mit der Anweisung '''PRINT''' aus:<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step5.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 16000000<br />
$baud = 9600<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Print "Schalter nicht gedrückt"<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Print "Schalter gedrückt"<br />
End If<br />
Wait 1<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
==Möglichkeiten des Steckbrettes erreicht==<br />
Inzwischen füllt der Schaltplan fast ein DIN A4 Blatt und auf dem Steckbrett siehts auch schon recht wirr aus, dabei haben wir nur die wichtigsten Grundelemente auf dem Steckbrett. Für eine Roboter-Steuerung oder andere Anwendung fehlt doch noch einiges. Zum Beispiel weitere Taster, weitere LED´s, Motortreiber damit der Controller auch Motoren ansteuern und [[I2C]]-Bus Anschuß.<br />
Dies alles noch auf einem Steckbrett zu realisieren macht wenig Sinn, zumal bereits jetzt schon durch die doch recht langen Leitungen/Verkabelungen erhebliche Störungen auftreten. In der letzten Phase ist es immer öfters zu Übertragungsfehlern beim programmieren gekommen, oft musste dies 20 mal wiederholt werden. Dies zeigt das ein Steckbrett bestenfalls für ganz kleine Controller-Experimente herhalten kann. Für größere Dinge sollte man dann doch zu einer Lösung auf einer gedruckten Platine greifen. Spezielle Experimentierboard´s bieten mehr Sicherheit und haben neben den Grundelementen die hier beschrieben wurden noch eine ganze Menge mehr drauf. Bei [[RN-Control]] zum Beispiel 5 Tasten, 8 Leds, Motortreiber, Lautsprecher, diverse Anschlüsse etc. <br />
Der Größenunterschied wird im Bild deutlich:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_rncontrol.jpg|center|500px]]<br />
<br />
<br />
Auch wenn das Steckbrett also kein Controllerboard ersetzen kann, so hat das kleine Tutorial doch gezeigt wie eine [[Avr]]-Schaltung aufzubauen ist. Dieses Wissen sollte man auch besitzen, wenn man ein Controllerboard nutzt. Das war Ziel dieses Artikels.<br />
<br />
==Autor==<br />
*[[Benutzer:Frank|Frank]]<br />
<br />
==Siehe auch==<br />
*[[AVR-ISP Programmierkabel]]<br />
*[[Mit welchem Controllerboard fang ich an]]<br />
*[[Abblockkondensator]]<br />
*[[Bascom]]<br />
*[[Bascom - Erstes Programm in den AVR_Controller übertragen]]<br />
*[[Avr]]<br />
*[[Atmel Controller Mega16 und Mega32]]<br />
<br />
<br />
[[Kategorie:Robotikeinstieg]]<br />
[[Kategorie:Praxis]]<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Projekte]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=AVR-Einstieg_leicht_gemacht&diff=4542AVR-Einstieg leicht gemacht2005-12-29T13:12:05Z<p>PhpSupporter: </p>
<hr />
<div>Immer wieder gibt es in Foren, wie dem Roboternetz, Einsteiger die das erste mal mir einem [[Microcontroller]] in Berührung kommen. Trotz zahlreicher Einstiegsbeiträge im Forum wiederholen sich doch bestimmte Anfängerfragen immer wieder, daher soll dieser Artikel noch einmal aufzeigen, wie man den ersten Schritt tut und einen Controller zum Leben erweckt. Es werden verschiedene Grundschaltungen aufgezeigt und erläutert welche Bauteile welche Funktion besitzen.<br />
Als Controller verwenden wir einen [[AVR]] [[ATMega32]]. Der derzeit größe [[AVR]]-Controller welcher noch im bastlerfreundlichen DIP-Gehäuse verfügbar ist. Für kleine bis mittlere Projekte ein sehr empfehlenswerter Controller zumal er preislich mit ca. 6-7 Euro noch sehr günstig ist und zudem mit seinem 40 Pin Gehäuse auch reichlich Anschlußmöglichkeiten besitzt.<br />
<br />
Die Frage, ob man mit einem fertigen Controllerboard, Experimentierplatine oder einem Steckbrett beginnen sollte, wurde ja in dem RN-Wissen Wiki Beitrag "[[Mit welchem Controllerboard fang ich an]]" angesprochen. In den meisten Fällen favorisiert der Autor dieses Artikels ein fertiges Controllerboard. Warum da sso ist, dazu am Ende noch ein paar Anmerkungen Dennoch soll diese Einführung schrittweise anhand eines Steckbrettes erläutert werden. <br />
<br />
==Start mit handelsüblichen Steckbrett==<br />
Ein Steckbrett hat den Vorteil das manr theoretisch ohne Löten alle Bauteile relativ zügig zusammenstecken kann. Bestimmte Steckkontakte innerhalb einer Reihe sind im Steckbrett miteinander verbunden, so das man nachher pro Bauteilbeinchen noch einige Steckkontakte zum Verdrahten mit Schaltdraht oder speziell konfigurierter Litze verwenden kann.<br />
<br />
Die Nachteile von einem Steckbrett sind:<br />
<br />
*nicht alle Bauteile passen, so das wir doch noch etwas löten müssen<br />
*nur geringer Schaltungsumfang möglich da es schnell unübersichtlich wird<br />
*sehr Störanfällig wegen Kabellängen<br />
<br />
Man beginnt indem man den Controller Avr [[ATMega32]] auf das Board aufsetzt:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrettmega32.jpg|center]]<br />
<br />
<br />
==Die Grundschaltung==<br />
Damit ein Controller erst mal zum laufen kommt, benötigt man zumindest einen 10k Widerstand, einen 100 nF Kondensator und eine 5V Spannungsquelle. Das ganze muss entsprechend dem unteren Schaltplan verschaltet werden, man spricht von einer sogenannten Grundschaltung. In dem Schaltplan wurde der Controller im übrigen Pinkompatibel als Schaltzeichen verwendet, die Pinreihenfolge ist also im Schaltplan identisch mit den echten Bauteilpin-Reihenfolge. Diese Darstellung erleichtert den Nachbau der Schaltung auf einem Steckbrett aber auch einer Experimentierplatine ungemein. Gewöhnlich verwendet man in Schaltplänen eine etwas andere Darstellung bei der die Pin´s nach Funktionsgruppen geordnet sind. Bei solchen Schaltplänen muss man sich dann anhand der Pin-Nummern orientieren, man wird dies am Ende des Artikels noch bei dem IC MAX232 sehen.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mega32.gif|center|500px]]<br />
<br />
<br />
Wenn man schon einige Grundschaltungen in anderen Tutorials gesehen hat, dann wird man bemerken das unsere doch noch etwas einfacher ist und weniger Bauteile benötigt. Hier wird beispielsweise kein Quarz verwendet, da der ATMega32 auch intern einen Takt generieren kann.<br />
<br />
Auf dem Steckbrett sieht die obere Schaltung wie folgt aus:<br />
<br />
[[Bild:avrtutorial_steckbrett1.jpg|center]]<br />
<br />
<br />
Um den Controller in Betrieb zu nehmen, benötigt man bei dieser Schaltung ein Netzteil das eine stabilisierte Spannung von 4 bis 5V liefert. Wir gehen erst einmal davon aus das man über dieses verfügt. <br />
Erwähnenswert ist noch das der Kondensator als [[Abblockkondensator]] zur Unterdrückung von Störungen dient. Er muss so nah wie möglich an die Spannungszuführung am Controller selbst gesetzt werden. Der Widerstand dient dazu die Reset Leitung konstant auf definierten High Pegel. Verbindet man diesen RESET Pin später kurz mit GND (Masse), dann wird das Programm im Controller neu gestartet.<br />
<br />
==Woran merkt man das der Controller funktioniert?==<br />
Gute Frage! Man merkt es garnicht. Genau genommen funktioniert ja auch trotz korrekter Schaltung noch immer nix denn es muss zuerst ein Programm in den Controller geladen werden, damit er überhaupt weiss was zu tun ist. Ohne Programm ist der Controller quasi tot.<br />
<br />
<br />
==Wie bekommt man das Programm in den Controller?==<br />
Der Controller verfügt über eine sogenannte [[ISP]]-Schnittstelle. Das bedeutet über bestimmte Pin´s ([[SPI]]) kann der Controller mit einer geeigneten PC-Software (zum Beispiel Bascom) programmiert werden. Zum Anschluß an den PC benötigt man jedoch einen sogenannten ISP-Dongel oder auch Programmieradapter genannt. Hier gibt es verschiedene Lösungen, serielle und parallele Adapter. Original von Atmel oder kompatible Lösungen. Der am meisten verwendetet ISP-Dongel wird am Druckerport betrieben. Diese gibt es inzwischen recht preiswert, so das das selbstbauen eigentlich nicht lohnt. Da man auch gern auf ein paar Fehlerquellen verzichten sollte, würde ich eine Fertiglösung empfehlen. Wer ihn selbst bauen möchte, findet ([[AVR-ISP_Programmierkabel|hier]] eine ISP-Dongel Bauanleitung und sogar eine fertige Platine dafür ([[AVR-ISP_Programmierkabel]]).<br />
<br />
Sowas sieht dann so aus:<br />
<br />
[[Bild:avrtutorial_ispkabel.jpg|center]]<br />
<br />
<br />
Das Problem ist nun, wie schließe ich einen handelsüblichen ISP-Programmieradapter an den Controller auf dem Steckbrett an. Der normale 10 polige Wannenstecker (nach [[RN-Definitionen]]) paßt nicht in ein Steckbrett. Das ist wieder so ein typischer Nachteil bei Steckbrettern! In unserem Beispiel haben wir dazu auf einem kleinen Stück Experimentierplatine einen steckbaren Adapter für das Steckboard gelötet.<br />
Somit kann man die Schaltung um einen üblichen 10 poligen ISP-Programmieranschluß ergänzen:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitisp.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett sieht das gleiche so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitisp.jpg|center]]<br />
<br />
<br />
Jetzt endlich ist es soweit, jetzt kann man den Controller über ein ISP-Programmieradapter mit dem PC verbinden. Aber unbedingt darauf achten das auch alles korrekt nach Schaltplan gesteckt wurde und das die Betriebsspannung 5V nicht übersteigt. Ansonsten könnte man sich Dongel oder sogar die PC-Schnittstelle beschädigen.<br />
Als Entwicklungsumgebung nutzen wir hier im Tutorial [[Bascom]]. [[Bascom]] ist ein sehr beliebter Basic [[Compiler]] der zahlreiche [[AVR]] Controllertypen programmieren kann. Da auch ein [[Terminalprogramm]] und ein Programmer integriert ist, enthält diese PC-Software alles was man braucht, das erleichtert den Einstieg zusätzlich. Die Software gibt’s kostenlos als Demo bis 4K Code, für unsere Beispiele und den Einstieg reich das allemal, siehe dazu Artikel Bascom.<br />
Wie man ein Programm schreibt, compiliert und überträgt wurde schon in diesem Beitrag [[Bascom - Erstes Programm in den AVR Controller übertragen]] ausführlich behandelt, wir ersparen uns deshalb diese Details. <br />
<br />
Als erstes compilieren und übertragen wir folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step1.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Do<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
Das Programm macht eigentlich nichts, außer das es eine Endlosschleife ausführt. Aber da wir noch überhaupt nix am Controller angeschlossen haben, können wir eh noch nicht sehen ob ein Programm nun richtig ausgeführt wird oder nicht.<br />
Allerdings können wir schonmal üben das Programm mit Bascom zu übertragen. Wenn wir alles richtig ausgebaut haben und Spannung anliegt, dann sollte automatisch der Controller in Bascom erkannt werden. Die Übertragung sollte dann ohne Fehlermeldung erfolgen können. Wenn wir das geschafft haben, geht’s weiter.<br />
<br />
==Läuft die Schaltung und das Programm?==<br />
Damit wir nun endlich sehen ob sich bei unserer Schaltung auch was tut, schließen wir eine LED über einen 1K Vorwiderstand an einen Port an. Da wir die Kathode an den Controllerpin und die Anode an Plus legen, leuchtet die LED immer dann wenn dieser Pin auf Low geschaltet wird.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitled.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts nun so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitled.jpg|center]]<br />
<br />
<br />
Damit man nun auch wirklich sieht ob das Programm läuft, schreiben wir ein kleines Basic Programm welches eine LED abwechselnd ein – und ausschaltet. Wir compilieren und übertragen also folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step2.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Do<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Waitms 100<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Waitms 100<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
<br />
Wenn die LED nun schnell blinkt, dann funktioniert die aufgebaute Schaltung perfekt. Wir haben gleichzeitig gelernt wie man einen Ausgangsport, also Controllerpin ein -und ausschalten kann. Nahezu alle Pin´s beim ATMega32 können auf diese Weise als Ausgangsport betrieben werden. Somit alssen sich nicht nur viele Led´s, sondern unter Zuhilfenahme eines Treibers (z.B-Transistors) auch Relais und andere Aktoren schalten.<br />
<br />
==Eingangsport fragt Taster ab==<br />
Nun erweitern wir die Schaltung noch um einen Taster. Nahezu jede rPort kann bei einem ATMega32 auch per Software als Eingangsport konfiguriert werden. Wir schließen einen Taster an Port-Pin PA7 an. <br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mittaster.gif|center|500px]]<br />
<br />
<br />
Der Port wird in der Software so konfiguriert, das er als Eingang arbeitet und indern über einen hohen Widerstand (Pullup-Widerstand) ständig auf High Pegel gelegt wird. Wird nun eine Taste gedrückt, so wird der Pegel auf Low gezogen.<br />
Das Beispielprogramm ist nun so gestaltet das bei gedrückter Taste die LED leuchtet und bei, loslassen wieder aus geht.<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step3.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
End If<br />
Loop<br />
<br />
<br />
End<br />
</pre><br />
<br />
==Grundschaltung mit Quarz==<br />
Obwohl wir ab der letzten Schaltung schon einiges mit dem Controller anfangen können, so fehlt doch noch was wichtiges. Oft ist es nämlich wichtig das ein Controller sehr genaue Frequenzen messen oder ganz genaue Taktraten ausgeben kann. Leider ist der interne Taktgenerator nicht 100% exakt, was bei manchen Anwendungen störend ist. Zum Beispiel können über die RS232 Schnittstelle Daten nicht immer ganz Fehlerfrei übertragen werden wenn die Taktfrequenz nicht genau stimmt. Daher wird in den meisten Anwendungsfällen ein Quarz zur Takterzeugung genutzt, sie kennen das sicher aus anderen Grundschaltungen. Also erweitern wir unsere Schaltung gleich noch um einen Quarz mit den zugehörigen 22pF Kondensatoren.<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitquarz.gif|center|500px]]<br />
<br />
<br />
Auf unserem Steckbrett wird’s langsam voller, hier siehts also inzwischen so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitquarz.jpg|center|500px]]<br />
<br />
<br />
Normalerweise sollte der Quarz genauso wie die beiden 22pF Kondensatoren, die zum Anschwingen des Quarzes dienen, möglichst nahe am Controller plaziert werden. Auf dem Steckbrett ist das manchmal garnicht so einfach insbesondere wenn man wie in diesem fall den Quarz erst später hinzufügt. Wichtig ist nämlich das die Leitungen vom Quarz zum Controller möglichst kurz sind, bei gedruckten Schaltungen oft nur 1 bis 2 cm! Auch die einzelnen Bauteilbeinchen, z.B. der Kondensatoren sollten normalerweise so kurz wie möglich sein.<br />
Ist dies nicht der Fall, wie auch in unserem Bild, dann fungieren quasi diese Leitungen fast wie eine Funkantenne. Dies führt in der Regel zu starken Hochfrequenzsignalen die nicht nur unsere Schaltung sondern auch andere Schaltungen in der Nähe stören könnten. Man merkt dies auch oft daran das sich ein Board bei höherer Quarzfrequenz immer seltener fehlerfrei ohne Übertragungsfehler programmieren läßt.<br />
Grundsätzlich sind daher Schaltungen mit Quarz auf einem Steckbrett nicht sonderlich zu empfehlen, die Betriebssicherheit ist nicht immer gegeben. <br />
<br />
Auch wenn nun ein Quarz angeschlossen ist, so wird er noch immer nicht genutzt. Noch immer arbeiten der [[ATMega32]] mit seiner intern voreingestellten 1 Mhz Taktfrequenz. Um dies umzustellen, muss man ein sogenanntes [[Fusebits|Fusebit]] im Controller umprogrammieren. Auch dies wurde schon im Beitrag [[Bascom - Erstes Programm in den AVR_Controller übertragen]] näher beschrieben. Hier sei daher nur nochmals gesagt das dies auch sehr bequem in [[Bascom]] erfolgt:<br />
<br />
<br />
[[Bild:avrtutorial_bascomfusebitquarz.gif|center]]<br />
<br />
<br />
Sobald wir das umgestellt haben, müssen wir auch in dem Programm die Anweisung <br />
<br />
$crystal = 1000000 <br />
<br />
durch <br />
<br />
$crystal = 16000000 <br />
<br />
ersetzen, denn unser Quarz taktet nun mit 16 Mhz.<br />
<br />
==Spannung stabilisieren==<br />
Auch wenn unser Basis-Schaltung für Experimente inzwischen schon ganz nett ist, so ist es doch etwas ungünstig das wir stets 5V zur Verfügung haben müssen. Nicht immer steht ein geeignetes Netzteil zur Verfügung zudem soll ein Controller auch oft mit Batterien versorgt werden. Aus diesem Grund verfügen fas alle Entwicklungsboards wie ([[RN-Control]], STK500 etc.) über einen Spannungsregler. Dieser wandelt eine höhere Eingangsspannung ca. 7 bis 20 V immer genau in 5V um. Sowas erhöht die Betriebssicherheit einer Schaltung nochmals immens. Als Spannungsregler (IC2) wird oft der 7805 genutzt, empfehlenswert ist der Typ 78S05 welcher 2A verträgt sowie über einen Kurzschluss- und Überlastungsschutz verfügt. Die beiden 100nF Kondensatoren sind wichtig, Sie sollen HF-Störungen, Schwingungen vermeiden. Das Elko vor dem Spannungsregler ist vorallem dann wichtig, wenn die Spannung von einem Netzgerät kommt und noch etwas geglättet werden muss. Je höher der STrombedarf der Schaltung, desto größer kann man die Kapazität wählen. Es schadet nicht wenn man das Elko einige Nummern größer wählt, man ist dann quasi für alle Fälle gerüstet. So sind Werte zwischen 100uF und 2200 uF durchaus denkbar. <br />
<br />
<br />
Wir erweitern unsere Schaltung somit wie folgt:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_spannung.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts wie folgt aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_spannung.jpg|center]]<br />
<br />
==Daten und Texte zum PC übertragen==<br />
In vielen Programmen müssen Daten oder Texte vom Controller an den PC oder umgekehrt gesendet werden. Insbesondere bei komplexen Programmen kann man auf diese Weise Variableninhalte ausgeben und somit auch Fehler im Programmcode schneller finden und korrigieren. In der Regel ist das ganz einfach, denn der [[Microcontroller]] [[ATMega32]] verfügt über einen internen [[UART]], also ein Modul das Daten über die [[RS232]] Schnittstelle zum PC senden bzw. auch empfangen kann. Leider arbeitet jedoch die Controllerschnittstelle mit 5V und die PC Schnittstelle der Norm entsprechend mit +-12V. Daher muss unbedingt ein Schaltkreis dazwischen welcher die Pegel anpaßt. Gewöhnlich nimmt man hier das IC MAX232, welches inzwischen sehr preiswert erhältlich ist.<br />
<br />
Wir müssen also die Schaltung nochmals erweitern:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_max232.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_max232.jpg|center|500px]]<br />
<br />
<br />
Über eine dreipolige Stiftleiste ([[RN-Definitionen]]) wird nun das Steckboard mit der [[RS232]] Schnittstelle des PC-verbunden. Es ist nun ein leichtes mit einem Programm Daten zum PC zu senden. Das nachfolgende Programm gibt Hinweise mit der Anweisung '''PRINT''' aus:<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step5.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 16000000<br />
$baud = 9600<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Print "Schalter nicht gedrückt"<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Print "Schalter gedrückt"<br />
End If<br />
Wait 1<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
==Möglichkeiten des Steckbrettes erreicht==<br />
Inzwischen füllt der Schaltplan fast ein DIN A4 Blatt und auf dem Steckbrett siehts auch schon recht wirr aus, dabei haben wir nur die wichtigsten Grundelemente auf dem Steckbrett. Für eine Roboter-Steuerung oder andere Anwendung fehlt doch noch einiges. Zum Beispiel weitere Taster, weitere LED´s, Motortreiber damit der Controller auch Motoren ansteuern und [[I2C]]-Bus Anschuß.<br />
Dies alles noch auf einem Steckbrett zu realisieren macht wenig Sinn, zumal bereits jetzt schon durch die doch recht langen Leitungen/Verkabelungen erhebliche Störungen auftreten. In der letzten Phase ist es immer öfters zu Übertragungsfehlern beim programmieren gekommen, oft musste dies 20 mal wiederholt werden. Dies zeigt das ein Steckbrett bestenfalls für ganz kleine Controller-Experimente herhalten kann. Für größere Dinge sollte man dann doch zu einer Lösung auf einer gedruckten Platine greifen. Spezielle Experimentierboard´s bieten mehr Sicherheit und haben neben den Grundelementen die hier beschrieben wurden noch eine ganze Menge mehr drauf. Bei [[RN-Control]] zum Beispiel 5 Tasten, 8 Leds, Motortreiber, Lautsprecher, diverse Anschlüsse etc. <br />
Der Größenunterschied wird im Bild deutlich:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_rncontrol.jpg|center|500px]]<br />
<br />
<br />
Auch wenn das Steckbrett also kein Controllerboard ersetzen kann, so hat das kleine Tutorial doch gezeigt wie eine [[Avr]]-Schaltung aufzubauen ist. Dieses Wissen sollte man auch besitzen, wenn man ein Controllerboard nutzt. Das war Ziel dieses Artikels.<br />
<br />
==Autor==<br />
*[[Benutzer:Frank|Frank]]<br />
<br />
==Siehe auch==<br />
*[[AVR-ISP Programmierkabel]]<br />
*[[Mit welchem Controllerboard fang ich an]]<br />
*[[Abblockkondensator]]<br />
*[[Bascom]]<br />
*[[Bascom - Erstes Programm in den AVR_Controller übertragen]]<br />
*[[Avr]]<br />
*[[Atmel Controller Mega16 und Mega32]]<br />
<br />
<br />
[[Kategorie:Robotikeinstieg]]<br />
[[Kategorie:Praxis]]<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Projekte]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=AVR-Einstieg_leicht_gemacht&diff=4541AVR-Einstieg leicht gemacht2005-12-29T13:10:21Z<p>PhpSupporter: </p>
<hr />
<div>Immer wieder gibt es in Foren, wie dem Roboternetz, Einsteiger die das erste mal mir einem [[Microcontroller]] in Berührung kommen. Trotz zahlreicher Einstiegsbeiträge im Forum wiederholen sich doch bestimmte Anfängerfragen immer wieder, daher soll dieser Artikel noch einmal aufzeigen, wie man den ersten Schritt tut und einen Controller zum Leben erweckt. Es werden verschiedene Grundschaltungen aufgezeigt und erläutert welche Bauteile welche Funktion besitzen.<br />
Als Controller verwenden wir einen [[AVR]] [[ATMega32]]. Der derzeit größe AVR-Controller welcher noch im bastlerfreundlichen DIP-Gehäuse verfügbar ist. Für kleine bis mittlere Projekte ein sehr empfehlenswerter Controller zumal er preislich mit ca. 6-7 Euro noch sehr günstig ist und zudem mit seinem 40 Pin Gehäuse auch reichlich Anschlußmöglichkeiten besitzt.<br />
<br />
Die Frage, ob man mit einem fertigen Controllerboard, Experimentierplatine oder einem Steckbrett beginnen sollte, wurde ja in dem RN-Wissen Wiki Beitrag Mit welchem Controllerboard fang ich an angesprochen. In den meisten Fällen favorisiert der Autor dieses Artikels ein fertiges Controllerboard. Warum da sso ist, dazu am Ende noch ein paar Anmerkungen Dennoch soll diese Einführung schrittweise anhand eines Steckbrettes erläutert werden. <br />
<br />
==Start mit handelsüblichen Steckbrett==<br />
Ein Steckbrett hat den Vorteil das manr theoretisch ohne Löten alle Bauteile relativ zügig zusammenstecken kann. Bestimmte Steckkontakte innerhalb einer Reihe sind im Steckbrett miteinander verbunden, so das man nachher pro Bauteilbeinchen noch einige Steckkontakte zum Verdrahten mit Schaltdraht oder speziell konfigurierter Litze verwenden kann.<br />
<br />
Die Nachteile von einem Steckbrett sind:<br />
<br />
*nicht alle Bauteile passen, so das wir doch noch etwas löten müssen<br />
*nur geringer Schaltungsumfang möglich da es schnell unübersichtlich wird<br />
*sehr Störanfällig wegen Kabellängen<br />
<br />
Man beginnt indem man den Controller Avr [[ATMega32]] auf das Board aufsetzt:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrettmega32.jpg|center]]<br />
<br />
<br />
==Die Grundschaltung==<br />
Damit ein Controller erst mal zum laufen kommt, benötigt man zumindest einen 10k Widerstand, einen 100 nF Kondensator und eine 5V Spannungsquelle. Das ganze muss entsprechend dem unteren Schaltplan verschaltet werden, man spricht von einer sogenannten Grundschaltung. In dem Schaltplan wurde der Controller im übrigen Pinkompatibel als Schaltzeichen verwendet, die Pinreihenfolge ist also im Schaltplan identisch mit den echten Bauteilpin-Reihenfolge. Diese Darstellung erleichtert den Nachbau der Schaltung auf einem Steckbrett aber auch einer Experimentierplatine ungemein. Gewöhnlich verwendet man in Schaltplänen eine etwas andere Darstellung bei der die Pin´s nach Funktionsgruppen geordnet sind. Bei solchen Schaltplänen muss man sich dann anhand der Pin-Nummern orientieren, man wird dies am Ende des Artikels noch bei dem IC MAX232 sehen.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mega32.gif|center|500px]]<br />
<br />
<br />
Wenn man schon einige Grundschaltungen in anderen Tutorials gesehen hat, dann wird man bemerken das unsere doch noch etwas einfacher ist und weniger Bauteile benötigt. Hier wird beispielsweise kein Quarz verwendet, da der ATMega32 auch intern einen Takt generieren kann.<br />
<br />
Auf dem Steckbrett sieht die obere Schaltung wie folgt aus:<br />
<br />
[[Bild:avrtutorial_steckbrett1.jpg|center]]<br />
<br />
<br />
Um den Controller in Betrieb zu nehmen, benötigt man bei dieser Schaltung ein Netzteil das eine stabilisierte Spannung von 4 bis 5V liefert. Wir gehen erst einmal davon aus das man über dieses verfügt. <br />
Erwähnenswert ist noch das der Kondensator als [[Abblockkondensator]] zur Unterdrückung von Störungen dient. Er muss so nah wie möglich an die Spannungszuführung am Controller selbst gesetzt werden. Der Widerstand dient dazu die Reset Leitung konstant auf definierten High Pegel. Verbindet man diesen RESET Pin später kurz mit GND (Masse), dann wird das Programm im Controller neu gestartet.<br />
<br />
==Woran merkt man das der Controller funktioniert?==<br />
Gute Frage! Man merkt es garnicht. Genau genommen funktioniert ja auch trotz korrekter Schaltung noch immer nix denn es muss zuerst ein Programm in den Controller geladen werden, damit er überhaupt weiss was zu tun ist. Ohne Programm ist der Controller quasi tot.<br />
<br />
<br />
==Wie bekommt man das Programm in den Controller?==<br />
Der Controller verfügt über eine sogenannte [[ISP]]-Schnittstelle. Das bedeutet über bestimmte Pin´s ([[SPI]]) kann der Controller mit einer geeigneten PC-Software (zum Beispiel Bascom) programmiert werden. Zum Anschluß an den PC benötigt man jedoch einen sogenannten ISP-Dongel oder auch Programmieradapter genannt. Hier gibt es verschiedene Lösungen, serielle und parallele Adapter. Original von Atmel oder kompatible Lösungen. Der am meisten verwendetet ISP-Dongel wird am Druckerport betrieben. Diese gibt es inzwischen recht preiswert, so das das selbstbauen eigentlich nicht lohnt. Da man auch gern auf ein paar Fehlerquellen verzichten sollte, würde ich eine Fertiglösung empfehlen. Wer ihn selbst bauen möchte, findet ([[AVR-ISP_Programmierkabel|hier]] eine ISP-Dongel Bauanleitung und sogar eine fertige Platine dafür ([[AVR-ISP_Programmierkabel]]).<br />
<br />
Sowas sieht dann so aus:<br />
<br />
[[Bild:avrtutorial_ispkabel.jpg|center]]<br />
<br />
<br />
Das Problem ist nun, wie schließe ich einen handelsüblichen ISP-Programmieradapter an den Controller auf dem Steckbrett an. Der normale 10 polige Wannenstecker (nach [[RN-Definitionen]]) paßt nicht in ein Steckbrett. Das ist wieder so ein typischer Nachteil bei Steckbrettern! In unserem Beispiel haben wir dazu auf einem kleinen Stück Experimentierplatine einen steckbaren Adapter für das Steckboard gelötet.<br />
Somit kann man die Schaltung um einen üblichen 10 poligen ISP-Programmieranschluß ergänzen:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitisp.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett sieht das gleiche so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitisp.jpg|center]]<br />
<br />
<br />
Jetzt endlich ist es soweit, jetzt kann man den Controller über ein ISP-Programmieradapter mit dem PC verbinden. Aber unbedingt darauf achten das auch alles korrekt nach Schaltplan gesteckt wurde und das die Betriebsspannung 5V nicht übersteigt. Ansonsten könnte man sich Dongel oder sogar die PC-Schnittstelle beschädigen.<br />
Als Entwicklungsumgebung nutzen wir hier im Tutorial [[Bascom]]. [[Bascom]] ist ein sehr beliebter Basic [[Compiler]] der zahlreiche [[AVR]] Controllertypen programmieren kann. Da auch ein [[Terminalprogramm]] und ein Programmer integriert ist, enthält diese PC-Software alles was man braucht, das erleichtert den Einstieg zusätzlich. Die Software gibt’s kostenlos als Demo bis 4K Code, für unsere Beispiele und den Einstieg reich das allemal, siehe dazu Artikel Bascom.<br />
Wie man ein Programm schreibt, compiliert und überträgt wurde schon in diesem Beitrag [[Bascom - Erstes Programm in den AVR Controller übertragen]] ausführlich behandelt, wir ersparen uns deshalb diese Details. <br />
<br />
Als erstes compilieren und übertragen wir folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step1.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Do<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
Das Programm macht eigentlich nichts, außer das es eine Endlosschleife ausführt. Aber da wir noch überhaupt nix am Controller angeschlossen haben, können wir eh noch nicht sehen ob ein Programm nun richtig ausgeführt wird oder nicht.<br />
Allerdings können wir schonmal üben das Programm mit Bascom zu übertragen. Wenn wir alles richtig ausgebaut haben und Spannung anliegt, dann sollte automatisch der Controller in Bascom erkannt werden. Die Übertragung sollte dann ohne Fehlermeldung erfolgen können. Wenn wir das geschafft haben, geht’s weiter.<br />
<br />
==Läuft die Schaltung und das Programm?==<br />
Damit wir nun endlich sehen ob sich bei unserer Schaltung auch was tut, schließen wir eine LED über einen 1K Vorwiderstand an einen Port an. Da wir die Kathode an den Controllerpin und die Anode an Plus legen, leuchtet die LED immer dann wenn dieser Pin auf Low geschaltet wird.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitled.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts nun so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitled.jpg|center]]<br />
<br />
<br />
Damit man nun auch wirklich sieht ob das Programm läuft, schreiben wir ein kleines Basic Programm welches eine LED abwechselnd ein – und ausschaltet. Wir compilieren und übertragen also folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step2.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Do<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Waitms 100<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Waitms 100<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
<br />
Wenn die LED nun schnell blinkt, dann funktioniert die aufgebaute Schaltung perfekt. Wir haben gleichzeitig gelernt wie man einen Ausgangsport, also Controllerpin ein -und ausschalten kann. Nahezu alle Pin´s beim ATMega32 können auf diese Weise als Ausgangsport betrieben werden. Somit alssen sich nicht nur viele Led´s, sondern unter Zuhilfenahme eines Treibers (z.B-Transistors) auch Relais und andere Aktoren schalten.<br />
<br />
==Eingangsport fragt Taster ab==<br />
Nun erweitern wir die Schaltung noch um einen Taster. Nahezu jede rPort kann bei einem ATMega32 auch per Software als Eingangsport konfiguriert werden. Wir schließen einen Taster an Port-Pin PA7 an. <br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mittaster.gif|center|500px]]<br />
<br />
<br />
Der Port wird in der Software so konfiguriert, das er als Eingang arbeitet und indern über einen hohen Widerstand (Pullup-Widerstand) ständig auf High Pegel gelegt wird. Wird nun eine Taste gedrückt, so wird der Pegel auf Low gezogen.<br />
Das Beispielprogramm ist nun so gestaltet das bei gedrückter Taste die LED leuchtet und bei, loslassen wieder aus geht.<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step3.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
End If<br />
Loop<br />
<br />
<br />
End<br />
</pre><br />
<br />
==Grundschaltung mit Quarz==<br />
Obwohl wir ab der letzten Schaltung schon einiges mit dem Controller anfangen können, so fehlt doch noch was wichtiges. Oft ist es nämlich wichtig das ein Controller sehr genaue Frequenzen messen oder ganz genaue Taktraten ausgeben kann. Leider ist der interne Taktgenerator nicht 100% exakt, was bei manchen Anwendungen störend ist. Zum Beispiel können über die RS232 Schnittstelle Daten nicht immer ganz Fehlerfrei übertragen werden wenn die Taktfrequenz nicht genau stimmt. Daher wird in den meisten Anwendungsfällen ein Quarz zur Takterzeugung genutzt, sie kennen das sicher aus anderen Grundschaltungen. Also erweitern wir unsere Schaltung gleich noch um einen Quarz mit den zugehörigen 22pF Kondensatoren.<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitquarz.gif|center|500px]]<br />
<br />
<br />
Auf unserem Steckbrett wird’s langsam voller, hier siehts also inzwischen so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitquarz.jpg|center|500px]]<br />
<br />
<br />
Normalerweise sollte der Quarz genauso wie die beiden 22pF Kondensatoren, die zum Anschwingen des Quarzes dienen, möglichst nahe am Controller plaziert werden. Auf dem Steckbrett ist das manchmal garnicht so einfach insbesondere wenn man wie in diesem fall den Quarz erst später hinzufügt. Wichtig ist nämlich das die Leitungen vom Quarz zum Controller möglichst kurz sind, bei gedruckten Schaltungen oft nur 1 bis 2 cm! Auch die einzelnen Bauteilbeinchen, z.B. der Kondensatoren sollten normalerweise so kurz wie möglich sein.<br />
Ist dies nicht der Fall, wie auch in unserem Bild, dann fungieren quasi diese Leitungen fast wie eine Funkantenne. Dies führt in der Regel zu starken Hochfrequenzsignalen die nicht nur unsere Schaltung sondern auch andere Schaltungen in der Nähe stören könnten. Man merkt dies auch oft daran das sich ein Board bei höherer Quarzfrequenz immer seltener fehlerfrei ohne Übertragungsfehler programmieren läßt.<br />
Grundsätzlich sind daher Schaltungen mit Quarz auf einem Steckbrett nicht sonderlich zu empfehlen, die Betriebssicherheit ist nicht immer gegeben. <br />
<br />
Auch wenn nun ein Quarz angeschlossen ist, so wird er noch immer nicht genutzt. Noch immer arbeiten der [[ATMega32]] mit seiner intern voreingestellten 1 Mhz Taktfrequenz. Um dies umzustellen, muss man ein sogenanntes [[Fusebits|Fusebit]] im Controller umprogrammieren. Auch dies wurde schon im Beitrag [[Bascom - Erstes Programm in den AVR_Controller übertragen]] näher beschrieben. Hier sei daher nur nochmals gesagt das dies auch sehr bequem in [[Bascom]] erfolgt:<br />
<br />
<br />
[[Bild:avrtutorial_bascomfusebitquarz.gif|center]]<br />
<br />
<br />
Sobald wir das umgestellt haben, müssen wir auch in dem Programm die Anweisung <br />
<br />
$crystal = 1000000 <br />
<br />
durch <br />
<br />
$crystal = 16000000 <br />
<br />
ersetzen, denn unser Quarz taktet nun mit 16 Mhz.<br />
<br />
==Spannung stabilisieren==<br />
Auch wenn unser Basis-Schaltung für Experimente inzwischen schon ganz nett ist, so ist es doch etwas ungünstig das wir stets 5V zur Verfügung haben müssen. Nicht immer steht ein geeignetes Netzteil zur Verfügung zudem soll ein Controller auch oft mit Batterien versorgt werden. Aus diesem Grund verfügen fas alle Entwicklungsboards wie ([[RN-Control]], STK500 etc.) über einen Spannungsregler. Dieser wandelt eine höhere Eingangsspannung ca. 7 bis 20 V immer genau in 5V um. Sowas erhöht die Betriebssicherheit einer Schaltung nochmals immens. Als Spannungsregler (IC2) wird oft der 7805 genutzt, empfehlenswert ist der Typ 78S05 welcher 2A verträgt sowie über einen Kurzschluss- und Überlastungsschutz verfügt. Die beiden 100nF Kondensatoren sind wichtig, Sie sollen HF-Störungen, Schwingungen vermeiden. Das Elko vor dem Spannungsregler ist vorallem dann wichtig, wenn die Spannung von einem Netzgerät kommt und noch etwas geglättet werden muss. Je höher der STrombedarf der Schaltung, desto größer kann man die Kapazität wählen. Es schadet nicht wenn man das Elko einige Nummern größer wählt, man ist dann quasi für alle Fälle gerüstet. So sind Werte zwischen 100uF und 2200 uF durchaus denkbar. <br />
<br />
<br />
Wir erweitern unsere Schaltung somit wie folgt:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_spannung.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts wie folgt aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_spannung.jpg|center]]<br />
<br />
==Daten und Texte zum PC übertragen==<br />
In vielen Programmen müssen Daten oder Texte vom Controller an den PC oder umgekehrt gesendet werden. Insbesondere bei komplexen Programmen kann man auf diese Weise Variableninhalte ausgeben und somit auch Fehler im Programmcode schneller finden und korrigieren. In der Regel ist das ganz einfach, denn der [[Microcontroller]] [[ATMega32]] verfügt über einen internen [[UART]], also ein Modul das Daten über die [[RS232]] Schnittstelle zum PC senden bzw. auch empfangen kann. Leider arbeitet jedoch die Controllerschnittstelle mit 5V und die PC Schnittstelle der Norm entsprechend mit +-12V. Daher muss unbedingt ein Schaltkreis dazwischen welcher die Pegel anpaßt. Gewöhnlich nimmt man hier das IC MAX232, welches inzwischen sehr preiswert erhältlich ist.<br />
<br />
Wir müssen also die Schaltung nochmals erweitern:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_max232.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_max232.jpg|center|500px]]<br />
<br />
<br />
Über eine dreipolige Stiftleiste ([[RN-Definitionen]]) wird nun das Steckboard mit der [[RS232]] Schnittstelle des PC-verbunden. Es ist nun ein leichtes mit einem Programm Daten zum PC zu senden. Das nachfolgende Programm gibt Hinweise mit der Anweisung '''PRINT''' aus:<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step5.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 16000000<br />
$baud = 9600<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Print "Schalter nicht gedrückt"<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Print "Schalter gedrückt"<br />
End If<br />
Wait 1<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
==Möglichkeiten des Steckbrettes erreicht==<br />
Inzwischen füllt der Schaltplan fast ein DIN A4 Blatt und auf dem Steckbrett siehts auch schon recht wirr aus, dabei haben wir nur die wichtigsten Grundelemente auf dem Steckbrett. Für eine Roboter-Steuerung oder andere Anwendung fehlt doch noch einiges. Zum Beispiel weitere Taster, weitere LED´s, Motortreiber damit der Controller auch Motoren ansteuern und [[I2C]]-Bus Anschuß.<br />
Dies alles noch auf einem Steckbrett zu realisieren macht wenig Sinn, zumal bereits jetzt schon durch die doch recht langen Leitungen/Verkabelungen erhebliche Störungen auftreten. In der letzten Phase ist es immer öfters zu Übertragungsfehlern beim programmieren gekommen, oft musste dies 20 mal wiederholt werden. Dies zeigt das ein Steckbrett bestenfalls für ganz kleine Controller-Experimente herhalten kann. Für größere Dinge sollte man dann doch zu einer Lösung auf einer gedruckten Platine greifen. Spezielle Experimentierboard´s bieten mehr Sicherheit und haben neben den Grundelementen die hier beschrieben wurden noch eine ganze Menge mehr drauf. Bei [[RN-Control]] zum Beispiel 5 Tasten, 8 Leds, Motortreiber, Lautsprecher, diverse Anschlüsse etc. <br />
Der Größenunterschied wird im Bild deutlich:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_rncontrol.jpg|center|500px]]<br />
<br />
<br />
Auch wenn das Steckbrett also kein Controllerboard ersetzen kann, so hat das kleine Tutorial doch gezeigt wie eine [[Avr]]-Schaltung aufzubauen ist. Dieses Wissen sollte man auch besitzen, wenn man ein Controllerboard nutzt. Das war Ziel dieses Artikels.<br />
<br />
==Autor==<br />
*[[Benutzer:Frank|Frank]]<br />
<br />
==Siehe auch==<br />
*[[AVR-ISP Programmierkabel]]<br />
*[[Mit welchem Controllerboard fang ich an]]<br />
*[[Abblockkondensator]]<br />
*[[Bascom]]<br />
*[[Bascom - Erstes Programm in den AVR_Controller übertragen]]<br />
*[[Avr]]<br />
*[[Atmel Controller Mega16 und Mega32]]<br />
<br />
<br />
[[Kategorie:Robotikeinstieg]]<br />
[[Kategorie:Praxis]]<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Projekte]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=AVR-Einstieg_leicht_gemacht&diff=4531AVR-Einstieg leicht gemacht2005-12-29T01:09:29Z<p>PhpSupporter: /* Möglichkeiten des Steckbrettes erreicht */</p>
<hr />
<div>Immer wieder gibt es in Foren wie dem Roboternetz Einsteiger die das erste mal mir einem [[Microcontroller]] in Berührung kommen. Trotz zahlreicher Einstiegsbeiträge im Forum wiederholen sich bestimmte Anfängerfragen immer wieder, daher soll dieser Artikel noch einmal aufzeigen, wie man den ersten Schritt tut und einen Controller zum Leben erweckt. Als Controller verwenden wir einen [[AVR]] [[ATMega32]]. Der derzeit größe AVR-Controller welcher noch im bastlerfreundlichen DIP-Gehäuse verfügbar ist. Für kleine bis mittlere Projekte ein sehr empfehlenswerter Controller zumal er preislich mit ca. 6-7 Euro noch sehr günstig ist und zudem mit seinem 40 Pin Gehäuse auch reichlich Anschlußmöglichkeiten besitzt.<br />
<br />
Die Frage, ob man mit einem fertigen Controllerboard, Experimentierplatine oder einem Steckbrett beginnen sollte, wurde ja in dem RN-Wissen Wiki Beitrag Mit welchem Controllerboard fang ich an angesprochen. In den meisten Fällen favorisiert der Autor dieses Artikels ein fertiges Controllerboard. Warum da sso ist, dazu am Ende noch ein paar Anmerkungen Dennoch soll diese Einführung schrittweise anhand eines Steckbrettes erläutert werden. <br />
<br />
==Start mit handelsüblichen Steckbrett==<br />
Ein Steckbrett hat den Vorteil das manr theoretisch ohne Löten alle Bauteile relativ zügig zusammenstecken kann. Bestimmte Steckkontakte innerhalb einer Reihe sind im Steckbrett miteinander verbunden, so das man nachher pro Bauteilbeinchen noch einige Steckkontakte zum Verdrahten mit Schaltdraht oder speziell konfigurierter Litze verwenden kann.<br />
<br />
Die Nachteile von einem Steckbrett sind:<br />
<br />
*nicht alle Bauteile passen, so das wir doch noch etwas löten müssen<br />
*nur geringer Schaltungsumfang möglich da es schnell unübersichtlich wird<br />
*sehr Störanfällig wegen Kabellängen<br />
<br />
Man beginnt indem man den Controller Avr [[ATMega32]] auf das Board aufsetzt:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrettmega32.jpg|center]]<br />
<br />
<br />
==Die Grundschaltung==<br />
Damit ein Controller erst mal zum laufen kommt, benötigt man zumindest einen 10k Widerstand, einen 100 nF Kondensator und eine 5V Spannungsquelle. Das ganze muss entsprechend dem unteren Schaltplan verschaltet werden, man spricht von einer sogenannten Grundschaltung. In dem Schaltplan wurde der Controller im übrigen Pinkompatibel als Schaltzeichen verwendet, die Pinreihenfolge ist also im Schaltplan identisch mit den echten Bauteilpin-Reihenfolge. Diese Darstellung erleichtert den Nachbau der Schaltung auf einem Steckbrett aber auch einer Experimentierplatine ungemein. Gewöhnlich verwendet man in Schaltplänen eine etwas andere Darstellung bei der die Pin´s nach Funktionsgruppen geordnet sind. Bei solchen Schaltplänen muss man sich dann anhand der Pin-Nummern orientieren, man wird dies am Ende des Artikels noch bei dem IC MAX232 sehen.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mega32.gif|center|500px]]<br />
<br />
<br />
Wenn man schon einige Grundschaltungen in anderen Tutorials gesehen hat, dann wird man bemerken das unsere doch noch etwas einfacher ist und weniger Bauteile benötigt. Hier wird beispielsweise kein Quarz verwendet, da der ATMega32 auch intern einen Takt generieren kann.<br />
<br />
Auf dem Steckbrett sieht die obere Schaltung wie folgt aus:<br />
<br />
[[Bild:avrtutorial_steckbrett1.jpg|center]]<br />
<br />
<br />
Um den Controller in Betrieb zu nehmen, benötigt man bei dieser Schaltung ein Netzteil das eine stabilisierte Spannung von 4 bis 5V liefert. Wir gehen erst einmal davon aus das man über dieses verfügt. <br />
Erwähnenswert ist noch das der Kondensator als [[Abblockkondensator]] zur Unterdrückung von Störungen dient. Er muss so nah wie möglich an die Spannungszuführung am Controller selbst gesetzt werden. Der Widerstand dient dazu die Reset Leitung konstant auf definierten High Pegel. Verbindet man diesen RESET Pin später kurz mit GND (Masse), dann wird das Programm im Controller neu gestartet.<br />
<br />
==Woran merkt man das der Controller funktioniert?==<br />
Gute Frage! Man merkt es garnicht. Genau genommen funktioniert ja auch trotz korrekter Schaltung noch immer nix denn es muss zuerst ein Programm in den Controller geladen werden, damit er überhaupt weiss was zu tun ist. Ohne Programm ist der Controller quasi tot.<br />
<br />
<br />
==Wie bekommt man das Programm in den Controller?==<br />
Der Controller verfügt über eine sogenannte [[ISP]]-Schnittstelle. Das bedeutet über bestimmte Pin´s ([[SPI]]) kann der Controller mit einer geeigneten PC-Software (zum Beispiel Bascom) programmiert werden. Zum Anschluß an den PC benötigt man jedoch einen sogenannten ISP-Dongel oder auch Programmieradapter genannt. Hier gibt es verschiedene Lösungen, serielle und parallele Adapter. Original von Atmel oder kompatible Lösungen. Der am meisten verwendetet ISP-Dongel wird am Druckerport betrieben. Diese gibt es inzwischen recht preiswert, so das das selbstbauen eigentlich nicht lohnt. Da man auch gern auf ein paar Fehlerquellen verzichten sollte, würde ich eine Fertiglösung empfehlen. Wer ihn selbst bauen möchte, findet ([[AVR-ISP_Programmierkabel|hier]] eine ISP-Dongel Bauanleitung und sogar eine fertige Platine dafür ([[AVR-ISP_Programmierkabel]]).<br />
<br />
Sowas sieht dann so aus:<br />
<br />
[[Bild:avrtutorial_ispkabel.jpg|center]]<br />
<br />
<br />
Das Problem ist nun, wie schließe ich einen handelsüblichen ISP-Programmieradapter an den Controller auf dem Steckbrett an. Der normale 10 polige Wannenstecker (nach [[RN-Definitionen]]) paßt nicht in ein Steckbrett. Das ist wieder so ein typischer Nachteil bei Steckbrettern! In unserem Beispiel haben wir dazu auf einem kleinen Stück Experimentierplatine einen steckbaren Adapter für das Steckboard gelötet.<br />
Somit kann man die Schaltung um einen üblichen 10 poligen ISP-Programmieranschluß ergänzen:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitisp.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett sieht das gleiche so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitisp.jpg|center]]<br />
<br />
<br />
Jetzt endlich ist es soweit, jetzt kann man den Controller über ein ISP-Programmieradapter mit dem PC verbinden. Aber unbedingt darauf achten das auch alles korrekt nach Schaltplan gesteckt wurde und das die Betriebsspannung 5V nicht übersteigt. Ansonsten könnte man sich Dongel oder sogar die PC-Schnittstelle beschädigen.<br />
Als Entwicklungsumgebung nutzen wir hier im Tutorial [[Bascom]]. [[Bascom]] ist ein sehr beliebter Basic [[Compiler]] der zahlreiche [[AVR]] Controllertypen programmieren kann. Da auch ein [[Terminalprogramm]] und ein Programmer integriert ist, enthält diese PC-Software alles was man braucht, das erleichtert den Einstieg zusätzlich. Die Software gibt’s kostenlos als Demo bis 4K Code, für unsere Beispiele und den Einstieg reich das allemal, siehe dazu Artikel Bascom.<br />
Wie man ein Programm schreibt, compiliert und überträgt wurde schon in diesem Beitrag [[Bascom - Erstes Programm in den AVR Controller übertragen]] ausführlich behandelt, wir ersparen uns deshalb diese Details. <br />
<br />
Als erstes compilieren und übertragen wir folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step1.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Do<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
Das Programm macht eigentlich nichts, außer das es eine Endlosschleife ausführt. Aber da wir noch überhaupt nix am Controller angeschlossen haben, können wir eh noch nicht sehen ob ein Programm nun richtig ausgeführt wird oder nicht.<br />
Allerdings können wir schonmal üben das Programm mit Bascom zu übertragen. Wenn wir alles richtig ausgebaut haben und Spannung anliegt, dann sollte automatisch der Controller in Bascom erkannt werden. Die Übertragung sollte dann ohne Fehlermeldung erfolgen können. Wenn wir das geschafft haben, geht’s weiter.<br />
<br />
==Läuft die Schaltung und das Programm?==<br />
Damit wir nun endlich sehen ob sich bei unserer Schaltung auch was tut, schließen wir eine LED über einen 1K Vorwiderstand an einen Port an. Da wir die Kathode an den Controllerpin und die Anode an Plus legen, leuchtet die LED immer dann wenn dieser Pin auf Low geschaltet wird.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitled.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts nun so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitled.jpg|center]]<br />
<br />
<br />
Damit man nun auch wirklich sieht ob das Programm läuft, schreiben wir ein kleines Basic Programm welches eine LED abwechselnd ein – und ausschaltet. Wir compilieren und übertragen also folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step2.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Do<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Waitms 100<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Waitms 100<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
<br />
Wenn die LED nun schnell blinkt, dann funktioniert die aufgebaute Schaltung perfekt. Wir haben gleichzeitig gelernt wie man einen Ausgangsport, also Controllerpin ein -und ausschalten kann. Nahezu alle Pin´s beim ATMega32 können auf diese Weise als Ausgangsport betrieben werden. Somit alssen sich nicht nur viele Led´s, sondern unter Zuhilfenahme eines Treibers (z.B-Transistors) auch Relais und andere Aktoren schalten.<br />
<br />
==Eingangsport fragt Taster ab==<br />
Nun erweitern wir die Schaltung noch um einen Taster. Nahezu jede rPort kann bei einem ATMega32 auch per Software als Eingangsport konfiguriert werden. Wir schließen einen Taster an Port-Pin PA7 an. <br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mittaster.gif|center|500px]]<br />
<br />
<br />
Der Port wird in der Software so konfiguriert, das er als Eingang arbeitet und indern über einen hohen Widerstand (Pullup-Widerstand) ständig auf High Pegel gelegt wird. Wird nun eine Taste gedrückt, so wird der Pegel auf Low gezogen.<br />
Das Beispielprogramm ist nun so gestaltet das bei gedrückter Taste die LED leuchtet und bei, loslassen wieder aus geht.<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step3.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
End If<br />
Loop<br />
<br />
<br />
End<br />
</pre><br />
<br />
==Grundschaltung mit Quarz==<br />
Obwohl wir ab der letzten Schaltung schon einiges mit dem Controller anfangen können, so fehlt doch noch was wichtiges. Oft ist es nämlich wichtig das ein Controller sehr genaue Frequenzen messen oder ganz genaue Taktraten ausgeben kann. Leider ist der interne Taktgenerator nicht 100% exakt, was bei manchen Anwendungen störend ist. Zum Beispiel können über die RS232 Schnittstelle Daten nicht immer ganz Fehlerfrei übertragen werden wenn die Taktfrequenz nicht genau stimmt. Daher wird in den meisten Anwendungsfällen ein Quarz zur Takterzeugung genutzt, sie kennen das sicher aus anderen Grundschaltungen. Also erweitern wir unsere Schaltung gleich noch um einen Quarz mit den zugehörigen 22pF Kondensatoren.<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitquarz.gif|center|500px]]<br />
<br />
<br />
Auf unserem Steckbrett wird’s langsam voller, hier siehts also inzwischen so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitquarz.jpg|center|500px]]<br />
<br />
<br />
Normalerweise sollte der Quarz genauso wie die beiden 22pF Kondensatoren möglichst nahe am Controller plaziert werden. Auf dem Steckbrett ist das manchmal garnicht so einfach insbesondere wenn man wie in diesem fall den Quarz erst später hinzufügt. Wichtig ist nämlich das die Leitungen vom Quarz zum Controller möglichst kurz sind, bei gedruckten Schaltungen oft nur 1 bis 2 cm! Ist dies nicht der Fall, wie auch in unserem Bild, dann fungieren quasi diese Leitungen fast wie eine Funkantenne. Dies führt also zu starken Hochfrequenzsignalen die nicht nur unsere Schaltung sondern auch andere Schaltungen in der Nähe stören könnten.<br />
Grundsätzlich sind daher Schaltungen mit Quarz auf einem Steckbrett nicht sonderlich zu empfehlen, die Betriebssicherheit ist nicht immer gegeben.<br />
<br />
Auch wenn nun ein Quarz angeschlossen ist, so wird er noch immer nicht genutzt. Noch immer arbeiten der ATMega32 mit seiner intern voreingestellten 1 Mhz Taktfrequenz. Um dies umzustellen, muss man ein sogenanntes Fusebit im Controller umprogrammieren. Auch dies wurde schon im Beitrag [[Bascom - Erstes Programm in den AVR_Controller übertragen]] näher beschrieben. Hier sei daher nur nochmals gesagt das dies auch sehr bequem in Bascom erfolgt:<br />
<br />
<br />
[[Bild:avrtutorial_bascomfusebitquarz.gif|center|500px]]<br />
<br />
<br />
Sobald wir das umgestellt haben, müssen wir auch in dem Programm die Anweisung <br />
<br />
$crystal = 1000000 <br />
<br />
durch <br />
<br />
$crystal = 16000000 <br />
<br />
ersetzen, denn unser Quarz taktet nun mit 16 Mhz.<br />
<br />
==Spannung stabilisieren==<br />
Auch wenn unser Basis-Schaltung für Experimente inzwischen schon ganz nett ist, so ist es doch etwas ungünstig das wir stets 5V zur Verfügung haben müssen. Nicht immer steht ein geeignetes Netzteil zur Verfügung zudem soll ein Controller auch oft mit Batterien versorgt werden. Aus diesem Grund verfügen fas alle Entwicklungsboards wie (RN-Control, STK500 etc.) über einen Spannungsregler. Dieser wandelt eine höhere Eingangsspannung ca. 7 bis 20 V immer genau in 5V um. Sowas erhöht die Betriebssicherheit einer Schaltung nochmals immens. <br />
Wir erweitern unsere Schaltung somit wie folgt:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_spannung.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts wie folgt aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_spannung.jpg|center]]<br />
<br />
<br />
==Daten und Texte zum PC übertragen==<br />
In vielen Programmen müssen Daten oder Texte vom Controller an den PC oder umgekehrt gesendet werden. Insbesondere bei komplexen Programmen kann man auf diese Weise Variableninhalte ausgeben und somit auch Fehler im Programmcode schneller finden und korrigieren. In der Regel ist das ganz einfach, denn der [[Microcontroller]] [[ATMega32]] verfügt über einen internen [[UART]], also ein Modul das Daten über die [[RS232]] Schnittstelle zum PC senden bzw. auch empfangen kann. Leider arbeitet jedoch die Controllerschnittstelle mit 5V und die PC Schnittstelle der Norm entsprechend mit +-12V. Daher muss unbedingt ein Schaltkreis dazwischen welcher die Pegel anpaßt. Gewöhnlich nimmt man hier das IC MAX232, welches inzwischen sehr preiswert erhältlich ist.<br />
<br />
Wir müssen also die Schaltung nochmals erweitern:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_max232.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_max232.jpg|center|500px]]<br />
<br />
<br />
Über eine dreipolige Stiftleiste ([[RN-Definitionen]]) wird nun das Steckboard mit der [[RS232]] Schnittstelle des PC-verbunden. Es ist nun ein leichtes mit einem Programm Daten zum PC zu senden. Das nachfolgende Programm gibt Hinweise mit der Anweisung '''PRINT''' aus:<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step5.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 16000000<br />
$baud = 9600<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Print "Schalter nicht gedrückt"<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Print "Schalter gedrückt"<br />
End If<br />
Wait 1<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
==Möglichkeiten des Steckbrettes erreicht==<br />
Inzwischen füllt der Schaltplan fast ein DIN A4 Blatt und auf dem Steckbrett siehts auch schon recht wirr aus, dabei haben wir nur die wichtigsten Grundelemente auf dem Steckbrett. Für eine Roboter-Steuerung oder andere Anwendung fehlt doch noch einiges. Zum Beispiel weitere Taster, weitere LED´s, Motortreiber damit der Controller auch Motoren ansteuern und [[I2C]]-Bus Anschuß.<br />
Dies alles noch auf einem Steckbrett zu realisieren macht wenig Sinn, zumal bereits jetzt schon durch die doch recht langen Leitungen/Verkabelungen erhebliche Störungen auftreten. In der letzten Phase ist es immer öfters zu Übertragungsfehlern beim programmieren gekommen, oft musste dies 20 mal wiederholt werden. Dies zeigt das ein Steckbrett bestenfalls für ganz kleine Controller-Experimente herhalten kann. Für größere Dinge sollte man dann doch zu einer Lösung auf einer gedruckten Platine greifen. Spezielle Experimentierboard´s bieten mehr Sicherheit und haben neben den Grundelementen die hier beschrieben wurden noch eine ganze Menge mehr drauf. Bei [[RN-Control]] zum Beispiel 5 Tasten, 8 Leds, Motortreiber, Lautsprecher, diverse Anschlüsse etc. <br />
Der Größenunterschied wird im Bild deutlich:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_rncontrol.jpg|center|500px]]<br />
<br />
<br />
Auch wenn das Steckbrett also kein Controllerboard ersetzen kann, so hat das kleine Tutorial doch gezeigt wie eine [[Avr]]-Schaltung aufzubauen ist. Dieses Wissen sollte man auch besitzen, wenn man ein Controllerboard nutzt. Das war Ziel dieses Artikels.<br />
<br />
==Autor==<br />
*[[Benutzer:Frank|Frank]]<br />
<br />
==Siehe auch==<br />
*[[AVR-ISP Programmierkabel]]<br />
*[[Mit welchem Controllerboard fang ich an]]<br />
*[[Abblockkondensator]]<br />
*[[Bascom]]<br />
*[[Bascom - Erstes Programm in den AVR_Controller übertragen]]<br />
*[[Avr]]<br />
*[[Atmel Controller Mega16 und Mega32]]<br />
<br />
<br />
[[Kategorie:Robotikeinstieg]]<br />
[[Kategorie:Praxis]]<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Projekte]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Kategorie:Projekte&diff=4530Kategorie:Projekte2005-12-29T01:03:03Z<p>PhpSupporter: </p>
<hr />
<div>[[Bild:avrtutorial_steckbrettmega32.jpg|right|100px]]<br />
In dieser Rubrik findet man komplette Bauanleitungen zu dem Bereich Robotik. Aber auch Software-Projekte und ähnliches. Bitte aber immer jedes Projekt etwas ausführlicher darstellen, zumindest Schaltplan und Beschreibung sollte auf die Seite. Also nicht nur Bild posten und dann irgendwo ins Web verlnken!<br />
<br />
Zu den RN-Schaltungen gibt es auch eine [[RN-Board FAQ-Seite]] wo man Hilfe findet.<br />
<br />
Was versteht man unter [[RN-Definitionen]]<br />
<br />
==RN-Schaltungen (Roboternetz-Schaltungen)==<br />
Roboternetz Projekte die sich an den RN-Standard (Empfehlungen für Steckerbelegungen etc.) halten und zu denen auch eine fertige Platine / Bausatz erhältlich ist.<br />
<br />
Roboternetz Schaltungen nutzen alle die gleichen Richtlinien. Es wird empfohlen sich beim Bau von Schaltungen dran zu orientieren später kompatible Schaltungen zu haben, die andere ohne Umstände auch verwenden können. SO macht die Veröfftlichung von Schaltungen mehr Nutzen, denn alles ist leicht kombinierbar erweiterbar.<br />
<br />
* [[RN-Definitionen]] <br />
<br />
* [[AVR-ISP Programmierkabel]] - Programmierkabel für AVR-Controller und Boards<br />
* [[RN-Control]] - Controller- und Roboterboard<br />
* [[RNBFRA-Board]] - Erste große Controllerboard das im Roboternetz entwickelt wurde<br />
* [[RN-VNH2Dualmotor]] - Sehr kompaktes Board zum ansteuern von zwei Motoren<br />
* [[RN-Speak]] - Sprachausgabe die per RS232 oder I2C gesteuert wird<br />
* [[RN-KeyLCD]] - LCD Board mit I2C/RS232 (RS485) Schnittstelle und Matrixtastatur<br />
<br />
==RN-Schaltungen ohne Platine==<br />
Roboternetz Projekte die sich ebenfalls den RN-Standard (Empfehlungen für Steckerbelegungen etc.) halten, jedoch zu denen momentan keine fertige Platine / Bausatz erhältlich ist<br />
<br />
* [[AVR-Einstieg leicht gemacht|AVR Mega32 Grundschaltungen]]<br />
...<br />
<br />
==Weitere Schaltungen==<br />
Weiter Schaltungen von RN-Mitgliedern<br />
<br />
* [[PIC-Programmierkabel]]<br />
* [[MIDI-Interface]]<br />
* [[Ultraschall Interface]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=Kategorie:Projekte&diff=4529Kategorie:Projekte2005-12-29T01:00:28Z<p>PhpSupporter: /* RN-Schaltungen ohne Platine */</p>
<hr />
<div>In dieser Rubrik findet man komplette Bauanleitungen zu dem Bereich Robotik. Aber auch Software-Projekte und ähnliches. Bitte aber immer jedes Projekt etwas ausführlicher darstellen, zumindest Schaltplan und Beschreibung sollte auf die Seite. Also nicht nur Bild posten und dann irgendwo ins Web verlnken!<br />
<br />
Zu den RN-Schaltungen gibt es auch eine [[RN-Board FAQ-Seite]] wo man Hilfe findet.<br />
<br />
Was versteht man unter [[RN-Definitionen]]<br />
<br />
==RN-Schaltungen (Roboternetz-Schaltungen)==<br />
Roboternetz Projekte die sich an den RN-Standard (Empfehlungen für Steckerbelegungen etc.) halten und zu denen auch eine fertige Platine / Bausatz erhältlich ist.<br />
<br />
Roboternetz Schaltungen nutzen alle die gleichen Richtlinien. Es wird empfohlen sich beim Bau von Schaltungen dran zu orientieren später kompatible Schaltungen zu haben, die andere ohne Umstände auch verwenden können. SO macht die Veröfftlichung von Schaltungen mehr Nutzen, denn alles ist leicht kombinierbar erweiterbar.<br />
<br />
* [[RN-Definitionen]] <br />
<br />
* [[AVR-ISP Programmierkabel]] - Programmierkabel für AVR-Controller und Boards<br />
* [[RN-Control]] - Controller- und Roboterboard<br />
* [[RNBFRA-Board]] - Erste große Controllerboard das im Roboternetz entwickelt wurde<br />
* [[RN-VNH2Dualmotor]] - Sehr kompaktes Board zum ansteuern von zwei Motoren<br />
* [[RN-Speak]] - Sprachausgabe die per RS232 oder I2C gesteuert wird<br />
* [[RN-KeyLCD]] - LCD Board mit I2C/RS232 (RS485) Schnittstelle und Matrixtastatur<br />
<br />
==RN-Schaltungen ohne Platine==<br />
Roboternetz Projekte die sich ebenfalls den RN-Standard (Empfehlungen für Steckerbelegungen etc.) halten, jedoch zu denen momentan keine fertige Platine / Bausatz erhältlich ist<br />
<br />
* [[AVR-Einstieg leicht gemacht|AVR Mega32 Grundschaltungen]]<br />
...<br />
<br />
==Weitere Schaltungen==<br />
Weiter Schaltungen von RN-Mitgliedern<br />
<br />
* [[PIC-Programmierkabel]]<br />
* [[MIDI-Interface]]<br />
* [[Ultraschall Interface]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=AVR-Einstieg_leicht_gemacht&diff=4528AVR-Einstieg leicht gemacht2005-12-29T00:59:09Z<p>PhpSupporter: /* Autor */</p>
<hr />
<div>Immer wieder gibt es in Foren wie dem Roboternetz Einsteiger die das erste mal mir einem [[Microcontroller]] in Berührung kommen. Trotz zahlreicher Einstiegsbeiträge im Forum wiederholen sich bestimmte Anfängerfragen immer wieder, daher soll dieser Artikel noch einmal aufzeigen, wie man den ersten Schritt tut und einen Controller zum Leben erweckt. Als Controller verwenden wir einen [[AVR]] [[ATMega32]]. Der derzeit größe AVR-Controller welcher noch im bastlerfreundlichen DIP-Gehäuse verfügbar ist. Für kleine bis mittlere Projekte ein sehr empfehlenswerter Controller zumal er preislich mit ca. 6-7 Euro noch sehr günstig ist und zudem mit seinem 40 Pin Gehäuse auch reichlich Anschlußmöglichkeiten besitzt.<br />
<br />
Die Frage, ob man mit einem fertigen Controllerboard, Experimentierplatine oder einem Steckbrett beginnen sollte, wurde ja in dem RN-Wissen Wiki Beitrag Mit welchem Controllerboard fang ich an angesprochen. In den meisten Fällen favorisiert der Autor dieses Artikels ein fertiges Controllerboard. Warum da sso ist, dazu am Ende noch ein paar Anmerkungen Dennoch soll diese Einführung schrittweise anhand eines Steckbrettes erläutert werden. <br />
<br />
==Start mit handelsüblichen Steckbrett==<br />
Ein Steckbrett hat den Vorteil das manr theoretisch ohne Löten alle Bauteile relativ zügig zusammenstecken kann. Bestimmte Steckkontakte innerhalb einer Reihe sind im Steckbrett miteinander verbunden, so das man nachher pro Bauteilbeinchen noch einige Steckkontakte zum Verdrahten mit Schaltdraht oder speziell konfigurierter Litze verwenden kann.<br />
<br />
Die Nachteile von einem Steckbrett sind:<br />
<br />
*nicht alle Bauteile passen, so das wir doch noch etwas löten müssen<br />
*nur geringer Schaltungsumfang möglich da es schnell unübersichtlich wird<br />
*sehr Störanfällig wegen Kabellängen<br />
<br />
Man beginnt indem man den Controller Avr [[ATMega32]] auf das Board aufsetzt:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrettmega32.jpg|center]]<br />
<br />
<br />
==Die Grundschaltung==<br />
Damit ein Controller erst mal zum laufen kommt, benötigt man zumindest einen 10k Widerstand, einen 100 nF Kondensator und eine 5V Spannungsquelle. Das ganze muss entsprechend dem unteren Schaltplan verschaltet werden, man spricht von einer sogenannten Grundschaltung. In dem Schaltplan wurde der Controller im übrigen Pinkompatibel als Schaltzeichen verwendet, die Pinreihenfolge ist also im Schaltplan identisch mit den echten Bauteilpin-Reihenfolge. Diese Darstellung erleichtert den Nachbau der Schaltung auf einem Steckbrett aber auch einer Experimentierplatine ungemein. Gewöhnlich verwendet man in Schaltplänen eine etwas andere Darstellung bei der die Pin´s nach Funktionsgruppen geordnet sind. Bei solchen Schaltplänen muss man sich dann anhand der Pin-Nummern orientieren, man wird dies am Ende des Artikels noch bei dem IC MAX232 sehen.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mega32.gif|center|500px]]<br />
<br />
<br />
Wenn man schon einige Grundschaltungen in anderen Tutorials gesehen hat, dann wird man bemerken das unsere doch noch etwas einfacher ist und weniger Bauteile benötigt. Hier wird beispielsweise kein Quarz verwendet, da der ATMega32 auch intern einen Takt generieren kann.<br />
<br />
Auf dem Steckbrett sieht die obere Schaltung wie folgt aus:<br />
<br />
[[Bild:avrtutorial_steckbrett1.jpg|center]]<br />
<br />
<br />
Um den Controller in Betrieb zu nehmen, benötigt man bei dieser Schaltung ein Netzteil das eine stabilisierte Spannung von 4 bis 5V liefert. Wir gehen erst einmal davon aus das man über dieses verfügt. <br />
Erwähnenswert ist noch das der Kondensator als [[Abblockkondensator]] zur Unterdrückung von Störungen dient. Er muss so nah wie möglich an die Spannungszuführung am Controller selbst gesetzt werden. Der Widerstand dient dazu die Reset Leitung konstant auf definierten High Pegel. Verbindet man diesen RESET Pin später kurz mit GND (Masse), dann wird das Programm im Controller neu gestartet.<br />
<br />
==Woran merkt man das der Controller funktioniert?==<br />
Gute Frage! Man merkt es garnicht. Genau genommen funktioniert ja auch trotz korrekter Schaltung noch immer nix denn es muss zuerst ein Programm in den Controller geladen werden, damit er überhaupt weiss was zu tun ist. Ohne Programm ist der Controller quasi tot.<br />
<br />
<br />
==Wie bekommt man das Programm in den Controller?==<br />
Der Controller verfügt über eine sogenannte [[ISP]]-Schnittstelle. Das bedeutet über bestimmte Pin´s ([[SPI]]) kann der Controller mit einer geeigneten PC-Software (zum Beispiel Bascom) programmiert werden. Zum Anschluß an den PC benötigt man jedoch einen sogenannten ISP-Dongel oder auch Programmieradapter genannt. Hier gibt es verschiedene Lösungen, serielle und parallele Adapter. Original von Atmel oder kompatible Lösungen. Der am meisten verwendetet ISP-Dongel wird am Druckerport betrieben. Diese gibt es inzwischen recht preiswert, so das das selbstbauen eigentlich nicht lohnt. Da man auch gern auf ein paar Fehlerquellen verzichten sollte, würde ich eine Fertiglösung empfehlen. Wer ihn selbst bauen möchte, findet ([[AVR-ISP_Programmierkabel|hier]] eine ISP-Dongel Bauanleitung und sogar eine fertige Platine dafür ([[AVR-ISP_Programmierkabel]]).<br />
<br />
Sowas sieht dann so aus:<br />
<br />
[[Bild:avrtutorial_ispkabel.jpg|center]]<br />
<br />
<br />
Das Problem ist nun, wie schließe ich einen handelsüblichen ISP-Programmieradapter an den Controller auf dem Steckbrett an. Der normale 10 polige Wannenstecker (nach [[RN-Definitionen]]) paßt nicht in ein Steckbrett. Das ist wieder so ein typischer Nachteil bei Steckbrettern! In unserem Beispiel haben wir dazu auf einem kleinen Stück Experimentierplatine einen steckbaren Adapter für das Steckboard gelötet.<br />
Somit kann man die Schaltung um einen üblichen 10 poligen ISP-Programmieranschluß ergänzen:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitisp.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett sieht das gleiche so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitisp.jpg|center]]<br />
<br />
<br />
Jetzt endlich ist es soweit, jetzt kann man den Controller über ein ISP-Programmieradapter mit dem PC verbinden. Aber unbedingt darauf achten das auch alles korrekt nach Schaltplan gesteckt wurde und das die Betriebsspannung 5V nicht übersteigt. Ansonsten könnte man sich Dongel oder sogar die PC-Schnittstelle beschädigen.<br />
Als Entwicklungsumgebung nutzen wir hier im Tutorial [[Bascom]]. [[Bascom]] ist ein sehr beliebter Basic [[Compiler]] der zahlreiche [[AVR]] Controllertypen programmieren kann. Da auch ein [[Terminalprogramm]] und ein Programmer integriert ist, enthält diese PC-Software alles was man braucht, das erleichtert den Einstieg zusätzlich. Die Software gibt’s kostenlos als Demo bis 4K Code, für unsere Beispiele und den Einstieg reich das allemal, siehe dazu Artikel Bascom.<br />
Wie man ein Programm schreibt, compiliert und überträgt wurde schon in diesem Beitrag [[Bascom - Erstes Programm in den AVR Controller übertragen]] ausführlich behandelt, wir ersparen uns deshalb diese Details. <br />
<br />
Als erstes compilieren und übertragen wir folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step1.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Do<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
Das Programm macht eigentlich nichts, außer das es eine Endlosschleife ausführt. Aber da wir noch überhaupt nix am Controller angeschlossen haben, können wir eh noch nicht sehen ob ein Programm nun richtig ausgeführt wird oder nicht.<br />
Allerdings können wir schonmal üben das Programm mit Bascom zu übertragen. Wenn wir alles richtig ausgebaut haben und Spannung anliegt, dann sollte automatisch der Controller in Bascom erkannt werden. Die Übertragung sollte dann ohne Fehlermeldung erfolgen können. Wenn wir das geschafft haben, geht’s weiter.<br />
<br />
==Läuft die Schaltung und das Programm?==<br />
Damit wir nun endlich sehen ob sich bei unserer Schaltung auch was tut, schließen wir eine LED über einen 1K Vorwiderstand an einen Port an. Da wir die Kathode an den Controllerpin und die Anode an Plus legen, leuchtet die LED immer dann wenn dieser Pin auf Low geschaltet wird.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitled.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts nun so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitled.jpg|center]]<br />
<br />
<br />
Damit man nun auch wirklich sieht ob das Programm läuft, schreiben wir ein kleines Basic Programm welches eine LED abwechselnd ein – und ausschaltet. Wir compilieren und übertragen also folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step2.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Do<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Waitms 100<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Waitms 100<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
<br />
Wenn die LED nun schnell blinkt, dann funktioniert die aufgebaute Schaltung perfekt. Wir haben gleichzeitig gelernt wie man einen Ausgangsport, also Controllerpin ein -und ausschalten kann. Nahezu alle Pin´s beim ATMega32 können auf diese Weise als Ausgangsport betrieben werden. Somit alssen sich nicht nur viele Led´s, sondern unter Zuhilfenahme eines Treibers (z.B-Transistors) auch Relais und andere Aktoren schalten.<br />
<br />
==Eingangsport fragt Taster ab==<br />
Nun erweitern wir die Schaltung noch um einen Taster. Nahezu jede rPort kann bei einem ATMega32 auch per Software als Eingangsport konfiguriert werden. Wir schließen einen Taster an Port-Pin PA7 an. <br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mittaster.gif|center|500px]]<br />
<br />
<br />
Der Port wird in der Software so konfiguriert, das er als Eingang arbeitet und indern über einen hohen Widerstand (Pullup-Widerstand) ständig auf High Pegel gelegt wird. Wird nun eine Taste gedrückt, so wird der Pegel auf Low gezogen.<br />
Das Beispielprogramm ist nun so gestaltet das bei gedrückter Taste die LED leuchtet und bei, loslassen wieder aus geht.<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step3.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
End If<br />
Loop<br />
<br />
<br />
End<br />
</pre><br />
<br />
==Grundschaltung mit Quarz==<br />
Obwohl wir ab der letzten Schaltung schon einiges mit dem Controller anfangen können, so fehlt doch noch was wichtiges. Oft ist es nämlich wichtig das ein Controller sehr genaue Frequenzen messen oder ganz genaue Taktraten ausgeben kann. Leider ist der interne Taktgenerator nicht 100% exakt, was bei manchen Anwendungen störend ist. Zum Beispiel können über die RS232 Schnittstelle Daten nicht immer ganz Fehlerfrei übertragen werden wenn die Taktfrequenz nicht genau stimmt. Daher wird in den meisten Anwendungsfällen ein Quarz zur Takterzeugung genutzt, sie kennen das sicher aus anderen Grundschaltungen. Also erweitern wir unsere Schaltung gleich noch um einen Quarz mit den zugehörigen 22pF Kondensatoren.<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitquarz.gif|center|500px]]<br />
<br />
<br />
Auf unserem Steckbrett wird’s langsam voller, hier siehts also inzwischen so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitquarz.jpg|center|500px]]<br />
<br />
<br />
Normalerweise sollte der Quarz genauso wie die beiden 22pF Kondensatoren möglichst nahe am Controller plaziert werden. Auf dem Steckbrett ist das manchmal garnicht so einfach insbesondere wenn man wie in diesem fall den Quarz erst später hinzufügt. Wichtig ist nämlich das die Leitungen vom Quarz zum Controller möglichst kurz sind, bei gedruckten Schaltungen oft nur 1 bis 2 cm! Ist dies nicht der Fall, wie auch in unserem Bild, dann fungieren quasi diese Leitungen fast wie eine Funkantenne. Dies führt also zu starken Hochfrequenzsignalen die nicht nur unsere Schaltung sondern auch andere Schaltungen in der Nähe stören könnten.<br />
Grundsätzlich sind daher Schaltungen mit Quarz auf einem Steckbrett nicht sonderlich zu empfehlen, die Betriebssicherheit ist nicht immer gegeben.<br />
<br />
Auch wenn nun ein Quarz angeschlossen ist, so wird er noch immer nicht genutzt. Noch immer arbeiten der ATMega32 mit seiner intern voreingestellten 1 Mhz Taktfrequenz. Um dies umzustellen, muss man ein sogenanntes Fusebit im Controller umprogrammieren. Auch dies wurde schon im Beitrag [[Bascom - Erstes Programm in den AVR_Controller übertragen]] näher beschrieben. Hier sei daher nur nochmals gesagt das dies auch sehr bequem in Bascom erfolgt:<br />
<br />
<br />
[[Bild:avrtutorial_bascomfusebitquarz.gif|center|500px]]<br />
<br />
<br />
Sobald wir das umgestellt haben, müssen wir auch in dem Programm die Anweisung <br />
<br />
$crystal = 1000000 <br />
<br />
durch <br />
<br />
$crystal = 16000000 <br />
<br />
ersetzen, denn unser Quarz taktet nun mit 16 Mhz.<br />
<br />
==Spannung stabilisieren==<br />
Auch wenn unser Basis-Schaltung für Experimente inzwischen schon ganz nett ist, so ist es doch etwas ungünstig das wir stets 5V zur Verfügung haben müssen. Nicht immer steht ein geeignetes Netzteil zur Verfügung zudem soll ein Controller auch oft mit Batterien versorgt werden. Aus diesem Grund verfügen fas alle Entwicklungsboards wie (RN-Control, STK500 etc.) über einen Spannungsregler. Dieser wandelt eine höhere Eingangsspannung ca. 7 bis 20 V immer genau in 5V um. Sowas erhöht die Betriebssicherheit einer Schaltung nochmals immens. <br />
Wir erweitern unsere Schaltung somit wie folgt:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_spannung.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts wie folgt aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_spannung.jpg|center]]<br />
<br />
<br />
==Daten und Texte zum PC übertragen==<br />
In vielen Programmen müssen Daten oder Texte vom Controller an den PC oder umgekehrt gesendet werden. Insbesondere bei komplexen Programmen kann man auf diese Weise Variableninhalte ausgeben und somit auch Fehler im Programmcode schneller finden und korrigieren. In der Regel ist das ganz einfach, denn der [[Microcontroller]] [[ATMega32]] verfügt über einen internen [[UART]], also ein Modul das Daten über die [[RS232]] Schnittstelle zum PC senden bzw. auch empfangen kann. Leider arbeitet jedoch die Controllerschnittstelle mit 5V und die PC Schnittstelle der Norm entsprechend mit +-12V. Daher muss unbedingt ein Schaltkreis dazwischen welcher die Pegel anpaßt. Gewöhnlich nimmt man hier das IC MAX232, welches inzwischen sehr preiswert erhältlich ist.<br />
<br />
Wir müssen also die Schaltung nochmals erweitern:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_max232.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_max232.jpg|center|500px]]<br />
<br />
<br />
Über eine dreipolige Stiftleiste ([[RN-Definitionen]]) wird nun das Steckboard mit der [[RS232]] Schnittstelle des PC-verbunden. Es ist nun ein leichtes mit einem Programm Daten zum PC zu senden. Das nachfolgende Programm gibt Hinweise mit der Anweisung '''PRINT''' aus:<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step5.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 16000000<br />
$baud = 9600<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Print "Schalter nicht gedrückt"<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Print "Schalter gedrückt"<br />
End If<br />
Wait 1<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
==Möglichkeiten des Steckbrettes erreicht==<br />
Inzwischen füllt der Schaltplan fast ein DIN A4 Blatt und auf dem Steckbrett siehts auch schon recht wirr aus, dabei haben wir nur die wichtigsten Grundelemente auf dem Board. Für eine Roboterr-Steuerung oder andere Anwendung fehlen doch noch einiges. Zum Beispiel weitere tastet, weitere LED´s, Motortreiber damit der Controller auch Motoren ansteuern und [[I2C]]-Bus Anschuß.<br />
Dies alles noch auf einem Steckbrett zu realisieren macht wenig Sinn, zumal bereits jetzt schon durch die doch recht langen Leitungen/Verkabelungen erhebliche Steuerungen auftreten. In der letzten Phase ist es immer mehr zu Übertragungsfehlern beim programmieren gekommen, oft mußte es 20 mal wiederholt werden. Dies zeigt das ein Steckbrett bestenfalls ganz kleine Controller-Experimente. Für Größere Dinge sollte man dann doch zu einer Lösung auf einer gedruckten Platine greifen. Spezielle Experimentierboard´s bieten mehr Sicherheit und haben neben den Grundelementen die hier beschrieben wurden noch eine ganze Menge mehr drauf. Bei [[RN-Control]] zum Beispiel 5 Tasten, 8 Leds, Motortreiber, Lautsprecher, diverse Anschlüsse etc. <br />
Der Größenunterschied wird im Bild deutlich:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_rncontrol.jpg|center|500px]]<br />
<br />
<br />
Auch wenn das Steckbrett also kein Controllerboard ersetzen kann, so hat das kleine Tutorial doch gezeigt wie eine [[Avr]]-Schaltung aufzubauen ist. Dieses Wissen sollte man auch besitzen, wenn man ein Controllerboard nutzt. Das war Ziel dieses Artikels.<br />
<br />
==Autor==<br />
*[[Benutzer:Frank|Frank]]<br />
<br />
==Siehe auch==<br />
*[[AVR-ISP Programmierkabel]]<br />
*[[Mit welchem Controllerboard fang ich an]]<br />
*[[Abblockkondensator]]<br />
*[[Bascom]]<br />
*[[Bascom - Erstes Programm in den AVR_Controller übertragen]]<br />
*[[Avr]]<br />
*[[Atmel Controller Mega16 und Mega32]]<br />
<br />
<br />
[[Kategorie:Robotikeinstieg]]<br />
[[Kategorie:Praxis]]<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Projekte]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=AVR-Einstieg_leicht_gemacht&diff=4527AVR-Einstieg leicht gemacht2005-12-29T00:58:39Z<p>PhpSupporter: /* Möglichkeiten des Steckbrettes erreicht */</p>
<hr />
<div>Immer wieder gibt es in Foren wie dem Roboternetz Einsteiger die das erste mal mir einem [[Microcontroller]] in Berührung kommen. Trotz zahlreicher Einstiegsbeiträge im Forum wiederholen sich bestimmte Anfängerfragen immer wieder, daher soll dieser Artikel noch einmal aufzeigen, wie man den ersten Schritt tut und einen Controller zum Leben erweckt. Als Controller verwenden wir einen [[AVR]] [[ATMega32]]. Der derzeit größe AVR-Controller welcher noch im bastlerfreundlichen DIP-Gehäuse verfügbar ist. Für kleine bis mittlere Projekte ein sehr empfehlenswerter Controller zumal er preislich mit ca. 6-7 Euro noch sehr günstig ist und zudem mit seinem 40 Pin Gehäuse auch reichlich Anschlußmöglichkeiten besitzt.<br />
<br />
Die Frage, ob man mit einem fertigen Controllerboard, Experimentierplatine oder einem Steckbrett beginnen sollte, wurde ja in dem RN-Wissen Wiki Beitrag Mit welchem Controllerboard fang ich an angesprochen. In den meisten Fällen favorisiert der Autor dieses Artikels ein fertiges Controllerboard. Warum da sso ist, dazu am Ende noch ein paar Anmerkungen Dennoch soll diese Einführung schrittweise anhand eines Steckbrettes erläutert werden. <br />
<br />
==Start mit handelsüblichen Steckbrett==<br />
Ein Steckbrett hat den Vorteil das manr theoretisch ohne Löten alle Bauteile relativ zügig zusammenstecken kann. Bestimmte Steckkontakte innerhalb einer Reihe sind im Steckbrett miteinander verbunden, so das man nachher pro Bauteilbeinchen noch einige Steckkontakte zum Verdrahten mit Schaltdraht oder speziell konfigurierter Litze verwenden kann.<br />
<br />
Die Nachteile von einem Steckbrett sind:<br />
<br />
*nicht alle Bauteile passen, so das wir doch noch etwas löten müssen<br />
*nur geringer Schaltungsumfang möglich da es schnell unübersichtlich wird<br />
*sehr Störanfällig wegen Kabellängen<br />
<br />
Man beginnt indem man den Controller Avr [[ATMega32]] auf das Board aufsetzt:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrettmega32.jpg|center]]<br />
<br />
<br />
==Die Grundschaltung==<br />
Damit ein Controller erst mal zum laufen kommt, benötigt man zumindest einen 10k Widerstand, einen 100 nF Kondensator und eine 5V Spannungsquelle. Das ganze muss entsprechend dem unteren Schaltplan verschaltet werden, man spricht von einer sogenannten Grundschaltung. In dem Schaltplan wurde der Controller im übrigen Pinkompatibel als Schaltzeichen verwendet, die Pinreihenfolge ist also im Schaltplan identisch mit den echten Bauteilpin-Reihenfolge. Diese Darstellung erleichtert den Nachbau der Schaltung auf einem Steckbrett aber auch einer Experimentierplatine ungemein. Gewöhnlich verwendet man in Schaltplänen eine etwas andere Darstellung bei der die Pin´s nach Funktionsgruppen geordnet sind. Bei solchen Schaltplänen muss man sich dann anhand der Pin-Nummern orientieren, man wird dies am Ende des Artikels noch bei dem IC MAX232 sehen.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mega32.gif|center|500px]]<br />
<br />
<br />
Wenn man schon einige Grundschaltungen in anderen Tutorials gesehen hat, dann wird man bemerken das unsere doch noch etwas einfacher ist und weniger Bauteile benötigt. Hier wird beispielsweise kein Quarz verwendet, da der ATMega32 auch intern einen Takt generieren kann.<br />
<br />
Auf dem Steckbrett sieht die obere Schaltung wie folgt aus:<br />
<br />
[[Bild:avrtutorial_steckbrett1.jpg|center]]<br />
<br />
<br />
Um den Controller in Betrieb zu nehmen, benötigt man bei dieser Schaltung ein Netzteil das eine stabilisierte Spannung von 4 bis 5V liefert. Wir gehen erst einmal davon aus das man über dieses verfügt. <br />
Erwähnenswert ist noch das der Kondensator als [[Abblockkondensator]] zur Unterdrückung von Störungen dient. Er muss so nah wie möglich an die Spannungszuführung am Controller selbst gesetzt werden. Der Widerstand dient dazu die Reset Leitung konstant auf definierten High Pegel. Verbindet man diesen RESET Pin später kurz mit GND (Masse), dann wird das Programm im Controller neu gestartet.<br />
<br />
==Woran merkt man das der Controller funktioniert?==<br />
Gute Frage! Man merkt es garnicht. Genau genommen funktioniert ja auch trotz korrekter Schaltung noch immer nix denn es muss zuerst ein Programm in den Controller geladen werden, damit er überhaupt weiss was zu tun ist. Ohne Programm ist der Controller quasi tot.<br />
<br />
<br />
==Wie bekommt man das Programm in den Controller?==<br />
Der Controller verfügt über eine sogenannte [[ISP]]-Schnittstelle. Das bedeutet über bestimmte Pin´s ([[SPI]]) kann der Controller mit einer geeigneten PC-Software (zum Beispiel Bascom) programmiert werden. Zum Anschluß an den PC benötigt man jedoch einen sogenannten ISP-Dongel oder auch Programmieradapter genannt. Hier gibt es verschiedene Lösungen, serielle und parallele Adapter. Original von Atmel oder kompatible Lösungen. Der am meisten verwendetet ISP-Dongel wird am Druckerport betrieben. Diese gibt es inzwischen recht preiswert, so das das selbstbauen eigentlich nicht lohnt. Da man auch gern auf ein paar Fehlerquellen verzichten sollte, würde ich eine Fertiglösung empfehlen. Wer ihn selbst bauen möchte, findet ([[AVR-ISP_Programmierkabel|hier]] eine ISP-Dongel Bauanleitung und sogar eine fertige Platine dafür ([[AVR-ISP_Programmierkabel]]).<br />
<br />
Sowas sieht dann so aus:<br />
<br />
[[Bild:avrtutorial_ispkabel.jpg|center]]<br />
<br />
<br />
Das Problem ist nun, wie schließe ich einen handelsüblichen ISP-Programmieradapter an den Controller auf dem Steckbrett an. Der normale 10 polige Wannenstecker (nach [[RN-Definitionen]]) paßt nicht in ein Steckbrett. Das ist wieder so ein typischer Nachteil bei Steckbrettern! In unserem Beispiel haben wir dazu auf einem kleinen Stück Experimentierplatine einen steckbaren Adapter für das Steckboard gelötet.<br />
Somit kann man die Schaltung um einen üblichen 10 poligen ISP-Programmieranschluß ergänzen:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitisp.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett sieht das gleiche so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitisp.jpg|center]]<br />
<br />
<br />
Jetzt endlich ist es soweit, jetzt kann man den Controller über ein ISP-Programmieradapter mit dem PC verbinden. Aber unbedingt darauf achten das auch alles korrekt nach Schaltplan gesteckt wurde und das die Betriebsspannung 5V nicht übersteigt. Ansonsten könnte man sich Dongel oder sogar die PC-Schnittstelle beschädigen.<br />
Als Entwicklungsumgebung nutzen wir hier im Tutorial [[Bascom]]. [[Bascom]] ist ein sehr beliebter Basic [[Compiler]] der zahlreiche [[AVR]] Controllertypen programmieren kann. Da auch ein [[Terminalprogramm]] und ein Programmer integriert ist, enthält diese PC-Software alles was man braucht, das erleichtert den Einstieg zusätzlich. Die Software gibt’s kostenlos als Demo bis 4K Code, für unsere Beispiele und den Einstieg reich das allemal, siehe dazu Artikel Bascom.<br />
Wie man ein Programm schreibt, compiliert und überträgt wurde schon in diesem Beitrag [[Bascom - Erstes Programm in den AVR Controller übertragen]] ausführlich behandelt, wir ersparen uns deshalb diese Details. <br />
<br />
Als erstes compilieren und übertragen wir folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step1.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Do<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
Das Programm macht eigentlich nichts, außer das es eine Endlosschleife ausführt. Aber da wir noch überhaupt nix am Controller angeschlossen haben, können wir eh noch nicht sehen ob ein Programm nun richtig ausgeführt wird oder nicht.<br />
Allerdings können wir schonmal üben das Programm mit Bascom zu übertragen. Wenn wir alles richtig ausgebaut haben und Spannung anliegt, dann sollte automatisch der Controller in Bascom erkannt werden. Die Übertragung sollte dann ohne Fehlermeldung erfolgen können. Wenn wir das geschafft haben, geht’s weiter.<br />
<br />
==Läuft die Schaltung und das Programm?==<br />
Damit wir nun endlich sehen ob sich bei unserer Schaltung auch was tut, schließen wir eine LED über einen 1K Vorwiderstand an einen Port an. Da wir die Kathode an den Controllerpin und die Anode an Plus legen, leuchtet die LED immer dann wenn dieser Pin auf Low geschaltet wird.<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitled.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts nun so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitled.jpg|center]]<br />
<br />
<br />
Damit man nun auch wirklich sieht ob das Programm läuft, schreiben wir ein kleines Basic Programm welches eine LED abwechselnd ein – und ausschaltet. Wir compilieren und übertragen also folgendes Programm:<br />
<br />
<pre><br />
'###################################################<br />
'step2.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Do<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Waitms 100<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Waitms 100<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
<br />
Wenn die LED nun schnell blinkt, dann funktioniert die aufgebaute Schaltung perfekt. Wir haben gleichzeitig gelernt wie man einen Ausgangsport, also Controllerpin ein -und ausschalten kann. Nahezu alle Pin´s beim ATMega32 können auf diese Weise als Ausgangsport betrieben werden. Somit alssen sich nicht nur viele Led´s, sondern unter Zuhilfenahme eines Treibers (z.B-Transistors) auch Relais und andere Aktoren schalten.<br />
<br />
==Eingangsport fragt Taster ab==<br />
Nun erweitern wir die Schaltung noch um einen Taster. Nahezu jede rPort kann bei einem ATMega32 auch per Software als Eingangsport konfiguriert werden. Wir schließen einen Taster an Port-Pin PA7 an. <br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mittaster.gif|center|500px]]<br />
<br />
<br />
Der Port wird in der Software so konfiguriert, das er als Eingang arbeitet und indern über einen hohen Widerstand (Pullup-Widerstand) ständig auf High Pegel gelegt wird. Wird nun eine Taste gedrückt, so wird der Pegel auf Low gezogen.<br />
Das Beispielprogramm ist nun so gestaltet das bei gedrückter Taste die LED leuchtet und bei, loslassen wieder aus geht.<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step3.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 1000000<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
End If<br />
Loop<br />
<br />
<br />
End<br />
</pre><br />
<br />
==Grundschaltung mit Quarz==<br />
Obwohl wir ab der letzten Schaltung schon einiges mit dem Controller anfangen können, so fehlt doch noch was wichtiges. Oft ist es nämlich wichtig das ein Controller sehr genaue Frequenzen messen oder ganz genaue Taktraten ausgeben kann. Leider ist der interne Taktgenerator nicht 100% exakt, was bei manchen Anwendungen störend ist. Zum Beispiel können über die RS232 Schnittstelle Daten nicht immer ganz Fehlerfrei übertragen werden wenn die Taktfrequenz nicht genau stimmt. Daher wird in den meisten Anwendungsfällen ein Quarz zur Takterzeugung genutzt, sie kennen das sicher aus anderen Grundschaltungen. Also erweitern wir unsere Schaltung gleich noch um einen Quarz mit den zugehörigen 22pF Kondensatoren.<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_mitquarz.gif|center|500px]]<br />
<br />
<br />
Auf unserem Steckbrett wird’s langsam voller, hier siehts also inzwischen so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_mitquarz.jpg|center|500px]]<br />
<br />
<br />
Normalerweise sollte der Quarz genauso wie die beiden 22pF Kondensatoren möglichst nahe am Controller plaziert werden. Auf dem Steckbrett ist das manchmal garnicht so einfach insbesondere wenn man wie in diesem fall den Quarz erst später hinzufügt. Wichtig ist nämlich das die Leitungen vom Quarz zum Controller möglichst kurz sind, bei gedruckten Schaltungen oft nur 1 bis 2 cm! Ist dies nicht der Fall, wie auch in unserem Bild, dann fungieren quasi diese Leitungen fast wie eine Funkantenne. Dies führt also zu starken Hochfrequenzsignalen die nicht nur unsere Schaltung sondern auch andere Schaltungen in der Nähe stören könnten.<br />
Grundsätzlich sind daher Schaltungen mit Quarz auf einem Steckbrett nicht sonderlich zu empfehlen, die Betriebssicherheit ist nicht immer gegeben.<br />
<br />
Auch wenn nun ein Quarz angeschlossen ist, so wird er noch immer nicht genutzt. Noch immer arbeiten der ATMega32 mit seiner intern voreingestellten 1 Mhz Taktfrequenz. Um dies umzustellen, muss man ein sogenanntes Fusebit im Controller umprogrammieren. Auch dies wurde schon im Beitrag [[Bascom - Erstes Programm in den AVR_Controller übertragen]] näher beschrieben. Hier sei daher nur nochmals gesagt das dies auch sehr bequem in Bascom erfolgt:<br />
<br />
<br />
[[Bild:avrtutorial_bascomfusebitquarz.gif|center|500px]]<br />
<br />
<br />
Sobald wir das umgestellt haben, müssen wir auch in dem Programm die Anweisung <br />
<br />
$crystal = 1000000 <br />
<br />
durch <br />
<br />
$crystal = 16000000 <br />
<br />
ersetzen, denn unser Quarz taktet nun mit 16 Mhz.<br />
<br />
==Spannung stabilisieren==<br />
Auch wenn unser Basis-Schaltung für Experimente inzwischen schon ganz nett ist, so ist es doch etwas ungünstig das wir stets 5V zur Verfügung haben müssen. Nicht immer steht ein geeignetes Netzteil zur Verfügung zudem soll ein Controller auch oft mit Batterien versorgt werden. Aus diesem Grund verfügen fas alle Entwicklungsboards wie (RN-Control, STK500 etc.) über einen Spannungsregler. Dieser wandelt eine höhere Eingangsspannung ca. 7 bis 20 V immer genau in 5V um. Sowas erhöht die Betriebssicherheit einer Schaltung nochmals immens. <br />
Wir erweitern unsere Schaltung somit wie folgt:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_spannung.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts wie folgt aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_spannung.jpg|center]]<br />
<br />
<br />
==Daten und Texte zum PC übertragen==<br />
In vielen Programmen müssen Daten oder Texte vom Controller an den PC oder umgekehrt gesendet werden. Insbesondere bei komplexen Programmen kann man auf diese Weise Variableninhalte ausgeben und somit auch Fehler im Programmcode schneller finden und korrigieren. In der Regel ist das ganz einfach, denn der [[Microcontroller]] [[ATMega32]] verfügt über einen internen [[UART]], also ein Modul das Daten über die [[RS232]] Schnittstelle zum PC senden bzw. auch empfangen kann. Leider arbeitet jedoch die Controllerschnittstelle mit 5V und die PC Schnittstelle der Norm entsprechend mit +-12V. Daher muss unbedingt ein Schaltkreis dazwischen welcher die Pegel anpaßt. Gewöhnlich nimmt man hier das IC MAX232, welches inzwischen sehr preiswert erhältlich ist.<br />
<br />
Wir müssen also die Schaltung nochmals erweitern:<br />
<br />
<br />
[[Bild:avrtutorial_grundschaltung_max232.gif|center|500px]]<br />
<br />
<br />
Auf dem Steckbrett siehts so aus:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_max232.jpg|center|500px]]<br />
<br />
<br />
Über eine dreipolige Stiftleiste ([[RN-Definitionen]]) wird nun das Steckboard mit der [[RS232]] Schnittstelle des PC-verbunden. Es ist nun ein leichtes mit einem Programm Daten zum PC zu senden. Das nachfolgende Programm gibt Hinweise mit der Anweisung '''PRINT''' aus:<br />
<br />
<br />
<pre><br />
'###################################################<br />
'step5.bas.BAS<br />
'für<br />
'RoboterNetz.de AVR Tutorial in RN-Wissen<br />
'<br />
'Autor: Frank Brall<br />
'Weitere Beispiele und Beschreibung der Hardware<br />
'unter<br />
' http://www.Roboternetz.de oder<br />
' http://www.Roboternetz.de/wissen<br />
'#######################################################<br />
<br />
<br />
$regfile = "m32def.dat"<br />
$framesize = 32<br />
$swstack = 32<br />
$hwstack = 32<br />
$crystal = 16000000<br />
$baud = 9600<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
Config Pina.7 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Porta.7 = 1 'Interner Pullup Widerstand ein<br />
<br />
<br />
Do<br />
If Pina.7 = 1 Then<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Print "Schalter nicht gedrückt"<br />
Else<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Print "Schalter gedrückt"<br />
End If<br />
Wait 1<br />
Loop<br />
<br />
End<br />
</pre><br />
<br />
==Möglichkeiten des Steckbrettes erreicht==<br />
Inzwischen füllt der Schaltplan fast ein DIN A4 Blatt und auf dem Steckbrett siehts auch schon recht wirr aus, dabei haben wir nur die wichtigsten Grundelemente auf dem Board. Für eine Roboterr-Steuerung oder andere Anwendung fehlen doch noch einiges. Zum Beispiel weitere tastet, weitere LED´s, Motortreiber damit der Controller auch Motoren ansteuern und [[I2C]]-Bus Anschuß.<br />
Dies alles noch auf einem Steckbrett zu realisieren macht wenig Sinn, zumal bereits jetzt schon durch die doch recht langen Leitungen/Verkabelungen erhebliche Steuerungen auftreten. In der letzten Phase ist es immer mehr zu Übertragungsfehlern beim programmieren gekommen, oft mußte es 20 mal wiederholt werden. Dies zeigt das ein Steckbrett bestenfalls ganz kleine Controller-Experimente. Für Größere Dinge sollte man dann doch zu einer Lösung auf einer gedruckten Platine greifen. Spezielle Experimentierboard´s bieten mehr Sicherheit und haben neben den Grundelementen die hier beschrieben wurden noch eine ganze Menge mehr drauf. Bei [[RN-Control]] zum Beispiel 5 Tasten, 8 Leds, Motortreiber, Lautsprecher, diverse Anschlüsse etc. <br />
Der Größenunterschied wird im Bild deutlich:<br />
<br />
<br />
[[Bild:avrtutorial_steckbrett_rncontrol.jpg|center|500px]]<br />
<br />
<br />
Auch wenn das Steckbrett also kein Controllerboard ersetzen kann, so hat das kleine Tutorial doch gezeigt wie eine [[Avr]]-Schaltung aufzubauen ist. Dieses Wissen sollte man auch besitzen, wenn man ein Controllerboard nutzt. Das war Ziel dieses Artikels.<br />
<br />
==Autor==<br />
*Frank<br />
<br />
==Siehe auch==<br />
*[[AVR-ISP Programmierkabel]]<br />
*[[Mit welchem Controllerboard fang ich an]]<br />
*[[Abblockkondensator]]<br />
*[[Bascom]]<br />
*[[Bascom - Erstes Programm in den AVR_Controller übertragen]]<br />
*[[Avr]]<br />
*[[Atmel Controller Mega16 und Mega32]]<br />
<br />
<br />
[[Kategorie:Robotikeinstieg]]<br />
[[Kategorie:Praxis]]<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Projekte]]</div>PhpSupporterhttps://rn-wissen.de/wiki/index.php?title=MediaWiki:Nogomatch&diff=4444MediaWiki:Nogomatch2005-12-27T17:22:17Z<p>PhpSupporter: </p>
<hr />
<div>'''Es existiert kein Artikel [[$1|$1]]. Bitte versuchen'''<br />
'''Sie die Volltextsuche oder [[$1|legen Sie den Artikel neu an]].'''<br />
<br />
Oder aber nehmen Sie den Artikelwunsch in die [[Diskussion:Wunschthemen|Wunschliste]] mit auf. Dort dienen die Wünsche anderen Usern als Anregung für neue Beiträge.</div>PhpSupporter