<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sascha+focus</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sascha+focus"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Sascha_focus"/>
	<updated>2026-04-30T10:01:56Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18F_Testboard&amp;diff=100530</id>
		<title>PIC18F Testboard</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18F_Testboard&amp;diff=100530"/>
		<updated>2019-04-25T15:10:20Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;PIC18F Test-Platine&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um ein bisschen mit den neuen PIC-Typen PIC18F46K42 zu spielen, habe ich die folgende Platine erstellt.&lt;br /&gt;
Viel ist nicht drauf enthalten, reicht aber, um einiges auszuprobieren. Hier die Funktionen:&lt;br /&gt;
* Versorgung per Netzteil oder USB&lt;br /&gt;
* Betriebsspannung einstellbar 3.3V/5V&lt;br /&gt;
* &lt;br /&gt;
* Seriell/USB-Wandler MCP2221&lt;br /&gt;
* int. Takt oder ext. Quarz&lt;br /&gt;
* Onboard ES8266 für Internet Anwendungen&lt;br /&gt;
* Alle Pins auf Stiftleisten herausgeführt&lt;br /&gt;
* 6pol. ICSP-Anschluss&lt;br /&gt;
* Lochrasterfeld für Erweiterungen&lt;br /&gt;
&lt;br /&gt;
Erstellt wurde die Platine mit TargetV18 in der Distrelec Edition. Hier der Schaltplan:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Schaltplan Seite1.pdf|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Schaltplan Seite2.pdf|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Das Target Projekt:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:PIC18FBOARD.t3001|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Hier noch Bilder der Platine:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Leere Platine.jpg&lt;br /&gt;
Bestückte Platine.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Falls noch jemand eine haben möchte, es sind noch ein paar unbestückte Platinen übrig.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Hier ein Testprogramm um mittels des PIC&#039;s und des ESP&#039;s einen AT-basierenden Webserver zu realisieren:&lt;br /&gt;
[[Datei:PIC18 ESP TCP.zip|miniatur]]&lt;br /&gt;
&lt;br /&gt;
In der esp8266.h sind eure Zugangsdaten zum Router einzutragen:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
//wifi connections settings&amp;lt;br /&amp;gt;&lt;br /&gt;
const char ssid[] = &amp;quot;SSIS&amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
const char passwd[] = &amp;quot;Passwort&amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn als kompiliert und der Controller geflasht ist, kann man sich über den Router die IP-Adresse suchen.&lt;br /&gt;
Wenn diese im Browser eingetragen ist, sollte diese Seite erscheinen:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Website.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18F_Testboard&amp;diff=100523</id>
		<title>PIC18F Testboard</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18F_Testboard&amp;diff=100523"/>
		<updated>2019-04-23T18:06:14Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;PIC18F Test-Platine&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um ein bisschen mit den neuen PIC-Typen PIC18F46K42 zu spielen, habe ich die folgende Platine erstellt.&lt;br /&gt;
Viel ist nicht drauf enthalten, reicht aber, um einiges auszuprobieren. Hier die Funktionen:&lt;br /&gt;
* Versorgung per Netzteil oder USB&lt;br /&gt;
* Betriebsspannung einstellbar 3.3V/5V&lt;br /&gt;
* &lt;br /&gt;
* Seriell/USB-Wandler MCP2221&lt;br /&gt;
* int. Takt oder ext. Quarz&lt;br /&gt;
* Onboard ES8266 für Internet Anwendungen&lt;br /&gt;
* Alle Pins auf Stiftleisten herausgeführt&lt;br /&gt;
* 6pol. ICSP-Anschluss&lt;br /&gt;
* Lochrasterfeld für Erweiterungen&lt;br /&gt;
&lt;br /&gt;
Erstellt wurde die Platine mit TargetV18 in der Distrelec Edition. Hier der Schaltplan:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Schaltplan Seite1.pdf|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Schaltplan Seite2.pdf|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Das Target Projekt:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:PIC18FBOARD.t3001|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Hier noch Bilder der Platine:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Leere Platine.jpg&lt;br /&gt;
Bestückte Platine.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Falls noch jemand eine haben möchte, es sind noch ein paar unbestückte Platinen übrig.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Hier ein Testprogramm um mittels des PIC&#039;s und des ESP&#039;s einen AT-basierenden Webserver zu realisieren:&lt;br /&gt;
[[Datei:PIC18 ESP TCP.zip|miniatur]]&lt;br /&gt;
&lt;br /&gt;
In der esp8266.h sind eure Zugangsdaten zum Router einzutragen:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
//wifi connections settings&amp;lt;br /&amp;gt;&lt;br /&gt;
const char ssid[] = &amp;quot;SSIS&amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
const char passwd[] = &amp;quot;Passwort&amp;quot;;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn als kompiliert und der Controller geflasht ist, kann man sich über den Router die IP-Adresse suchen.&lt;br /&gt;
Wenn diese im Browser eingetragen ist, sollte diese Seite erscheinen:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Website.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18F_Testboard&amp;diff=100522</id>
		<title>PIC18F Testboard</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18F_Testboard&amp;diff=100522"/>
		<updated>2019-04-23T18:05:07Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;PIC18F Test-Platine&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um ein bisschen mit den neuen PIC-Typen PIC18F46K42 zu spielen, habe ich die folgende Platine erstellt.&lt;br /&gt;
Viel ist nicht drauf enthalten, reicht aber, um einiges auszuprobieren. Hier die Funktionen:&lt;br /&gt;
* Versorgung per Netzteil oder USB&lt;br /&gt;
* Betriebsspannung einstellbar 3.3V/5V&lt;br /&gt;
* &lt;br /&gt;
* Seriell/USB-Wandler MCP2221&lt;br /&gt;
* int. Takt oder ext. Quarz&lt;br /&gt;
* Onboard ES8266 für Internet Anwendungen&lt;br /&gt;
* Alle Pins auf Stiftleisten herausgeführt&lt;br /&gt;
* 6pol. ICSP-Anschluss&lt;br /&gt;
* Lochrasterfeld für Erweiterungen&lt;br /&gt;
&lt;br /&gt;
Erstellt wurde die Platine mit TargetV18 in der Distrelec Edition. Hier der Schaltplan:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Schaltplan Seite1.pdf|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Schaltplan Seite2.pdf|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Das Target Projekt:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:PIC18FBOARD.t3001|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Hier noch Bilder der Platine:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Leere Platine.jpg&lt;br /&gt;
Bestückte Platine.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Falls noch jemand eine haben möchte, es sind noch ein paar unbestückte Platinen übrig.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Hier ein Testprogramm um mittels des PIC&#039;s und des ESP&#039;s einen AT-basierenden Webserver zu realisieren:&lt;br /&gt;
[[Datei:PIC18 ESP TCP.zip|miniatur]]&lt;br /&gt;
&lt;br /&gt;
In der esp8266.h sind eure Zugangsdaten zum Router einzutragen:&lt;br /&gt;
&lt;br /&gt;
//wifi connections settings&lt;br /&gt;
const char ssid[] = &amp;quot;SSIS&amp;quot;;&lt;br /&gt;
const char passwd[] = &amp;quot;Passwort&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
Wenn als kompiliert und der Controller geflasht ist, kann man sich über den Router die IP-Adresse suchen.&lt;br /&gt;
Wenn diese im Browser eingetragen ist, sollte diese Seite erscheinen:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Website.jpg&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Website.jpg&amp;diff=100521</id>
		<title>Datei:Website.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Website.jpg&amp;diff=100521"/>
		<updated>2019-04-23T18:04:41Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Website&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:PIC18_ESP_TCP.zip&amp;diff=100520</id>
		<title>Datei:PIC18 ESP TCP.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:PIC18_ESP_TCP.zip&amp;diff=100520"/>
		<updated>2019-04-23T18:01:51Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Webserver&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Benutzer:Sascha_focus&amp;diff=100519</id>
		<title>Benutzer:Sascha focus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Benutzer:Sascha_focus&amp;diff=100519"/>
		<updated>2019-04-23T17:38:26Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hallo,&lt;br /&gt;
&lt;br /&gt;
mal einige Dinge zu meiner Person:&lt;br /&gt;
&lt;br /&gt;
Alter:    36J.&lt;br /&gt;
Beruf:    Energieelektroniker&lt;br /&gt;
Hobby&#039;s:  Modellbau, Elektronik, Formel 1&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Projekte:&lt;br /&gt;
&lt;br /&gt;
Kleine Testplatine für einen PIC18F4550:&lt;br /&gt;
http://www.mikrocontroller.net/articles/PIC18f4550_Experimentier_Platine&lt;br /&gt;
&lt;br /&gt;
Neues Board für PIC18F46K42 oder andere mit gleicher Pinbelegung:&lt;br /&gt;
https://www.mikrocontroller.net/articles/PIC18F_Testboard&lt;br /&gt;
&lt;br /&gt;
Momentanes Projekt in Entwicklung, Aquarium Steuerung:&lt;br /&gt;
http://www.mikrocontroller.net/articles/Aquarium-Steuerung&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18F_Testboard&amp;diff=100518</id>
		<title>PIC18F Testboard</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18F_Testboard&amp;diff=100518"/>
		<updated>2019-04-23T08:48:07Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;PIC18F Test-Platine&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um ein bisschen mit den neuen PIC-Typen PIC18F46K42 zu spielen, habe ich die folgende Platine erstellt.&lt;br /&gt;
Viel ist nicht drauf enthalten, reicht aber, um einiges auszuprobieren. Hier die Funktionen:&lt;br /&gt;
* Versorgung per Netzteil oder USB&lt;br /&gt;
* Betriebsspannung einstellbar 3.3V/5V&lt;br /&gt;
* &lt;br /&gt;
* Seriell/USB-Wandler MCP2221&lt;br /&gt;
* int. Takt oder ext. Quarz&lt;br /&gt;
* Onboard ES8266 für Internet Anwendungen&lt;br /&gt;
* Alle Pins auf Stiftleisten herausgeführt&lt;br /&gt;
* 6pol. ICSP-Anschluss&lt;br /&gt;
* Lochrasterfeld für Erweiterungen&lt;br /&gt;
&lt;br /&gt;
Erstellt wurde die Platine mit TargetV18 in der Distrelec Edition. Hier der Schaltplan:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Schaltplan Seite1.pdf|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Schaltplan Seite2.pdf|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Das Target Projekt:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:PIC18FBOARD.t3001|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Hier noch Bilder der Platine:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Leere Platine.jpg&lt;br /&gt;
Bestückte Platine.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Falls noch jemand eine haben möchte, es sind noch ein paar unbestückte Platinen übrig.&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18F_Testboard&amp;diff=100517</id>
		<title>PIC18F Testboard</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18F_Testboard&amp;diff=100517"/>
		<updated>2019-04-23T08:46:15Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: Die Seite wurde neu angelegt: „&amp;#039;&amp;#039;&amp;#039;PIC18F Test-Platine&amp;#039;&amp;#039;&amp;#039;  Um ein bisschen mit den neuen PIC-Typen PIC18F46K42 zu spielen, habe ich die folgende Platine erstellt. Viel ist nicht drauf enthalt…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;PIC18F Test-Platine&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um ein bisschen mit den neuen PIC-Typen PIC18F46K42 zu spielen, habe ich die folgende Platine erstellt.&lt;br /&gt;
Viel ist nicht drauf enthalten, reicht aber, um einiges auszuprobieren. Hier die Funktionen:&lt;br /&gt;
* Versorgung per Netzteil oder USB&lt;br /&gt;
* Betriebsspannung einstellbar 3.3V/5V&lt;br /&gt;
* &lt;br /&gt;
* Seriell/USB-Wandler MCP2221&lt;br /&gt;
* int. Takt oder ext. Quarz&lt;br /&gt;
* Onboard ES8266 für Internet Anwendungen&lt;br /&gt;
* Alle Pins auf Stiftleisten herausgeführt&lt;br /&gt;
* 6pol. ICSP-Anschluss&lt;br /&gt;
* Lochrasterfeld für Erweiterungen&lt;br /&gt;
&lt;br /&gt;
Erstellt wurde die Platine mit TargetV18 in der Distrelec Edition. Hier der Schaltplan:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Schaltplan Seite1.pdf|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Schaltplan Seite2.pdf|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Das Target Projekt:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:PIC18FBOARD.t3001|miniatur]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Hier noch Bilder der Platine:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Leere Platine.jpg&lt;br /&gt;
Bestückte Platine.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Best%C3%BCckte_Platine.jpg&amp;diff=100516</id>
		<title>Datei:Bestückte Platine.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Best%C3%BCckte_Platine.jpg&amp;diff=100516"/>
		<updated>2019-04-23T08:44:36Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bestückte Platine&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Leere_Platine.jpg&amp;diff=100515</id>
		<title>Datei:Leere Platine.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Leere_Platine.jpg&amp;diff=100515"/>
		<updated>2019-04-23T08:44:17Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Leere Platine&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:PIC18FBOARD.t3001&amp;diff=100514</id>
		<title>Datei:PIC18FBOARD.t3001</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:PIC18FBOARD.t3001&amp;diff=100514"/>
		<updated>2019-04-23T08:37:17Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Target Projekt Datei&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Schaltplan_Seite2.pdf&amp;diff=100513</id>
		<title>Datei:Schaltplan Seite2.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Schaltplan_Seite2.pdf&amp;diff=100513"/>
		<updated>2019-04-23T08:34:08Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Schaltplan Seite 2&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Schaltplan_Seite1.pdf&amp;diff=100512</id>
		<title>Datei:Schaltplan Seite1.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Schaltplan_Seite1.pdf&amp;diff=100512"/>
		<updated>2019-04-23T08:33:40Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Schaltplan Seite 1&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:PIC18F.T3001C.T3001&amp;diff=100511</id>
		<title>Datei:PIC18F.T3001C.T3001</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:PIC18F.T3001C.T3001&amp;diff=100511"/>
		<updated>2019-04-23T06:38:40Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:PIC18F.zip&amp;diff=100510</id>
		<title>Datei:PIC18F.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:PIC18F.zip&amp;diff=100510"/>
		<updated>2019-04-23T06:38:23Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60823</id>
		<title>Aquarium-Steuerung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60823"/>
		<updated>2011-09-29T15:29:37Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hallo zusammen,&lt;br /&gt;
