|
|
(65 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
− | == vorgeschlagene Gliederung ==
| |
| | | |
− | <span style="color:green;">grün = schon fertig</span>, <span style="color:orange;">orange = wird bzw. könnte noch ergänzt werden</span>
| |
| | | |
− | * <span style="color:green;">Einladung zur Diskussion...</span>
| + | == Befehlsausführung == |
− | (wird nach Beendigung des Artikels gelöscht)
| + | |
− | * <span style="color:green;">Einführung</span>
| + | |
− | ** <span style="color:green;">Bit, Byte, Nibble, Bin und Hex </span>
| + | |
− | ** <span style="color:green;">Speicher und Register </span>
| + | |
− | ** <span style="color:green;">Prozessor</span>
| + | |
− | ** <span style="color:green;">Assembler</span>
| + | |
− | ** <span style="color:green;">Grundbeschaltung</span>
| + | |
− | ** <span style="color:green;">Wahl des PICs</span>
| + | |
− | * Programm
| + | |
− | ** <span style="color:green;">Allgemeines</span>
| + | |
− | ** <span style="color:green;">Programdurchlaufdiagram</span>
| + | |
− | ** <span style="color:green;">Hauptprogramm</span>
| + | |
− | ** <span style="color:green;">Unterprogramm</span>
| + | |
− | *** <span style="color:green;">Initialisierung</span>
| + | |
− | **** <span style="color:green;">Variablen</span>
| + | |
− | **** <span style="color:green;">I/O Ports</span>
| + | |
− | **** <span style="color:green;">Hardware</span>
| + | |
− | *** <span style="color:green;">Einlesen</span>
| + | |
− | *** <span style="color:green;">Ausgeben</span>
| + | |
− | *** <span style="color:green;">Pause</span>
| + | |
− | *** <span style="color:green;">Schnittstellen und Treiber</span>
| + | |
− | *** <span style="color:green;">Tabellen</span>
| + | |
− | *** <span style="color:green;">EEPROM</span>
| + | |
− | * <span style="color:green;">Vorlage für MPASM</span>
| + | |
− | * <span style="color:green;">Für anderen PIC umschreiben</span>
| + | |
− | * <span style="color:orange;">Das erste...</span>
| + | |
− | * Interrupts
| + | |
− | ** Prinzip
| + | |
− | ** Quellen
| + | |
− | ** Interrupt Service Routine
| + | |
− | * Optimierung
| + | |
− | ** Speicherbedarf
| + | |
− | *** Programmspeicher
| + | |
− | *** RAM
| + | |
− | ** Ausführungszeit
| + | |
− | * Fehlersuche
| + | |
− | * Mid-Range (mit 14 bit Befehlslänge)
| + | |
− | ** <span style="color:green;">Kurzübersicht Prozessorbefehle</span>
| + | |
− | ** <span style="color:green;">Ausführliche Beschreibung zu den Befehlen</span>
| + | |
− | ** Besondere, oft gebrauchte Register
| + | |
− | *** ANSEL
| + | |
− | *** <span style="color:green;"> STATUS </SPAN>
| + | |
− | *** <span style="color:green;"> INTCON </SPAN>
| + | |
− | *** <span style="color:green;"> TRIS </SPAN>
| + | |
− | *** <span style="color:green;"> PORT </SPAN>
| + | |
− | *** TIMER
| + | |
− | ** <span style="color:green;">Bänke (sowohl die bei mehr als 2k Befehle als auch die bei den normalen speicher bänken)</span>
| + | |
− | ** <span style="color:green;">Flagsüberprüfung im STATUS-Register</span>
| + | |
− | ** Codeschnipsel
| + | |
− | *** A/D-Wandler
| + | |
− | *** PWM
| + | |
− | *** Interrupts
| + | |
− | *** RS232 mit PC
| + | |
− | *** Tasten
| + | |
− | *** Mausrad
| + | |
− | *** Ausgabe auf LCD Displays
| + | |
− | **** Dot-Matrix
| + | |
− | **** Grafik
| + | |
− | **** Handy
| + | |
− | *** Hilfsmittel
| + | |
− | **** PIC Miniterminal (mit Dot-Matrix LCD und drei Tasten, benötigt nur 2 I/O Pins und 2 ICs)(Hardware)
| + | |
− | **** PIC RAM Monitor (mit eigenem Interrupt, zeigt Registerinhalte sogar wenn das Programm in endloser Schleife läuft, was besonders für Anfänger nutzlich ist, benötigt Display oder PIC Miniterminal)
| + | |
− | **** PIC Trainer (Hilfswerkzeug für PIC Versuchsprogramme, benötigt PIC Miniterminal)
| + | |
− | **** PIC Profiler (zum messen von Ausführungszeit zwischen call und return, benötigt Display oder PIC Miniterminal)
| + | |
− | * High-End (mit 16 bit Befehlslänge)-->(?)
| + | |
| | | |
− | == Allgemeines ==
| + | Ich kann mir nicht vorstellen, dass der PIC (also PIC10...18) pipelined arbeitet, also wirklich bis zu 4 Befehle quasi gleichzeitig. So gut kenne ich die PICs nicht, aber soweit ich weiss wirklich 4 Oszillator Takte = 1 Rechentakt für einen Befehl, und erst danach kommt der nächste Befehl.--Besserwessi 13:17, 10. Dez 2013 (CET) |
− | -------
| + | |
− | ... gelöschte Diskussion ...
| + | |
− | ----
| + | |
− | joa. passt doch. ich mach dir dann wieder paar bilder. mal schaun ob ich es heute noch schaffe. [[Benutzer:Benedikt.Seidl|Benedikt.Seidl]] 08:52, 1. Apr 2007 (CEST)
| + | |
− | -----
| + | |
− | Vielen Dank im voraus!:) Wenn Du die drei Symbole die im PAD auftreten einzeln kopieren kannst, müsste es ziemlich schnell gehen. Nach der neuer Gliederung müsste ich jetzt über Quellcode schreiben, also schon (aber nur) "call" und "goto" einführen. Sonst werde ich alles im Textform (Kommentar) schreiben. Ich meine, dass es unvermeindbar ist, weil irgendwan es sowieso anfangen wird. Ich habe noch eine Frage an Dich. Würdest Du die MPASM Direktiven erklären, die ich von "deinem" in "mein" Teil verschoben habe?[[Benutzer:PICture|PICture]] 09:33, 1. Apr 2007 (CEST)
| + | |
− | -----
| + | |
− | wie meinst du? ich mache halt noch eine erklärung für alle befehle, brauche nur noch bisschen zeit, werde heute leider nicht dazukommen, da ich unterwegs bin :-/ aber in absehbarer zeit werde ich auch noch die anderen befehle beschreiben, und dann mir ein neues thema suchen ;-) [[Benutzer:Benedikt.Seidl|Benedikt.Seidl]] 18:54, 1. Apr 2007 (CEST)
| + | |
− | ------
| + | |
− | Es hat sich schon erledigt. Ich habe es als unnötig gestuft und gelöscht. Ab jetzt wird ganz einfache Darstellung von PADs verwendet und es bleibt nur einer in Grafik zu verwandeln (PAD). Die alle anderen (PAD1, PAD2, PAD3, PAD4, und die noch kommen...) bleiben so, wie sie sind/werden. Und weiter würdest Du (hoffentlich) nichts mehr für mich zu tun haben. :)[[Benutzer:PICture|PICture]] 00:12, 2. Apr 2007 (CEST)
| + | |
− | ------
| + | |
− | jetzt wollte ich mir ein neues thema raussuchen, was ich noch schreiben könnte, aber muss irgendwie zugeben, dass ich mit den befehlen schon mit meinem latein am ende bin :-/ also ich könnte schon bisschen was schreiben, aber so richtig sicher bin ich mir dabei dann nicht immer. [[Benutzer:Benedikt.Seidl|Benedikt.Seidl]] 12:25, 5. Apr 2007 (CEST)
| + | |
− | ------
| + | |
− | Macht ja nichts. Wir arbeiten an dem Artikel bis zum Ende zusammen. Du hast mir schon viel geholfen, dann helfe ich Dir auch immer wieder. Ich versuche möglichst kurz das wichtigste schreiben, aber weiss ich selber nicht, ob das verständlich ist, da ich das alles sehr gut verstehe :). Was Dir nicht gefällt oder nicht genug verständlich ist kannst Du immer ändern (so wie bei der Grundbeschaltung) oder fragen (so wie mit den Buchstaben "C" und "F"). Wie Du sicher bemerkt hast, habe ich in den Befehlen auch ein bischen geändert. Jemand hat gesagt : "Es gibt keine dumme Fragen, nur dumme Antworten" und das stimmt!. Also keine Angst! :) Es gibt auch PN. Für mich ist Deine Meinung sehr wichtig! Ich denke, dass bis Interrupts sollte es schon für Anfänger ausreichen, bin mich aber auch nicht sicher wo eigentlich Ende vom Anfang ist. :) [[Benutzer:PICture|PICture]] 14:24, 5. Apr 2007 (CEST)
| + | |
− | -----
| + | |
− | wow! respekt! geht ja ganz schön schnell voran. das eine pad bekommst du auf jeden fall noch, brauche leider noch ein paar tage. noch dazu müsste ich langsam wirklich fürs abi lernen, aber solange noch andere dinge gehen, werde ich auch hier noch bisschen was machen ;-) [[Benutzer:Benedikt.Seidl|Benedikt.Seidl]] 12:37, 8. Apr 2007 (CEST)
| + | |
− | -----
| + | |
− | Mach Dir bitte mit dem Artikel keinen Stress, ich versuche bloss die freie Tage sinvoll nutzen.:). Es wird danach langsamer gehen, aber die Zeit ist nicht beschränkt. Sogar für die schon als fertig markierte Sachen schreibe ich immer wieder was dazu, was mir noch einfällt.[[Benutzer:PICture|PICture]] 16:11, 8. Apr 2007 (CEST)
| + | |
− | ----
| + | |
− | Bit, Byte, Nibble, Bin und Hex
| + | |
− | also ich würde schon die nummerierung der bits mit aufnehmen. habe mich lange gefragt, wie das funktioniert, weil man ja normalerweise von links nacht rechts zählt und mit 1 anfängt. [[Benutzer:Benedikt.Seidl|Benedikt.Seidl]] 21:28, 9. Apr 2007 (CEST)
| + | |
− | ----
| + | |
− | Natürlich! :) Die Numerierung der Bits ist bei jedem Prozessor gleich und fängt immer von links mit 0 (LSB). Ich habe schon eine Idee für erstes ASM Programm, das wird aber noch ein bischen dauern, weil ich das zuerst selber ausprobieren muss (und will). Aber es ist noch weit zum Ende des Artikels. [[Benutzer:PICture|PICture]] 09:27, 10. Apr 2007 (CEST)
| + | |
− | ----
| + | |
− | mein fehler. habe da wohl was verwechselt. sorry. die zahlen sind ja doch noch da :-/ [[Benutzer:Benedikt.Seidl|Benedikt.Seidl]] 12:52, 10. Apr 2007 (CEST)
| + | |
− | ----
| + | |
− | @Benedikt.Seidl
| + | |
| | | |
− | Schau, bitte, am Anfang des Artikels habe ich noch was neues eingefügt. Als Folge haben wir noch einen Autor (den Gärtner), der schon wichtige Sachen toll ergänzt hat.
| |
− |
| |
− | @Gärtner
| |
− |
| |
− | Wenn Du willst, kannst auch etwas neues, wass noch nicht grün gekenzeichnet ist, anfangen. :)
| |
− | [[Benutzer:PICture|PICture]] 13:17, 10. Apr 2007 (CEST)
| |
| ---- | | ---- |
− | wow! glückwunsch! http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=14953 [[Benutzer:Benedikt.Seidl|Benedikt.Seidl]] 16:13, 10. Apr 2007 (CEST)
| |
− | ----
| |
− | Für Dich das gleiche ! Trotzdem schreibe ich weiter.:)[[Benutzer:PICture|PICture]] 16:59, 10. Apr 2007 (CEST)
| |
− | ----
| |
− | Keine Angst, hab auch neues geschrieben ;) Hat wer eine bessere Idee bezüglich Textformation von SFRs? hab mich mal am Datenblatt bedient. Die Assemblerbefehle hab ich heute schon in einen eigenen Artikel geschrieben. Da fehlen nur noch Codeschnippsel. find das Übersichtlicher und werde die DETAILs zu den befehlen von hier bald RAUSLÖSCHEN. (wenn ich mit dem anderen Artikel fertig bin.) --[[Benutzer:Der Gärtner|Der Gärtner]] 18:06, 10. Apr 2007 (CEST)
| |
− | ----
| |
− | :Die Asführliche Beschreibung zu den Befehlen hat der Benedikt.Seidl geschrieben, aber ich glaube, dass er nichts dagegen hätte. Dann werden die Codeschnipsel auch dorthin verschoben, oder ? Es wäre gut wenn Du das Link zu Deinem Artikel in diesen Artikel einfügst. Ich weiss nicht wo ich später die Hifsmittel (kleine Programmierwerkzeuge) hin schreiben soll.[[Benutzer:PICture|PICture]] 18:33, 10. Apr 2007 (CEST)
| |
− | ----
| |
− | :ich finde es schon sehr schade, weil das schon viel arbeit gemacht hat hier. das tabellenlayout hat auch vor und nachteile. aber ich versteh nicht, warum du nicht auf meine beschreibung und code-schnipsel zurückgreifst, bzw. meine befehlsliste ergänzt hast? deine infos bzw. beschreibungen sind wahrscheinlich schon technischer und auch ok, aber für den normalen benutzer oder einsteiger sehe ich es eher als hindernis, wenn so komplizierte beschreibungen verwendet werden.
| |
− | : trotzdem finde ich es schön, dass du mitarbeitest, gärtner ;-) [[Benutzer:Benedikt.Seidl|Benedikt.Seidl]] 19:18, 10. Apr 2007 (CEST)
| |
− | ----
| |
− | @ Gärtner
| |
− |
| |
− | Ich denke auch, dass Löschen nicht nötig ist und Dein Artikel wunderbar als Nachschlagewerk benutzt werden kann, wenn sein Link in diesem Artikel eingefügt wird.[[Benutzer:PICture|PICture]] 19:31, 10. Apr 2007 (CEST)
| |
− | ----
| |
− | @ Gärtner
| |
− |
| |
− | Erst heute habe ich Dein Artikel aufmerksam durchgelesen und folgendes nicht gut gefunden:
| |
− |
| |
− | - die Wörter "verundert", "verodert" und "inklusiv verodert" sind vielleicht "cool" aber für jemanden die die logische Operationen gar nicht kennt, ganz unverständlich.
| |
− |
| |
− | - bei "call" und "retlw" ist überhaupt nichts über funktionsweise im ASM Programm geschrieben, nur über Register, was nicht besonders wichtig ist. Bei "retfie" fehlt die wichtige Information, dass ausführen des Befehls das Bit GIE setzt, was die Interrupts wieder erlaubt.
| |
− |
| |
− | - bei "clrw" ist falsches Register und bei "end" falsche Funktion gennant. Ausserdem, ich kenne Keine Pseudobefehle, sondern Direktiven für Assemblerprogramm.
| |
− |
| |
− | Ohne Beipielen vom Code finde ich das ganze ungeeignet für Anfänger. Bleiben wir, bitte, in dem Artikel, der vor allem für Anfänger vorgesehen ist, bei der ausführlicher Beschreibung vom Benedikt.Seidl.[[Benutzer:PICture|PICture]] 09:08, 11. Apr 2007 (CEST)
| |
− | ----
| |
− | Code kommt noch, und fehler sind echt vorprogramiert gewesen :)
| |
− | Ich hab noch einiges an Dingen vor gehabt, die sowieso hier stehen. Die Begriffe "verundet" und "verodert" sind die einzigen, die ich jemals gehört habe, und JA, ich hab vor beispiele zu Schreiben / vom Seidl zu nehmen. Und wenn ich so scharf aufs Löschen wäre, dann hätt ichs schon gemacht :P
| |
− |
| |
− | Den Begriff "Pseudobefehle" hab ich vom Sprut, kann ich ruhig ändern.
| |
− |
| |
− | Werd heute da einiges ergänzen und die Register in diesem Beitrag weiter machen.
| |
− | --[[Benutzer:Der Gärtner|Der Gärtner]] 11:09, 11. Apr 2007 (CEST)
| |
− | ----
| |
− | @Gärtner
| |
− |
| |
− | Das hört sich sehr gut an. Deine Beschreibung von Befehlen ist auch nötig, da kann man sofort die Beschreibung für ein Befehl lesen, das man braucht. Sie hat aber sehr langen Inhaltverzeichnis, länger, als dieser ganzen Artikel. Deswegen finde ich die Idee, das getrennt vom Artikel zu machen sehr gut.:) Übrigens, für mich ist der Sprut kein Experte und ich versuche immer mich an der Dokumentation vom Microchip (z.B. MPASM) zu halten um das ganze einheitlich zu gestalten. Es wäre auch eine Möglichkeit, um unnötige Arbeit zu vermeinden, einfach die ganze Beschreibung vom Seidl in Dein Artikel zu übernehmen (eventuell bischen ergänzen) und danach von unserem Artikel löschen und in dem Menüpunkt "Ausführliche Beschreibung zu den Befehlen" nur den Link zu Deinem Artikel lassen. Das scheint mir sogar optimale Lösung zu sein. Ich habe genauso bei "Interface und Treiber" gemacht. Ich werde erst am Wochenende wieder aktiv.[[Benutzer:PICture|PICture]] 19:02, 11. Apr 2007 (CEST)
| |
− | ----
| |
− | Habe den Register INTCON beschrieben... --[[Benutzer:Der Gärtner|Der Gärtner]] 09:07, 12. Apr 2007 (CEST)
| |
− | ----
| |
− | Habe schon dort bischen geändert... Hoffentlich gefällt Dir. :)[[Benutzer:PICture|PICture]] 09:56, 12. Apr 2007 (CEST)
| |
− | ----
| |
− | Ich würde die Register ANSEL und TIMER nicht speziell und so alleine beschreiben. Die gehören entweder zu den ADCs oder zu den einzelnen Timern. "ANSEL" ist z.b. einer von mind. 4 Registern, die von den ADCs benutzt werden. das Selbe gilt für Timer (stichwort TMR0-2 unterschiedliche Architektur/CCPM/PWM...)
| |
− |
| |
− | @PICture: passt sehr gut, man sieht ich hab die Matura, aber auch, dass ich NICHT in Deutsch maturiert habe - da fehlts an Retorik, Grammatik und Einfühlungsvermögen für nichteingeweihte beim schreiben ;)
| |
− | --[[Benutzer:Der Gärtner|Der Gärtner]] 22:48, 12. Apr 2007 (CEST)
| |
− | ----
| |
− | Kleine Frage am Rande, alle Pins an allen Ports der Midrangeserie sind BIDIREKTIONAL - oder...? Ich bin über einen 18F gestolpert, der da aus der Reihe tanzt. (4550er, die USB-Pins...)--[[Benutzer:Der Gärtner|Der Gärtner]] 22:53, 12. Apr 2007 (CEST)
| |
− | -----
| |
− | @Gärtner
| |
− |
| |
− | "Nobody is perfect". Beim jedem Lesen des Artikels finde ich Fehler die ich bisher übersehen habe. Ich habe dein Artikel nur ganz kurz angeschaut, da stimmt die XOR funktion nicht, die XAND kenne ich nicht.
| |
− |
| |
− | Wenn es um Mid-Range PICs geht, da sind alle Pins an allen Ports bidirektional. Aber bei fast allen diesen PICs gibt es ein Portpin, der nur open drain ist (z.B. beim 12F629 GPIO,3) und ohne pull-up keine 1 ausgeben kann. Übrigens, was sind "Fusebits" ? Ich (und wahrscheinlich jeder Anfänger auch) habe noch nicht gehört. Ich vermute, dass sich hier um "configuration bits" handelt, es müsste aber irgendwo in unserem Artikel definiert werden. Vielleicht am Ende des Artikels machen wir noch ein "Wörterbuch" für Anfänger ?
| |
| | | |
− | Ich freue mich sehr, dass immer mehr Autoren des Artikels gibt. Der nächste, aber fast sicher nicht der letzte, ist der BMS, der gerade ein Codeschnipsel für ADC schreibt. Je mehr Autoren um so besser. Die vorgeschlagene Gliederung ist noch offen und kann jederzeit von jedem geändert werden (z.B. bei der Registerbeschreibung) [[Benutzer:PICture|PICture]] 07:50, 13. Apr 2007 (CEST)
| + | === Anmerkung von witkatz am 18.02.2014, 15:55: === |
| + | Die Befehlsausführung und das Pipelining sind in der folgenden Doku im Kapitel "4.3 Instruction Flow/Pipelining" beschrieben |
| + | [http://ww1.microchip.com/downloads/en/DeviceDoc/33023a.pdf PICmicro Mid-Range MCU Family Reference Manual] |
Ich kann mir nicht vorstellen, dass der PIC (also PIC10...18) pipelined arbeitet, also wirklich bis zu 4 Befehle quasi gleichzeitig. So gut kenne ich die PICs nicht, aber soweit ich weiss wirklich 4 Oszillator Takte = 1 Rechentakt für einen Befehl, und erst danach kommt der nächste Befehl.--Besserwessi 13:17, 10. Dez 2013 (CET)