www.mikrocontroller.net

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


Autor: Volker Kattoll (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Volker Kattoll (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jens Renner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Volker Kattoll (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Mario II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau doch mal in Peter Fleurys LCD Lib.
(http://homepage.sunrise.ch/mysunrise/pfleury/avr-s...)
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.