- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 11

Thema: SPI-Kommunikation, mir fehlt der Ansatz...

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    15.03.2011
    Ort
    Dresden
    Alter
    36
    Beiträge
    1.937

    SPI-Kommunikation, mir fehlt der Ansatz...

    Ich versuche gerade, mittels SPI mit einem AS5048A zu kommunizieren, allerdings bin ich gerade ein wenig überfordert. Wie konfiguriert man den SPI-Bus richtig? Und wie läuft das eigentlich genau mit der Kommunikation ab?
    Ich dachte jetzt eigentlich, dass ich ein Byte sende und dann ein Byte zurück bekomme, oder sind das immer zwei Bytes (wegen 16-Bit?). Irgendwie steh ich da noch total auf dem Schlauch.
    Hier mal mein kleines Testprogramm:

    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    $baud = 9600
    
    Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 16
    
    Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , _
       Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5
    Config Lcd = 20 * 4
    Cursor Off
    Cls
    
    Spiinit
    
    Dim Angle As Integer
    
    Do
    Angle = Spimove(&h3fff , 2)
    Locate 1 , 1
    Lcd Angle
    Waitms 100
    Loop
    Beim Kompilieren bekomm ich dann drei Fehler: Invalid Datatype, Variable not dimensioned und Loop expected
    Keine Ahnung, wie ich da rangehen soll...

    Edit: 0x3fff ist natürlich schwachsinn, &h3fff muss es heißen, aber irgendwie bekomm ich trotzdem nix gescheites...
    Geändert von Geistesblitz (16.02.2014 um 14:22 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Alle SPI-Befehle können meines Wissens nach nur Byte-Variablen verarbeiten, ganz gleich in welche Richtung. Deswegen meckert Bascom sowohl die Integer-Variable Angle als auch den Wert &h3fff an. Der Rest (Loop expected) ist glaube ich nur so´n Nachmaulen, das der Compiler manchmal macht, wenn ihm was sauer aufstößt.

    Du müsstest also &h3FFF erstmal in ein Array aus 2 Bytes zerlegen:

    A(1) = &h3F
    A(2) = &hFF

    Und für Angle legst Du ebenfalls ein Array aus 2 Bytes an:

    Dim Angle as Byte(2)


    Diese Zeile

    Angle(1) = Spimove (A(1),2)

    sendet dann &h3F und &hFF nacheinander raus, und das zurückkommende Ergebnis wird in Angle(1) und Angle(2) abgelegt. Daraus müsstest Du dann nur noch einen Integer machen.

    Steht übrigens auch sehr schön in der Bascom-Hilfe erklärt

Ähnliche Themen

  1. [ERLEDIGT] Verständnisfrage zur SPI Kommunikation ..
    Von Ritchie im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 30.03.2013, 18:44
  2. Mir fehlt M8Def.dat Atmega8
    Von Bra!ny im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 3
    Letzter Beitrag: 05.08.2011, 21:46
  3. Ausführungsgeschw. I2C vs SPI Kommunikation
    Von malthy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 05.08.2010, 11:33
  4. SPI Kommunikation zwischen 2 AVR's
    Von Ruppi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 05.07.2007, 09:34
  5. Ich habe das Grundwissen, allerdings fehlt es mir an Ideen!
    Von parrot_12 im Forum AVR Hardwarethemen
    Antworten: 43
    Letzter Beitrag: 17.12.2005, 09:14

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test