Lieber Besucher, herzlich willkommen bei: RCLine Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

21

Mittwoch, 15. Oktober 2008, 03:28

Hallo Thomas,

also, ich denke, mit folgenden Kategorien kann's losgehen:
- Allgemeine Diskussion (wie man sieht, im Atmel-Bereich auch die meisten postings)
- Beispielprogramme
- Fragen zu den PICs (Befehlssatz, On-Chip Peripherie, Eigenarten)
- MPLAB IDE (Fragen zur Entwicklungsumgebung)

Ich glaube derzeit nicht, daß eine Beschränkung der Schreib-Berechtigung für bestimmte Kategorien, wie im Atmel- Bereich, hier notwendig ist.

Mir ist aufgefallen, daß auch in (code)(/code)-Bereichen die Formatierung des Quelltextes verloren geht - offenbar werden TAB-Zeichen nicht übernommen. Gibt es dafür evtl. eine Lösung?

Viele Grüße,

Thomas

ro.heg

RCLine User

Wohnort: Quickborn

  • Nachricht senden

22

Mittwoch, 15. Oktober 2008, 13:37

Hallo Thomas,
das Fenster "Probe mcw" wurde sichtbar, indem ich Project/open klick.
Ordner Probe.mcp / Ordner Source Files / Probe.asm
und noch einge Ordner zeigten zeigten sich.
Dann klick Probe.asm, klick F10
Fazit: 4 x Warnungen (205)
1 x Error (149)
Ich werde erst mal mit meinen Fragen zurück halten und warten wie die
Anderen die Sachlage beherrschen.
Also wundere Dich nicht, wenn vom Rolf garnichts mehr kommt.

Viele Grüße

Rolf

Ein Tipp: das mit der Checkbox "Add....." sollte deutlicher erläutert
werden. Du schüttelst das aus den Ärmeln, aber denke daran,daß Einsteiger
dabei sind. Ich bin immer noch unsicher, ob der Weg über Project
"Addxxxx" der richtige ist. Du schreibst "kann schon richtig sein" mh!

ro.heg

RCLine User

Wohnort: Quickborn

  • Nachricht senden

23

Mittwoch, 15. Oktober 2008, 14:01

Sorry, ich bins nochmal, die Fehler u. Warnungen sind behoben!
Habe die 4 Anweisungen im Editor-Fenster um ein Tab nach rechts verschoben
und hurra "die Hex-Datei war da!
So, jetzt bin ich aber wirklich still!

24

Mittwoch, 15. Oktober 2008, 22:35

RE: Einführung in PIC Assembler Programmierung

Hi, Thomas,

ich denke auch so, was Rolf hier anregt.

Zitat

Ein Tipp: das mit der Checkbox "Add....." sollte deutlicher erläutert


Ich blicke hier auch nicht durch, was jetzt hier gemacht wird, aber das hat ja nichts zu sagen.
Es ist ja auch erst der Anfang.

Nur sollte man sich überlegen, ist das hier für Anfänger oder diskutieren hier fortgeschrittene Fachleute.

Peter
MfG Peter
Was nicht passt, wird passend gemacht.
[SIZE=1]Walkera HM 5G4 RE3LY Basic one HBK2 m. Direktantrieb
Graupner MX12 / FrSky V8HT 2,4 GHz[/SIZE]
Im Bild: meine E91 in 5Zoll

25

Donnerstag, 16. Oktober 2008, 00:26

RE: Einführung in PIC Assembler Programmierung

Uuuups - Ihr habt wohl mit dem Begriff "Checkbox" nichts anfangen können? Da der Begriff für mich schon recht gebräuchlich ist, habe ich ihn, ohne groß nachzudenken, einfach so benutzt, sorry! Also ich will versuchen, mich in Zukunft zu bessern! :angel:
Wenn Euch irgend ein Begriff oder Schritt unklar ist, fragt gleich nach - Ihr wisst ja: es gibt keine dummen Fragen....

Also: eine "Checkbox" ist ein Kästchen in einem Dialogfenster (hier z.B. im Fenster, das sich bei "File/Save As" öffnet, siehe Bild), wo man durch Mausklick ein Häckchen machen kann, wenn man die angegebene Option nutzen will.

Da man eine Datei nur einmal zum Projekt hinzufügen muß und sie dann automatisch im Projekt bleibt (wenn man sie nicht absichtlich wieder aus dem Projekt herausnimmt), braucht man das auch nur einmal zu machen.

Ein anderer, noch etwas kürzerer Weg, wäre das Anlegen der ASM-Datei unter "Projekt/Add new File to Project" - damit wird gleich die Datei angelegt und dem Projekt zugeordnet.
»Ottili« hat folgendes Bild angehängt:
  • checkbox.jpg

