Moin Klebwax,
ersteinmal Danke für deine Mühe und Informationen.
Im Prinzip hast Du recht, man braucht "meistens" keinen Assembler, wenn man schon in "C" programmiert.
Aber manchmal gibt es doch einige Ausnahmen.
Ich möchte die RGB Leds Typ WS2812B ansteuern und die haben/wollen leider ein sehr genaues Timing haben. +/- 150ns laut Datenblatt.
Da bleibt nicht viel Freiraum für einen "nicht optimierten" C-Code (Free Version)
Im Prinzip will ich nur die Daten in dem "richtigen" Timing ausschieben, der Rest sollte in "C" sein.
Auch richtig erkannt, dass man dafür das SPI Interface nehmen könnte, wobei ich hier noch nicht sicher bin ob das
mit dem Timing hinhaut. Bin mometan noch etwas in der Experimentierphase.
Generell sollte es aber auch möglich sein, Assembler mit "C" zu mischen und ich bin quasi am erforschen
wie das am besten oder überhaupt geht. Komme ja auch grad etwas weiter....
Mit dem Preprocessor ist mir eigentlich klar, aber anscheinend nur "eigentlich"
Wenn der Preprozssor alle #defines vorher einsetzt bevor er compiliert und/oder assembliert,
dann müsste die Assemblerzeile doch auch richtig aussehen.
#define ZAEHLER 8
sagt aus, daß überall im Code wo ZAEHLER auftaucht die 8 eingetragen wird (wie Du auch geschrieben hast: suchen/ersetzen).
Erst dann wird compiliert/assembliert und demnach steht doch dann in meiner Assemblerzeile
anstelle von
asm("movlw ZAEHLER");
asm("movlw 8");
oder habe ich das falsch verstanden ?
[Edit] mir ist grad ein Licht aufgegangen:
Ein define wird NICHT ersetzt wenn er in Ausdrücken mit Hochkomma steht.
Der identifier wird nur ersetzt, wenn er ein Token bildet. Der identifier wird also nicht ersetzt, wenn er in einem Kommentar, in einer Zeichenfolge oder als Teil eines längeren Bezeichners erscheint ...
Siro
(Ziel ist es mit einen kleinen 8 Füssler (momentan PIC12F1840) 24 RGB Leds anzusteuern)
Das gibt es übrigens auch schon fertig in Assembler:
http://www.picalic.de/PIC2WS2812/picsolution.html
Lesezeichen