www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ausgangspin definieren


Autor: Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe gerade folgendes Problem und ich weiß nicht wie man das löst. 
Eigentlich ganz Simpel, ich möchte wissen ob bzw. wie ich per define 
einen Ausgang auf 1 setzen kann also ich möchte nachher einfach 
schreiben:

Ausgang = 1
oder Ausgang = 0

und es soll hald zb. der PORTB5 auf 1 bzw 0 gesetzt werden.

Ist das so überhaupt möglich?

Danke

Autor: regrtrh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PORTB |= (1 << PB5); // auf 1
PORTB &= ~(1 << PB5); // auf 0

Autor: Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

du hast mich falsch verstanden.
Ich möchte das so machen:

#define Ausgang .......

void main(void)
{   Ausgang =1;
    Ausgang =0;
}

Ich möchte also nur "Ausgang" auf 1 bzw. 0 setzen ohne "PORTB |= (1 << 
PB5);" oder so schreiben zu müssen.

MfG

Autor: golum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void s_input(uint8_t x)
{
  if (x==0) ...
  else ...

}

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich möchte also nur "Ausgang" auf 1 bzw. 0 setzen ohne "PORTB |= (1 <<
>PB5);" oder so schreiben zu müssen.

#define Ausgang_High PORTB |= (1 << PB5) // auf 1
#define Ausgang_Low PORTB &= ~(1 << PB5) // auf 0

void main(void)
{   Ausgang_High;
    Ausgang_Low;
}

Autor: Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

So habe das mit den defines nun so ähnlich gemacht wie holger das sagte.

Kann mir jemand sagen wieso das nicht funktioniert?

#define phaseASet { PORTD |= (1 << PD0);  //Am=0
                    PORTD |= (1 << PD1);  //Ap=1;
            }

Lg

Autor: Magnetus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei #define über mehrere Zeilen musst du am Ende jeder Zeile (mit 
Ausnahme der Letzten) ein "\" setzen.

Außerdem sollten (wenn ich mich nicht irre) in solchen Fällen die 
Kommentare nicht als "// Kommentar" sondern als "* Kommentar *" 
geschrieben werden, da sonst auch die folgenden Zeilen vom Compiler als 
Teil des Kommentars angesehen und somit nicht compiliert werden.

Gruß,
Magnetus

Autor: Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Habs nun so probiert:

#define phaseASet { PORTD |= (1 << PD0);/
        PORTD |= (1 << PD1);
            }

Compiler will immer noch nicht

er meint:
../neu.c:5: error: expected identifier or '(' before 'volatile'
../neu.c:5: error: expected ')' before '(' token

Lg

Autor: Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups
Backslash nicht Schrägstrich!

Ok mein Fehler

Nun meint er aber:
../neu.c:4:41: warning: backslash and newline separated by space

Autor: Andi ... (xaos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der unterschied zwischen slash und backslash ist der geläufig ? ;)

Autor: Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, so jetzt ist auch das warning weg!

Besten Dank!

Allerdings einen Kommentar akzeptiert er weder als "//Kommentar" noch 
als"/*Kommentar*/"

Hat jemand eine Idee?

MfG

Autor: Bernd N (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

struct bits {
    uint8_t b0:1;
    uint8_t b1:1;
    uint8_t b2:1;
    uint8_t b3:1;
    uint8_t b4:1;
    uint8_t b5:1;
    uint8_t b6:1;
    uint8_t b7:1;
} __attribute__((__packed__));

#define SBIT(port,pin) ((*(volatile struct bits*)&port).b##pin)

#define TestPin SBIT (PORTD, 7)

Jetzt kannst Du schreiben:

TestPin = 1;
TestPin = 0;

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.