mikrocontroller.net

Forum: Compiler & IDEs Ausgang setzen


Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Bei einem Chip (habe keine genaueren Infos) befindet sich auf der 
Adresse 0x1000 ein Register wo die ersten 4 Bits Ausgänge und die 
letzten 4 Bits Eingänge sind.

Wie kann ich die Ausgänge shiften? Das Problem ist wenn ich << verwende 
dann würde das ja auch die Eingänge beinflussen.

So kann ich das ja nicht verwenden da ich das ganz Register beinflusse.
adresse = 0x1000;
*adresse = 1<<x; 

MfG

Autor: pinhead (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich,

Wenn u nicht sagst was für ein µC das ist kann man keine 
Lösungsvorschläge machen. Das ist wie "Wie tausche ich den Luftfilter 
von meinem Auto aus?" (Welches Modell denn?).
Sei es drum, i nehme an das wenn ein Port zur Hälfte Eingänge und zue 
anderen Hälfte Ausgänge hat das der Controller Bit Schiebe Befehle 
unterstützt. Eventuell sogar zwei getrennte Register, welche beschrieben 
werden können ohne die jeweils anderen Portleitungen zu beeinflussen. 
Wie gesagt ohne den µC zu kennen reine Spekulation.

Gruß pinhead

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wie kann ich die Ausgänge shiften? Das Problem ist wenn ich << verwende
> dann würde das ja auch die Eingänge beinflussen.

Inwiefern beeinflusst das denn die Eingänge und woher weißt du, daß es 
das tut, wenn du keine Infos hast?

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist kein uC, es ist ein DSP. Ich kann nur über die Adresse auf dieses 
8 Bit Register zugreifen.

Deshalb interessiert es mich wie man allgemein in C mit einem Pointer 
auf die ersten 4 Bits der Adresse zugreifen kann ohne die anderen Bits 
zu beeinflussen.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Inwiefern beeinflusst das denn die Eingänge und woher weißt du, daß es
>das tut, wenn du keine Infos hast?

Da 4 Bits Schalter sind und 4 Bits Leds

Autor: pinhead (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:


Folgender Vorschlag:

                                                // register_inhalt=xxxx 
1101
shift_reg=register_inhalt & 0x0F;               // shift_reg = 0000 1101
shift_reg=1 << shift_reg;                       // shift_reg = 0001 1010
if(shift_reg*0x10)shift_reg-=15;                // shift_reg = 0000 1011
register_inhalt=register_inhalt & 0xF0;         // register_inhalt= xxxx 
0000
register_inhalt=register_inhalt|shift_register; // register_inhalt= xxxx 
1011


Umständlich, sollte aber zum Ziel führen.

Gruß die zweite

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
einfach: register = 1 << x;
genau:   register |= 1 << x;
präzise: set_bit_in_register_without_side_effects(register, x);
geek:    dwim(register, x);

Gibt natürlich(tm) alle Varianten (und noch mehr). Was genau bei Dir 
funktioniert steht wie üblich im RTFM.. - weil das ist (ebenso) 
natürlich(tm) massiv hardwareabhängig.

HTH

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.