Folgendes Problem habe ich regelmässig: Ich bin bestrebt In/Out-Pins absolut uiversal zu definieren, soll heissen: Jeder Anschluss z.B. eines LCD-Display kann auf einem beliebigen Port/Pin liegen. Dazu nutze ich define-Konstruktionen wie sie im Dateianhang angegeben sind. Gibt es da keine bessere Lösung? Zum genauen Definieren eines Port/Pins brauche ich 7 define-Zeilen im Program. Hat jemand eventuell einen besseren Ansatz? Volker
Meiner Meinung nach macht das nicht viel Sinn. Allein schon aus Hardware-Gründen legt man die Datenleitungen zusammen, Ausserdem lässt sich das Programm besser optimieren, wenn Datenleitungen auf einem Port liegen.
@Michael Das macht aus meiner sicht schon viel Sinn: Beispiel: Probiere mal an einem 4433 ein LCD-Display anzuschliessen, für das du 8 Datenpins brauchst. Da bleibt dir nur der Port PD. Willst du aber auch noch die Serielle-Kommunikation nutzen (PD0/PD1) so wird das nichts. Wenn du aber die benötigten PortPins beliebig verteilen kannst, ist das kein Problem. Weiterhin sind Bibliotheken viel vielseitiger nutzbar. Will ich mit einem DS1620 die Temperatur messen, so brauche ich 3 PortPins. Bei der in dem Beispiel angegeben Möglichkeit kann ich jeden beliebigen PortPin dafür nutzen. Darin sehe ich einen grossen Vorteil. Volker
Oft kommt man wirklich nicht umhin, ein paar vereinzelte, übriggebliebene Pins zu nutzen. Für Busleitungen o.ä. ist das natürlich sehr mühsam, man muss dann Bytes aufwendig auf Pins aufteilen (kostet auch Rechenzeit). Daher beschränke ich mich bei Definitionen einzelner Leitungen normalerweise auf die Steuersignale, da man die häufig separat schalten muss. Bevor ich jede Busleitung einzeln ansteuere, nehme ich lieber einen größeren Controller oder verwende einen Latch bzw. IIC-/SPI-Adapter.
Nochmal kurz zum Thama: Ich suche eine Lösung mit der ich mit möglichst wenigen Define-Statements meine benötigten Pins als - Ausgang - Eingang - Ausgang auf H - Ausgang auf L - bit_ist_gesetzt erstellen kann. Ideal wäre, wenn nur 2 Define-Zeilen für jeden Pin angegeben werden müssten: Port und PIN Bei o.a. Beispiel muss ich bis zu 9 Define-Zeilen erzeugen, gibt es da keine bessere Lösung?
Schau doch mal in Peter Fleurys LCD Lib. (http://homepage.sunrise.ch/mysunrise/pfleury/avr-software.html#libs) Dort ist auch eine schöne Methode um sich die doppelte definition von PIN und PORT zu sparen.... #define PIN(x) (*(&x - 2)) /* address of data direction register of port x */ #define DDR(x) (*(&x - 1)) /* address of input register of port x */ Wobei x der Port ist. Gruss Mario
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.