Forum: Mikrocontroller und Digitale Elektronik Einen allgemeinen Namen für alle PORTś definieren?


von E. L. (robo-man)


Lesenswert?

Hallo, meine Frage steht eigentlich schon im Titel. Kann man eigentlich 
für alle Ports (PORTA, PORTB, PORTC.....) einen und denselben namen 
definieren z.B. OUT. Wenn ja wie? Wäre sehr dankbar.
So funktionierts auf jedenfall nicht:

#define OUT PORTA
#define OUT PORTB
#define OUT PORTC

   while (1) // Mainloop
   {

OUT |= (1<<PA2);
   }

von Oliver J. (skriptkiddy)


Lesenswert?

Alex L. schrieb:
> Kann man eigentlich
> für alle Ports (PORTA, PORTB, PORTC.....) einen und denselben namen
> definieren z.B. OUT. Wenn ja wie?

Das geht nicht.

von Armin S. (nimra)


Lesenswert?

So wie du es versuchst, kann es auch gar nicht gehen. In der iom16.h 
(wird automatisch ueber io.h eingebunden wenn Atmega16 verwendet wird, 
nur mal als Beispielcontroller, bei jedem anderen analog dazu) vom 
avr-gcc z.B. hast du die Zeilen
1
#define PA1     1
2
#define PA2     2
3
[...]
4
#define PB1     1
5
#define PB2     2

Fuer die Ports sind nur Zahlen definiert.

Lies dazu auch mal den Artikel Bitmanipulation.

Fuer was brauchst du das ganze ueberhaupt?

MfG
NIMRA

von Maxx (Gast)


Lesenswert?

Du wirst dir da wohl einfach eine (inline) Funktion zum Setzen/Löschen 
von Bits aller Ports bauen müssen.

Für reine left-assignes würd es gehten (ala ALL = 123). Damit wirst du 
allerdings nicht glücklich, da |=, &= etc bzw alles bei dem der Ausdruck 
auf der rechten Seite des Gleichheitszeichen auftaucht damit nicht 
verwendet werden kann.

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.