Forum: Compiler & IDEs Bedeutung dieser Pic-inc-macros hier noch teilweise unklar.


von Rudi R. (microwitsch)


Lesenswert?

Hallo zusammen,

gibt es irgendein Dokument von microchip welches zb. diese Macros aus 
der Pic-inc.datei hier genau erklärt?

Punkt 2. hier wäre mir klar...nach einem Komma dann die Position des 
Bits
aber was sagen die anderen aus??

danke im voraus...ich denke hier wissen das viele schon, aber ich bin 
noch neu in diesem Gebiet.:)

1. PORTA_RA0_POSN                           equ 0000h
2. PORTA_RA0_POSITION                       equ 0000h
3. PORTA_RA0_SIZE                           equ 0001h
4. PORTA_RA0_LENGTH                         equ 0001h
5. PORTA_RA0_MASK                           equ 0001h

von Blume (Gast)


Lesenswert?

Rudi R. schrieb:
> gibt es irgendein Dokument von microchip welches zb. diese Macros aus
> der Pic-inc.datei hier genau erklärt?

Es ist ja eher andert herum man kannt das Datenblatt und freut sich das 
es vorgefertigte Files gibt.

von Hans B. (Gast)


Lesenswert?

siehe z.B.
https://www.microchip.com/forums/m241838.aspx

....der compiler wird das angegebene Wort (z.B. PORTA_RA0_POSN)  mit dem 
durch den equ-Befehl festgelegten Zahlenwert ersetzen. (hier z.B. wird 
die Zahl 0000h eingesetzt)

Eine hervorragende (deutschsprachige) Seite zum Einstieg in PICs ist:
https://www.sprut.de/

von Rudi R. (microwitsch)


Lesenswert?

Hans B. schrieb:
> siehe z.B.
> https://www.microchip.com/forums/m241838.aspx
>
> ....der compiler wird das angegebene Wort (z.B. PORTA_RA0_POSN)  mit dem
> durch den equ-Befehl festgelegten Zahlenwert ersetzen. (hier z.B. wird
> die Zahl 0000h eingesetzt)
>
> Eine hervorragende (deutschsprachige) Seite zum Einstieg in PICs ist:
> https://www.sprut.de/

Jou, die sprute-Seite ist wirklich gut, die inspiziere ich schon eine 
ganze Weile!

Und wenn das so ist, warum gibt es dann 3 unterschiedliche Macros um auf 
1 zu setzen und 2 um zu nullen?Ist das normal?

von Hans B. (Gast)


Lesenswert?

...ich glaub, das sind keine Macros sondern nur Zuweisungen.
Der PIC versteht ja grundsätzlich keine Textbezeichnungen sondern nur 
Zahlen.

Warum mehrere? Keine Ahnung - aber vielleicht wurde z.B. bei früheren 
Prozessoren und Beispielprogrammen andere Abkürzungen verwendet - und 
bei mehr fortgeschrittenen Prozessoren dann die Bezeichnungen geändert?
Wahrscheinlich gibt's mehrere Gründe.

Wenn das nicht gefällt, dann sucht man sich im Datenblatt die richtigen 
Zahlenwerte heraus und setzt diese dann direkt in den Code.
(Der Zahlenwert kann dann aber bei jedem Prozessor ein anderer sein....)

von Markus F. (mfro)


Lesenswert?

Rudi R. schrieb:
> Und wenn das so ist, warum gibt es dann 3 unterschiedliche Macros um auf
> 1 zu setzen und 2 um zu nullen?Ist das normal?

Nicht dass ich das sicher wüsste, aber ich denke, solche steinzeitlichen 
Plattformen wie die PICs (mir immer wieder ein Rätsel, wie man sich das 
heutzutage noch freiwillig antun kann) schleppen allerhand historischen 
Ballast mit sich herum.

von Teo D. (teoderix)


Lesenswert?

Rudi R. schrieb:
> Und wenn das so ist, warum gibt es dann 3 unterschiedliche Macros um auf
> 1 zu setzen und 2 um zu nullen?Ist das normal?

