Das heißt, das was ich im Beitrag: "#5" geschrieben habe kann ich nicht bei einem ATxMega anwenden sondern nur bei einem ATmega?
Das heißt, das was ich im Beitrag: "#5" geschrieben habe kann ich nicht bei einem ATxMega anwenden sondern nur bei einem ATmega?
Doch, direkt auf dem DIR-Register funktioniert es so wie in #5 beschrieben.
Zusätzlich ist aber die ODER-Verknüpfung auch als Hardware vorhanden.
DIR |= (1<<P5);
funktionier auch auf dem xMEGA.
Zusätzlich geht aber auch:
DIRSET = (1<<P5);
Zudem kann man über DIRSET auch mehrere Bits gleichzeitig setzen:
DIR |= ((1<<P5)|(1<<P4)|(1<<P3));
oder
DIRSET = ((1<<P5)|(1<<P4)|(1<<P3));
besonders das Zurücksetzen wird noch etwas vereinfacht
DIR &= ¨(1<<P5);
oder
DIRCLR = (1<<P5);
MfG Peter(TOO)
Geändert von Peter(TOO) (20.12.2016 um 13:42 Uhr) Grund: Zwei Klammern vergessen
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
das spart wertvolle Rechentakte, vor allem beim Bitbanging! (Also wenn man irgend einen Bus in Software simuliert)
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
O.K.,
das heißt beim xMega muss ich halt das Register: "DIR" statt "DDRx" verwenden, wenn ich es so machen will wie in meinem Beitrag #5.
Dann funktioniert das genauso.
Danke für die Hilfe!
MfG
korrekt!
die REgister sind beim XMega allerdings etwas anders strukturiert als beim normalen Mega
PORTx.DIR zum beispiel statt DDRx wie du es beschrieben hast. Es werden zwar auch die entsprechenden direkten PORTx_DIR Makros angeboten, aber nicht für alle Funktionen des Controller, daher ist es besser sich gleich die Struktur Variante anzugewöhnen.
Und behalte die Verwendung der DIRSET und DIRCLR REgister im Hinterkopf, die Dokumentation greift sehr oft darauf zurück und es spart wie erwähnt Rechentakte (falls es der Compiler am ende nicht sowieso optimiert, wäre interessant mal den Assembler Code dazu zu debuggen)
PS: es gibt sogar ein DIRTGL bei dem man mit einer einfachen 1 den pin hin und herschalten kann mit nur einem Rechencycle![]()
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Super, danke für die Hilfe!
Lesezeichen