26

Donnerstag, 16. Oktober 2008, 01:58

Der erste Code-erzeugende Quelltext

Hier ist der Text zum weiter oben beschriebenen LED-Schalter:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
;Demo-Programm zum Ein-/Ausschalten einer LED (GP2, low = LED an)
;per Taster (GP0,GP1, schalten nach Masse)

 #include <p12F629.inc>    ;Prozessor-spezifische Definitionen
 __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF
	
 org	0					;Programmeinsprung bei Reset = Adr.0
 movlw	0x07		
 movwf	CMCON			;Comparator aus, Ports = digital I/O

 bsf		STATUS,RP0	;Registerbank 1 anwählen
 movlw	B'111011'
 movwf	TRISIO			;GP2 = Ausgang
 movlw	B'000011'
 movwf	WPU			;Pull-Up Widerstände für GP0,GP1
 bcf		OPTION_REG,7	;GPPU-Bit auf 0 setzen
 bcf		STATUS,RP0	;zurück zu Registerbank 0

ledoff
 bsf		GPIO,2			;LED ausschalten
waits1
 btfsc	GPIO,0			;Taster 1 gedrückt?
 goto	waits1			;nein, LED bleibt weiter aus 
	
;Taster 1 wurde gedrückt: 
 bcf		GPIO,2			;LED einschalten
waits1off
 btfss	GPIO,0
 goto	waits1off		;warten, bis Taster 1 losgelassen

waits2
 btfsc	GPIO,1			;Taster 2 gedrückt?
 goto	waits2			;nein, LED bleibt an
 goto	ledoff			;ja: LED aussschalten
	
 end					;(Ende des ASM Quelltextes)

Leider gehen im Posting die TAB-Positionen verloren, dadurch sieht das Ganze optisch etwas weniger strukturiert aus. Dem Assembler ist es aber egal, wie weit etwas eingerückt wird. Bei manchen Sachen ist nur wichtig, ob sie in der ganz linken Spalte beginnen oder rechts davon - das war z.B. die Ursache bei Rolf's Warnmeldungen. Dazu kommen wir gleich...

Zum formalen Aufbau des Quelltextes anhand dieses Beispiels:

Die ersten beiden Zeilen sind Kommentar. Kommentare werden durch ein Semikolon gekennzeichnet und dürfen auch am Zeilenanfang beginnen. Alles, was nach einem Semikolon im Rest der Zeile steht, wird vom Assembler ignoriert und kann so für Erläuterungen verwendet werden. Davon sollte man auch reichlich Gebrauch machen, auch wenn es beim Schreiben eines Programmes vielleicht etwas lästig erscheint und einem beim Eintippen des Befehlscodes natürlich völlig klar ist, wie der Algorithmus funktioniert (wenn er es denn tut ;) ), aber spätestens, wenn man mal ein paar Wochen später ein Programm modifizieren will, ist man sich selbst dankbar für Hinweise zur Funktion oder dem Sinn und Zweck eines vielleicht auf den ersten Blick überflüssig wirkenden Befehls.

Es folgen ein paar Anweisungen an den Assembler ("Directives"). Diese werden verarbeitet, dienen aber sozusagen nur der Verwaltung und erzeugen keine Programmbefehle für den Prozessor. Assembler-Directives dürfen nicht in der ersten Spalte beginnen (ein Leerzeichen davor reicht schon).

"#include" fügt den Inhalt der angegebenen Datei beim Übersetzen an dieser Stelle in den Quelltext ein. Das Ergebnis ist also so, als würde man den kompletten Inhalt der Datei "p12F629.inc" an dieser Stelle in das eigene ASM-File kopieren. Könnte man machen, ist aber umständlich und macht die Sache unübersichtlich. Hier wird es dafür verwendet, die ganzen Prozessor-abhängigen Symbole aus der von Microchip bereitgestellten Datei zu übernehmen. Sonst müßte man sich z.B. die Registeradressen zum Ansprechen der Ports, Timer usw. immer selbst mühsam aus dem Datenblatt des Prozessors zusammensuchen.

"__config" gibt den Inhalt des Konfigurations-Registers des Prozessors an. Diese Daten werden im HEX-File abgelegt und dienen zur Einstellung der Prozessor-Hardware, z.B. ob der Prozessor per Quarz getaktet oder seinen Takt intern erzeugen soll (INTRC_....) und ob er einen Reset-Eingang haben soll oder der entsprechende Pin als Port genutzt werden soll (_MCLRE_OFF) usw.
Den Inhalt des Config-Registers könnte man sich entsprechend der gewünschten Einstellung aus dem Datenblatt bitweise zusammensuchen, einfacher ist es aber, die (in pxxxxxx.inc) vordefinierten Symbole zu benutzen. Diese sind so definiert, daß man die gewünschten Einstellungen einfach über eine UND-Verknüpfung (Verknüpfungszeichen: "&") beliebig hintereinander hängen kann. Was es so an "symbolischen" Konfigurations-Einstellungen gibt, muß man auch nicht auswendig wissen. Dafür schauen wir einfach in die Datei (pxxxx.inc) hinein: Im Editor-Fenster mit der rechten(!) Maustaste auf die "#include..." Zeile klicken, dann auf "Open File pxxxx.inc" klicken. Nun 'runterscrollen bis zum Abschnitt "Configuration Bits" - dort sehen wir, wie die Definitionen lauten.

