Arduino Port-Mapping Mehrdeutigkeit

  • C++

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Elanda.

    Arduino Port-Mapping Mehrdeutigkeit

    Hi wie gehts euch?

    Ich hätte da mal eine kleine ungereimtheit die ich ASAP zu lösen bräuchte.
    Ich habe hier neben mir (auf meiner rechten Seite) ein custom-built board von meinem Boss. (Gott segne ihn und auch mein heutiges Mittagessen)
    Darauf verbaut ist ein Atmega328pb, welcher, etwas neuer zu sein scheint?

    Das Problem hier ist das ich versucht habe einen gewissen Pin auf einem anderen Port anzusprechen. (In diesem Falle handelt es sich um Port C)
    Naja, leider hat das nicht so ganz funktioniert wie ich mir das vorstellte und habe wie jemand verrücktes darauf eingehämmert. (Metaphorisch natürlich)
    Bis ich nach etlichen Fehlversuchen mal ENDLICH auf die Idee kam mir den Quellcode anzusehen und merkte das PC3 (Das Makro welches die Pinnummer definiert) dieselbe Benummerung wie PD3 hat.

    Na toll, nun sitz ich da wie Eiswagenverkäufer, wartend bis mir das Twinni wegschmilzt.
    Hatte auch Google keine Lust mir hilfreiche Antworten zu geben dachte ich mir erbitte ich hier um Rat.

    Nun zur Frage:
    Wie haben sich die Entwickler es vorgestellt das ich diesen Pin ansprechen sollte?

    Natürlich bleibt mir noch direkte port-manipulation, ich versuche dies aber zu vermeiden.
    Ich weiß auch das ich einfach im Datenblatt die Nummerierung abrufen KANN, ABER ich möchte es auf die Weise machen die auch maximal dokumentierbar ist.

    Dange ser
    ----------------------------------------------------------------------------------------------------------------------

    Hier könnte meine Signatur stehen, aber die ist mir abfußen gekommen.

    ----------------------------------------------------------------------------------------------------------------------
    Ich bin etwas eingerostet in Sachen Atmel. Es gibt doch die Makros PINC, PCx, PORTC und DDRC. DDRC ist das Register um einen Pin als Ein/Ausgang zu definieren, Pull-Ups etc. Dem PORTC weißt du dann die Zustände der Ausgänge zu mit den Makros PCx. Über PINC lassen sich dann die Eingänge einlesen.

    Das PD3 und PC3 identisch sind ist also kein Problem. Es sind ja immerhin andere Ports. Ist sogar sehr schön, dass sie gleich sind. Wie versuchst du denn auf den Pin zuzugreifen?
    Hallo @Gonger96,
    Zuerst mal danke für deine Antwort.

    Auch wenn deine Antwort funktioniert hätte, hatte ich oben erwähnt das ich auf direkte Port-Manipulation verzichten möchte.
    Da hardcode ich eher die Nummern aus dem Datenblatt in eine Konstante und verweise dann auf diese.

    Ich schätze mal das ich mit dem Makro nicht weit kommen werde wenn ich die Haushaltsfunktionen (digitalWrite, digitalRead) zur Manipulation verwende.
    Kann man nix machen, ist mal wieder Spitzenentwicklung.
    ----------------------------------------------------------------------------------------------------------------------

    Hier könnte meine Signatur stehen, aber die ist mir abfußen gekommen.

    ----------------------------------------------------------------------------------------------------------------------

    Gonger96 schrieb:

    Na dem DigitalWrite musst du ja auch den Port mitteilen.


    Nein das muss man nicht, kann man auch gar nicht.
    Es erwartet eine reine Pinnummer. (0 bis open-end)

    Gonger96 schrieb:

    Das PC3 Makro sagt normalerweise lediglich in welchem Bit der Pin3 im Hardwareregister/Port steckt.

    Genau so ist es, es wäre aber cool gewesen wenn es da soetwas gegeben hätte wie "portPinToAbsolutePin" oder wat weiß ich.
    Muss dann jedoch nun Schlussendlich mit dem Wermutstropfen klarkommen.
    ----------------------------------------------------------------------------------------------------------------------

    Hier könnte meine Signatur stehen, aber die ist mir abfußen gekommen.

    ----------------------------------------------------------------------------------------------------------------------
    Ich kopier mir jetzt einfach den digitalWrite/Read code rüber, schmeiß raus was ich nicht brauch und bestücke es mit einem port parameter.
    Ich wollte zwar as library as possible gehen, aber ist warscheinlich sogar besser als neue Konstanten zu definieren.
    ----------------------------------------------------------------------------------------------------------------------

    Hier könnte meine Signatur stehen, aber die ist mir abfußen gekommen.

    ----------------------------------------------------------------------------------------------------------------------