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!
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
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.