Pins zu Port zusammenfassen

Gast #394650
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!
Gast #394651
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
Gast #394652
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...
Gast #394653
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.