Forum: Mikrocontroller und Digitale Elektronik Macros in C?


von crazy horse (Gast)


Lesenswert?

Gibts sowas?
Ich muss im Timerinterrupt (500µs) rel. viele Eingänge (10) abfragen
und die Impulse zählen (32bit), dazu kann zur Laufzeit per Dipschalter
die Entprellzeit für jeden einzelnen Eingang umgeschaltet werden.
Erschwerend kommt hinzu, dass die Eingänge wild über verschiedene Ports
verteilt sind, also hab ich mich für ein lineares Programm (also ohne
Schleife) entschieden, Prozessorzeit ist knapp, Speicher hab ich genug.

Funktioniert auch prima, Änderungen sind allerdings recht
fehleranfällig (muss dann immer in 10 einzelnen Programmteilen gemacht
werden).
#define in7 PINC.1
#define mode_in7 PINA.4

if (mode_in7)   //ohne Entprellen
   {if (in7 && !in7_bak) counter[7]++;
   }
   else        //mit Entprellen
     {.
      .
     }
in7_bak=in7;

Den Teil mit dem Entprellen habe ich jetzt mal weggelassen. Gibt es
eine Möglichkeit, dieses so zu schreiben wie bei einem Assembler-Macro,
in dem Fall also mit dem Parameter 7 compilieren zu lassen?

von Christian Zietz (Gast)


Lesenswert?

Du möchtest Dir den ##-Operator des Präprozessors angucken. Kleines
Beispiel: Wenn ich

#define var(x) var##x

schreibe, dann macht der Präprozessor aus

i = var(1);

das hier

i = var1;

CU Christian

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.