Forum: Mikrocontroller und Digitale Elektronik Probleme mit #define


von Olli (Gast)


Lesenswert?

Hi Leute,

ich habe ein Programm für einen Temperatursensor (SHT11) geschrieben. In 
dem Porgamm habe ich ein paar Dinge mit #define definert:

...
#define SHT_DDR      DDRC    // Port with clock
#define SHT_PORT      PORTC    // Port with clock
#define SHT_PIN      PINC    // Port with clock
#define SHT_CLOCK      3    // Pin used to
#define SHT_DATA      2    // Pin used to
...


nun möchte ich einen zweiten Sensor am selben Port schließen. Um nicht 
die ganze Funtionen umschreiben zu müssen wäre es am Besten, wenn ich 
irgendwie nur die Werte von SHT_DATA und SHT_CLOCK ändern könnte. Ich 
kann ja aber schlecht sagen


      for(i=0; i<2; i++)
        {

         if(i==0)
          {
          #define SHT_CLOCK      3
    #define SHT_DATA      2
    shtsensor();
    }
  else if(i==1)
    {
    #define SHT_CLOCK      4
    #define SHT_DATA      5
    shtsensor();
    }

          }
Ich hoffe aber aus diesem falschen BSP wird mein Problem klar. 
Vielleicht habt ihr ja ne Lösung für mich.
Gruß
Olli

von Elektro G. (e_g)


Lesenswert?

Warum definierst du nicht zwei verschiedene?

#define SHT_CLOCK1      4
#define SHT_DATA1      5

#define SHT_CLOCK2      3
#define SHT_DATA2      2

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

du könntest mit #UNDEF vieleicht arbeiten... oder halt einfach 2 defines

von Johannes M. (johnny-m)


Lesenswert?

Um ein Umschreiben wirst Du nicht rumkommen. Aber es dürfte doch wohl 
nicht so schwer sein, die Makros rauszuschmeißen und der Funktion 
dafür Parameter zu verpassen...

von Rolf Magnus (Gast)


Lesenswert?

Oder mach eine globale Variable draus, die du zwischendrin überschreiben 
kannst. Ist nicht allzu schön, aber mit wenig Änderung verbunden.

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.