Forum: Mikrocontroller und Digitale Elektronik Port lesen/schreiben


von L. R. (keyboard)


Lesenswert?

Hei,

Microchip PIC32MX795F512L

bei diesem µC haben die Port's 16 bit. Die Hardware teilt sich den Port
Bit 0 - 7 als Byte und Bit 8 - 15 als einzelne Bits, sowohl als Ein- und 
Ausgang.

Welchen Weg muß ich einschlagen, wenn ich Bit 0 - 7 neue Daten übergebe 
ohne das ich die Bit 8 - 15 verändere ?

mein Beispiel:
Port in Buffer lesen
Buffer maskieren
Buffer Bits 0 - 7 aktualisieren
Buffer an Port ausgeben

oder gibt es eine einfacher Variante ?


vielen Dank im voraus

schönen Tag
L.R.

von pics (Gast)


Lesenswert?

sprache?

von L. R. (keyboard)


Lesenswert?

Hei,

ups...
Programmierung unter MPLAP in " C "


schönen Tag
L.R.

von Reinhard Kern (Gast)


Lesenswert?

L. R. schrieb:
> Port in Buffer lesen
> Buffer maskieren
> Buffer Bits 0 - 7 aktualisieren
> Buffer an Port ausgeben

Das ist richtig, wenn alle 16 bit Ausgänge sind - in die gerade nicht 
gewünschten schreibst du ja den gleichen Wert wieder zurück. Bei 
Eingängen kann das unangenehme Nebenwirkungen haben.

Gruss Reinhard

von L. R. (keyboard)


Lesenswert?

Hei,

> Bei Eingängen kann das unangenehme Nebenwirkungen haben.

dann muß ich es anderst gestalten.

schönen Tag
L.R.

von Reinhard Kern (Gast)


Lesenswert?

L. R. schrieb:
> dann muß ich es anderst gestalten.

Nicht wirklich, du musst dir nur klar werden, was du an einen 
Eingangspin schreiben darfst - z.B. müssen einfache OC-Pins ohne eigenes 
Data Direction Bit nur mit Hi beschrieben werden, damit die Beschaltung 
den Pin nach Low ziehen kann. Das hängt eben von der jeweiligen 
Ausfürhrung des I/Os ab. An manche Pins kann man auch schreibenwas man 
will, wenn sie als Eingang konfiguriert sind. RTFM.

Gruss Reinhard

von L. R. (keyboard)


Lesenswert?

Hei,

Zur Sicherheit werde ich dann den Buffer als struct anlegen und mittels 
if / else die 8 Bits abfragen und im Ziel entsprechend setzen/löschen

Damit erübrigt sich dann das einlesen, maskieren ...
und kann gezielt auf die unteren bzw. oberen 8Bit des 16Bit Port 
zugreifen

Vielen Dank für die Infos.

schönen Tag
L.R.

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.