Sowas wäre für nen Compiler und Codegeneratoren interessant...?-/

von Hans B. (Gast)


Lesenswert?

.... das hat mit dem (angeblich steinzeitlichen) Prozessor überhaupt 
nichts zu tun.
Wenn im include-file z.B. steht:
PORTA                                    equ 000Ch

dann kann man im code einfach "PORTA" schreiben und muss sich nicht die 
Adresse aus dem Datenblatt suchen (hier= 000Ch) um den Port zu lesen od. 
zu beschreiben. (Die Bezeichnung PORTA wird durch den Zahlenwert der 
Adresse ersetzt)
Diese Adresse kann bei den unterschiedlichen Prozessortypen verschieden 
sein.
Deshalb gibt's für jeden Prozessor ein include-file und natürlich auch 
ein Datenblatt in dem auch der Adresswert steht.

von W.S. (Gast)


Lesenswert?

Markus F. schrieb:
> Nicht dass ich das sicher wüsste, aber ich denke, solche steinzeitlichen
> Plattformen wie die PICs

Tja, dir fehlt zuvörderst das sichere Wissen - und das offenbar auf 
breiter Front. Bedenke mal, daß solche genau so steinzeitlichen 
Plattformen wie der 8051 auch heutzutage noch in Mengen eingesetzt 
werden. Das ist viel weiter verbreitet, als du es dir denkst. Und bei 
Software ist es sinngemäß. Solche steinzeitlichen Betriebssysteme wie 
Windows haben einen erheblichen Marktanteil - nur das noch ein Jährchen 
steinzeitlichere Linux kommt da nicht heran... Aber lassen wir die 
Polemik hier mal bleiben.

Mal im Ernst: Wie kommst du auf solche eigenartigen Ansichten? Ich 
vermute, daß du alle Elektronik nur unter dem eingeschränkten 
Blickwinkel des C-Programmierers siehst. Im Eröffnungspost kann man 
lesen: 'equ' - und das bedeutet, daß dies aus zugehörigen 
Assembler-Quellen zu kommen scheint. Vermutlich kennst du die 
PIC-Architektur(en) nur wenig bis garnicht und fühlst dich genau deshalb 
erstmal verschreckt und folgerst 'was ich nicht kenne, ist bäh..'.

W.S.

von Markus F. (mfro)


Lesenswert?

W.S. schrieb:
> Vermutlich kennst du die
> PIC-Architektur(en) nur wenig bis garnicht und fühlst dich genau deshalb
> erstmal verschreckt und folgerst 'was ich nicht kenne, ist bäh..'.

Sei versichert: ich kenne die PIC-Plattform gut genug, um zu wissen, 
dass sie gegenüber modernen Konzepten im Wesentlichen aus 
einschneidenden Einschränkungen besteht. Ich wiederhole mich: warum man 
sich so was ohne Not ("Not" durchaus auch im Sinne von "Code Recycling") 
antut, ist mir schleierhaft.

von Franko P. (sgssn)


Lesenswert?

Hallo W.S.
dieser lanweilige Disput stammt meines Wissens von den Anhängern der 
ATMEL uC. Die fanden, dass eben PIC Steinzeit ist gegen die Architektur 
von ATMEL uC. Ist öde, so wie der ewige Streit zwischen Golf-Fahrern und 
Astra-Fahrern mal war.

Gruß
Gerhard

von Chris (Gast)


Lesenswert?

Equ set und = sind im mpasm manual beschrieben. Alternativ auch im gpasm 
,dann aber nicht mehr von microchip, ist aber vielleicht einfacher zu 
finden da letzthin einige links von microchip ungültig wurden.

von Rudi R. (microwitsch)


Lesenswert?

Markus F. schrieb:
> Rudi R. schrieb:
>> Und wenn das so ist, warum gibt es dann 3 unterschiedliche Macros um auf
>> 1 zu setzen und 2 um zu nullen?Ist das normal?
>
> Nicht dass ich das sicher wüsste, aber ich denke, solche steinzeitlichen
> Plattformen wie die PICs (mir immer wieder ein Rätsel, wie man sich das
> heutzutage noch freiwillig antun kann) schleppen allerhand historischen
> Ballast mit sich herum.

