PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC Assembler in Wiki



PICture
10.04.2007, 09:43
Hallo an Alle! :)

Es wird versucht im Wiki die ASM Programmierung von PIC Mikrocontroller zu beschreiben.

https://www.roboternetz.de/wissen/index.php/PIC_Assembler

Damit das enstehende Artikel wirklich nutzlich wird, ist Ihre Mitwirkung nötig. Bitte schreib hier Deine Meinung, (ausser Lob :) ) was ewentuell noch geändert (z.B. ergänzt) werden soll.

Die Autoren bedanken sich im voraus für jeden Beitrag mit Vorschlägen ! :)

MfG

Der Gärtner
10.04.2007, 09:48
Ihr habt ja schon eine Menge geschrieben. Ich schreib mal n bissl was zur Speicherorganisation hin. (Banks usw..) Beim Prozessor adde ich mal 3 Sätze zur architektur.

Edit: Ich empfehle folgendes Reference Manual als Quelle:
http://ww1.microchip.com/downloads/en/DeviceDoc/33023a.pdf

Und warum nennen wir den Artikel nicht "PICs der Midrange Serie"? Weil das ding hat mehr als nur assemblerinfos.

PICture
10.04.2007, 10:47
Hallo Gärtner!

Wunderbar! :) Du bist also der dritte Autor, der bei der Entstehung des Artikels mitwirkt. Ich habe bisher nur das bis Midrange geschrieben und mir gefällt das Word "Midrange" auch nicht. Dann ändere das, bitte, wie Du meinst, dass es besser ist.

Schöne Grusse ! :)

Der Gärtner
10.04.2007, 11:10
Ich meine, dass der Artikel etwas wichtigeres verdient hat als den Titel "PIC Assembler". Wenn ich mir das so durchlese bin ich für "Midrange PICs Einführung" mit einer schnellen Erklärung was das eigentlich für Nummern sind (teile 12F - 16F)

Die Assemblerbefehle würde ich Detailiert mit ähnlichem Layout wie Datenblatt oder sprut in einen eigenen Artikel klemmen. genauso wie Peripheriebeispiele (kleine Schnippsel sollten aus Verständlichkeitsgründen bleiben)

Weil warum? Wenn ich schon wieder mal vergessen hab was hinder dem "ADDWF" befehl steht oder mit Timerprescalern kämpfe, dann möcht ich nicht gleich das ganze ausführliche Kompendium durchscrollen.

keine angst, ich ändere nichts ohne abstimmung was das betrifft.

muss noch ein paar pics uploaden, schau dann, was ich sonst noch schaffe.

PICture
10.04.2007, 11:27
Ändere und berechtige, bitte, alles was Du als nicht richtig findest!

Die Abstimmung ist dann automatisch, ohne unnötigen Zeitverlust für Diskussionen. Ich habe auch schon etwas geändert ohne Dich zu Fragen. :)

In der, mit dem Artikel verbundener Diskussion, habe ich das mit dem schnellem Zugriff auf die detailierte Beschreibung der Befehle auch schon vorgeschlagen.

Diesen Tread habe ich eigentlich vor allem für Gäste, die unsere Forum besuchen geöffnet, Du kannst (hofenntlich) auch in der o.g. Diskussion schreiben.

theborg
10.04.2007, 13:22
hm sehr schön bis jetzt

allerdings wenn du ne include "P12F629.inc" benutzt brauchst gpX nicht mehr definieren nur wenn du andere namen haben möchtest.

Das Variablen deklarieren kann man auch einfacher machen

cblock 0x10
t1
t2
counter
CPULast
endc

PICture
10.04.2007, 14:08
Hallo Theborg!

Vielen Dank! :)

Übrigens, ich definiere nicht GPIO selber, nur die im Program auftretende Signale (z.B. _RL), damit ich weiter im Programm nicht immer GPIO,5 schreiben muss.

Das von Dir beschriebene Variablen deklarieren ist zwar um ein paar Buchstaben kürzer, verschlechtert aber den Überblick während des Schreibens bei sehr vielen Variablen und deswegen würde ich sie persönlich nicht empfehlen. Muss es nicht cblock 0x20 sein?

MfG

theborg
10.04.2007, 16:41
jo 0x20 :P

1112131415...

Mobius
10.04.2007, 17:39
Hum, ich weiß nicht, wer es schon weiß, oder ob es jemandem nützt, aber wenn man MpLab installiert hat, hat man für (fast) jedem PIC ein Code-Template unter Installdir/MPASM Suite/Templates/Code zur Hand. Da sind die allgemeinsten Sachen, wie zum Beispiel Sicherung der Arbeitsregister bei einem Interrupt, das Laden von OSCCAL, orgs für'n EEPROM und Interrupts, goto zu main, Kommentarblöcke, etc. vorgefertigt.

Was ich grad beim Durchlesen der Wiki vermisst habe war ein Interrupt-handler (zumindest rudimentär mit Register-Sicherung :) ) bei der Vorlage für den Assembler.
MfG
Mobius

PICture
10.04.2007, 18:20
Hallo Mobius!

Es ist vor allem für Anfänger vorgesehen und wir sind davon ausgegangen, dass nicht jeder perfekt die englische Sprache beherscht.

Der Artikel ist noch nicht fertig, was noch (hoffentlich) kommt ist in der Diskussion vorgeschlagen.

Übrigens, wofür ist die Registersicherung beim Interrupt gut ? Ich habe es noch nie benutzt.

MfG

