SPI Bus, Modus und Geschwindigkeit ändern

Lambda
2014-09-04
2014-09-10
  • Lambda - 2014-09-04

    Wie kann ich wenn ich mir eine eigene Bibliothek, auf Grundlage der SPI_MCP3008.library, zur SPI Kommunikation für ein LCD - Display erstelle die Taktfrequenz und den SPI - Modus ändern.

    Ich dachte das würde mit den Variablen _diMaxSpeed und _diMode funktionieren, allerdings bleibt bei mir die Taktfrequnz
    immer auf 1 MHz und der SPI Modus immer auf Modus 0, für das LCD brauche ich aber SPI Modus 3.

    Wann werden die neuen Werte übernommen, bzw. welche Werte kann ich für die Variablen eintragen?

    Kann mir diesbezüglich jemand weiterhelfen?

     
  • eschwellinger

    eschwellinger - 2014-09-05

    Hallo,
    man müsste eigentlich im Body vom FB (wo ja die Zustandsmaschine ist und der init() aufruften wird),
    den mode _diMode und Geschwindigkeit davor setzen.

    SUPER^();

    CASE _iState OF
    0:
    //hier mode und Geschwindigkeit setzen _diMaxSpeed:=100000; _diMode:=3;
    IF SUPER^.init() THEN
    _iState := 1;
    END_IF
    1:
    _iState := 10;
    END_CASE

    Hoffe das funktioniert, hab es nicht getestet daher bitte um Feedback.

    Grüße
    Edwin

     
  • Lambda - 2014-09-05

    Hallo Edwin,

    danke für die schnelle Antwort.

    Hier die Ergebnisse meiner Tests:

    Die Einstellung des Modus funktioniert problemlos, hier gilt:

    Mode 0 = CKPOL=0, CKPHA=0
    Mode 1 = CKPOL=0, CKPHA=1
    Mode 2 = CKPOL=1, CKPHA=0
    Mode 3 = CKPOL=3, CKPHA=3

    Also so, wie es sein soll

    Leider funktioniert die Einstellung der Geschwindigkeit gar nicht
    Habe hier verschiedenste Werte probiert, aber keine Änderung
    feststellbar.
    Nach meiner Suche im Netz sollte eigentlich bei der Geschwindigkeit
    ein Teiler der CPU Frequenz eingegeben werden, der Teiler muss anscheinend
    gerade sein, somit sollten Werte zwischen 2 und 32768 möglich sein.
    Habe die Grenzwerte sowie zwischenwerte versucht, leider keinerlei
    Auswikung festgestellt. Die Freuquenz des Taktes bleibt immer bei 1 MHz,
    also bei einer Periodendauer von 1us. Die Werte habe ich mit dem Oszi gemessen,
    sollten somit also stimmen.

    Hast du noch eine Idee?

     
  • eschwellinger

    eschwellinger - 2014-09-05

    Hallo,

    wir werden das zu nächsten Version ändern/erweitern, so das man bei der' transfer' function auch die Geschwindigkeit mit angegeben werden
    kann, wenn du willst könnte ich dir zum Test ne Vorab Version Lib schicken per email.

    Grüße
    Edwin

     
  • Lambda - 2014-09-06

    Hallo Edwin,

    das wäre super, wenn du mir vorab die Lib schicken könntest, dann könnte ich mit meinem LCD Projekt weiter kommen.

    Mail bitte an: e hinterseer@lambda-gmbh.de e

    Danke im Voraus.

    Gruß Werner

    Gesendet von iPad mit Tapatalk

     
  • eschwellinger

    eschwellinger - 2014-09-07

    Hallo Werner,

    nochmal zu diesen Speedwerten,
    hast du mal diese Werte versucht?
    Hier schreibt ja ein Raspberry Pi User:

    https://projects.drogon.net/understandi ... pberry-pi/

    Next, I noticed that for some clock speeds, the data rate doesn’t change – this is due to the rounding issues when calculating the clock divider value. What I have observed is that the speeds available are:
    1. 0.5 MHz
    2. 1 MHz
    3. 2 MHz
    4. 4 MHz
    5. 8 MHz
    6. 16 MHz and
    7. 32 MHz.
    das nur diese funktionieren.

    Grüße
    Edwin

     
  • Lambda - 2014-09-09

    Hallo Edwin,

    ja, ich hab auch diese Werte ausprobiert, funktioniert leider auch nicht.

    Gruß Werner

     
  • eschwellinger

    eschwellinger - 2014-09-09

    Hallo Werner,
    und die Testlib die ich dir per Email geschickt hatte?

    Grüße
    Edwin

     
  • Lambda - 2014-09-10

    Hallo Edwin,

    die neue Lib funktioniert perfekt, die Geschwindigkeit lässt sich wunderbar ändern.

    Danke für den super Support .

    Das LCD Display 4x20 Zeichen mit Samsung KS0073 Chip lässt sich jetzt ansteuern.
    Ich werde ein Demo Peojekt hier im Forum einstellen, wenn es fertig ist.

    Gruß Werner

     
  • eschwellinger

    eschwellinger - 2014-09-10

    Hallo Werner,

    prima und danke für die Rückmeldung!
    Wir werden hier im Forum (vermutlich nur im englischen - einen bereich einrichten wo die ganzen User ihre selbst erstellten devices/libraries mit anderen teilen können)

    Grüße
    Edwin

     

Log in to post a comment.