Soweit erstmal für heute - Fortsetzung folgt...

27

Freitag, 17. Oktober 2008, 03:05

(Fortsetzung)

"org" legt die Anfangsadresse des nachfolgenden Programmcodes im Programmspeicher fest. Bei den hier verwendeten PICs fangt der Prozessor durch einen Reset bei Adresse 0000 an zu arbeiten, deshalb soll dort auch unser Programm beginnen.

Ab hier folgen nun Zeilen, die tatsächlich das eigentliche Programm für den Prozessor bilden. Die "Mnemonics" (= Kürzel aus wenigen Buchstaben, das die Funktion des Prozessor-Befehls beschreibt) dürfen nicht unmittelbar am Zeilenanfang stehen.
Die ersten 9 Befehle (= alles vor "ledoff") konfigurieren die Anschlußpins entsprechend unserer Anwendung:
- Komparator aus (Alle Pins = digital)
- GP2 (Anschluß der LED) = Ausgang
- interne Pull-Up Widerstände für die Eingänge, damit wir keine externen verbauen müssen.

"ledoff", "waits1", "waits2" usw. sind sog. "Labels". Damit gibt man der entsprechenden Programmstelle eine (möglichst aussagekräftige) Bezeichnung, die man dann an anderen Stellen im Programm z.B. für Programm-Sprünge an diese Stelle, benutzen kann.
Labels müssen ganz am Anfang der Zeile stehen (1.Spalte).

Ab dem Label "ledoff" läuft das Programm in einer Endlos-Schleife, denn es gibt ja kein Programmende bei unserer Applikation.

Die Formatierung des Quelltextes sollte übrigens so aussehen:
»Ottili« hat folgendes Bild angehängt:
  • probe_asm.gif

28

Samstag, 18. Oktober 2008, 01:02

Der MPLAB Simulator

Häufig (oder sollte ich besser "In der Regel" schreiben?) läuft ein Programm nicht auf Anhieb, sondern enthält noch eine gewisse Anzahl Fehler. Nun kann man ein Programm schreiben, in BIN bzw. HEX-code übersetzen und in den Controller brennen, diesen in die Ziel-Hardware stecken und einschalten. Mit etwas Glück passiert etwas, das Rückschlüsse auf die Art des Fehlers zulässt, wenn aber einfach keine nachvollziehbare Funktion zu sehen ist (hier z.B.: falls die LED einfach nur aus bleibt), können wir so nur "geht" oder "geht nicht" diagnostizieren, und ggf. stundenlang über dem Quelltext brüten und spekulieren, wo der Fehler wohl liegen könnte.

Fehler in Computerprogrammen nennt man traditionell "Bug" (= "Käfer"), seitdem bei einem der ersten Computer, die noch mit Röhren und Relais aufgebaut waren, mal so ein Insekt einen Kurzschluß und damit eine seltsame Fehlfunktion ausgelöst hatte. Der Prozess zum Entfernen der "Bugs" aus dem System heißt daher "debugging", Hilfsmittel, die Fehler aufzuspüren, denn man "Debugger". Eines dieser Tools ist der MPLAB SIM. Dieser hat den Vorteil, daß wir keine Hardware brauchen (nicht einmal den Prozessor, für den wir das Programm geschrieben haben) und er ist schon in der MPLAB IDE mit drin. Daher werden wir mit diesem Tool arbeiten.