Tja. ich habe ein Lehrbuch für Anfänger, da wird dieser PIC verwendet 
und das Buch ist eigentlich noch nicht so alt!?
Dieser PIC ist ziemlich universell und hat eine Doku von 669 Seiten!
Dass dieser nicht auf Anhieb zu verstehen ist, scheint einleuchtend.

Die Universelle Einsetzbarkeit gefällt mir jedenfalls...beschäftige ich 
mich lieber erst mit einen, denn der kann ja schon eine ganze Menge und 
wird mir wohl ausreichen.

[[https://www.thalia.de/shop/home/artikeldetails/A1055371411?ProvID=11000533&gclid=EAIaIQobChMI872Mz8_o8wIVRrrVCh19DAhjEAYYASABEgK41PD_BwE&nclid=gtcJwPfMQrS5AqOKpNlUz4_PpKUtZIwhoGrPxnychd00myNO0Qtzkh_vLca623rt]]

von W.S. (Gast)


Lesenswert?

Markus F. schrieb:
> Ich wiederhole mich: warum man
> sich so was ohne Not ("Not" durchaus auch im Sinne von "Code Recycling")
> antut, ist mir schleierhaft.

OK, dann wiederhole ich mich auch einmal: Diese kleinem PICs haben 
pfiffige Eigenschaften, mit denen man Dinge tun kann, die zum einen 
nicht mit anderen µC gehen und die zum anderen sparsame und sinnvolle 
Lösungen bieten, die man auf andere Weise ebenfalls nicht tun kann, ohne 
dabei mehr Aufwand zu treiben, als das mit eben diesen von dir nicht 
verstandenen PICs geht.

Mit anderen Worten: Deine Einschätzung beruht nur auf deinem Blickwinkel 
auf die Dinge. Das ist alles.

Natürlich ist es einem jeden selber überlassen, womit er sich befaßt - 
es sei denn, der jeweilige Broterwerb erfordert etwas anderes. Suche dir 
also für deine Privatangelegenheiten eine andere Architektur aus und 
werde damit glücklich.

W.S.

von dummschwaetzer (Gast)


Lesenswert?

W.S. schrieb:
> pfiffige Eigenschaften, mit denen man Dinge tun kann, die zum einen
> nicht mit anderen µC gehen

welche denn zum Beispiel?

von Chris (Gast)


Lesenswert?

Xmos als Beispiel. Die Entwicklungsumgebung ist aber sehr Zickig, oder 
UC mit tpu, noch zickiger.

von Markus F. (mfro)


Lesenswert?

W.S. schrieb:
> Mit anderen Worten: Deine Einschätzung beruht nur auf deinem Blickwinkel
> auf die Dinge. Das ist alles.

Natürlich. Worauf denn sonst? Persönliche, (leider) leidvolle Erfahrung.

W.S. schrieb:
> Diese kleinem PICs haben
> pfiffige Eigenschaften, mit denen man Dinge tun kann, die zum einen
> nicht mit anderen µC gehen und die zum anderen sparsame und sinnvolle
> Lösungen bieten, die man auf andere Weise ebenfalls nicht tun kann,

was das genau wäre, würde mich echt mal interessieren.

von W.S. (Gast)


Lesenswert?

Markus F. schrieb:
> Natürlich. Worauf denn sonst? Persönliche, (leider) leidvolle Erfahrung.

Persönliche und leidvolle Erfahrung? Sehr seltsam. Allerdings erinnert 
mich so etwas an die damaligen Diskussionen zwischen den Anhängern von 
Motorola und denen von Intel/Zilog. Ist schon länger her. Der Knackpunkt 
war damals der Unterschied in der Endianess beider Architekturen, der 
sich dann in geradezu kreischenden Auseinandersetzungen entlud. So etwas 
ähnliches vermute ich da bei dir.

> was das genau wäre, würde mich echt mal interessieren.

Lies die zugehörigen Manuals selber, dann siehst du es - vorausgesetzt, 
du interessierst dich tatsächlich dafür. Aber da habe ich angesichts 
deiner Worte weiter oben so meine Zweifel.

W.S.

von Markus F. (mfro)


Lesenswert?

W.S. schrieb:
>> was das genau wäre, würde mich echt mal interessieren.
>
> Lies die zugehörigen Manuals selber, dann siehst du es - vorausgesetzt,

also keine. Trotzdem danke.

von meow (Gast)


Lesenswert?

W.S. schrieb:
> Lies die zugehörigen Manuals selber, dann siehst du es - vorausgesetzt,
> du interessierst dich tatsächlich dafür. Aber da habe ich angesichts
> deiner Worte weiter oben so meine Zweifel.

Du schreibst, in beleidigender Tonart, jemanden anders, dass er das
Manual lesen soll.
Selber ließt du aber nicht das C Manual und beschimpst andere als ewige
Besserwisser bei einem Hinweis zu Fehlern von dir.

Das ist schon sehr frech von dir!
Deine Ansprüche gelten nicht für dich selber?

von Markus F. (mfro)


Lesenswert?

meow schrieb:
> Das ist schon sehr frech von dir!
> Deine Ansprüche gelten nicht für dich selber?

Lass' mal. Wir sind doch nicht zur Vermittlung von Kinderstube hier.

Die hat man entweder, oder eben nicht.

von Frank E. (ffje)


Lesenswert?

PIC, sparsame Lösungen bei der HW. Man kann z.B. auf den Quarz 
verzichten, wenn die Frequenz des erstaunlich stabilen int. Osz. (sh. 
DB) ausreichend ist.

mfG  fE

: Bearbeitet durch User
von Markus F. (mfro)


Lesenswert?

Frank E. schrieb:
> Man kann z.B. auf den Quarz
> verzichten, wenn die Frequenz des erstaunlich stabilen int. Osz. (sh.
> DB) ausreichend ist.

das haben viele andere moderne Designs ebenso - kein Grund, sich einen 
PIC anzutun.

von Teo D. (teoderix)


Lesenswert?

Sandförmchen, günstige Sandförmchen, leuchtende Farben, robust und 
haltbar, SANDFÖRMCHEN.....

von W.S. (Gast)


Lesenswert?

Rudi R. schrieb:
> Und wenn das so ist, warum gibt es dann 3 unterschiedliche Macros um auf
> 1 zu setzen und 2 um zu nullen?Ist das normal?

Rudi R. schrieb:
> 1. PORTA_RA0_POSN                           equ 0000h
> 2. PORTA_RA0_POSITION                       equ 0000h
> 3. PORTA_RA0_SIZE                           equ 0001h
> 4. PORTA_RA0_LENGTH                         equ 0001h
> 5. PORTA_RA0_MASK                           equ 0001h

Das sehe ich ein wenig anders:
1. und 2. RA0 ist an Bitposition 0
3. und 4. RA0 beinhaltet nur 1 Bit
5. mit einem einzigen Bit kann es maskiert werden

Aus Assemblersicht sieht das etwa so aus:
    SET   RA0      ; wird zu
    SET   PortA, 0 ; setzt Byteadresse, Bitnummer auf 1
bzw. bei lesender Benutzung
    SKIP  RA0      ; wird zu
    BTFSS PortA, 0 ; Überspringt wenn Byteadresse, Bitnummer gesetzt ist
Da jeder dieser Befehle für sich ein einzelner Befehl ist, können 
Byteadresse und Bitnummer als Adresse für die boolean Variable RA0 
zusammengefaßt werden. Das ergibt eine atomare Operation bei boolean 
Variablen (ggf. ne Ausnahme bei Ports in bestimmten Fällen).

Und um das Ganze beschreibungsgerecht in eine Include-Datei zu fassen, 
dienen dann die besagten obigen Definitionen.

W.S.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.