www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Port BIt Invertieren ?


Autor: Ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo @ all,
ich möchte bei einem 2313 ein Bit im DDRB invertiren.
z.b. DDB5
Gib es dafür einen ähnlichen Befehl wie COM ?
Gruß Ingo

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein.

Autor: Ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Antwort
Also dann doch umständlich :-((

Autor: dunkelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lt. Datenblatt kann man Pins Togglen, indem man eine eins in das
entsprtechende PORTXn Register schreibt
(Datenblatt Tiy2313, Seite 47 oben.)

mfg
DKM
www.loetstelle.net

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es war aber nicht die Rede vom Tiny2313...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und außerdem muss man die 1 nicht in das Portregister sondern in das
Pin-Register schreiben.
Aber das funktioniert nur bei einigen wenigen neuen AVR-Typen.

...

Autor: dunkelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Fragestellung liess offen, ob es ein 90S2313 oder ein Tiny2312 ist,
deshalb habe ich explizit den Tiny2313 erwähnt.

Autor: dunkelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah, genau lesen, der will ja das Bit im DDR-Register invertieren..

war halt doch noch zu früh..

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups... Ertappt...
Dann nehme ich alles zurück und behaupte das Gegenteil... ;-))

...

Autor: Hartmut Gröger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

In Assembler

       in r16,Port  (DDRx,Portx)
       ldi r17, 1<< Bitnummer  (0..7)
       eor r16,r17
       out Port,r16

       fertig

MfG HG

Autor: Ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo @ All,
also es ist ein 90S2313.
Hier mal etwas mehr Infos zu meinem Problem.
Die Schaltung soll mal später in eine Modellfeuerwehr.
Ich habe dann verschiedene Lichtmuster, z.B. 2 Rundum Lichter die
asynchron blinken, Blinker recht Blinker links bzw. Warnblinker,
Frontblitzer, Scheinwerfer + Rücklicht und Bremslicht.
Jetzt lasse ich in einer Schleife alle Blinkmuster dauerhaft laufen.
Bei einem Tastendruck will ich dann nur den Port (DDBx) deaktivieren
bzw. beim nächsten Tastendruck wieder aktivieren. Um somit dann die
Funktion zu steuern.

Gruß Ingo

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann wird es nicht einfacher als mit Hartmuts Code gehen.

...

Autor: Ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Werde es mal nachher Teaten.
....

Autor: Hartmut Gröger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Der code von oben invertiert 1 Bit.Wenn du das komlette Register
invertiern willst müsste es so aussehen

     in r16,Port
     ldi r17,255    ($FF)
     eor r16,r17
     out Port,r16

Die AVRs haben keine Befehl XOR mit Konstante deshalb der Umweg mit
r17. Wobei r17 nicht zwingend ist.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man den ganzen Port toggeln wil, geht's auch einfacher:

in r16, Port
com r16
out Port, r16

Alternativ kann man sich natürlich den Port-Status auch in einem
normalen Register merken, sodaß auch noch das in wegfallen kann.

Autor: Hartmut Gröger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

@Rolf

Stimmt. So gehts schneller. Ich war wohl etwas an ersten Beispiel
kleben geblieben.

MfG HG

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.