Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: AVR32 PortRead Kategorie: Programmierung Basic (von nadine_P - 29.09.2017 12:59)
Als Antwort auf Re: AVR32 PortRead von Tobias - 26.09.2017 20:11

> Hallo Nadine,
>
> ich nehme an das es das nicht mehr gibt da die Ports der AVR32 32-Bit lang sind
> und nicht wie beim MEGA 8-Bit. Dort hat dann ein Port in ein Byte gepasst. 32 Bit
> wären ja schon eine FLOAT-Zahl.
>
> Mir würde nur die Möglichkeit einfallen, dass Du Dir 8 Eingänge eines Ports raussuchst
> und diese 8 Eingänge einzeln mit Port_ReadBit einliest. Aus diesen 8 musst Du Dir
> dann Dein eigenes Byte zusammensetzen.
>
> VG, Tobias
>  
>
>
> > Hallo zusammen,
> >
> > das ist mein erster Forumeintrag und ich hoffe das mir jemand helfen kann.
> >
> > Ich benutzte für ein Projekt die AVR32 Unit mit der ich eigentlich sehr zufrienden bin.
> > Zuvor habe ich für andere Projekte das Mega 128 Board genutzt.
> >
> > Jetzt stoße ich leider mit der AVR32 Unit auf ein Probelm was ich vorher nicht bedacht habe,
> > und zwar das Auslesen eines ganzen Ports.
> >
> > Das war mit dem Mega 128 nicht das Problem, mit der Zeile:
> >
> > - ReadPort A  ' ,wurde der Port eingelesen und als Byte etc. zurückgegeben.
> >
> > Aber wie realisiere ich das jetzt mit der AVR32 Unit?
> > Weil hier gibt es diese Function nicht mehr.
> >
> > Danke schon mal im voraus
> >
> >  
Hallo Tobias,
Danke für deine schnelle Antwort.
Ich habe das Ganze jetzt mal probiert mit den einzelnen Bits einlesen.
Hier ist der Code dazu:

 'Datenrichtung der Pins als Input deklarieren
    Port_Attribute(P19, PORT_ATTR_INPUT)
    Port_Attribute(P20, PORT_ATTR_INPUT)
    Port_Attribute(P21, PORT_ATTR_INPUT)
    Port_Attribute(P22, PORT_ATTR_INPUT)
    Port_Attribute(P23, PORT_ATTR_INPUT)
    Port_Attribute(P24, PORT_ATTR_INPUT)

'zur Übersicht werden die Pin Einlesebefehle als Bit-Stelle definiert
    #define BIT_0  Port_ReadBit(P19)
    #define BIT_1  Port_ReadBit(P20)
    #define BIT_2  Port_ReadBit(P21)
    #define BIT_3  Port_ReadBit(P22)
    #define BIT_4  Port_ReadBit(P23)
    #define BIT_5  Port_ReadBit(P24)

'Mit Bitschiebeoperator werden die einzelnen Pin Zustände an ihren Index gesetzt
        PortWert =  ((BIT_0 << 0) Or (BIT_1 << 1) Or (BIT_2 << 2) Or (BIT_3 << 3)Or (BIT_4 << 4)Or (BIT_5 << 5))


Das Ganze funktioniert soweit auch,
aber ich habe trotzdem noch ein kleines Problem.

Ich möchte damit ein 6 Bit Signal einlesen welches binär von 0 - 49 zählt
mit einer Frequenz von 2500Hz.

Ich habe mir die Zahlenreihe ausgeben lassen und es wird wie erwartet von 0 - 49 durchgezählt.
Bis auf einige Ausreißer, die Ausgabe sieht z.B. dann so aus:
0,0,1,1,3,2,3,3,4,4,...

die 3 ist hier der Fehler und meine Vermutung ist,
daß während des einzeln Bit einlesens, gerade um +1 hochgezählt wird und somit ein,
sozusagen gemischtes Signal eingelesen wird.

Ich hoffe man kann mir folgen bei der Problematik wie ich sie hier dargestellt habe.

Meine Frage ist, ob ich mein Code irgendwie verbessern kann um das zu verhindern.

gruß nadine


 


    Antwort schreiben


Antworten:

Re: AVR32 PortRead (von Torsten - 1.10.2017 12:25)