r.moshage
10.04.2007, 18:38
Da du nie wissen kannsts bei welchem Befehl ein Interrupt auftritt kann es passieren das nach dem Interrupt falsche werte im W- und Status-Register stehen. Das geht ganz schnell wenn du z.B einen wert in's W-Register geladen hast, dann bevor der wert verarbeitet wird ein Interrupt auftritt und in der ISR ein neuer Wert in das W-Register kommt. Da kann dein Programm schnell komische Sachen machen. Also immer in der ISR W- und Status Retten.

MFG
Ralf

r.moshage
10.04.2007, 18:47
Da du nie wissen kannsts bei welchem Befehl ein Interrupt auftritt kann es passieren das nach dem Interrupt falsche werte im W- und Status-Register stehen. Das geht ganz schnell wenn du z.B einen wert in's W-Register geladen hast, dann bevor der wert verarbeitet wird ein Interrupt auftritt und in der ISR ein neuer Wert in das W-Register kommt. Da kann dein Programm schnell komische Sachen machen. Also immer in der ISR W- und Status Retten.

MFG
Ralf

PICture
10.04.2007, 19:00
Hallo r.moshage!

Vielen Dank!:) Stimmt. Dann habe ich bisher viel Glück gehabt, muss aber noch über Interrupts ein bischen lernen.

MfG

BMS
12.04.2007, 12:10
hab zur Grundbeschaltung noch den MCLR-Pin hinzugefügt und ein paar Rechtschreibfehler ausgemärzt.
Eine Übersicht der häufig eingesetzten PICs und deren Daten (Flash, RAM, EEPROM, ADC, PWM ...) wäre vllt. noch ganz nützlich.
Aber ansonsten entwickelt sich das ja ganz gut... :)
mfg
BMS

herrma
12.04.2007, 13:02
Fehlerteufel:

Bildbeschreibung "Grundbeschaltung" Bild 3 > "interner Takt"

PS
Unsinn! Habe gerade erst gesehen das es sich um die Pinbelegung des Quarzoszillator handelt.

BMS
12.04.2007, 18:52
Hab noch für die Grundbeschaltung (am Bsp. des 16F84) einen kleinen Schaltplan erstellt; siehe Anhang (Reset-Sache, Oszillator, Entstörkondensator);
und auch noch eines für den 7805, falls erünscht.
falls es noch Verbesserungsvorschläge oder Kritik gibt, immer her damit - ansonsten, wenns jemand "abgesegnet" hat, würd' ich es hochladen.
mfg
BMS

[edit 19:53] kann es sein, dass jemand wieder bei Grundbeschaltung HS hingeschrieben hat, dass man für einen resonator auch noch 2 kondensatoren braucht ? das gilt nur für die mit 2 anschlüssen, die mit drei anschlüssen brauchen KEINE kondensatoren. der mittlere anschluss wird an masse angeschlossen, die äußeren an OSC1 und OSC2.

PICture
12.04.2007, 19:14
Hallo BMS!

Wilkommen als nächster Autor ! :). Vielen Dank für bisherige Ergänzungen und Verbesserungen.

Die Beschaltung für den 16F84 passt in den Artikel wunderbar, aber allgemeines Schaltplan für ein Spannungsregler, glaube ich nicht, da sonst wird der Artikel zu gross und keiner ihm durchlesen schafft.

Ja, ich habe das mit dem Keramik-Resonator wieder geändert, da die 3 Pin Resonatoren mit integrierten Kondensatoren seltener sind. (z.B. beim Reichelt gibt sie gar nicht). Du kannst eventuell noch eine Skizze für 3-pin machen.

MfG

BMS
12.04.2007, 19:29
es gibt ganz sicher welche mit 3 pins bei reichelt (z.b.cst 8,00 - unter bauelemente - passiv - quarze,oszi's & co - filter -seite2) schön versteckt und passen nicht in die kategorie - aber er hat sie :)
arbeite im moment an codeschnipsel ADC.
mfg
BMS

BMS
16.04.2007, 15:28
zu Hex-Dec-Wandlung wären noch ein paar Kommentare nötig
ebenso zu Mausrad. Könnte der jeweilige Autor das vllt. noch nachtragen? Das Programm ist sonst wie ne Black Box: es funktioniert, aber man weis nicht warum :-k


Es gibt 4 Register mit jeweils 32 Bits
das find ich aber toll - welche register haben denn 32 bit? :cheesy: :mrgreen:

analog zu dem bräuchte man noch eine Bin-BCD-Wandlung (aus einem Byte 3 Register mit BCD-Zahlen erzeugen) - dazu noch ein Bsp. zu LCD..?

zu Mausrad: Die Zielbits (W oder F) fände ich nachvollziehbarer als 0 oder 1 (movf ...)

schön, dass sich das thema so schnell weiterentwickelt :)
*LOB an alle Autoren*

MfG
BMS

PICture
17.04.2007, 09:57
Hallo BMS!

Ich habe schon versucht die funktionsweise von Hex_Dec zu erklären. Kommentare zum einzelnen Zeilen werden nicht viel helfen und PAD wäre zu kompliziert, oder ?

Fürs Mausrad erstelle ich noch ein PAD, da er einfach ist. Wenn es um Zielbits geht, habe ich aus dem Datenblatt meines ersten PIC12F629 so gelernt und daran schon gewohnt bin. Du kannst es aber ruhig ändern. :)

Übrigens, was ist eigentlich Codeschnipsel und warum schreibst Du nicht in der Disskusion zum Artikel ?

Schöne Grüsse !