Um den Simulator kennenzulernen, sollte das Projekt mit unserem fertigen Beispielprogramm (LED-Schalter) in der MPLAB IDE geöffnet sein. Nach Start der MPLAB IDE wird das Projekt am Besten über "File/Recent Workspaces" geöffnet, wo es aus den zuletzt bearbeiteten Projekten ausgewählt werden kann. Das geht meist schneller, als über "Project/Open".
Nun wählen wir aus, mit welchem Debugger-Tool wir arbeiten wollen:
Menü "Debugger/Select Tool/MPLAB SIM" auswählen.
Falls noch nicht geschehen, sollte der Code über [F10] übersetzt werden.
Nun können wir über Debugger/Reset/Prozessor Reset, oder einfach über Funktionstaste [F6], unseren virtuellen Prozessor starten. Es erscheint im Quelltext-Fenster ein dicker, grüner Pfeil vor dem ersten Befehl im Programm.
Jetzt drücken wir ein paarmal die [F7]-Taste und können sehen, wie sich der grüne Pfeil durch den Text bewegt. Was bedeutet das?
Der Pfeil zeigt immer auf den Befehl, der beim nächsten Schritt ausgeführt wird, d.h. er steht auf dem Befehl, der gerade durch den Programmzähler des Prozessors adressiert wird. Wir können also so gut beobachten, wie der Programmablauf vonstatten geht. Damit wir auch sehen können, was sich dabei in den Registern des Prozessors tut, öffnen wir das entsprechende Fenster:
View/Special Function Registers eröffnet uns den Blick. Größen und Anordnungen der Fenster stellen wir am Besten so ein, daß der Quelltext die angezeigten Registerdaten nicht überdeckt. Nun drücken wir [F6] und wieder ein paar mal [F7] und beobachten bei jedem Schritt, was passiert: Immer, wenn sich Daten durch den ausgeführten Schritt verändert haben, erscheinen diese rot im Fenster, was uns den Blick "auf's Wesentliche" natürlich sehr erleichtert.
Damit ist der Simulator natürlich nicht nur ein Werkzeug zum Aufspüren von evtl. Fehlern, sondern auch ein Klasse Tool zum Experimentieren und damit zum Kennenlernen des Prozessors.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Ottili« (18. Oktober 2008, 13:12)


ro.heg

RCLine User

Wohnort: Quickborn

  • Nachricht senden

29

Samstag, 18. Oktober 2008, 13:30

