Forum: Compiler & IDEs Portpin ansteuern


von jga (Gast)


Lesenswert?

Hallo,

ich möchte ein einzelnes Portpin(ATMega162) ansteuern(setzen bzw. 
rücksetzen in der Art und Weise -> PINB_1=1; PINB_1=0;), jedoch habe ich 
leider noch keine Definition gefunden.

Komischerweise funktioniert der Befehl sbi(PORTB,1) oder cbi(PORTB,1)

bei mir nicht. Welche lib muss denn dabei eingebunden werden bzw.muss im 
Makefile etwas angepasst werden?

Kann mir jemand weiterhelfen?

Danke

jga

von Johannes M. (johnny-m)


Lesenswert?


von Matthias (Gast)


Lesenswert?

<Glaskugel Modus>

Du benutzt gcc. Hast die passenden HeEaderdateien eingebunden.....

</Glaskugel Modus>

Ein paar Infos mehr wären auch nicht schlecht ;-)
Z.B. den Code hier posten. Dann könnte man evtl. helfen.

von jga (Gast)


Lesenswert?

Hallo,

ja ich benutze gcc. kannst du mir sagen welche headerdateien ich z.B. 
für sbi und cbi benötige?

den code kann ich derzeit nicht posten, bin nicht zuhause:)-

Danke

jga

von Hmm... (Gast)


Lesenswert?

Ganz portabel ohne GCC-spezifische Makros:
1
  PORTB |=    0x01;   /* Pin B.0 auf 0 setzen */
2
  PORTB &= ~(0x01);   /* Pin B.0 auf 1 setzen */

von Stefan E. (sternst)


Lesenswert?

Hmm... wrote:
> Ganz portabel ohne GCC-spezifische Makros:
1
  PORTB |=    0x01;   /* Pin B.0 auf 0 setzen */
2
  PORTB &= ~(0x01);   /* Pin B.0 auf 1 setzen */

In den Kommentaren sind 0 und 1 vertauscht.

von jga (Gast)


Lesenswert?

hab vergessen, daß ich die zwei nibbles(0-3 und 4-7) seperat beschreiben 
möchte, daher ist der zugriff auf das einzelne portpin notwendig(also 
entfällt z.b. ein zugriff über PORTB |= 0x01;). ansonsten überschreib 
ich mir immer wieder das obere oder das untere nibble.

welche möglichkeit besteht hier?

jga

von Johannes M. (johnny-m)


Lesenswert?

jga wrote:
> hab vergessen, daß ich die zwei nibbles(0-3 und 4-7) seperat beschreiben
> möchte, daher ist der zugriff auf das einzelne portpin notwendig(also
> entfällt z.b. ein zugriff über PORTB |= 0x01;). ansonsten überschreib
> ich mir immer wieder das obere oder das untere nibble.
Du sollst den Artikel über Bitmanipulation, den ich oben schon mal 
verlinkt habe, auch lesen! Mit "PORTB |= 0x01;" bzw. "PORTB &= ~0x01;" 
wird gar nichts überschrieben, außer dem einen einzigen Bit mit der 
Nummer 0.

von jga (Gast)


Lesenswert?

du hast recht, danke für den hinweis:))-

jga

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.