&lt;br /&gt;
momentan versuche ich mich an einer Aquarium Steuerung. Als Controller fungiert ein PIC18F47J53. Dieser besitzt unter anderem 128kB Flash, 12 Bit A/D Wandler, USB. Zum einstellen der Parameter wird dieser per USB mit einem PC verbunden.&lt;br /&gt;
&lt;br /&gt;
Momentaner Stand:&lt;br /&gt;
&lt;br /&gt;
* LCD Display Ausgabe&lt;br /&gt;
* Temperaturmessung mittels DS18B20&lt;br /&gt;
* Berechnung von Sonnenauf/untergang&lt;br /&gt;
* Berechnen von Mondphase&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LCD Steuerung ==&lt;br /&gt;
&lt;br /&gt;
Hier eine Ansteuerung im 4Bit-Mode. Die Pins können beliebig  gewählt werden &lt;br /&gt;
&lt;br /&gt;
Source File lcd.c&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#include &amp;quot;p18cxxx.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
#include &amp;lt;delays.h&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static void lcd_nibble( unsigned char d )&lt;br /&gt;
{&lt;br /&gt;
  LCD_D4 = 0; if( d &amp;amp; 1&amp;lt;&amp;lt;4 ) LCD_D4 = 1;&lt;br /&gt;
  LCD_D5 = 0; if( d &amp;amp; 1&amp;lt;&amp;lt;5 ) LCD_D5 = 1;&lt;br /&gt;
  LCD_D6 = 0; if( d &amp;amp; 1&amp;lt;&amp;lt;6 ) LCD_D6 = 1;&lt;br /&gt;
  LCD_D7 = 0; if( d &amp;amp; 1&amp;lt;&amp;lt;7 ) LCD_D7 = 1;&lt;br /&gt;
&lt;br /&gt;
  LCD_E0 = 1;&lt;br /&gt;
  _delay_us( 1 );			// 1us&lt;br /&gt;
  LCD_E0 = 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static void lcd_byte( unsigned char d )&lt;br /&gt;
{&lt;br /&gt;
  lcd_nibble( d );&lt;br /&gt;
  lcd_nibble( d&amp;lt;&amp;lt;4 );&lt;br /&gt;
  _delay_us( 45 );			// 45µs&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void lcd_command( unsigned char d )     //Kommando senden&lt;br /&gt;
{&lt;br /&gt;
  LCD_RS = 0;&lt;br /&gt;
  lcd_byte( d );&lt;br /&gt;
  switch( d ){&lt;br /&gt;
    case 1:&lt;br /&gt;
    case 2:&lt;br /&gt;
    case 3: _delay_ms( 2 );		// warte 2ms&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void lcd_data( unsigned char d )        //Daten senden&lt;br /&gt;
{&lt;br /&gt;
  LCD_RS = 1;&lt;br /&gt;
  lcd_byte( d );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void lcd_text(unsigned char *string)&lt;br /&gt;
{&lt;br /&gt;
while(*string != 0){ //Text aus Ram senden&lt;br /&gt;
lcd_data(*string++); &lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lcd_text_rom(unsigned rom char *string){&lt;br /&gt;
while(*string != 0){ //Text aus Rom senden&lt;br /&gt;
lcd_data(*string++);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lcd_init( void )&lt;br /&gt;
{&lt;br /&gt;
  LCD_DDR_D4 = 0;&lt;br /&gt;
  LCD_DDR_D5 = 0;&lt;br /&gt;
  LCD_DDR_D6 = 0;&lt;br /&gt;
  LCD_DDR_D7 = 0;&lt;br /&gt;
  LCD_DDR_RS = 0;&lt;br /&gt;
  LCD_DDR_E0 = 0;&lt;br /&gt;
&lt;br /&gt;
  LCD_E0 = 0;&lt;br /&gt;
  LCD_RS = 0;				// send commands&lt;br /&gt;
  _delay_ms( 15 );			// warte 15ms&lt;br /&gt;
&lt;br /&gt;
  lcd_nibble( 0x30 );&lt;br /&gt;
  _delay_ms( 5 );			// warte &amp;gt;4.1ms&lt;br /&gt;
&lt;br /&gt;
  lcd_nibble( 0x30 );&lt;br /&gt;
  _delay_us( 100 );			// warte &amp;gt;100æs&lt;br /&gt;
&lt;br /&gt;
  lcd_nibble( 0x30 );			// 8 bit mode&lt;br /&gt;
  _delay_us( 100 );			// warte &amp;gt;100µs&lt;br /&gt;
&lt;br /&gt;
  lcd_nibble( 0x20 );			// 4 bit mode&lt;br /&gt;
  _delay_us( 100 );			// warte &amp;gt;100µs&lt;br /&gt;
&lt;br /&gt;
  lcd_command( 0x28 );			// 2 lines 5*7&lt;br /&gt;
  lcd_command( 0x08 );			// display off&lt;br /&gt;
  lcd_command( 0x01 );			// display clear&lt;br /&gt;
  lcd_command( 0x06 );                  // cursor increment&lt;br /&gt;
  lcd_command( 0x0C );			// on, no cursor, no blink&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void lcd_pos( unsigned char line, unsigned char column )&lt;br /&gt;
{&lt;br /&gt;
  if( line &amp;amp; 1 )                        // LCD Position setzen&lt;br /&gt;
    column += 0x40;&lt;br /&gt;
&lt;br /&gt;
  lcd_command( 0x80 + column );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void print5(unsigned int x)             // 5 stellige Dezimalzahl ausg.&lt;br /&gt;
	{&lt;br /&gt;
  unsigned int y;&lt;br /&gt;
  		y=x/10000;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*10000);&lt;br /&gt;
		y=x/1000;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*1000);&lt;br /&gt;
		y=x/100;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*100);&lt;br /&gt;
		y=x/10;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*10);&lt;br /&gt;
		lcd_data(x+0x30);&lt;br /&gt;
	}&lt;br /&gt;
void print2(unsigned char x)             // 2 stellige Dezimalzahl ausg.&lt;br /&gt;
{&lt;br /&gt;
  unsigned char y;&lt;br /&gt;
		y=x/10;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*10);&lt;br /&gt;
		lcd_data(x+0x30);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void delay_1us()&lt;br /&gt;
{&lt;br /&gt;
unsigned int i;&lt;br /&gt;
	for (i=0;i&amp;lt;12;i++)&lt;br /&gt;
		{&lt;br /&gt;
		Delay1TCY();&lt;br /&gt;
		}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void _delay_us( unsigned int us)&lt;br /&gt;
{&lt;br /&gt;
unsigned int i;&lt;br /&gt;
	for (i=0;i&amp;lt;us;i++)&lt;br /&gt;
		{&lt;br /&gt;
		delay_1us();&lt;br /&gt;
		}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void _delay_ms( unsigned int ms)&lt;br /&gt;
{&lt;br /&gt;
unsigned int i;&lt;br /&gt;
	for (i=0;i&amp;lt;ms;i++)&lt;br /&gt;
		{&lt;br /&gt;
  		Delay1KTCYx(12);&lt;br /&gt;
		}&lt;br /&gt;
}	&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Header File lcd.h&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
void lcd_command( unsigned char d );&lt;br /&gt;
void lcd_data( unsigned char d );&lt;br /&gt;
void lcd_text(unsigned char *string);&lt;br /&gt;
void lcd_text_rom(unsigned rom char *string);&lt;br /&gt;
void lcd_init( void );&lt;br /&gt;
void lcd_pos( unsigned char line, unsigned char column );&lt;br /&gt;
void delay_1us();&lt;br /&gt;
void _delay_us( unsigned int us);&lt;br /&gt;
void _delay_ms( unsigned int ms);&lt;br /&gt;
void print5(unsigned int x);&lt;br /&gt;
void print2(unsigned char x);&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
#define	LCD_D4		LATDbits.LATD4&lt;br /&gt;
#define	LCD_DDR_D4	TRISDbits.TRISD4&lt;br /&gt;
&lt;br /&gt;
#define	LCD_D5		LATDbits.LATD5&lt;br /&gt;
#define	LCD_DDR_D5	TRISDbits.TRISD5&lt;br /&gt;
&lt;br /&gt;
#define	LCD_D6		LATDbits.LATD6&lt;br /&gt;
#define	LCD_DDR_D6	TRISDbits.TRISD6&lt;br /&gt;
&lt;br /&gt;
#define	LCD_D7		LATDbits.LATD7&lt;br /&gt;
#define	LCD_DDR_D7	TRISDbits.TRISD7&lt;br /&gt;
&lt;br /&gt;
#define	LCD_RS		LATDbits.LATD2&lt;br /&gt;
#define	LCD_DDR_RS	TRISDbits.TRISD2&lt;br /&gt;
&lt;br /&gt;
#define	LCD_E0		LATDbits.LATD3&lt;br /&gt;
#define	LCD_DDR_E0	TRISDbits.TRISD3&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Berechnung Sonnenaufgang/Untergang und Mondphase==&lt;br /&gt;
&lt;br /&gt;
Dies stammt natürlich nicht aus meinen Federn. Die Berechnung findet man hier im Forum oder aber auch im Internet. &lt;br /&gt;
&lt;br /&gt;
Für die Berechnung des Sonnenaufgang/Untergangs benötigt man das Datum und die Längen- und Breitengrade des Ortes. Nach Aufruf von sun(date_t datum, lonlat_t koord, UINT8 rise, INT8 localOffset, time_t* zeit);, findet man in de Strukturen rise_time und fall_time die Uhrzeiten.&lt;br /&gt;
&lt;br /&gt;
Für die Mondphase benötigt man das Datum. Als Rückgabewert erhält man:&lt;br /&gt;
* 0 = Neumond&lt;br /&gt;
* 1 = Viertelmond (zunehmend, Sichel nach links)&lt;br /&gt;
* 2 = Halbmond (zunehmend, Sichel nach links)&lt;br /&gt;
* 3 = 3/4 Mond (zunehmend, Sichel nach links)&lt;br /&gt;
* 4 = Vollmond&lt;br /&gt;
* 5 = 3/4 Mond (abnehmend, Sichel nach rechts)&lt;br /&gt;
* 6 = Halbmond (abnehmend, Sichel nach rechts)&lt;br /&gt;
* 7 = Viertelmond (abnehmend, Sichel nach rechts)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Source File sun.c&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;quot;GenericTypeDefs.h&amp;quot;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;sun.h&amp;quot;&lt;br /&gt;
#include &amp;quot;HardwareProfile.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define M_PI   3.14159265358979323846&lt;br /&gt;
#define Pi M_PI&lt;br /&gt;
#define ZPi 2*M_PI&lt;br /&gt;
#define PY 0.0174532925199432957692369076848861&lt;br /&gt;
#define Pi2 1.5707963267948966192313216916398&lt;br /&gt;
#define frac(x) ((x)-floor(x))&lt;br /&gt;
#define int(x)  ((x)&amp;lt;0? -ceil(-x):floor(x))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sun( date_t datum, lonlat_t koord, UINT8 rise, INT8 localOffset, time_t* zeit  ){&lt;br /&gt;
&lt;br /&gt;
/*!&lt;br /&gt;
 * Source:&lt;br /&gt;
 *	Almanac for Computers, 1990&lt;br /&gt;
 *	published by Nautical Almanac Office&lt;br /&gt;
 *	United States Naval Observatory&lt;br /&gt;
 *	Washington, DC 20392&lt;br /&gt;
 *&lt;br /&gt;
 * http://www.best.com/~williams/sunrise_sunset_algorithm.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Inputs:&lt;br /&gt;
 * - datum:      date of sunrise/sunset&lt;br /&gt;
 * - koord:   location for sunrise/sunset&lt;br /&gt;
 * - zenith:                Sun&#039;s zenith for sunrise/sunset defined as macro&lt;br /&gt;
 * 	- offical      = 90 degrees 50&#039;  == Aufgang&lt;br /&gt;
 * 	- civil        = 96 degrees&lt;br /&gt;
 * 	- nautical     = 102 degrees   == Daemmerung&lt;br /&gt;
 * 	- astronomical = 108 degrees&lt;br /&gt;
 *&lt;br /&gt;
 * - rise: 1 for calculating sunrise, 0 for calculating sunset&lt;br /&gt;
 * - localOffset: offset to UTC. 1 for MEZ, 2 for MESZ&lt;br /&gt;
 * Output:&lt;br /&gt;
 * - zeit: structure for rise/set-time &lt;br /&gt;
 *	NOTE: longitude is positive for East and negative for West&lt;br /&gt;
&lt;br /&gt;
 * Beispiel: Berechnet die Auf- und Untergangszeiten, wie sie im &#039;Himmelsjahr&#039; angegeben sind&lt;br /&gt;
 * =========&lt;br /&gt;
date_t datum;&lt;br /&gt;
lonlat_t koord;&lt;br /&gt;
time_t rise_time;&lt;br /&gt;
time_t fall_time;&lt;br /&gt;
	koord.longitude=10.0;&lt;br /&gt;
	koord.latitude=50.0;&lt;br /&gt;
	datum.year=2008;&lt;br /&gt;
	datum.month=1;&lt;br /&gt;
	datum.day=19;&lt;br /&gt;
	sun(datum,koord,1,1,&amp;amp;rise_time);&lt;br /&gt;
	sun(datum,koord,0,1,&amp;amp;fall_time);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#define zenith 90.833333333333&lt;br /&gt;
&lt;br /&gt;
UINT16 N1, N3, N;&lt;br /&gt;
float lngHour, t;&lt;br /&gt;
float M, L, RA;&lt;br /&gt;
float SinDec, CosDec, CosH;&lt;br /&gt;
float H, T, UT, localT;&lt;br /&gt;
&lt;br /&gt;
/* 1. first calculate the day of the year */&lt;br /&gt;
&lt;br /&gt;
	N1 = (275 * datum.month) / 9;&lt;br /&gt;
//0-1 1-2 2-2 3-2&lt;br /&gt;
	N3 = (datum.year &amp;amp; 3) ? 2:1;&lt;br /&gt;
	N = N1 +datum.day - 30;&lt;br /&gt;
	if( datum.month&amp;gt;2 ) N-=N3;&lt;br /&gt;
&lt;br /&gt;
/* 2. convert the longitude to hour value and calculate an approximate time */&lt;br /&gt;
&lt;br /&gt;
	lngHour = koord.longitude / 15;&lt;br /&gt;
&lt;br /&gt;
	t = rise ? 6:18;&lt;br /&gt;
	t = N + ((t - lngHour) / 24);&lt;br /&gt;
&lt;br /&gt;
/* 3. calculate the Sun&#039;s mean anomaly */&lt;br /&gt;
&lt;br /&gt;
	M = (0.017201965 * t) - 0.057403879;&lt;br /&gt;
&lt;br /&gt;
/* 4. calculate the Sun&#039;s true longitude */&lt;br /&gt;
&lt;br /&gt;
	L = M + ((0.033440508 * sin(M)) + (0.0003490658504 * sin(2 * M)) + 4.932893878);&lt;br /&gt;
	if( L&amp;gt;=ZPi ) L-=ZPi;&lt;br /&gt;
	if( L&amp;lt;0 )    L+=ZPi;	// NOTE: L potentially needs to be adjusted into the range [0,360) by adding/subtracting 360&lt;br /&gt;
&lt;br /&gt;
/* 5a. calculate the Sun&#039;s right ascension */&lt;br /&gt;
&lt;br /&gt;
	RA = atan(0.91764 * tan(L));&lt;br /&gt;
	if( RA&amp;gt;ZPi ) RA-=ZPi;&lt;br /&gt;
	if( RA&amp;lt;0 )   RA+=ZPi;	// NOTE: RA potentially needs to be adjusted into the range [0,360) by adding/subtracting 360&lt;br /&gt;
&lt;br /&gt;
/* 5b. right ascension value needs to be in the same quadrant as L */&lt;br /&gt;
&lt;br /&gt;
	RA = RA/PY + ( (floor( L/Pi2)) - (floor(RA/Pi2)) )* 90.0;&lt;br /&gt;
&lt;br /&gt;
/* 5c. right ascension value needs to be converted into hours */&lt;br /&gt;
&lt;br /&gt;
	RA /= 15;&lt;br /&gt;
&lt;br /&gt;
/* 6. calculate the Sun&#039;s declination */&lt;br /&gt;
&lt;br /&gt;
	SinDec = 0.39782 * sin(L);&lt;br /&gt;
	CosDec = cos(asin(SinDec));&lt;br /&gt;
&lt;br /&gt;
/* 7a. calculate the Sun&#039;s local hour angle */&lt;br /&gt;
&lt;br /&gt;
	CosH = (cos(zenith*PY) - (SinDec * sin(koord.latitude*PY))) / (CosDec * cos(koord.latitude*PY));&lt;br /&gt;
&lt;br /&gt;
//	if (CosH &amp;gt;  1) document.write(&amp;quot;Die Sonne geht hier heute nicht auf&amp;quot;);&lt;br /&gt;
//	if (CosH &amp;lt; -1) document.write(&amp;quot;Die Sonne geht hier heute nicht unter&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
/* 7b. finish calculating H and convert into hours */&lt;br /&gt;
&lt;br /&gt;
	H = acos(CosH)/PY;&lt;br /&gt;
	if( rise )  H = 360.0 - H;&lt;br /&gt;
	H /= 15.0;&lt;br /&gt;
&lt;br /&gt;
/* 8. calculate local mean time of rising/setting */&lt;br /&gt;
	T = H + RA - (0.06571 * t) - 6.622;&lt;br /&gt;
&lt;br /&gt;
/* 9. adjust back to UTC */&lt;br /&gt;
&lt;br /&gt;
	UT = T - lngHour;&lt;br /&gt;
	if( UT&amp;lt;0 )		UT += 24;&lt;br /&gt;
	if( UT&amp;gt;=24 ) 	UT -= 24;	// NOTE: UT potentially needs to be adjusted into the range [0,24) by adding/subtracting 24&lt;br /&gt;
&lt;br /&gt;
/* 10. convert UT value to local time zone of latitude/longitude */&lt;br /&gt;
&lt;br /&gt;
	localT = UT + localOffset;&lt;br /&gt;
&lt;br /&gt;
	zeit-&amp;gt;h = floor( localT );&lt;br /&gt;
	zeit-&amp;gt;m = floor( 60 * ( localT - zeit-&amp;gt;h ));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
long Moon_phase(long year,long month,long day)&lt;br /&gt;
{&lt;br /&gt;
    /*k&lt;br /&gt;
      Calculates the moon phase (0-7), accurate to 1 segment.&lt;br /&gt;
      0 = &amp;gt; new moon.&lt;br /&gt;
      4 =&amp;gt; Full moon.&lt;br /&gt;
    */&lt;br /&gt;
   &lt;br /&gt;
    long g;&lt;br /&gt;
	long e;&lt;br /&gt;
&lt;br /&gt;
    if (month == 1) --day;&lt;br /&gt;
    else if (month == 2) day += 30;&lt;br /&gt;
    else // m &amp;gt;= 3&lt;br /&gt;
    {&lt;br /&gt;
        day += 28 + (month-2)*3059/100;&lt;br /&gt;
&lt;br /&gt;
        // adjust for leap years&lt;br /&gt;
        if (!(year &amp;amp; 3)) ++day;&lt;br /&gt;
        if ((year%100) == 0) --day;&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    g = (year-1900)%19 + 1;&lt;br /&gt;
    e = (11*g + 18) % 30;&lt;br /&gt;
    if ((e == 25 &amp;amp;&amp;amp; g &amp;gt; 11) || e == 24) e++;&lt;br /&gt;
    return ((((e + day)*6+11)%177)/22 &amp;amp; 7);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Header File sun.h&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
typedef struct&lt;br /&gt;
	{	UINT8 h;&lt;br /&gt;
		UINT8 m;&lt;br /&gt;
	} time_t;&lt;br /&gt;
&lt;br /&gt;
typedef struct&lt;br /&gt;
	{	UINT16 year;&lt;br /&gt;
		UINT8 month;&lt;br /&gt;
		UINT8 day;&lt;br /&gt;
	} date_t;&lt;br /&gt;
&lt;br /&gt;
typedef struct&lt;br /&gt;
	{	float longitude;&lt;br /&gt;
		float latitude;&lt;br /&gt;
	} lonlat_t;&lt;br /&gt;
&lt;br /&gt;
void sun( date_t datum, lonlat_t koord, UINT8 rise, INT8 localOffset, time_t* zeit );&lt;br /&gt;
long Moon_phase(long year,long month,long day);&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
== Links ==&lt;br /&gt;
* PIC18F47J53 Datenblatt [http://ww1.microchip.com/downloads/en/DeviceDoc/39964B.pdf]&lt;br /&gt;
* MCP79410 Datenblatt [http://ww1.microchip.com/downloads/en/DeviceDoc/22266C.pdf]&lt;br /&gt;
* Diskussion [http://www.mikrocontroller.net/articles/Diskussion:Aquarium-Steuerung]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Aquarium-Steuerung&amp;diff=60822</id>
		<title>Diskussion:Aquarium-Steuerung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Aquarium-Steuerung&amp;diff=60822"/>
		<updated>2011-09-29T15:28:23Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: Die Seite wurde neu angelegt: „Hallo,  falls jemand Anregungen oder dergleichen hat, bitte hier melden.  Gruß Sascha“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hallo,&lt;br /&gt;
&lt;br /&gt;
falls jemand Anregungen oder dergleichen hat, bitte hier melden.&lt;br /&gt;
&lt;br /&gt;
Gruß Sascha&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60821</id>
		<title>Aquarium-Steuerung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60821"/>
		<updated>2011-09-29T15:27:21Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hallo zusammen,&lt;br /&gt;
&lt;br /&gt;
momentan versuche ich mich an einer Aquarium Steuerung. Als Controller fungiert ein PIC18F47J53. Dieser besitzt unter anderem 128kB Flash, 12 Bit A/D Wandler, USB. Zum einstellen der Parameter wird dieser per USB mit einem PC verbunden.&lt;br /&gt;
&lt;br /&gt;
Momentaner Stand:&lt;br /&gt;
&lt;br /&gt;
* LCD Display Ausgabe&lt;br /&gt;
* Temperaturmessung mittels DS18B20&lt;br /&gt;
* Berechnung von Sonnenauf/untergang&lt;br /&gt;
* Berechnen von Mondphase&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LCD Steuerung ==&lt;br /&gt;
&lt;br /&gt;
Hier eine Ansteuerung im 4Bit-Mode. Die Pins können beliebig  gewählt werden &lt;br /&gt;
&lt;br /&gt;
Source File lcd.c&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#include &amp;quot;p18cxxx.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
#include &amp;lt;delays.h&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static void lcd_nibble( unsigned char d )&lt;br /&gt;
{&lt;br /&gt;
  LCD_D4 = 0; if( d &amp;amp; 1&amp;lt;&amp;lt;4 ) LCD_D4 = 1;&lt;br /&gt;
  LCD_D5 = 0; if( d &amp;amp; 1&amp;lt;&amp;lt;5 ) LCD_D5 = 1;&lt;br /&gt;
  LCD_D6 = 0; if( d &amp;amp; 1&amp;lt;&amp;lt;6 ) LCD_D6 = 1;&lt;br /&gt;
  LCD_D7 = 0; if( d &amp;amp; 1&amp;lt;&amp;lt;7 ) LCD_D7 = 1;&lt;br /&gt;
&lt;br /&gt;
  LCD_E0 = 1;&lt;br /&gt;
  _delay_us( 1 );			// 1us&lt;br /&gt;
  LCD_E0 = 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static void lcd_byte( unsigned char d )&lt;br /&gt;
{&lt;br /&gt;
  lcd_nibble( d );&lt;br /&gt;
  lcd_nibble( d&amp;lt;&amp;lt;4 );&lt;br /&gt;
  _delay_us( 45 );			// 45µs&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void lcd_command( unsigned char d )     //Kommando senden&lt;br /&gt;
{&lt;br /&gt;
  LCD_RS = 0;&lt;br /&gt;
  lcd_byte( d );&lt;br /&gt;
  switch( d ){&lt;br /&gt;
    case 1:&lt;br /&gt;
    case 2:&lt;br /&gt;
    case 3: _delay_ms( 2 );		// warte 2ms&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void lcd_data( unsigned char d )        //Daten senden&lt;br /&gt;
{&lt;br /&gt;
  LCD_RS = 1;&lt;br /&gt;
  lcd_byte( d );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void lcd_text(unsigned char *string)&lt;br /&gt;
{&lt;br /&gt;
while(*string != 0){ //Text aus Ram senden&lt;br /&gt;
lcd_data(*string++); &lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lcd_text_rom(unsigned rom char *string){&lt;br /&gt;
while(*string != 0){ //Text aus Rom senden&lt;br /&gt;
lcd_data(*string++);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lcd_init( void )&lt;br /&gt;
{&lt;br /&gt;
  LCD_DDR_D4 = 0;&lt;br /&gt;
  LCD_DDR_D5 = 0;&lt;br /&gt;
  LCD_DDR_D6 = 0;&lt;br /&gt;
  LCD_DDR_D7 = 0;&lt;br /&gt;
  LCD_DDR_RS = 0;&lt;br /&gt;
  LCD_DDR_E0 = 0;&lt;br /&gt;
&lt;br /&gt;
  LCD_E0 = 0;&lt;br /&gt;
  LCD_RS = 0;				// send commands&lt;br /&gt;
  _delay_ms( 15 );			// warte 15ms&lt;br /&gt;
&lt;br /&gt;
  lcd_nibble( 0x30 );&lt;br /&gt;
  _delay_ms( 5 );			// warte &amp;gt;4.1ms&lt;br /&gt;
&lt;br /&gt;
  lcd_nibble( 0x30 );&lt;br /&gt;
  _delay_us( 100 );			// warte &amp;gt;100æs&lt;br /&gt;
&lt;br /&gt;
  lcd_nibble( 0x30 );			// 8 bit mode&lt;br /&gt;
  _delay_us( 100 );			// warte &amp;gt;100µs&lt;br /&gt;
&lt;br /&gt;
  lcd_nibble( 0x20 );			// 4 bit mode&lt;br /&gt;
  _delay_us( 100 );			// warte &amp;gt;100µs&lt;br /&gt;
&lt;br /&gt;
  lcd_command( 0x28 );			// 2 lines 5*7&lt;br /&gt;
  lcd_command( 0x08 );			// display off&lt;br /&gt;
  lcd_command( 0x01 );			// display clear&lt;br /&gt;
  lcd_command( 0x06 );                  // cursor increment&lt;br /&gt;
  lcd_command( 0x0C );			// on, no cursor, no blink&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void lcd_pos( unsigned char line, unsigned char column )&lt;br /&gt;
{&lt;br /&gt;
  if( line &amp;amp; 1 )                        // LCD Position setzen&lt;br /&gt;
    column += 0x40;&lt;br /&gt;
&lt;br /&gt;
  lcd_command( 0x80 + column );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void print5(unsigned int x)             // 5 stellige Dezimalzahl ausg.&lt;br /&gt;
	{&lt;br /&gt;
  unsigned int y;&lt;br /&gt;
  		y=x/10000;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*10000);&lt;br /&gt;
		y=x/1000;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*1000);&lt;br /&gt;
		y=x/100;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*100);&lt;br /&gt;
		y=x/10;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*10);&lt;br /&gt;
		lcd_data(x+0x30);&lt;br /&gt;
	}&lt;br /&gt;
void print2(unsigned char x)             // 2 stellige Dezimalzahl ausg.&lt;br /&gt;
{&lt;br /&gt;
  unsigned char y;&lt;br /&gt;
		y=x/10;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*10);&lt;br /&gt;
		lcd_data(x+0x30);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void delay_1us()&lt;br /&gt;
{&lt;br /&gt;
unsigned int i;&lt;br /&gt;
	for (i=0;i&amp;lt;12;i++)&lt;br /&gt;
		{&lt;br /&gt;
		Delay1TCY();&lt;br /&gt;
		}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void _delay_us( unsigned int us)&lt;br /&gt;
{&lt;br /&gt;
unsigned int i;&lt;br /&gt;
	for (i=0;i&amp;lt;us;i++)&lt;br /&gt;
		{&lt;br /&gt;
		delay_1us();&lt;br /&gt;
		}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void _delay_ms( unsigned int ms)&lt;br /&gt;
{&lt;br /&gt;
unsigned int i;&lt;br /&gt;
	for (i=0;i&amp;lt;ms;i++)&lt;br /&gt;
		{&lt;br /&gt;
  		Delay1KTCYx(12);&lt;br /&gt;
		}&lt;br /&gt;
}	&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Header File lcd.h&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
void lcd_command( unsigned char d );&lt;br /&gt;
void lcd_data( unsigned char d );&lt;br /&gt;
void lcd_text(unsigned char *string);&lt;br /&gt;
void lcd_text_rom(unsigned rom char *string);&lt;br /&gt;
void lcd_init( void );&lt;br /&gt;
void lcd_pos( unsigned char line, unsigned char column );&lt;br /&gt;
void delay_1us();&lt;br /&gt;
void _delay_us( unsigned int us);&lt;br /&gt;
void _delay_ms( unsigned int ms);&lt;br /&gt;
void print5(unsigned int x);&lt;br /&gt;
void print2(unsigned char x);&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
#define	LCD_D4		LATDbits.LATD4&lt;br /&gt;
#define	LCD_DDR_D4	TRISDbits.TRISD4&lt;br /&gt;
&lt;br /&gt;
#define	LCD_D5		LATDbits.LATD5&lt;br /&gt;
#define	LCD_DDR_D5	TRISDbits.TRISD5&lt;br /&gt;
&lt;br /&gt;
#define	LCD_D6		LATDbits.LATD6&lt;br /&gt;
#define	LCD_DDR_D6	TRISDbits.TRISD6&lt;br /&gt;
&lt;br /&gt;
#define	LCD_D7		LATDbits.LATD7&lt;br /&gt;
#define	LCD_DDR_D7	TRISDbits.TRISD7&lt;br /&gt;
&lt;br /&gt;
#define	LCD_RS		LATDbits.LATD2&lt;br /&gt;
#define	LCD_DDR_RS	TRISDbits.TRISD2&lt;br /&gt;
&lt;br /&gt;
#define	LCD_E0		LATDbits.LATD3&lt;br /&gt;
#define	LCD_DDR_E0	TRISDbits.TRISD3&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Berechnung Sonnenaufgang/Untergang und Mondphase==&lt;br /&gt;
&lt;br /&gt;
Dies stammt natürlich nicht aus meinen Federn. Die Berechnung findet man hier im Forum oder aber auch im Internet. &lt;br /&gt;
&lt;br /&gt;
Für die Berechnung des Sonnenaufgang/Untergangs benötigt man das Datum und die Längen- und Breitengrade des Ortes. Nach Aufruf von sun(date_t datum, lonlat_t koord, UINT8 rise, INT8 localOffset, time_t* zeit);, findet man in de Strukturen rise_time und fall_time die Uhrzeiten.&lt;br /&gt;
&lt;br /&gt;
Für die Mondphase benötigt man das Datum. Als Rückgabewert erhält man:&lt;br /&gt;
* 0 = Neumond&lt;br /&gt;
* 1 = Viertelmond (zunehmend, Sichel nach links)&lt;br /&gt;
* 2 = Halbmond (zunehmend, Sichel nach links)&lt;br /&gt;
* 3 = 3/4 Mond (zunehmend, Sichel nach links)&lt;br /&gt;
* 4 = Vollmond&lt;br /&gt;
* 5 = 3/4 Mond (abnehmend, Sichel nach rechts)&lt;br /&gt;
* 6 = Halbmond (abnehmend, Sichel nach rechts)&lt;br /&gt;
* 7 = Viertelmond (abnehmend, Sichel nach rechts)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Source File sun.c&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;quot;GenericTypeDefs.h&amp;quot;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;sun.h&amp;quot;&lt;br /&gt;
#include &amp;quot;HardwareProfile.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define M_PI   3.14159265358979323846&lt;br /&gt;
#define Pi M_PI&lt;br /&gt;
#define ZPi 2*M_PI&lt;br /&gt;
#define PY 0.0174532925199432957692369076848861&lt;br /&gt;
#define Pi2 1.5707963267948966192313216916398&lt;br /&gt;
#define frac(x) ((x)-floor(x))&lt;br /&gt;
#define int(x)  ((x)&amp;lt;0? -ceil(-x):floor(x))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sun( date_t datum, lonlat_t koord, UINT8 rise, INT8 localOffset, time_t* zeit  ){&lt;br /&gt;
&lt;br /&gt;
/*!&lt;br /&gt;
 * Source:&lt;br /&gt;
 *	Almanac for Computers, 1990&lt;br /&gt;
 *	published by Nautical Almanac Office&lt;br /&gt;
 *	United States Naval Observatory&lt;br /&gt;
 *	Washington, DC 20392&lt;br /&gt;
 *&lt;br /&gt;
 * http://www.best.com/~williams/sunrise_sunset_algorithm.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Inputs:&lt;br /&gt;
 * - datum:      date of sunrise/sunset&lt;br /&gt;
 * - koord:   location for sunrise/sunset&lt;br /&gt;
 * - zenith:                Sun&#039;s zenith for sunrise/sunset defined as macro&lt;br /&gt;
 * 	- offical      = 90 degrees 50&#039;  == Aufgang&lt;br /&gt;
 * 	- civil        = 96 degrees&lt;br /&gt;
 * 	- nautical     = 102 degrees   == Daemmerung&lt;br /&gt;
 * 	- astronomical = 108 degrees&lt;br /&gt;
 *&lt;br /&gt;
 * - rise: 1 for calculating sunrise, 0 for calculating sunset&lt;br /&gt;
 * - localOffset: offset to UTC. 1 for MEZ, 2 for MESZ&lt;br /&gt;
 * Output:&lt;br /&gt;
 * - zeit: structure for rise/set-time &lt;br /&gt;
 *	NOTE: longitude is positive for East and negative for West&lt;br /&gt;
&lt;br /&gt;
 * Beispiel: Berechnet die Auf- und Untergangszeiten, wie sie im &#039;Himmelsjahr&#039; angegeben sind&lt;br /&gt;
 * =========&lt;br /&gt;
date_t datum;&lt;br /&gt;
lonlat_t koord;&lt;br /&gt;
time_t rise_time;&lt;br /&gt;
time_t fall_time;&lt;br /&gt;
	koord.longitude=10.0;&lt;br /&gt;
	koord.latitude=50.0;&lt;br /&gt;
	datum.year=2008;&lt;br /&gt;
	datum.month=1;&lt;br /&gt;
	datum.day=19;&lt;br /&gt;
	sun(datum,koord,1,1,&amp;amp;rise_time);&lt;br /&gt;
	sun(datum,koord,0,1,&amp;amp;fall_time);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#define zenith 90.833333333333&lt;br /&gt;
&lt;br /&gt;
UINT16 N1, N3, N;&lt;br /&gt;
float lngHour, t;&lt;br /&gt;
float M, L, RA;&lt;br /&gt;
float SinDec, CosDec, CosH;&lt;br /&gt;
float H, T, UT, localT;&lt;br /&gt;
&lt;br /&gt;
/* 1. first calculate the day of the year */&lt;br /&gt;
&lt;br /&gt;
	N1 = (275 * datum.month) / 9;&lt;br /&gt;
//0-1 1-2 2-2 3-2&lt;br /&gt;
	N3 = (datum.year &amp;amp; 3) ? 2:1;&lt;br /&gt;
	N = N1 +datum.day - 30;&lt;br /&gt;
	if( datum.month&amp;gt;2 ) N-=N3;&lt;br /&gt;
&lt;br /&gt;
/* 2. convert the longitude to hour value and calculate an approximate time */&lt;br /&gt;
&lt;br /&gt;
	lngHour = koord.longitude / 15;&lt;br /&gt;
&lt;br /&gt;
	t = rise ? 6:18;&lt;br /&gt;
	t = N + ((t - lngHour) / 24);&lt;br /&gt;
&lt;br /&gt;
/* 3. calculate the Sun&#039;s mean anomaly */&lt;br /&gt;
&lt;br /&gt;
	M = (0.017201965 * t) - 0.057403879;&lt;br /&gt;
&lt;br /&gt;
/* 4. calculate the Sun&#039;s true longitude */&lt;br /&gt;
&lt;br /&gt;
	L = M + ((0.033440508 * sin(M)) + (0.0003490658504 * sin(2 * M)) + 4.932893878);&lt;br /&gt;
	if( L&amp;gt;=ZPi ) L-=ZPi;&lt;br /&gt;
	if( L&amp;lt;0 )    L+=ZPi;	// NOTE: L potentially needs to be adjusted into the range [0,360) by adding/subtracting 360&lt;br /&gt;
&lt;br /&gt;
/* 5a. calculate the Sun&#039;s right ascension */&lt;br /&gt;
&lt;br /&gt;
	RA = atan(0.91764 * tan(L));&lt;br /&gt;
	if( RA&amp;gt;ZPi ) RA-=ZPi;&lt;br /&gt;
	if( RA&amp;lt;0 )   RA+=ZPi;	// NOTE: RA potentially needs to be adjusted into the range [0,360) by adding/subtracting 360&lt;br /&gt;
&lt;br /&gt;
/* 5b. right ascension value needs to be in the same quadrant as L */&lt;br /&gt;
&lt;br /&gt;
	RA = RA/PY + ( (floor( L/Pi2)) - (floor(RA/Pi2)) )* 90.0;&lt;br /&gt;
&lt;br /&gt;
/* 5c. right ascension value needs to be converted into hours */&lt;br /&gt;
&lt;br /&gt;
	RA /= 15;&lt;br /&gt;
&lt;br /&gt;
/* 6. calculate the Sun&#039;s declination */&lt;br /&gt;
&lt;br /&gt;
	SinDec = 0.39782 * sin(L);&lt;br /&gt;
	CosDec = cos(asin(SinDec));&lt;br /&gt;
&lt;br /&gt;
/* 7a. calculate the Sun&#039;s local hour angle */&lt;br /&gt;
&lt;br /&gt;
	CosH = (cos(zenith*PY) - (SinDec * sin(koord.latitude*PY))) / (CosDec * cos(koord.latitude*PY));&lt;br /&gt;
&lt;br /&gt;
//	if (CosH &amp;gt;  1) document.write(&amp;quot;Die Sonne geht hier heute nicht auf&amp;quot;);&lt;br /&gt;
//	if (CosH &amp;lt; -1) document.write(&amp;quot;Die Sonne geht hier heute nicht unter&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
/* 7b. finish calculating H and convert into hours */&lt;br /&gt;
&lt;br /&gt;
	H = acos(CosH)/PY;&lt;br /&gt;
	if( rise )  H = 360.0 - H;&lt;br /&gt;
	H /= 15.0;&lt;br /&gt;
&lt;br /&gt;
/* 8. calculate local mean time of rising/setting */&lt;br /&gt;
	T = H + RA - (0.06571 * t) - 6.622;&lt;br /&gt;
&lt;br /&gt;
/* 9. adjust back to UTC */&lt;br /&gt;
&lt;br /&gt;
	UT = T - lngHour;&lt;br /&gt;
	if( UT&amp;lt;0 )		UT += 24;&lt;br /&gt;
	if( UT&amp;gt;=24 ) 	UT -= 24;	// NOTE: UT potentially needs to be adjusted into the range [0,24) by adding/subtracting 24&lt;br /&gt;
&lt;br /&gt;
/* 10. convert UT value to local time zone of latitude/longitude */&lt;br /&gt;
&lt;br /&gt;
	localT = UT + localOffset;&lt;br /&gt;
&lt;br /&gt;
	zeit-&amp;gt;h = floor( localT );&lt;br /&gt;
	zeit-&amp;gt;m = floor( 60 * ( localT - zeit-&amp;gt;h ));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
long Moon_phase(long year,long month,long day)&lt;br /&gt;
{&lt;br /&gt;
    /*k&lt;br /&gt;
      Calculates the moon phase (0-7), accurate to 1 segment.&lt;br /&gt;
      0 = &amp;gt; new moon.&lt;br /&gt;
      4 =&amp;gt; Full moon.&lt;br /&gt;
    */&lt;br /&gt;
   &lt;br /&gt;
    long g;&lt;br /&gt;
	long e;&lt;br /&gt;
&lt;br /&gt;
    if (month == 1) --day;&lt;br /&gt;
    else if (month == 2) day += 30;&lt;br /&gt;
    else // m &amp;gt;= 3&lt;br /&gt;
    {&lt;br /&gt;
        day += 28 + (month-2)*3059/100;&lt;br /&gt;
&lt;br /&gt;
        // adjust for leap years&lt;br /&gt;
        if (!(year &amp;amp; 3)) ++day;&lt;br /&gt;
        if ((year%100) == 0) --day;&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    g = (year-1900)%19 + 1;&lt;br /&gt;
    e = (11*g + 18) % 30;&lt;br /&gt;
    if ((e == 25 &amp;amp;&amp;amp; g &amp;gt; 11) || e == 24) e++;&lt;br /&gt;
    return ((((e + day)*6+11)%177)/22 &amp;amp; 7);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Header File sun.h&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
typedef struct&lt;br /&gt;
	{	UINT8 h;&lt;br /&gt;
		UINT8 m;&lt;br /&gt;
	} time_t;&lt;br /&gt;
&lt;br /&gt;
typedef struct&lt;br /&gt;
	{	UINT16 year;&lt;br /&gt;
		UINT8 month;&lt;br /&gt;
		UINT8 day;&lt;br /&gt;
	} date_t;&lt;br /&gt;
&lt;br /&gt;
typedef struct&lt;br /&gt;
	{	float longitude;&lt;br /&gt;
		float latitude;&lt;br /&gt;
	} lonlat_t;&lt;br /&gt;
&lt;br /&gt;
void sun( date_t datum, lonlat_t koord, UINT8 rise, INT8 localOffset, time_t* zeit );&lt;br /&gt;
long Moon_phase(long year,long month,long day);&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
== Links ==&lt;br /&gt;
* PIC18F47J53 Datenblatt [http://ww1.microchip.com/downloads/en/DeviceDoc/39964B.pdf]&lt;br /&gt;
* MCP79410 Datenblatt [http://ww1.microchip.com/downloads/en/DeviceDoc/22266C.pdf]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60820</id>
		<title>Aquarium-Steuerung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60820"/>
		<updated>2011-09-29T15:22:39Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hallo zusammen,&lt;br /&gt;
&lt;br /&gt;
momentan versuche ich mich an einer Aquarium Steuerung. Als Controller fungiert ein PIC18F47J53. Dieser besitzt unter anderem 128kB Flash, 12 Bit A/D Wandler, USB. Zum einstellen der Parameter wird dieser per USB mit einem PC verbunden.&lt;br /&gt;
&lt;br /&gt;
Momentaner Stand:&lt;br /&gt;
&lt;br /&gt;
* LCD Display Ausgabe&lt;br /&gt;
* Temperaturmessung mittels DS18B20&lt;br /&gt;
* Berechnung von Sonnenauf/untergang&lt;br /&gt;
* Berechnen von Mondphase&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LCD Steuerung ==&lt;br /&gt;
&lt;br /&gt;
Hier eine Ansteuerung im 4Bit-Mode. Die Pins können beliebig  gewählt werden &lt;br /&gt;
&lt;br /&gt;
Source File lcd.c&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#include &amp;quot;p18cxxx.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
#include &amp;lt;delays.h&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static void lcd_nibble( unsigned char d )&lt;br /&gt;
{&lt;br /&gt;
  LCD_D4 = 0; if( d &amp;amp; 1&amp;lt;&amp;lt;4 ) LCD_D4 = 1;&lt;br /&gt;
  LCD_D5 = 0; if( d &amp;amp; 1&amp;lt;&amp;lt;5 ) LCD_D5 = 1;&lt;br /&gt;
  LCD_D6 = 0; if( d &amp;amp; 1&amp;lt;&amp;lt;6 ) LCD_D6 = 1;&lt;br /&gt;
  LCD_D7 = 0; if( d &amp;amp; 1&amp;lt;&amp;lt;7 ) LCD_D7 = 1;&lt;br /&gt;
&lt;br /&gt;
  LCD_E0 = 1;&lt;br /&gt;
  _delay_us( 1 );			// 1us&lt;br /&gt;
  LCD_E0 = 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static void lcd_byte( unsigned char d )&lt;br /&gt;
{&lt;br /&gt;
  lcd_nibble( d );&lt;br /&gt;
  lcd_nibble( d&amp;lt;&amp;lt;4 );&lt;br /&gt;
  _delay_us( 45 );			// 45µs&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void lcd_command( unsigned char d )     //Kommando senden&lt;br /&gt;
{&lt;br /&gt;
  LCD_RS = 0;&lt;br /&gt;
  lcd_byte( d );&lt;br /&gt;
  switch( d ){&lt;br /&gt;
    case 1:&lt;br /&gt;
    case 2:&lt;br /&gt;
    case 3: _delay_ms( 2 );		// warte 2ms&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void lcd_data( unsigned char d )        //Daten senden&lt;br /&gt;
{&lt;br /&gt;
  LCD_RS = 1;&lt;br /&gt;
  lcd_byte( d );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void lcd_text(unsigned char *string)&lt;br /&gt;
{&lt;br /&gt;
while(*string != 0){ //Text aus Ram senden&lt;br /&gt;
lcd_data(*string++); &lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lcd_text_rom(unsigned rom char *string){&lt;br /&gt;
while(*string != 0){ //Text aus Rom senden&lt;br /&gt;
lcd_data(*string++);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void lcd_init( void )&lt;br /&gt;
{&lt;br /&gt;
  LCD_DDR_D4 = 0;&lt;br /&gt;
  LCD_DDR_D5 = 0;&lt;br /&gt;
  LCD_DDR_D6 = 0;&lt;br /&gt;
  LCD_DDR_D7 = 0;&lt;br /&gt;
  LCD_DDR_RS = 0;&lt;br /&gt;
  LCD_DDR_E0 = 0;&lt;br /&gt;
&lt;br /&gt;
  LCD_E0 = 0;&lt;br /&gt;
  LCD_RS = 0;				// send commands&lt;br /&gt;
  _delay_ms( 15 );			// warte 15ms&lt;br /&gt;
&lt;br /&gt;
  lcd_nibble( 0x30 );&lt;br /&gt;
  _delay_ms( 5 );			// warte &amp;gt;4.1ms&lt;br /&gt;
&lt;br /&gt;
  lcd_nibble( 0x30 );&lt;br /&gt;
  _delay_us( 100 );			// warte &amp;gt;100æs&lt;br /&gt;
&lt;br /&gt;
  lcd_nibble( 0x30 );			// 8 bit mode&lt;br /&gt;
  _delay_us( 100 );			// warte &amp;gt;100µs&lt;br /&gt;
&lt;br /&gt;
  lcd_nibble( 0x20 );			// 4 bit mode&lt;br /&gt;
  _delay_us( 100 );			// warte &amp;gt;100µs&lt;br /&gt;
&lt;br /&gt;
  lcd_command( 0x28 );			// 2 lines 5*7&lt;br /&gt;
  lcd_command( 0x08 );			// display off&lt;br /&gt;
  lcd_command( 0x01 );			// display clear&lt;br /&gt;
  lcd_command( 0x06 );                  // cursor increment&lt;br /&gt;
  lcd_command( 0x0C );			// on, no cursor, no blink&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void lcd_pos( unsigned char line, unsigned char column )&lt;br /&gt;
{&lt;br /&gt;
  if( line &amp;amp; 1 )&lt;br /&gt;
    column += 0x40;&lt;br /&gt;
&lt;br /&gt;
  lcd_command( 0x80 + column );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void print5(unsigned int x)&lt;br /&gt;
	{&lt;br /&gt;
  unsigned int y;&lt;br /&gt;
  		y=x/10000;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*10000);&lt;br /&gt;
		y=x/1000;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*1000);&lt;br /&gt;
		y=x/100;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*100);&lt;br /&gt;
		y=x/10;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*10);&lt;br /&gt;
		lcd_data(x+0x30);&lt;br /&gt;
	}&lt;br /&gt;
void print2(unsigned char x)&lt;br /&gt;
{&lt;br /&gt;
  unsigned char y;&lt;br /&gt;
		y=x/10;&lt;br /&gt;
		lcd_data(y+0x30);&lt;br /&gt;
		x-=(y*10);&lt;br /&gt;
		lcd_data(x+0x30);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void delay_1us()&lt;br /&gt;
{&lt;br /&gt;
unsigned int i;&lt;br /&gt;
	for (i=0;i&amp;lt;12;i++)&lt;br /&gt;
		{&lt;br /&gt;
		Delay1TCY();&lt;br /&gt;
		}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void _delay_us( unsigned int us)&lt;br /&gt;
{&lt;br /&gt;
unsigned int i;&lt;br /&gt;
	for (i=0;i&amp;lt;us;i++)&lt;br /&gt;
		{&lt;br /&gt;
		delay_1us();&lt;br /&gt;
		}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void _delay_ms( unsigned int ms)&lt;br /&gt;
{&lt;br /&gt;
unsigned int i;&lt;br /&gt;
	for (i=0;i&amp;lt;ms;i++)&lt;br /&gt;
		{&lt;br /&gt;
  		Delay1KTCYx(12);&lt;br /&gt;
		}&lt;br /&gt;
}	&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Header File lcd.h&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
void lcd_command( unsigned char d );&lt;br /&gt;
void lcd_data( unsigned char d );&lt;br /&gt;
void lcd_text(unsigned char *string);&lt;br /&gt;
void lcd_text_rom(unsigned rom char *string);&lt;br /&gt;
void lcd_init( void );&lt;br /&gt;
void lcd_pos( unsigned char line, unsigned char column );&lt;br /&gt;
void delay_1us();&lt;br /&gt;
void _delay_us( unsigned int us);&lt;br /&gt;
void _delay_ms( unsigned int ms);&lt;br /&gt;
void print5(unsigned int x);&lt;br /&gt;
void print2(unsigned char x);&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
#define	LCD_D4		LATDbits.LATD4&lt;br /&gt;
#define	LCD_DDR_D4	TRISDbits.TRISD4&lt;br /&gt;
&lt;br /&gt;
#define	LCD_D5		LATDbits.LATD5&lt;br /&gt;
#define	LCD_DDR_D5	TRISDbits.TRISD5&lt;br /&gt;
&lt;br /&gt;
#define	LCD_D6		LATDbits.LATD6&lt;br /&gt;
#define	LCD_DDR_D6	TRISDbits.TRISD6&lt;br /&gt;
&lt;br /&gt;
#define	LCD_D7		LATDbits.LATD7&lt;br /&gt;
#define	LCD_DDR_D7	TRISDbits.TRISD7&lt;br /&gt;
&lt;br /&gt;
#define	LCD_RS		LATDbits.LATD2&lt;br /&gt;
#define	LCD_DDR_RS	TRISDbits.TRISD2&lt;br /&gt;
&lt;br /&gt;
#define	LCD_E0		LATDbits.LATD3&lt;br /&gt;
#define	LCD_DDR_E0	TRISDbits.TRISD3&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Berechnung Sonnenaufgang/Untergang und Mondphase==&lt;br /&gt;
&lt;br /&gt;
Dies stammt natürlich nicht aus meinen Federn. Die Berechnung findet man hier im Forum oder aber auch im Internet. &lt;br /&gt;
&lt;br /&gt;
Für die Berechnung des Sonnenaufgang/Untergangs benötigt man das Datum und die Längen- und Breitengrade des Ortes. Nach Aufruf von sun(date_t datum, lonlat_t koord, UINT8 rise, INT8 localOffset, time_t* zeit);, findet man in de Strukturen rise_time und fall_time die Uhrzeiten.&lt;br /&gt;
&lt;br /&gt;
Für die Mondphase benötigt man das Datum. Als Rückgabewert erhält man:&lt;br /&gt;
* 0 = Neumond&lt;br /&gt;
* 1 = Viertelmond (zunehmend, Sichel nach links)&lt;br /&gt;
* 2 = Halbmond (zunehmend, Sichel nach links)&lt;br /&gt;
* 3 = 3/4 Mond (zunehmend, Sichel nach links)&lt;br /&gt;
* 4 = Vollmond&lt;br /&gt;
* 5 = 3/4 Mond (abnehmend, Sichel nach rechts)&lt;br /&gt;
* 6 = Halbmond (abnehmend, Sichel nach rechts)&lt;br /&gt;
* 7 = Viertelmond (abnehmend, Sichel nach rechts)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Source File sun.c&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;quot;GenericTypeDefs.h&amp;quot;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;sun.h&amp;quot;&lt;br /&gt;
#include &amp;quot;HardwareProfile.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define M_PI   3.14159265358979323846&lt;br /&gt;
#define Pi M_PI&lt;br /&gt;
#define ZPi 2*M_PI&lt;br /&gt;
#define PY 0.0174532925199432957692369076848861&lt;br /&gt;
#define Pi2 1.5707963267948966192313216916398&lt;br /&gt;
#define frac(x) ((x)-floor(x))&lt;br /&gt;
#define int(x)  ((x)&amp;lt;0? -ceil(-x):floor(x))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sun( date_t datum, lonlat_t koord, UINT8 rise, INT8 localOffset, time_t* zeit  ){&lt;br /&gt;
&lt;br /&gt;
/*!&lt;br /&gt;
 * Source:&lt;br /&gt;
 *	Almanac for Computers, 1990&lt;br /&gt;
 *	published by Nautical Almanac Office&lt;br /&gt;
 *	United States Naval Observatory&lt;br /&gt;
 *	Washington, DC 20392&lt;br /&gt;
 *&lt;br /&gt;
 * http://www.best.com/~williams/sunrise_sunset_algorithm.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Inputs:&lt;br /&gt;
 * - datum:      date of sunrise/sunset&lt;br /&gt;
 * - koord:   location for sunrise/sunset&lt;br /&gt;
 * - zenith:                Sun&#039;s zenith for sunrise/sunset defined as macro&lt;br /&gt;
 * 	- offical      = 90 degrees 50&#039;  == Aufgang&lt;br /&gt;
 * 	- civil        = 96 degrees&lt;br /&gt;
 * 	- nautical     = 102 degrees   == Daemmerung&lt;br /&gt;
 * 	- astronomical = 108 degrees&lt;br /&gt;
 *&lt;br /&gt;
 * - rise: 1 for calculating sunrise, 0 for calculating sunset&lt;br /&gt;
 * - localOffset: offset to UTC. 1 for MEZ, 2 for MESZ&lt;br /&gt;
 * Output:&lt;br /&gt;
 * - zeit: structure for rise/set-time &lt;br /&gt;
 *	NOTE: longitude is positive for East and negative for West&lt;br /&gt;
&lt;br /&gt;
 * Beispiel: Berechnet die Auf- und Untergangszeiten, wie sie im &#039;Himmelsjahr&#039; angegeben sind&lt;br /&gt;
 * =========&lt;br /&gt;
date_t datum;&lt;br /&gt;
lonlat_t koord;&lt;br /&gt;
time_t rise_time;&lt;br /&gt;
time_t fall_time;&lt;br /&gt;
	koord.longitude=10.0;&lt;br /&gt;
	koord.latitude=50.0;&lt;br /&gt;
	datum.year=2008;&lt;br /&gt;
	datum.month=1;&lt;br /&gt;
	datum.day=19;&lt;br /&gt;
	sun(datum,koord,1,1,&amp;amp;rise_time);&lt;br /&gt;
	sun(datum,koord,0,1,&amp;amp;fall_time);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#define zenith 90.833333333333&lt;br /&gt;
&lt;br /&gt;
UINT16 N1, N3, N;&lt;br /&gt;
float lngHour, t;&lt;br /&gt;
float M, L, RA;&lt;br /&gt;
float SinDec, CosDec, CosH;&lt;br /&gt;
float H, T, UT, localT;&lt;br /&gt;
&lt;br /&gt;
/* 1. first calculate the day of the year */&lt;br /&gt;
&lt;br /&gt;
	N1 = (275 * datum.month) / 9;&lt;br /&gt;
//0-1 1-2 2-2 3-2&lt;br /&gt;
	N3 = (datum.year &amp;amp; 3) ? 2:1;&lt;br /&gt;
	N = N1 +datum.day - 30;&lt;br /&gt;
	if( datum.month&amp;gt;2 ) N-=N3;&lt;br /&gt;
&lt;br /&gt;
/* 2. convert the longitude to hour value and calculate an approximate time */&lt;br /&gt;
&lt;br /&gt;
	lngHour = koord.longitude / 15;&lt;br /&gt;
&lt;br /&gt;
	t = rise ? 6:18;&lt;br /&gt;
	t = N + ((t - lngHour) / 24);&lt;br /&gt;
&lt;br /&gt;
/* 3. calculate the Sun&#039;s mean anomaly */&lt;br /&gt;
&lt;br /&gt;
	M = (0.017201965 * t) - 0.057403879;&lt;br /&gt;
&lt;br /&gt;
/* 4. calculate the Sun&#039;s true longitude */&lt;br /&gt;
&lt;br /&gt;
	L = M + ((0.033440508 * sin(M)) + (0.0003490658504 * sin(2 * M)) + 4.932893878);&lt;br /&gt;
	if( L&amp;gt;=ZPi ) L-=ZPi;&lt;br /&gt;
	if( L&amp;lt;0 )    L+=ZPi;	// NOTE: L potentially needs to be adjusted into the range [0,360) by adding/subtracting 360&lt;br /&gt;
&lt;br /&gt;
/* 5a. calculate the Sun&#039;s right ascension */&lt;br /&gt;
&lt;br /&gt;
	RA = atan(0.91764 * tan(L));&lt;br /&gt;
	if( RA&amp;gt;ZPi ) RA-=ZPi;&lt;br /&gt;
	if( RA&amp;lt;0 )   RA+=ZPi;	// NOTE: RA potentially needs to be adjusted into the range [0,360) by adding/subtracting 360&lt;br /&gt;
&lt;br /&gt;
/* 5b. right ascension value needs to be in the same quadrant as L */&lt;br /&gt;
&lt;br /&gt;
	RA = RA/PY + ( (floor( L/Pi2)) - (floor(RA/Pi2)) )* 90.0;&lt;br /&gt;
&lt;br /&gt;
/* 5c. right ascension value needs to be converted into hours */&lt;br /&gt;
&lt;br /&gt;
	RA /= 15;&lt;br /&gt;
&lt;br /&gt;
/* 6. calculate the Sun&#039;s declination */&lt;br /&gt;
&lt;br /&gt;
	SinDec = 0.39782 * sin(L);&lt;br /&gt;
	CosDec = cos(asin(SinDec));&lt;br /&gt;
&lt;br /&gt;
/* 7a. calculate the Sun&#039;s local hour angle */&lt;br /&gt;
&lt;br /&gt;
	CosH = (cos(zenith*PY) - (SinDec * sin(koord.latitude*PY))) / (CosDec * cos(koord.latitude*PY));&lt;br /&gt;
&lt;br /&gt;
//	if (CosH &amp;gt;  1) document.write(&amp;quot;Die Sonne geht hier heute nicht auf&amp;quot;);&lt;br /&gt;
//	if (CosH &amp;lt; -1) document.write(&amp;quot;Die Sonne geht hier heute nicht unter&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
/* 7b. finish calculating H and convert into hours */&lt;br /&gt;
&lt;br /&gt;
	H = acos(CosH)/PY;&lt;br /&gt;
	if( rise )  H = 360.0 - H;&lt;br /&gt;
	H /= 15.0;&lt;br /&gt;
&lt;br /&gt;
/* 8. calculate local mean time of rising/setting */&lt;br /&gt;
	T = H + RA - (0.06571 * t) - 6.622;&lt;br /&gt;
&lt;br /&gt;
/* 9. adjust back to UTC */&lt;br /&gt;
&lt;br /&gt;
	UT = T - lngHour;&lt;br /&gt;
	if( UT&amp;lt;0 )		UT += 24;&lt;br /&gt;
	if( UT&amp;gt;=24 ) 	UT -= 24;	// NOTE: UT potentially needs to be adjusted into the range [0,24) by adding/subtracting 24&lt;br /&gt;
&lt;br /&gt;
/* 10. convert UT value to local time zone of latitude/longitude */&lt;br /&gt;
&lt;br /&gt;
	localT = UT + localOffset;&lt;br /&gt;
&lt;br /&gt;
	zeit-&amp;gt;h = floor( localT );&lt;br /&gt;
	zeit-&amp;gt;m = floor( 60 * ( localT - zeit-&amp;gt;h ));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
long Moon_phase(long year,long month,long day)&lt;br /&gt;
{&lt;br /&gt;
    /*k&lt;br /&gt;
      Calculates the moon phase (0-7), accurate to 1 segment.&lt;br /&gt;
      0 = &amp;gt; new moon.&lt;br /&gt;
      4 =&amp;gt; Full moon.&lt;br /&gt;
    */&lt;br /&gt;
   &lt;br /&gt;
    long g;&lt;br /&gt;
	long e;&lt;br /&gt;
&lt;br /&gt;
    if (month == 1) --day;&lt;br /&gt;
    else if (month == 2) day += 30;&lt;br /&gt;
    else // m &amp;gt;= 3&lt;br /&gt;
    {&lt;br /&gt;
        day += 28 + (month-2)*3059/100;&lt;br /&gt;
&lt;br /&gt;
        // adjust for leap years&lt;br /&gt;
        if (!(year &amp;amp; 3)) ++day;&lt;br /&gt;
        if ((year%100) == 0) --day;&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    g = (year-1900)%19 + 1;&lt;br /&gt;
    e = (11*g + 18) % 30;&lt;br /&gt;
    if ((e == 25 &amp;amp;&amp;amp; g &amp;gt; 11) || e == 24) e++;&lt;br /&gt;
    return ((((e + day)*6+11)%177)/22 &amp;amp; 7);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Header File sun.h&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
typedef struct&lt;br /&gt;
	{	UINT8 h;&lt;br /&gt;
		UINT8 m;&lt;br /&gt;
	} time_t;&lt;br /&gt;
&lt;br /&gt;
typedef struct&lt;br /&gt;
	{	UINT16 year;&lt;br /&gt;
		UINT8 month;&lt;br /&gt;
		UINT8 day;&lt;br /&gt;
	} date_t;&lt;br /&gt;
&lt;br /&gt;
typedef struct&lt;br /&gt;
	{	float longitude;&lt;br /&gt;
		float latitude;&lt;br /&gt;
	} lonlat_t;&lt;br /&gt;
&lt;br /&gt;
void sun( date_t datum, lonlat_t koord, UINT8 rise, INT8 localOffset, time_t* zeit );&lt;br /&gt;
long Moon_phase(long year,long month,long day);&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
== Links ==&lt;br /&gt;
* PIC18F47J53 Datenblatt [http://ww1.microchip.com/downloads/en/DeviceDoc/39964B.pdf]&lt;br /&gt;
* MCP79410 Datenblatt [http://ww1.microchip.com/downloads/en/DeviceDoc/22266C.pdf]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60812</id>
		<title>Aquarium-Steuerung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60812"/>
		<updated>2011-09-29T11:33:26Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: /* Aquarium Steuerung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hallo zusammen,&lt;br /&gt;
&lt;br /&gt;
momentan versuche ich mich an einer Aquarium Steuerung. Als Controller fungiert ein PIC18F47J53. Dieser besitzt unter anderem 128kB Flash, 12 Bit A/D Wandler, USB. Zum einstellen der Parameter wird dieser per USb mit einem PC verbunden.&lt;br /&gt;
&lt;br /&gt;
Momentaner Stand:&lt;br /&gt;
&lt;br /&gt;
* LCD Display Ausgabe&lt;br /&gt;
* Temperaturmessung mittels DS18B20&lt;br /&gt;
* Berechnung von Sonnenauf/untergang&lt;br /&gt;
* Berechnen von Mondphase&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* PIC18F47J53 Datenblatt [http://ww1.microchip.com/downloads/en/DeviceDoc/39964B.pdf]&lt;br /&gt;
* MCP79410 Datenblatt [http://ww1.microchip.com/downloads/en/DeviceDoc/22266C.pdf]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60811</id>
		<title>Aquarium-Steuerung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60811"/>
		<updated>2011-09-29T11:32:58Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aquarium Steuerung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hallo zusammen,&lt;br /&gt;
&lt;br /&gt;
momentan versuche ich mich an einer Aquarium Steuerung. Als Controller fungiert ein PIC18F47J53. Dieser besitzt unter anderem 128kB Flash, 12 Bit A/D Wandler, USB. Zum einstellen der Parameter wird dieser per USb mit einem PC verbunden.&lt;br /&gt;
&lt;br /&gt;
Momentaner Stand:&lt;br /&gt;
&lt;br /&gt;
* LCD Display Ausgabe&lt;br /&gt;
* Temperaturmessung mittels DS18B20&lt;br /&gt;
* Berechnung von Sonnenauf/untergang&lt;br /&gt;
* Berechnen von Mondphase&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* PIC18F47J53 Datenblatt [http://ww1.microchip.com/downloads/en/DeviceDoc/39964B.pdf]&lt;br /&gt;
* MCP79410 Datenblatt [http://ww1.microchip.com/downloads/en/DeviceDoc/22266C.pdf]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60809</id>
		<title>Aquarium-Steuerung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60809"/>
		<updated>2011-09-29T11:24:24Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aquarium Steuerung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hallo zusammen,&lt;br /&gt;
&lt;br /&gt;
momentan versuche ich mich an einer Aquarium Steuerung. Als Controller fungiert ein PIC18F47J53 [http://ww1.microchip.com/downloads/en/DeviceDoc/39964B.pdf]. Dieser besitzt unter anderem 128kB Flash, 12 Bit A/D Wandler, USB. Zum einstellen der Parameter wird dieser per USb mit einem PC verbunden.&lt;br /&gt;
&lt;br /&gt;
Momentaner Stand:&lt;br /&gt;
&lt;br /&gt;
* LCD Display Ausgabe&lt;br /&gt;
* Temperaturmessung mittels DS18B20&lt;br /&gt;
* Berechnung von Sonnenauf/untergang&lt;br /&gt;
* Berechnen von Mondphase&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60808</id>
		<title>Aquarium-Steuerung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60808"/>
		<updated>2011-09-29T11:22:12Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aquarium Steuerung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hallo zusammen,&lt;br /&gt;
&lt;br /&gt;
momentan versuche ich mich an einer Aquarium Steuerung. Als Controller fungiert ein PIC18F47J53. Dieser verfügt unter anderem 128kB Flash, 12 Bit A/D Wandler, USB. Zum einstellen der Parameter wird dieser per USb mit einem PC verbunden.&lt;br /&gt;
&lt;br /&gt;
Momentaner Stand:&lt;br /&gt;
&lt;br /&gt;
* LCD Display Ausgabe&lt;br /&gt;
* Temperaturmessung mittels DS18B20&lt;br /&gt;
* Berechnung von Sonnenauf/untergang&lt;br /&gt;
* Berechnen von Mondphase&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60807</id>
		<title>Aquarium-Steuerung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60807"/>
		<updated>2011-09-29T11:17:05Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aquarium Steuerung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hallo zusammen,&lt;br /&gt;
&lt;br /&gt;
momentan versuche ich mich an einer Aquarium Steuerung. Als Controller fungiert ein PIC18F47J53. Zum einstellen der Parameter wird dieser per USb mit einem PC verbunden.&lt;br /&gt;
&lt;br /&gt;
Momentaner Stand:&lt;br /&gt;
&lt;br /&gt;
* LCD Display Ausgabe&lt;br /&gt;
* Temperaturmessung mittels DS18B20&lt;br /&gt;
* Berechnung von Sonnenauf/untergang&lt;br /&gt;
* Berechnen von Mondphase&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60806</id>
		<title>Aquarium-Steuerung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60806"/>
		<updated>2011-09-29T11:16:00Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aquarium Steuerung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hallo zusammen,&lt;br /&gt;
&lt;br /&gt;
momentan versuche ich mich an einer Aquarium Steuerung. Als Controller fungiert ein PIC18F47J53. Zum einstellen der Parameter wird dieser per USb mit einem PC verbunden.&lt;br /&gt;
&lt;br /&gt;
Momentaner Stand:&lt;br /&gt;
&lt;br /&gt;
LCD Display Ausgabe&lt;br /&gt;
Temperaturmessung mittels DS18B20&lt;br /&gt;
Berechnung von Sonnenauf/untergang&lt;br /&gt;
Berechnen von Mondphase&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Benutzer:Sascha_focus&amp;diff=60805</id>
		<title>Benutzer:Sascha focus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Benutzer:Sascha_focus&amp;diff=60805"/>
		<updated>2011-09-29T11:09:53Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hallo,&lt;br /&gt;
&lt;br /&gt;
mal einige Dinge zu meiner Person:&lt;br /&gt;
&lt;br /&gt;
Alter:    36J.&lt;br /&gt;
Beruf:    Energieelektroniker&lt;br /&gt;
Hobby&#039;s:  Modellbau, Elektronik, Formel 1&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Projekte:&lt;br /&gt;
&lt;br /&gt;
Kleine Testplatine für einen PIC18F4550:&lt;br /&gt;
http://www.mikrocontroller.net/articles/PIC18f4550_Experimentier_Platine&lt;br /&gt;
&lt;br /&gt;
Momentanes Projekt in Entwicklung, Aquarium Steuerung:&lt;br /&gt;
http://www.mikrocontroller.net/articles/Aquarium-Steuerung&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Benutzer:Sascha_focus&amp;diff=60804</id>
		<title>Benutzer:Sascha focus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Benutzer:Sascha_focus&amp;diff=60804"/>
		<updated>2011-09-29T11:08:00Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hallo,&lt;br /&gt;
&lt;br /&gt;
mal einige Dinge zu meiner Person:&lt;br /&gt;
&lt;br /&gt;
Alter:    36J.&lt;br /&gt;
Beruf:    Energieelektroniker&lt;br /&gt;
Hobby&#039;s:  Modellbau, Elektronik, Formel 1&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Projekte:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/articles/PIC18f4550_Experimentier_Platine&lt;br /&gt;
http://www.mikrocontroller.net/articles/Aquarium-Steuerung&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60803</id>
		<title>Aquarium-Steuerung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Aquarium-Steuerung&amp;diff=60803"/>
		<updated>2011-09-29T11:07:30Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: Die Seite wurde neu angelegt: „&amp;#039;&amp;#039;&amp;#039;Aquarium Steuerung&amp;#039;&amp;#039;&amp;#039;  Hallo zusammen,  momentan versuche ich mich an einer Aquarium Steuerung.“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aquarium Steuerung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hallo zusammen,&lt;br /&gt;
&lt;br /&gt;
momentan versuche ich mich an einer Aquarium Steuerung.&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Benutzer:Sascha_focus&amp;diff=60802</id>
		<title>Benutzer:Sascha focus</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Benutzer:Sascha_focus&amp;diff=60802"/>
		<updated>2011-09-29T11:03:46Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: Die Seite wurde neu angelegt: „Hallo,  mal einige Dinge zu meiner Person:  Alter:    36J. Beruf:    Energieelektroniker Hobby&amp;#039;s:  Modellbau, Elektronik, Formel 1  ---- Projekte:  http://www.mik…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hallo,&lt;br /&gt;
&lt;br /&gt;
mal einige Dinge zu meiner Person:&lt;br /&gt;
&lt;br /&gt;
Alter:    36J.&lt;br /&gt;
Beruf:    Energieelektroniker&lt;br /&gt;
Hobby&#039;s:  Modellbau, Elektronik, Formel 1&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Projekte:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/articles/PIC18f4550_Experimentier_Platine&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31879</id>
		<title>PIC18f4550 Experimentier Platine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31879"/>
		<updated>2008-10-17T18:51:07Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: /* LCD Display betreiben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [[Benutzer:sascha_focus]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier stelle ich eine PIC18F USB Experimentierplatine vor. Benutzbar mit allen&lt;br /&gt;
PIC18F4550/4553 Typen (DIP40 Gehäuse)&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Spannungsversorgung über USB oder ext. Stromversorgung (über Jumper wählbar)&lt;br /&gt;
* USB Anschluß (über Jumper abschaltbar)&lt;br /&gt;
* Port&#039;s an 10pol. Wannenstecker herausgeführt incl. Versorgungsspannung&lt;br /&gt;
* LED&#039;s an Port RD0-3 (über Jumper abschaltbar)&lt;br /&gt;
* ISP Anschluss für PICKIT2/MPLAB ICD2&lt;br /&gt;
* Taster für Reset, Bootloader und einen zur freien Verfügung&lt;br /&gt;
&lt;br /&gt;
[[Bild:Boardbeschreibung.jpg]]&lt;br /&gt;
&lt;br /&gt;
Die Stromaufnahme bei aktiviertem Bootloader liegt bei knapp 40mA.&lt;br /&gt;
&lt;br /&gt;
== Schaltplan/Layout ==&lt;br /&gt;
[[Bild:PIC18F_Schaltplan.png]]&lt;br /&gt;
&lt;br /&gt;
Der Schaltplan als PDF&lt;br /&gt;
[[Media:PIC18F_USB_Schaltplan.pdf|Download]]&lt;br /&gt;
&lt;br /&gt;
Das Target V3001 Projekt&lt;br /&gt;
[[Media:PIC18F4550_BOARD.ZIP|Download]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bilder der fertig bestückten Platine==&lt;br /&gt;
=== Die Platine von der Bestückungsseite ===&lt;br /&gt;
[[Bild:PIC18F_Oberseite.JPG]]&lt;br /&gt;
=== Die Platine von der Lötseite ===&lt;br /&gt;
[[Bild:PIC18F_Unterseite.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Zur Zeite nutze ich:&lt;br /&gt;
&lt;br /&gt;
* MPLAB IDE V8.14&lt;br /&gt;
* MPLAB C Compiler for PIC18 MCUs V3.21 Student edition&lt;br /&gt;
* MCHPFSUSB Framework v2.3&lt;br /&gt;
&lt;br /&gt;
Alles bei Mircochip kostenlos zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Vor kurzem nutzte ich noch den Framwork V1.3. Da ich aber bei VISTA dauernd Treiberprobleme hatte, nutze ich jetzt den aktuellen HID Bootloader aus dem Framework v2.3.&lt;br /&gt;
&lt;br /&gt;
HID Bootloader Firmware&lt;br /&gt;
[[Media:HID_BOOTLOADER.zip‎|Download]]&lt;br /&gt;
&lt;br /&gt;
== Codebeispiele ==&lt;br /&gt;
Alle folgenden C Codebeispiele sind mit MPLAB/C18 von Microchip erstellt.&lt;br /&gt;
&lt;br /&gt;
=== Interrupt Vektor Remapping ===&lt;br /&gt;
Um Interrupt&#039;s zu nutzen, müßen diese bei der nutzung eines Bootloaders remapped werden. Bei dem HID Bootloader sieht es im Code so aus:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
/** V E C T O R  R E M A P P I N G *******************************************/&lt;br /&gt;
#pragma code&lt;br /&gt;
&lt;br /&gt;
extern void _startup (void);        // See c018i.c in your C18 compiler dir&lt;br /&gt;
#pragma code _RESET_INTERRUPT_VECTOR = 0x1000&lt;br /&gt;
void _reset (void)&lt;br /&gt;
{&lt;br /&gt;
    _asm goto _startup _endasm&lt;br /&gt;
}&lt;br /&gt;
#pragma code _HIGH_INTERRUPT_VECTOR = 0x1008&lt;br /&gt;
void _high_ISR (void)&lt;br /&gt;
{&lt;br /&gt;
        _asm goto high_isr _endasm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#pragma code _LOW_INTERRUPT_VECTOR = 0x1018&lt;br /&gt;
void _low_ISR (void)&lt;br /&gt;
{&lt;br /&gt;
    _asm goto low_isr _endasm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * Function:        void high_isr(void)&lt;br /&gt;
 *****************************************************************************/&lt;br /&gt;
#pragma interrupt high_isr&lt;br /&gt;
void high_isr(void)&lt;br /&gt;
{&lt;br /&gt;
// Hier kommt der Code für die Interrupt hin&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * Function:        void low_isr(void)&lt;br /&gt;
 *****************************************************************************/&lt;br /&gt;
#pragma interruptlow low_isr&lt;br /&gt;
void low_isr(void)&lt;br /&gt;
{&lt;br /&gt;
// Hier kommt der Code für die Interrupt hin&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LCD Display betreiben ===&lt;br /&gt;
&lt;br /&gt;
Hier ein kleines Beispiel zum ansteuern eines HD44780 kompatiblen LCD-Display&#039;s&lt;br /&gt;
im 4Bit Modus. Angeschloßen ist es an Port D. Der Jumper für die Led&#039;s kann&lt;br /&gt;
gesteckt bleiben. Erstell ist es mit dem Microchip Application Maestro.&lt;br /&gt;
Hinzugefügt habe ich die erforderlichen Delay Routinen. Getested mit einem &lt;br /&gt;
PC-1604A 16X4 Lcd-Display von Pollin.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung:&lt;br /&gt;
&lt;br /&gt;
#PIC Port D0 = LCD RS&lt;br /&gt;
#PIC Port D1 = LCD RW&lt;br /&gt;
#PIC Port D2 = LCD E&lt;br /&gt;
#PIC Port D4 = LCD D4&lt;br /&gt;
#PIC Port D5 = LCD D5&lt;br /&gt;
#PIC Port D6 = LCD D6&lt;br /&gt;
#PIC Port D7 = LCD D7&lt;br /&gt;
&lt;br /&gt;
[[Bild:PIC18F_LCD.JPG]]&lt;br /&gt;
&lt;br /&gt;
MPLAB Projekt LCD Display [[Media:P18F_USB_LCD.ZIP|Download]]&lt;br /&gt;
&lt;br /&gt;
weiteres folgt noch........&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
Teile sollten eigentlich in jedem &amp;quot;guten&amp;quot; Elektronikladen erhältlich sein &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_LCD.JPG&amp;diff=31878</id>
		<title>Datei:PIC18F LCD.JPG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_LCD.JPG&amp;diff=31878"/>
		<updated>2008-10-17T18:49:39Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: Zum Artikel PIC18f4550 Experimentier Platine&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zum Artikel PIC18f4550 Experimentier Platine&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31877</id>
		<title>PIC18f4550 Experimentier Platine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31877"/>
		<updated>2008-10-17T18:38:06Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [[Benutzer:sascha_focus]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier stelle ich eine PIC18F USB Experimentierplatine vor. Benutzbar mit allen&lt;br /&gt;
PIC18F4550/4553 Typen (DIP40 Gehäuse)&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Spannungsversorgung über USB oder ext. Stromversorgung (über Jumper wählbar)&lt;br /&gt;
* USB Anschluß (über Jumper abschaltbar)&lt;br /&gt;
* Port&#039;s an 10pol. Wannenstecker herausgeführt incl. Versorgungsspannung&lt;br /&gt;
* LED&#039;s an Port RD0-3 (über Jumper abschaltbar)&lt;br /&gt;
* ISP Anschluss für PICKIT2/MPLAB ICD2&lt;br /&gt;
* Taster für Reset, Bootloader und einen zur freien Verfügung&lt;br /&gt;
&lt;br /&gt;
[[Bild:Boardbeschreibung.jpg]]&lt;br /&gt;
&lt;br /&gt;
Die Stromaufnahme bei aktiviertem Bootloader liegt bei knapp 40mA.&lt;br /&gt;
&lt;br /&gt;
== Schaltplan/Layout ==&lt;br /&gt;
[[Bild:PIC18F_Schaltplan.png]]&lt;br /&gt;
&lt;br /&gt;
Der Schaltplan als PDF&lt;br /&gt;
[[Media:PIC18F_USB_Schaltplan.pdf|Download]]&lt;br /&gt;
&lt;br /&gt;
Das Target V3001 Projekt&lt;br /&gt;
[[Media:PIC18F4550_BOARD.ZIP|Download]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bilder der fertig bestückten Platine==&lt;br /&gt;
=== Die Platine von der Bestückungsseite ===&lt;br /&gt;
[[Bild:PIC18F_Oberseite.JPG]]&lt;br /&gt;
=== Die Platine von der Lötseite ===&lt;br /&gt;
[[Bild:PIC18F_Unterseite.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Zur Zeite nutze ich:&lt;br /&gt;
&lt;br /&gt;
* MPLAB IDE V8.14&lt;br /&gt;
* MPLAB C Compiler for PIC18 MCUs V3.21 Student edition&lt;br /&gt;
* MCHPFSUSB Framework v2.3&lt;br /&gt;
&lt;br /&gt;
Alles bei Mircochip kostenlos zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Vor kurzem nutzte ich noch den Framwork V1.3. Da ich aber bei VISTA dauernd Treiberprobleme hatte, nutze ich jetzt den aktuellen HID Bootloader aus dem Framework v2.3.&lt;br /&gt;
&lt;br /&gt;
HID Bootloader Firmware&lt;br /&gt;
[[Media:HID_BOOTLOADER.zip‎|Download]]&lt;br /&gt;
&lt;br /&gt;
== Codebeispiele ==&lt;br /&gt;
Alle folgenden C Codebeispiele sind mit MPLAB/C18 von Microchip erstellt.&lt;br /&gt;
&lt;br /&gt;
=== Interrupt Vektor Remapping ===&lt;br /&gt;
Um Interrupt&#039;s zu nutzen, müßen diese bei der nutzung eines Bootloaders remapped werden. Bei dem HID Bootloader sieht es im Code so aus:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
/** V E C T O R  R E M A P P I N G *******************************************/&lt;br /&gt;
#pragma code&lt;br /&gt;
&lt;br /&gt;
extern void _startup (void);        // See c018i.c in your C18 compiler dir&lt;br /&gt;
#pragma code _RESET_INTERRUPT_VECTOR = 0x1000&lt;br /&gt;
void _reset (void)&lt;br /&gt;
{&lt;br /&gt;
    _asm goto _startup _endasm&lt;br /&gt;
}&lt;br /&gt;
#pragma code _HIGH_INTERRUPT_VECTOR = 0x1008&lt;br /&gt;
void _high_ISR (void)&lt;br /&gt;
{&lt;br /&gt;
        _asm goto high_isr _endasm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#pragma code _LOW_INTERRUPT_VECTOR = 0x1018&lt;br /&gt;
void _low_ISR (void)&lt;br /&gt;
{&lt;br /&gt;
    _asm goto low_isr _endasm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * Function:        void high_isr(void)&lt;br /&gt;
 *****************************************************************************/&lt;br /&gt;
#pragma interrupt high_isr&lt;br /&gt;
void high_isr(void)&lt;br /&gt;
{&lt;br /&gt;
// Hier kommt der Code für die Interrupt hin&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * Function:        void low_isr(void)&lt;br /&gt;
 *****************************************************************************/&lt;br /&gt;
#pragma interruptlow low_isr&lt;br /&gt;
void low_isr(void)&lt;br /&gt;
{&lt;br /&gt;
// Hier kommt der Code für die Interrupt hin&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LCD Display betreiben ===&lt;br /&gt;
&lt;br /&gt;
Hier ein kleines Beispiel zum ansteuern eines HD44780 kompatiblen LCD-Display&#039;s&lt;br /&gt;
im 4Bit Modus. Angeschloßen ist es an Port D. Der Jumper für die Led&#039;s kann&lt;br /&gt;
gesteckt bleiben. Erstell ist es mit dem Microchip Application Maestro.&lt;br /&gt;
Hinzugefügt habe ich die erforderlichen Delay Routinen. Getested mit einem &lt;br /&gt;
PC-1604A 16X4 Lcd-Display von Pollin.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung:&lt;br /&gt;
&lt;br /&gt;
#PIC Port D0 = LCD RS&lt;br /&gt;
#PIC Port D1 = LCD RW&lt;br /&gt;
#PIC Port D2 = LCD E&lt;br /&gt;
#PIC Port D4 = LCD D4&lt;br /&gt;
#PIC Port D5 = LCD D5&lt;br /&gt;
#PIC Port D6 = LCD D6&lt;br /&gt;
#PIC Port D7 = LCD D7&lt;br /&gt;
&lt;br /&gt;
MPLAB Projekt LCD Display [[Media:P18F_USB_LCD.ZIP|Download]]&lt;br /&gt;
&lt;br /&gt;
weiteres folgt noch........&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
Teile sollten eigentlich in jedem &amp;quot;guten&amp;quot; Elektronikladen erhältlich sein &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31876</id>
		<title>PIC18f4550 Experimentier Platine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31876"/>
		<updated>2008-10-17T18:35:50Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: /* Codebeispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [[Benutzer:sascha_focus]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier stelle ich eine PIC18F USB Experimentierplatine vor. Benutzbar mit allen&lt;br /&gt;
PIC18F4550/4553 Typen (DIP40 Gehäuse)&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Spannungsversorgung über USB oder ext. Stromversorgung (über Jumper wählbar)&lt;br /&gt;
* USB Anschluß (über Jumper abschaltbar)&lt;br /&gt;
* Port&#039;s an 10pol. Wannenstecker herausgeführt incl. Versorgungsspannung&lt;br /&gt;
* LED&#039;s an Port RD0-3 (über Jumper abschaltbar)&lt;br /&gt;
* ISP Anschluss für PICKIT2/MPLAB ICD2&lt;br /&gt;
* Taster für Reset, Bootloader und einen zur freien Verfügung&lt;br /&gt;
&lt;br /&gt;
[[Bild:Boardbeschreibung.jpg]]&lt;br /&gt;
&lt;br /&gt;
Die Stromaufnahme bei aktiviertem Bootloader liegt bei knapp 40mA.&lt;br /&gt;
&lt;br /&gt;
== Schaltplan/Layout ==&lt;br /&gt;
[[Bild:PIC18F_Schaltplan.png]]&lt;br /&gt;
&lt;br /&gt;
Der Schaltplan als PDF&lt;br /&gt;
[[Media:PIC18F_USB_Schaltplan.pdf|Download]]&lt;br /&gt;
&lt;br /&gt;
Das Target V3001 Projekt&lt;br /&gt;
[[Media:PIC18F4550_BOARD.ZIP|Download]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bilder der fertig bestückten Platine==&lt;br /&gt;
=== Die Platine von der Bestückungsseite ===&lt;br /&gt;
[[Bild:PIC18F_Oberseite.JPG]]&lt;br /&gt;
=== Die Platine von der Lötseite ===&lt;br /&gt;
[[Bild:PIC18F_Unterseite.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Zur Zeite nutze ich:&lt;br /&gt;
&lt;br /&gt;
* MPLAB IDE V8.14&lt;br /&gt;
* MPLAB C Compiler for PIC18 MCUs V3.21 Student edition&lt;br /&gt;
* MCHPFSUSB Framework v2.3&lt;br /&gt;
&lt;br /&gt;
Alles bei Mircochip kostenlos zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Vor kurzem nutzte ich noch den Framwork V1.3. Da ich aber bei VISTA dauernd Treiberprobleme hatte, nutze ich jetzt den aktuellen HID Bootloader aus dem Framework v2.3.&lt;br /&gt;
&lt;br /&gt;
HID Bootloader Firmware&lt;br /&gt;
[[Media:HID_BOOTLOADER.zip‎|Download]]&lt;br /&gt;
&lt;br /&gt;
== Codebeispiele ==&lt;br /&gt;
=== Interrupt Vektor Remapping ===&lt;br /&gt;
Um Interrupt&#039;s zu nutzen, müßen diese bei der nutzung eines Bootloaders remapped werden. Bei dem HID Bootloader sieht es im Code so aus:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
/** V E C T O R  R E M A P P I N G *******************************************/&lt;br /&gt;
#pragma code&lt;br /&gt;
&lt;br /&gt;
extern void _startup (void);        // See c018i.c in your C18 compiler dir&lt;br /&gt;
#pragma code _RESET_INTERRUPT_VECTOR = 0x1000&lt;br /&gt;
void _reset (void)&lt;br /&gt;
{&lt;br /&gt;
    _asm goto _startup _endasm&lt;br /&gt;
}&lt;br /&gt;
#pragma code _HIGH_INTERRUPT_VECTOR = 0x1008&lt;br /&gt;
void _high_ISR (void)&lt;br /&gt;
{&lt;br /&gt;
        _asm goto high_isr _endasm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#pragma code _LOW_INTERRUPT_VECTOR = 0x1018&lt;br /&gt;
void _low_ISR (void)&lt;br /&gt;
{&lt;br /&gt;
    _asm goto low_isr _endasm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * Function:        void high_isr(void)&lt;br /&gt;
 *****************************************************************************/&lt;br /&gt;
#pragma interrupt high_isr&lt;br /&gt;
void high_isr(void)&lt;br /&gt;
{&lt;br /&gt;
// Hier kommt der Code für die Interrupt hin&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * Function:        void low_isr(void)&lt;br /&gt;
 *****************************************************************************/&lt;br /&gt;
#pragma interruptlow low_isr&lt;br /&gt;
void low_isr(void)&lt;br /&gt;
{&lt;br /&gt;
// Hier kommt der Code für die Interrupt hin&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LCD Display betreiben ===&lt;br /&gt;
&lt;br /&gt;
Hier ein kleines Beispiel zum ansteuern eines HD44780 kompatiblen LCD-Display&#039;s&lt;br /&gt;
im 4Bit Modus. Angeschloßen ist es an Port D. Der Jumper für die Led&#039;s kann&lt;br /&gt;
gesteckt bleiben. Erstell ist es mit dem Microchip Application Maestro.&lt;br /&gt;
Hinzugefügt habe ich die erforderlichen Delay Routinen. Getested mit einem &lt;br /&gt;
PC-1604A 16X4 Lcd-Display von Pollin.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung:&lt;br /&gt;
&lt;br /&gt;
#PIC Port D0 = LCD RS&lt;br /&gt;
#PIC Port D1 = LCD RW&lt;br /&gt;
#PIC Port D2 = LCD E&lt;br /&gt;
#PIC Port D4 = LCD D4&lt;br /&gt;
#PIC Port D5 = LCD D5&lt;br /&gt;
#PIC Port D6 = LCD D6&lt;br /&gt;
#PIC Port D7 = LCD D7&lt;br /&gt;
&lt;br /&gt;
MPLAB Projekt LCD Display [[Media:P18F_USB_LCD.ZIP|Download]]&lt;br /&gt;
&lt;br /&gt;
weiteres folgt noch........&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
Teile sollten eigentlich in jedem &amp;quot;guten&amp;quot; Elektronikladen erhältlich sein &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:P18F_USB_LCD.ZIP&amp;diff=31875</id>
		<title>Datei:P18F USB LCD.ZIP</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:P18F_USB_LCD.ZIP&amp;diff=31875"/>
		<updated>2008-10-17T18:25:23Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31845</id>
		<title>PIC18f4550 Experimentier Platine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31845"/>
		<updated>2008-10-15T09:53:29Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: /* Interrupt Vektor Remapping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [[Benutzer:sascha_focus]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier stelle ich eine PIC18F USB Experimentierplatine vor. Benutzbar mit allen&lt;br /&gt;
PIC18F4550/4553 Typen (DIP40 Gehäuse)&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Spannungsversorgung über USB oder ext. Stromversorgung (über Jumper wählbar)&lt;br /&gt;
* USB Anschluß (über Jumper abschaltbar)&lt;br /&gt;
* Port&#039;s an 10pol. Wannenstecker herausgeführt incl. Versorgungsspannung&lt;br /&gt;
* LED&#039;s an Port RD0-3 (über Jumper abschaltbar)&lt;br /&gt;
* ISP Anschluss für PICKIT2/MPLAB ICD2&lt;br /&gt;
* Taster für Reset, Bootloader und einen zur freien Verfügung&lt;br /&gt;
&lt;br /&gt;
[[Bild:Boardbeschreibung.jpg]]&lt;br /&gt;
&lt;br /&gt;
Die Stromaufnahme bei aktiviertem Bootloader liegt bei knapp 40mA.&lt;br /&gt;
&lt;br /&gt;
== Schaltplan/Layout ==&lt;br /&gt;
[[Bild:PIC18F_Schaltplan.png]]&lt;br /&gt;
&lt;br /&gt;
Der Schaltplan als PDF&lt;br /&gt;
[[Media:PIC18F_USB_Schaltplan.pdf|Download]]&lt;br /&gt;
&lt;br /&gt;
Das Target V3001 Projekt&lt;br /&gt;
[[Media:PIC18F4550_BOARD.ZIP|Download]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bilder der fertig bestückten Platine==&lt;br /&gt;
=== Die Platine von der Bestückungsseite ===&lt;br /&gt;
[[Bild:PIC18F_Oberseite.JPG]]&lt;br /&gt;
=== Die Platine von der Lötseite ===&lt;br /&gt;
[[Bild:PIC18F_Unterseite.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Zur Zeite nutze ich:&lt;br /&gt;
&lt;br /&gt;
* MPLAB IDE V8.14&lt;br /&gt;
* MPLAB C Compiler for PIC18 MCUs V3.21 Student edition&lt;br /&gt;
* MCHPFSUSB Framework v2.3&lt;br /&gt;
&lt;br /&gt;
Alles bei Mircochip kostenlos zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Vor kurzem nutzte ich noch den Framwork V1.3. Da ich aber bei VISTA dauernd Treiberprobleme hatte, nutze ich jetzt den aktuellen HID Bootloader aus dem Framework v2.3.&lt;br /&gt;
&lt;br /&gt;
HID Bootloader Firmware&lt;br /&gt;
[[Media:HID_BOOTLOADER.zip‎|Download]]&lt;br /&gt;
&lt;br /&gt;
== Codebeispiele ==&lt;br /&gt;
=== Interrupt Vektor Remapping ===&lt;br /&gt;
Um Interrupt&#039;s zu nutzen, müßen diese bei der nutzung eines Bootloaders remapped werden. Bei dem HID Bootloader sieht es im Code so aus:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
/** V E C T O R  R E M A P P I N G *******************************************/&lt;br /&gt;
#pragma code&lt;br /&gt;
&lt;br /&gt;
extern void _startup (void);        // See c018i.c in your C18 compiler dir&lt;br /&gt;
#pragma code _RESET_INTERRUPT_VECTOR = 0x1000&lt;br /&gt;
void _reset (void)&lt;br /&gt;
{&lt;br /&gt;
    _asm goto _startup _endasm&lt;br /&gt;
}&lt;br /&gt;
#pragma code _HIGH_INTERRUPT_VECTOR = 0x1008&lt;br /&gt;
void _high_ISR (void)&lt;br /&gt;
{&lt;br /&gt;
        _asm goto high_isr _endasm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#pragma code _LOW_INTERRUPT_VECTOR = 0x1018&lt;br /&gt;
void _low_ISR (void)&lt;br /&gt;
{&lt;br /&gt;
    _asm goto low_isr _endasm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * Function:        void high_isr(void)&lt;br /&gt;
 *****************************************************************************/&lt;br /&gt;
#pragma interrupt high_isr&lt;br /&gt;
void high_isr(void)&lt;br /&gt;
{&lt;br /&gt;
// Hier kommt der Code für die Interrupt hin&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * Function:        void low_isr(void)&lt;br /&gt;
 *****************************************************************************/&lt;br /&gt;
#pragma interruptlow low_isr&lt;br /&gt;
void low_isr(void)&lt;br /&gt;
{&lt;br /&gt;
// Hier kommt der Code für die Interrupt hin&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
weiteres folgt noch........&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
Teile sollten eigentlich in jedem &amp;quot;guten&amp;quot; Elektronikladen erhältlich sein &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31844</id>
		<title>PIC18f4550 Experimentier Platine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31844"/>
		<updated>2008-10-15T09:43:58Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [[Benutzer:sascha_focus]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier stelle ich eine PIC18F USB Experimentierplatine vor. Benutzbar mit allen&lt;br /&gt;
PIC18F4550/4553 Typen (DIP40 Gehäuse)&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Spannungsversorgung über USB oder ext. Stromversorgung (über Jumper wählbar)&lt;br /&gt;
* USB Anschluß (über Jumper abschaltbar)&lt;br /&gt;
* Port&#039;s an 10pol. Wannenstecker herausgeführt incl. Versorgungsspannung&lt;br /&gt;
* LED&#039;s an Port RD0-3 (über Jumper abschaltbar)&lt;br /&gt;
* ISP Anschluss für PICKIT2/MPLAB ICD2&lt;br /&gt;
* Taster für Reset, Bootloader und einen zur freien Verfügung&lt;br /&gt;
&lt;br /&gt;
[[Bild:Boardbeschreibung.jpg]]&lt;br /&gt;
&lt;br /&gt;
Die Stromaufnahme bei aktiviertem Bootloader liegt bei knapp 40mA.&lt;br /&gt;
&lt;br /&gt;
== Schaltplan/Layout ==&lt;br /&gt;
[[Bild:PIC18F_Schaltplan.png]]&lt;br /&gt;
&lt;br /&gt;
Der Schaltplan als PDF&lt;br /&gt;
[[Media:PIC18F_USB_Schaltplan.pdf|Download]]&lt;br /&gt;
&lt;br /&gt;
Das Target V3001 Projekt&lt;br /&gt;
[[Media:PIC18F4550_BOARD.ZIP|Download]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bilder der fertig bestückten Platine==&lt;br /&gt;
=== Die Platine von der Bestückungsseite ===&lt;br /&gt;
[[Bild:PIC18F_Oberseite.JPG]]&lt;br /&gt;
=== Die Platine von der Lötseite ===&lt;br /&gt;
[[Bild:PIC18F_Unterseite.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Zur Zeite nutze ich:&lt;br /&gt;
&lt;br /&gt;
* MPLAB IDE V8.14&lt;br /&gt;
* MPLAB C Compiler for PIC18 MCUs V3.21 Student edition&lt;br /&gt;
* MCHPFSUSB Framework v2.3&lt;br /&gt;
&lt;br /&gt;
Alles bei Mircochip kostenlos zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Vor kurzem nutzte ich noch den Framwork V1.3. Da ich aber bei VISTA dauernd Treiberprobleme hatte, nutze ich jetzt den aktuellen HID Bootloader aus dem Framework v2.3.&lt;br /&gt;
&lt;br /&gt;
HID Bootloader Firmware&lt;br /&gt;
[[Media:HID_BOOTLOADER.zip‎|Download]]&lt;br /&gt;
&lt;br /&gt;
== Codebeispiele ==&lt;br /&gt;
=== Interrupt Vektor Remapping ===&lt;br /&gt;
Um Interrupt&#039;s zu nutzen, müßen diese bei der nutzung eines Bootloaders remapped werden. Bei dem HID Bootloader sieht es im Code so aus:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
/** V E C T O R  R E M A P P I N G *******************************************/&lt;br /&gt;
#pragma code&lt;br /&gt;
&lt;br /&gt;
extern void _startup (void);        // See c018i.c in your C18 compiler dir&lt;br /&gt;
#pragma code _RESET_INTERRUPT_VECTOR = 0x1000&lt;br /&gt;
void _reset (void)&lt;br /&gt;
{&lt;br /&gt;
    _asm goto _startup _endasm&lt;br /&gt;
}&lt;br /&gt;
#pragma code _HIGH_INTERRUPT_VECTOR = 0x1008&lt;br /&gt;
void _high_ISR (void)&lt;br /&gt;
{&lt;br /&gt;
        _asm goto high_isr _endasm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#pragma code _LOW_INTERRUPT_VECTOR = 0x1018&lt;br /&gt;
void _low_ISR (void)&lt;br /&gt;
{&lt;br /&gt;
    _asm goto low_isr _endasm&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
weiteres folgt noch........&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
Teile sollten eigentlich in jedem &amp;quot;guten&amp;quot; Elektronikladen erhältlich sein &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31680</id>
		<title>PIC18f4550 Experimentier Platine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31680"/>
		<updated>2008-10-05T11:11:47Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [[Benutzer:sascha_focus]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier stelle ich eine PIC18F USB Experimentierplatine vor. Benutzbar mit allen&lt;br /&gt;
PIC18F4550/4553 Typen (DIP40 Gehäuse)&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Spannungsversorgung über USB oder ext. Stromversorgung (über Jumper wählbar)&lt;br /&gt;
* USB Anschluß (über Jumper abschaltbar)&lt;br /&gt;
* Port&#039;s an 10pol. Wannenstecker herausgeführt incl. Versorgungsspannung&lt;br /&gt;
* LED&#039;s an Port RD0-3 (über Jumper abschaltbar)&lt;br /&gt;
* ISP Anschluss für PICKIT2/MPLAB ICD2&lt;br /&gt;
* Taster für Reset, Bootloader und einen zur freien Verfügung&lt;br /&gt;
&lt;br /&gt;
[[Bild:Boardbeschreibung.jpg]]&lt;br /&gt;
&lt;br /&gt;
Die Stromaufnahme bei aktiviertem Bootloader liegt bei knapp 40mA.&lt;br /&gt;
&lt;br /&gt;
== Schaltplan/Layout ==&lt;br /&gt;
[[Bild:PIC18F_Schaltplan.png]]&lt;br /&gt;
&lt;br /&gt;
Der Schaltplan als PDF&lt;br /&gt;
[[Media:PIC18F_USB_Schaltplan.pdf|Download]]&lt;br /&gt;
&lt;br /&gt;
Das Target V3001 Projekt&lt;br /&gt;
[[Media:PIC18F4550_BOARD.ZIP|Download]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bilder der fertig bestückten Platine==&lt;br /&gt;
=== Die Platine von der Bestückungsseite ===&lt;br /&gt;
[[Bild:PIC18F_Oberseite.JPG]]&lt;br /&gt;
=== Die Platine von der Lötseite ===&lt;br /&gt;
[[Bild:PIC18F_Unterseite.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Zur Zeite nutze ich:&lt;br /&gt;
&lt;br /&gt;
* MPLAB IDE V8.14&lt;br /&gt;
* MPLAB C Compiler for PIC18 MCUs V3.21 Student edition&lt;br /&gt;
* MCHPFSUSB Framework v2.3&lt;br /&gt;
&lt;br /&gt;
Alles bei Mircochip kostenlos zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Vor kurzem nutzte ich noch den Framwork V1.3. Da ich aber bei VISTA dauernd Treiberprobleme hatte, nutze ich jetzt den aktuellen HID Bootloader.&lt;br /&gt;
&lt;br /&gt;
HID Bootloader Firmware&lt;br /&gt;
[[Media:HID_BOOTLOADER.zip‎|Download]]&lt;br /&gt;
&lt;br /&gt;
== Codebeispiele ==&lt;br /&gt;
folgt noch........&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
Teile sollten eigentlich in jedem &amp;quot;guten&amp;quot; Elektronikladen erhältlich sein &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31679</id>
		<title>PIC18f4550 Experimentier Platine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31679"/>
		<updated>2008-10-05T11:09:12Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [[Benutzer:sascha_focus]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier stelle ich eine PIC18F USB Experimentierplatine vor. Benutzbar mit allen&lt;br /&gt;
PIC18F4550/4553 Typen (DIP40 Gehäuse)&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Spannungsversorgung über USB oder ext. Stromversorgung (über Jumper wählbar)&lt;br /&gt;
* USB Anschluß (über Jumper abschaltbar)&lt;br /&gt;
* Port&#039;s an 10pol. Wannenstecker herausgeführt incl. Versorgungsspannung&lt;br /&gt;
* LED&#039;s an Port RD0-3 (über Jumper abschaltbar)&lt;br /&gt;
* ISP Anschluss für PICKIT2/MPLAB ICD2&lt;br /&gt;
* Taster für Reset, Bootloader und einen zur freien Verfügung&lt;br /&gt;
&lt;br /&gt;
[[Bild:Boardbeschreibung.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Schaltplan/Layout ==&lt;br /&gt;
[[Bild:PIC18F_Schaltplan.png]]&lt;br /&gt;
&lt;br /&gt;
Der Schaltplan als PDF&lt;br /&gt;
[[Media:PIC18F_USB_Schaltplan.pdf|Download]]&lt;br /&gt;
&lt;br /&gt;
Das Target V3001 Projekt&lt;br /&gt;
[[Media:PIC18F4550_BOARD.ZIP|Download]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bilder der fertig bestückten Platine==&lt;br /&gt;
=== Die Platine von der Bestückungsseite ===&lt;br /&gt;
[[Bild:PIC18F_Oberseite.JPG]]&lt;br /&gt;
=== Die Platine von der Lötseite ===&lt;br /&gt;
[[Bild:PIC18F_Unterseite.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Zur Zeite nutze ich:&lt;br /&gt;
&lt;br /&gt;
* MPLAB IDE V8.14&lt;br /&gt;
* MPLAB C Compiler for PIC18 MCUs V3.21 Student edition&lt;br /&gt;
* MCHPFSUSB Framework v2.3&lt;br /&gt;
&lt;br /&gt;
Alles bei Mircochip kostenlos zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Vor kurzem nutzte ich noch den Framwork V1.3. Da ich aber bei VISTA dauernd Treiberprobleme hatte, nutze ich jetzt den aktuellen HID Bootloader.&lt;br /&gt;
&lt;br /&gt;
HID Bootloader Firmware&lt;br /&gt;
[[Media:HID_BOOTLOADER.zip‎|Download]]&lt;br /&gt;
&lt;br /&gt;
== Codebeispiele ==&lt;br /&gt;
folgt noch........&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
Teile sollten eigentlich in jedem &amp;quot;guten&amp;quot; Elektronikladen erhältlich sein &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31678</id>
		<title>PIC18f4550 Experimentier Platine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31678"/>
		<updated>2008-10-05T11:08:17Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [[Benutzer:sascha_focus]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier stelle ich eine PIC18F USB Experimentierplatine vor. Benutzbar mit allen&lt;br /&gt;
PIC18F4550/4553 Typen (DIP40 Gehäuse)&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Spannungsversorgung über USB oder ext. Stromversorgung (über Jumper wählbar)&lt;br /&gt;
* USB Anschluß (über Jumper abschaltbar)&lt;br /&gt;
* Port&#039;s an 10pol. Wannenstecker herausgeführt incl. Versorgungsspannung&lt;br /&gt;
* LED&#039;s an Port RD0-3 (über Jumper abschaltbar)&lt;br /&gt;
* ISP Anschluss für PICKIT2/MPLAB ICD2&lt;br /&gt;
* Taster für Reset, Bootloader und einen zur freien Verfügung&lt;br /&gt;
&lt;br /&gt;
[[Bild:Boardbeschreibung.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Schaltplan/Layout ==&lt;br /&gt;
[[Bild:PIC18F_Schaltplan.png]]&lt;br /&gt;
&lt;br /&gt;
Der Schaltplan als PDF&lt;br /&gt;
[[Media:PIC18F_USB_Schaltplan.pdf|Download]]&lt;br /&gt;
&lt;br /&gt;
Das Target V3001 Projekt&lt;br /&gt;
[[Media:PIC18F4550_BOARD.ZIP|Download]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bilder der fertig bestückten Platine==&lt;br /&gt;
=== Die Platine von der Bestückungsseite ===&lt;br /&gt;
[[Bild:PIC18F_Oberseite.JPG]]&lt;br /&gt;
=== Die Platine von der Lötseite ===&lt;br /&gt;
[[Bild:PIC18F_Unterseite.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Zur Zeite nutze ich:&lt;br /&gt;
&lt;br /&gt;
* MPLAB IDE V8.14&lt;br /&gt;
* MPLAB C Compiler for PIC18 MCUs  V3.21&lt;br /&gt;
* MCHPFSUSB Framework v2.3&lt;br /&gt;
&lt;br /&gt;
Vor kurzem nutzte ich noch den Framwork V1.3. Da ich aber bei VISTA dauernd Treiberprobleme hatte, nutze ich jetzt den aktuellen HID Bootloader.&lt;br /&gt;
&lt;br /&gt;
HID Bootloader Firmware&lt;br /&gt;
[[Media:HID_BOOTLOADER.zip‎|Download]]&lt;br /&gt;
&lt;br /&gt;
== Codebeispiele ==&lt;br /&gt;
folgt noch........&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
Teile sollten eigentlich in jedem &amp;quot;guten&amp;quot; Elektronikladen erhältlich sein &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:HID_BOOTLOADER.zip&amp;diff=31677</id>
		<title>Datei:HID BOOTLOADER.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:HID_BOOTLOADER.zip&amp;diff=31677"/>
		<updated>2008-10-05T11:05:54Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31673</id>
		<title>PIC18f4550 Experimentier Platine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31673"/>
		<updated>2008-10-05T09:31:54Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [[Benutzer:sascha_focus]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier stelle ich eine PIC18F USB Experimentierplatine vor. Benutzbar mit allen&lt;br /&gt;
PIC18F4550/4553 Typen (DIP40 Gehäuse)&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Spannungsversorgung über USB oder ext. Stromversorgung (über Jumper wählbar)&lt;br /&gt;
* USB Anschluß (über Jumper abschaltbar)&lt;br /&gt;
* Port&#039;s an 10pol. Wannenstecker herausgeführt incl. Versorgungsspannung&lt;br /&gt;
* LED&#039;s an Port RD0-3 (über Jumper abschaltbar)&lt;br /&gt;
* ISP Anschluss für PICKIT2/MPLAB ICD2&lt;br /&gt;
* Taster für Reset, Bootloader und einen zur freien Verfügung&lt;br /&gt;
&lt;br /&gt;
[[Bild:Boardbeschreibung.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Schaltplan/Layout ==&lt;br /&gt;
[[Bild:PIC18F_Schaltplan.png]]&lt;br /&gt;
&lt;br /&gt;
Der Schaltplan als PDF&lt;br /&gt;
[[Media:PIC18F_USB_Schaltplan.pdf|Download]]&lt;br /&gt;
&lt;br /&gt;
Das Target V3001 Projekt&lt;br /&gt;
[[Media:PIC18F4550_BOARD.ZIP|Download]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bilder der fertig bestückten Platine==&lt;br /&gt;
=== Die Platine von der Bestückungsseite ===&lt;br /&gt;
[[Bild:PIC18F_Oberseite.JPG]]&lt;br /&gt;
=== Die Platine von der Lötseite ===&lt;br /&gt;
[[Bild:PIC18F_Unterseite.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
folgt noch........&lt;br /&gt;
&lt;br /&gt;
== Codebeispiele ==&lt;br /&gt;
folgt noch........&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
Teile sollten eigentlich in jedem &amp;quot;guten&amp;quot; Elektronikladen erhältlich sein &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31672</id>
		<title>PIC18f4550 Experimentier Platine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC18f4550_Experimentier_Platine&amp;diff=31672"/>
		<updated>2008-10-05T09:30:14Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: Die Seite wurde neu angelegt: &amp;#039;&amp;#039;von Benutzer:sascha_focus&amp;#039;&amp;#039;  Hier stelle ich eine PIC18F USB Experimentierplatine vor. Benutzbar mit allen PIC18F4550/4553 Typen (DIP40 Gehäuse)  == Features == ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [[Benutzer:sascha_focus]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier stelle ich eine PIC18F USB Experimentierplatine vor. Benutzbar mit allen&lt;br /&gt;
PIC18F4550/4553 Typen (DIP40 Gehäuse)&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Spannungsversorgung über USB oder ext. Stromversorgung (über Jumper wählbar)&lt;br /&gt;
* USB Anschluß (über Jumper abschaltbar)&lt;br /&gt;
* Port&#039;s an 10pol. Wannenstecker herausgeführt incl. Versorgungsspannung&lt;br /&gt;
* LED&#039;s an Port RD0-3 (über Jumper abschaltbar)&lt;br /&gt;
* ISP Anschluss für PICKIT2/MPLAB ICD2&lt;br /&gt;
* Taster für Reset, Bootloader und einen zur freien Verfügung&lt;br /&gt;
&lt;br /&gt;
[[Bild:Boardbeschreibung.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Schaltplan/Layout ==&lt;br /&gt;
[[Bild:PIC18F_Schaltplan.png]]&lt;br /&gt;
&lt;br /&gt;
Der Schaltplan als PDF&lt;br /&gt;
[[Media:PIC18F_USB_Schaltplan.pdf|Download]]&lt;br /&gt;
&lt;br /&gt;
Das Target V3001 Projekt&lt;br /&gt;
[[Media:PIC18F4550_BOARD.ZIP|Download]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bilder der fertig bestückten Platine==&lt;br /&gt;
=== Die Platine von der Bestückungsseite ===&lt;br /&gt;
[[Bild:PIC18F_Oberseite.JPG]]&lt;br /&gt;
=== Die Platine von der Lötseite ===&lt;br /&gt;
[[Bild:PIC18F_Unterseite.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
== Codebeispiele ==&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
Teile sollten eigentlich in jedem &amp;quot;guten&amp;quot; Elektronikladen erhältlich sein &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Boardbeschreibung.jpg&amp;diff=31671</id>
		<title>Datei:Boardbeschreibung.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Boardbeschreibung.jpg&amp;diff=31671"/>
		<updated>2008-10-05T09:29:58Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: hat eine neue Version von „Bild:Boardbeschreibung.jpg“ hochgeladen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_Oberseite.JPG&amp;diff=31670</id>
		<title>Datei:PIC18F Oberseite.JPG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_Oberseite.JPG&amp;diff=31670"/>
		<updated>2008-10-05T09:18:12Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: hat eine neue Version von „Bild:PIC18F Oberseite.JPG“ hochgeladen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_Unterseite.JPG&amp;diff=31669</id>
		<title>Datei:PIC18F Unterseite.JPG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_Unterseite.JPG&amp;diff=31669"/>
		<updated>2008-10-05T09:17:49Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: hat eine neue Version von „Bild:PIC18F Unterseite.JPG“ hochgeladen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_Unterseite.JPG&amp;diff=31668</id>
		<title>Datei:PIC18F Unterseite.JPG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_Unterseite.JPG&amp;diff=31668"/>
		<updated>2008-10-05T09:15:03Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_Oberseite.JPG&amp;diff=31667</id>
		<title>Datei:PIC18F Oberseite.JPG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_Oberseite.JPG&amp;diff=31667"/>
		<updated>2008-10-05T09:14:01Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_Schaltplan.png&amp;diff=31666</id>
		<title>Datei:PIC18F Schaltplan.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_Schaltplan.png&amp;diff=31666"/>
		<updated>2008-10-05T09:10:31Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_USB_Schaltplan.pdf&amp;diff=31665</id>
		<title>Datei:PIC18F USB Schaltplan.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_USB_Schaltplan.pdf&amp;diff=31665"/>
		<updated>2008-10-05T09:07:00Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_USB_Schaltplan.png&amp;diff=31664</id>
		<title>Datei:PIC18F USB Schaltplan.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:PIC18F_USB_Schaltplan.png&amp;diff=31664"/>
		<updated>2008-10-05T09:00:31Z</updated>

		<summary type="html">&lt;p&gt;Sascha focus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sascha focus</name></author>
	</entry>
</feed>