Forum: Mikrocontroller und Digitale Elektronik Pins zu Port zusammenfassen


von Thomas (Gast)


Lesenswert?

Hallo zusammen
Bin noch nicht so ganz fit in AVR Assembler und hätte eine Frage dazu.
Kann ich einzelne Pins zu einem Port zusammenfassen bzw. definieren.
Es geht darum einen 8Bit Datenbus zu bekommen jedoch hab ich nur keinen
komplette Port mehr frei um diesen zu nutzen sondern nur noch einzelne
Pins.

Diese Pins möchte ich nun zu einem Port definieren.
Geht das?

Dacht irgendwie mir equ oder so definieren aber finde nix und bin mir
nicht sicher.

Danke schonmal für Eure Hilfe!

von Carsten (Gast)


Lesenswert?

Man kann sich da sicherlich ne Funktion dafür schreiben, die dann den
8bit Wert auf die einzelnen Pins runterbricht.
z.B. 0xXX & 0xF0 -> PortA
     0xXX & 0x0C -> PortB
     0xXX & 0x03 -> PortC
Vielleicht muss nocht der eine oder andere ShiftOperator mit rein damit
es passt.

Aber vielleicht gibts ja auch die Möglichkeit durch Änderung der
Hardware einen kompletten Port frei zu bekommen

von Thomas (Gast)


Lesenswert?

Hoi, mit equ allein wirst du da nicht weiter kommen. Du musst das schon
bei jedem Zugriff aufdröseln bzw. eine Funktion bauen, die das macht.
Daher unbedingt überlegen, wie oft dieser Datenbus gebraucht wird und
welchen Datendurchsatz der liefern soll. Ggf. wirklich versuchen einen
ganzen Port frei zu bekommen...

von Michael U. (Gast)


Lesenswert?

Hallo,

das mußt Du meines Wissens selbst erledigen. Also die Ports in einzelne
Register eilesen, die gewünschten Bits per and ausmaskieren, notfalls
passen schieben und or-Vernüpfen.
Also möglichst wenig verteilen und Bits nebeneinander benutzen.
Umsortieren ist oft besser, Display-Steuerleitungen z.B lassen sich gut
auf verschiedene Ports verteilen, sbi und cbi sind da ja sowieso
einzeln. Auch LED und andere Sachen, die Bitweise gesteuert werden,
bieten sich da an.
Ich sortiere in meinen Projekten auch meist mehrmals um, da macht es
sich dann bezahlt, wirklich jeden Port, jedes Bit und jede Konstante
per .def/.equ definiert zu haben, dann hält sich der Aufwand in
Grenzen.

Gruß aus Berlin
Michael

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.