Hallo Thomas,
warte erstmal, ob irgend welche Rückfragen kommen. Es kann doch nicht sein,
daß ich der einzige bin, der wieder unsicher ist, da Errors anstehen!
Nochmal als Rückblick:
1. es wurde ein Ordner unter C/Programme/PICPROC eingerichtet.
2.Mit Project Wizard PIC12F629 gewählt
3. dann MPASM Toolsuite gewählt
4. Über BROWSE den Ordner PICPROC wählen, als Datei Probe gewählt
5. Fertig
Nun habe ich den Qelltext geschrieben und unter Probe.asm abgespeichert
6. Anlegen der asm Datei unter Project/Add File to Project
7. Project/Open im rechten Fenster zeigte sich Probe.mcp
drunter Source Files (beim öffnen Probe.asm
Taste F10 die Probe.hex war da!
So, bis hierher: ich hoffe, ich habe den Ablauf richtig geschildert.
Nun habe ich den LED-Quelltext geschrieben und im Ordner PICPROC
unter Led_01.asm abgespeichert.
Habe ich hier schon einen Fehler gemacht?
Nach F10 kommen merkwürdige Errors.
Oder dient der PICPROC ordner nur als Project Ordner?
Danach die Datei "Led_01.asm" über Project Addxxx abgespeichert, da tauchte
sie im Fenster Probe.mcp auf.
Erläutere doch bitte nochmal genau, was muß ich tun, bevor ich beginne den
Qelltext zu schreiben. (Nur MPLAB IDE öffnen und loslegen)
Zum Schluß, wo soll der Quelltext abgespeichert werden.

Viele Grüße und Danke für Deine viele Mühe

Rolf

30

Samstag, 18. Oktober 2008, 14:05

Virtuelle Signale an den virtuellen Prozessor anlegen

Bis hierher haben wir gesehen, wie man im Simulator den Prozessor bei der Verarbeitung des Programms genau beobachten kann. Um Programme zu testen, brauchen wir aber auch die Möglichkeit, Eingangssignale, wie z.B. unsere Taster an den Pins GP0/GP1, an den simulierten Prozessor anzulegen. Die virtuellen elektrischen Eingangssignale für eine simulierte Schaltung nennt man "Stimulus".

So gehen wir vor:
Über "Debugger/Stimulus/New Workbook" das Fenster zur Eingabe der Daten öffnen. Für eine einfache, manuelle Eingabe nehmen wir den "Asynch"-Reiter, da die Eingabe von Pegeländerungen hier zu beliebigen Zeiten, eben "asynchron" zu irgend etwas anderem, erfolgen kann. Jetzt basteln wir uns ein paar einfach anklickbare Eingangs-Signalpegel:
Im ersten "Pin/SFR"-Feld wählen wir "GP0" aus, im "Action"-Feld rechts daneben "Set Low". Eine Zeile darunter wählen wir wieder "GP0", diesmal aber als Aktion "Set High".
Das gleiche machen wir in Zeile 3 und 4 mit GP1. Das Ergebnis ist das Stimulus-Fenster wie im Bild.
Durch Mausklick auf den jeweiligen "Fire"-Button links vor der Zeile können wir nun nach belieben 1-Pegel (High) oder 0-Pegel (Low) für die jeweiligen Pins anlegen. Da die Taster in unserer Testschaltung die Pins auf Masse (0V=Low) ziehen, die Pins sonst durch einen "Pull-Up"-Widerstand im Prozessor auf +5V (=High) gelegt werden, entspricht also "Fire" bei "Set Low"-Action dem Drücken, und bei "Set High" dem Loslassen des Tasters.
»Ottili« hat folgendes Bild angehängt:
  • stimulus.gif

31

Samstag, 18. Oktober 2008, 15:14

Hallo Rolf,

ok, dann wollen wir mal schauen...

Zitat

Original von ro.heg
Hallo Thomas,
warte erstmal, ob irgend welche Rückfragen kommen. Es kann doch nicht sein,
daß ich der einzige bin, der wieder unsicher ist, da Errors anstehen!
Nochmal als Rückblick:
1. es wurde ein Ordner unter C/Programme/PICPROC eingerichtet.
2.Mit Project Wizard PIC12F629 gewählt
3. dann MPASM Toolsuite gewählt
4. Über BROWSE den Ordner PICPROC wählen, als Datei Probe gewählt
5. Fertig

scheint mir richtig zu sein. Damit hast Du ein Projekt mit dem Namen "Probe" und dem Projekt-Ordner "C:\Programme\PICPRG" - richtig? Oder hast Du noch einen Ordner _UNTER_ PICPRG? Nicht missverstehen - beides wäre möglich und richtig, ich versuche halt nur, genau Deine Ordner-Struktur zu verstehen. Allerdings würde ich empfehlen, daß wir uns hier im "Kurs" auf eine einheitliche Ordner-Struktur festlegen. Mein Vorschlag war ja schon "C:\PICPRG\<Projektname>\
Derzeit ist das Projekt immer noch "Probe", weil es bisher nur Beispielcode zum Kennenlernen der IDE ist.

Zitat


Nun habe ich den Qelltext geschrieben und unter Probe.asm abgespeichert

Nur wegen der Begriffe:
mit dem Schreiben und Speichern hast Du die Datei ja schon "angelegt"

Zitat


6. Anlegen der asm Datei unter Project/Add File to Project

damit hast Du die Datei dem Projekt hinzugefügt (angelegt war die Datei ja schon)

Zitat


7. Project/Open im rechten Fenster zeigte sich Probe.mcp
drunter Source Files (beim öffnen Probe.asm
Taste F10 die Probe.hex war da!

Warum Du das Projekt nochmal öffnest, ist mir nicht ganz klar - nach dem Ausführen des "Project Wizards" zum Anlegen eines neuen Projektes, ist es ja normalerweise bereits offen. Aber letztendlich wirst Du schon das richtige erreicht haben, denn Dein "ASM"-File steht ja unter "Source Files" im Projekt-Fenster. Ob es auch das Richtige ist (d.h. aus dem richtigen Ordner) kannst Du feststellen, indem Du mal auf "Probe.asm" im Projekt-Fenster Doppelklickst. Öffnet sich dann eine ganz andere Datei, ist irgendwas falsch...

Zitat


So, bis hierher: ich hoffe, ich habe den Ablauf richtig geschildert.
Nun habe ich den LED-Quelltext geschrieben und im Ordner PICPROC
unter Led_01.asm abgespeichert.
Habe ich hier schon einen Fehler gemacht?

Hmm - das passt zunächst mal nicht ganz zusammen: Im Project hast Du als Source File "Probe.asm" angegeben, arbeitest dann aber mit "Led_01.asm". In dem Fall solltest Du vielleicht "Probe.asm" aus dem Project entfernen (einfach im Project-Fenster draufklicken und [Entf]-Taste drücken) und über "Project/Add Files to Project" Dein Led_01.asm dem Projekt zuordnen.
Aber da habe ich leider selbst wieder für etwas Verwirrung gesorgt, weil ich nicht eindeutig einen Dateinamen für die Beispieldatei angegeben habe. Wie gesagt, ich würde vorschlagen, zunächst bei "Probe.asm" zu bleiben....

Zitat


Nach F10 kommen merkwürdige Errors.
Oder dient der PICPROC ordner nur als Project Ordner?
Danach die Datei "Led_01.asm" über Project Addxxx abgespeichert, da tauchte
sie im Fenster Probe.mcp auf.
Erläutere doch bitte nochmal genau, was muß ich tun, bevor ich beginne den
Qelltext zu schreiben. (Nur MPLAB IDE öffnen und loslegen)
Zum Schluß, wo soll der Quelltext abgespeichert werden.

Natürlich gehört der Quelltext am sinnvollsten in den Projekt-Ordner (Damit meine ich den Ordner auf der Festplatte!) - das ist ja grad der Sinn und Zweck dieses Ordners, daß ALLES, was zum jeweiligen Projekt gehört, hier abgelegt ist.
Wenn Du das Projekt "Probe" schon erfolgreich angelegt hast (hattest Du ja schon!), dann rufst Du es nach dem Start der IDE einfach über "File/Recent Workspaces" auf.
Falls das Editor-Fenster mit dem Source File "Probe.asm" noch nicht offen ist, doppelklickst Du im Projekt-Fenster auf "Probe.asm" und ersetzt ggf. den alten Text komplett durch den neuen Sourcetext.

Grüße,

Thomas

32

Sonntag, 19. Oktober 2008, 00:10

Der Sourcetext "Probe.asm" zum Experimentieren

Da die Formatierung mit "TAB"-Steuerzeichen beim Zeigen des Textes in einem Beitrag verloren geht, und aus dem Screenshot sich der Text nicht herauskopieren lässt, habe ich den Text hier nochmal als Datei angehängt...
»Ottili« hat folgende Datei angehängt:
  • Probe.zip (722 Byte - 21 mal heruntergeladen - zuletzt: 10. April 2014, 11:47)

ro.heg

RCLine User

Wohnort: Quickborn

  • Nachricht senden

33

Sonntag, 19. Oktober 2008, 10:51

Hallo Thomas,
gut das Du die Zip angehangen hast.
Deine war ohne Fehler, meine 2xErrors!
Was war: B´xxxxxxxx´ waren die ´ mit der falschen Taste eingegeben.
Mit der Taste ' (Taste#) lief es dann. Habe gestern bald graue Haare bekommen,
da mein alter Assembler nicht meckerte.
Habe den Quelltext mit Project/Quickbuild Led_1.asm übersetzt.
Deine Hinweise zu meinen Fragen werde ich nochmals durcharbeiten.
Ich merke, ich stehe mit der Project-Datei "Probe.mcp" noch im unsicheren.

Du schreibst unter anderem "Warum Du das Project nochmal öffnest, ist mir
nicht ganz klar, es wäre ja bereits offen"
Wenn ich MPLAB neu starte, sind bei mir alle 3 Fenster leer!

Die Mini- Hardware steht, bin ja gespannt. Aber die Simulation interessiert
mich auch.

Viele Grüße

Rolf

34

Sonntag, 19. Oktober 2008, 14:28

Hi Rolf,

Zitat

Original von ro.heg
Du schreibst unter anderem "Warum Du das Project nochmal öffnest, ist mir
nicht ganz klar, es wäre ja bereits offen"
Wenn ich MPLAB neu starte, sind bei mir alle 3 Fenster leer!

Das ist klar - beim Programmstart ist erstmal nichts geladen (kein Projekt, kein ASM File).
Nach Deiner Darstellung ging es aber nicht um den Start vom MPLAB, sondern Du hattest kurz vorher ein Projekt angelegt und eine Datei zum Projekt hinzugefügt. MPLAB mit Deinem Projekt müsste an dieser Stelle noch geöffnet sein. Schließt Du etwa nach jedem Schritt das Programm und öffnest es erneut?
Ich glaube, Du interpretierst zuviel in die Projektverwaltung hinein und hast Angst, irgendwo einen Fehler zu machen - davon lässt Du Dich zu sehr verunsichern. Sieh' es etwas lockerer!

Mach spasshalber einfach mal ein neues Projekt auf:
Klick auf Menü "Project/New",
gib dem Projekt den Namen "Rolf" und
wähle als "Project Directory" (= Projekt-Ordner auf der Festplatte) über [Browse] Deinen Ordner mit der ASM-Datei. Nun haben wir zunächst einen leeren "Workspace", d.h. keine Fenster innerhalb der MPLAB IDE sind geöffnet. Aber wir arbeiten jetzt am Projekt "Rolf" (ganz oben links in der Fenster-Überschrift steht's neben dem Microchip-Logo).
Nun kannst Du mit "File/Open" das ASM-File öffnen (muß nicht Rolf.asm heißen - Projektname und Quelltext-Name haben nichts miteinander zu tun!) und versuchen, durch [F10] einen "Build" durchzuführen, d.h. den Hex-Code zu erzeugen. Im Output-Fenster erscheint u.a.:
"Build aborted. The project contains no source files."
Aha! Eine Fehlermeldung und am Ende in dicken, roten Lettern "Build Failed" - Na Und?
Die Fehlermeldung ist Dein Freund - nicht Dein Feind! Sie sagt Dir, warum es so nicht funktioniert. Statt nun graue Haare zu kriegen, und mühsam stundenlang in irgendwelchen Anleitungen zu suchen, welchen Fehler Du nun schon wieder evtl. beim Anlegen des Projektes gemacht haben könntest, packen wir das Übel an der Wurzel: da steht "The project contains no source files" - das sollte man doch auch mit eher mäßigen Englisch-Kenntnissen hinkriegen, zu übersetzen, oder?
"Das Projekt enthält keine Source Files"
Gucken wir uns das Projekt an: "View/Project" zeigt uns tatsächlich ein leeres Ordner-Symbol bei "Source Files". Wir haben zwar die ASM-Datei geöffnet, das allein macht sie aber noch nicht zum Bestandteil des Projektes.
Abhilfe: wir fügen das File mit dem Quelltext über "Project/Add Files to Project" dem Projekt hinzu. Alternativ kannst Du das auch durch Klick mit der rechten Maustaste auf das Ordner-Symbol "Source Files" im Projekt-Fenster, dann "Add Files..." tun. Hauptsache, am Schluß steht die für dieses Projekt richtige xxxxx.asm Datei unter "Source Files" im Projekt-Fenster. Das ist es, worauf es ankommt, auf welchem Wege Du das erreichst ist völlig egal! Jetzt sollte [F10] auch mit "BUILD SUCCEEDED" als Erfolgsmeldung abschließen.

Grüße,

Thomas

ro.heg

RCLine User

Wohnort: Quickborn

  • Nachricht senden

35

Montag, 20. Oktober 2008, 20:04

Hallo Thomas,
mal auf die schnelle!
Dein vorgeschlagenes Projekt "rolf" habe ich durchgespielt, und es klappte
bis zum Schluß mit "BUILD SUCCEEDED".
Merkwürdig war dabei, daß das Projekt-Fenster nicht offen war.
Also Projekt / Open....Meldung: das Fenster ist schon offen, mh!
Es war aber nicht zu sehen. Also Neustart und es war sichtbar.
Dieses Phänomen habe ich schon öfters gehabt!
Nun habe ich Nägel mit Köpfen gemacht, den Ordner "PICPROC"
ganz gelöscht und nochmal mit Probe.asm angefangen.
Das Projekt-Fenster nennt sich "Probe mcw"
Der Inhaltsordner Probe.mcp
Source Files:
Probe.asm
Led_01.asm (hatte ich unter ADD abgespeichert)

D.h. tolle Sache, ich kann zwischen beiden hin und her blättern.
Mit F10 funktioniert alles.
So langsam bekomme ich "Land in Sicht"!

Viele Grüße

Rolf

36

Dienstag, 21. Oktober 2008, 02:19

Hallo Rolf,

das Projekt-Fenster muß nicht offen sein - eigentlich muß überhaupt kein Fenster geöffnet sein (außer MPLAB selbst, natürlich), um einen Projekt-"Build" oder "Make" durchzuführen. Wenn Du das Projekt-Fenster (= das Fenster mit xxxx.mcw in der Titelleiste) einfach schließt, bleibt damit das Projekt trotzdem geöffnet! Erst über das Menü "Project/Close" gehst Du wirklich aus dem Projekt 'raus.
Wenn Du zu Deinem aktuell geladenen Projekt das Projekt-Fenster öffnen willst, mache kein neues Projekt auf (mit "Project/Open" o.ä.), sondern klicke auf "View/Project".

Zitat


Der Inhaltsordner Probe.mcp
Source Files:
Probe.asm
Led_01.asm (hatte ich unter ADD abgespeichert)

das ist in diesem Fall nicht richtig, denn zum Erzeugen der Hex-Datei werden ALLE Dateien, die unter "Source" eingetragen sind, nacheinander abgearbeitet! Das ist dafür gedacht, daß ein Programm aus mehreren Source-Files (Modulen) bestehen kann. Mit zwei Source-Files, die aber jedes für sich ein komplettes Programm beinhalten, geht das schief! Hier geht es wohl nur deshalb, weil das alte "Probe.asm" gar keinen Programmcode enthielt!
Also, unsere kleinen Test-Progrämmchen werden wohl auch weiterhin nur aus einer einzigen "asm"-Datei bestehen, und nur diese sollte im Projekt unter "Source Files" angegeben sein!

Grüße,

Thomas

ro.heg

RCLine User

Wohnort: Quickborn

  • Nachricht senden

37

Dienstag, 21. Oktober 2008, 11:15

Hallo Thomas,
also nochmal umdenken!
Eine erfreuliche Info. Das LED-Programm läuft!
Auf der Programmieroberfläche zeigte sich nach laden der LED_01.hex
der Wert "Configuration = 3F84"
D.h. 11 1111 1000 0100
Bit 2 = 1 INTRC I/O Osz.
Bit 3 = 0 kein Watchdog
Bit 5 = 0 kein ext. Reset
Richtig so?

Grüße

Rolf

38

Dienstag, 21. Oktober 2008, 11:36

Richtig, das ist das Ergebnis der Zeile
" __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF"

Bit 2 = 1 INTRC I/O Osz.= "_INTRC_OSC_NOCLKOUT"
Bit 3 = 0 kein Watchdog = "_WDT_OFF"
Bit 5 = 0 kein ext. Reset = "_MCLRE_OFF"

(die anderen beiden "_PWRTE_ON" und "_BODEN_OFF" sind nicht so wichtig.)

Grüße,

Thomas

ro.heg

RCLine User

Wohnort: Quickborn

  • Nachricht senden

39

Sonntag, 26. Oktober 2008, 13:57

Hallo Thomas und natürlich auch an alle anderen Interessierten,
das Projekt "Ortungspieper" ist heute mit der Oberfläche MPLAB
über die Bühne gelaufen.
Bevor ich es nun in einen PIC12F629 brenne, hätte ich noch einige Fragen.

Die Hardware auf einer Rasterplatine der Größe 31x24 mm sieht wie folgt aus:
Sockel mit PIC12F629
Taste "Reset" an GP3 (MCLR) / Pin 4
Taste "Test" an GP1 / Pin 6 (d.h. drücken, der Pieper gibt sofort Alarm)
DIP-Schalter S1 an GP4 / Pin 3 (d.h. Pieper nach 20 Minuten Alarm)
DIP-Schalter S2 an GP0 / PIN 7 (d.h. nach 30 Minuten Alarm)
DIP-Schalter S3 an GP5 / Pin 2 (d.h. nach 40 Minuten Alarm)
GP2 / Pin 5 als Output (über BC547 wird der Pieper im Intervall angesteuert)
Da die Pull-UP Widerstände im PIC schon integriert sind, gibt es da garnicht
viel zu löten.
Aber jetzt kommt es "die Software"!
#include<p12f629.inc>

radix dec ;Zahlenbasis dezimal

_config ;hier habe ich nur _MCLRE_OFF in _ON geändert, alles andere habe
;ich aus unseren LED Programm übernommen

SEKUNDEN_HIGH EQU H'10'
SEKUNDEN_LOW EQU H'11'
SW0 EQU H'00'
SW1 EQU H'01'
SW2 EQU H'02'
SW3 EQU H'03'
LOOP1 EQU H'20'
LOOP2 EQU H'21'
LOOP3 EQU H'22'

org 0x00

;Vorbereitung
movlw 0x3F
movwf CMCON ;GP0-GP5 digital
bsf STATUS,RP0 ; Bank1
movlw B'111011'
movwf TRISIO ;GP2 = Output
movlw B'111011'
movwf WPU ;Widerstände außer GP2
bcf OPTION_REG,7
bcf STATUS,RP0 ;Bank 0

Nun begann die harte Arbeit, wobei ich zur Abfrage der Eingänge den
Befehl "btfss" verwendet habe. D.h. Sprung wenn der Eingang HIGH vorweist.
Also ADD und Taste F10*******grüner Balken mit 0 Fehler. Ich glaubte,
mich selbst übertroffen zu haben. Aber ganz so war es doch nicht!
Es wurden mir Warnungen über alle Variablen von SEKUNDEN_HIGH
bis LOOP3 gegeben.
Text: "Warnung Found Label after column 1."
Ich habe aus den H'xx' = h'xx' geändert, bringt nichts. Was hab ich da nur falsch
gemacht.
2. Den Befehl "radix" kann ich in keinem Buch finden. Werden mit dec die Zählschleifen in dezimal verarbeitet.
Wie würde es denn bei hexadezimal aussehen ?

So, jetzt raucht mir erst mal der Kopf!

Viele Grüße an alle

Rolf

40

Sonntag, 26. Oktober 2008, 16:38

Hallo Rolf,

beginnen deine Variablen-Definitionen in Spalte 1?
SEKUNDEN_HIGH ist ein Label mit dem Wert H'10', und diese Vereinbarung muss in Zeile 1 beginnen, also ohne Leerzeichen oder Tab davor.

Mit dem radix dec-Befehl legst du fest, dass alle numerischen Konstanten als Zahlen im Dezimalsystem interpretiert werden sollen. In deinem Code ist aber für jede Konstante explizit die Basis vorgegeben, soweit ich das sehen kann, (z.B. H'xx' oder 0x... für hexadezimal, B'xx' für binär), so dass diese Direktive ohne Wirkung bleibt.

Grüße
Claus