Forum: Compiler & IDEs verteilte I/O-Pins definieren


von Volker Kattoll (Gast)


Angehängte Dateien:

Lesenswert?

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

von Michael (Gast)


Lesenswert?

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.

von Volker Kattoll (Gast)


Lesenswert?

@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

von Jens Renner (Gast)


Lesenswert?

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.

von Volker Kattoll (Gast)


Lesenswert?

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?

von Mario II (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.