-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: MCP2515 CAN-Controller

  1. #1

    MCP2515 CAN-Controller

    Anzeige

    Hallo,

    ich habe einen MCP2515 per SPI an einem AT-Mega128 hängen. Wenn ich aber die Config-Register beschreibe (z.B. CNF1) und wieder auslese, steht nicht das in dem Register was ich reingeschrieben habe. Die SPI-Kommunikation funktionierrt einwandfrei, das hab ich mir mit dem Oszi angeschaut, und wenn ich das Statusregister abfrage, kommt auch der richitge Wert, (Initialisierungswert laut Datenblatt) . Befor ich das Register beschriebe führe ich einen Softwarereset des MCP2515 durch, danach sollte er im Konfigurationsmodus sein. Hat von Euch einer eine Idee, was ich falsch mache?

    MFG und Danke für Hinweise!

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    Hallo, ich arbeite mit selbigem MCP2515 am Mega16 unter Bascom.
    Die Kommunikation hab ich bei mir am Laufen,
    um Deinen Code zu debuggen müsste man mal diesen
    am Besten mal sehen, das machts leichter.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.09.2005
    Ort
    am Bodensee
    Beiträge
    217
    Hi Arok,

    welche SPI Geschwindigkeit hast den ? Probier einfach mal langsammer zu werden ... längere Leitungen unschöne Verlegung .. können auch solche probleme verursachen...

    hatte bei mir mal solche Auswirkungen

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    04.06.2006
    Beiträge
    51

    CAN-Bus

    Hallo
    Ich quäle mich schon länger mit dem MCP2515 rum. aber ich bekomme kein laufendes Programm zusammen. In C gibt es genug hinweise, jedoch kann ich nichts damit anfangen.
    Wenn jemand einen Code in Basic hat würde ich mich sehr freuen.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    05.11.2004
    Alter
    34
    Beiträge
    35
    Hallo,

    ich hatte ein ähnliches Problem, die CNFx Register wollten meine Werte auch nicht behalten. Ich habe die Register dann 2x hintereinander mit dem Wert beschrieben und dann hats geklappt.
    Auch musst du bei einigen Headers, die im Internet sind, aufpassen, da stimmen teilweise die Registeradressen nicht.

    MfG

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    04.06.2006
    Beiträge
    51
    Danke für Deine Antwort

    Die Registeradressen dürften gepeichert bleiben. nur Krig ich die Komunikation nicht hin.
    Kannst Du eventuell mal mein Programm ansehen ??

    Danke Manfred
    Angehängte Dateien Angehängte Dateien

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    aha, nen ersten Fehler hab ich schonmal ausgekuckt:

    Du verwendest Hardware SPI:
    Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Noss = 1 , Clockrate = 16 'Test mir Atmega wegen HardwareSPI

    und weiter im Code dann:
    Spiout Mcphilf , 1
    Set Css

    Das kann schonmal klemmen.
    Der SPI hat nen Ausgangspuffer, den Du mit SPIOUT beschreibst.
    Nun braucht die Übertragung aber n kleines Weilchen, weil die Daten
    ja seriell rausgeschoben werden. Beim SPIOUT-Befehl bin ich mir nicht sicher,
    ob das Programm an der Stelle anhält bis dieDaten raus sind, oder obs weiter läuft.
    Es könnte in zweitem Falle dann geschehen, das Du den Chip Select setzt,
    bevor die Daten dann auch wirklich drüben sind.

    ich gehe da so vor:

    Spdr = Mcphilf
    Do
    Loop Until Spsr.spif = 1
    Set Css

    Das Seelbige haste auch so ziemlich in allen Kommunikationsroutinen
    für den MCP drinne. Das Spsr.spif hättste auch schon bei den
    C-Sample-Codes sehen können
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    04.06.2006
    Beiträge
    51
    Hallo

    Danke für Deine Antwort.
    aber ich komm da nicht ganz mit.
    Meinst Du eventuell so:

    Sub Mcp2515_write_register(byval Adress As Byte , Byval Daten As Byte)
    Print "Reg: " ; Adress ; " Val: " ; Daten
    Reset Css
    Spdr = Spi_write
    Do
    Loop Until Spsr.spif = 1
    Set Css
    Reset Css
    Spdr = Adress
    Do
    Loop Until Spsr.spif = 1
    Set Css
    Reset Css
    Spdr = Daten
    Do
    Loop Until Spsr.spif = 1
    Set Css
    End Sub

    Gruß Manfred

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    nö, eher so:
    Sub Mcp2515_write_register(byval Adress As Byte , Byval Daten As Byte)
    Print "Reg: " ; Adress ; " Val: " ; Daten
    Reset Css
    Spdr = Spi_write
    Do
    Loop Until Spsr.spif = 1
    Spdr = Adress
    Do
    Loop Until Spsr.spif = 1
    Spdr = Daten
    Do
    Loop Until Spsr.spif = 1
    Set Css
    End Sub
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    04.06.2006
    Beiträge
    51
    Hallo

    Ich habe es ausprobiert, so wie Du es beschrieben hast. Die Schleife Loop Util.... wartet auf eine Antwort, dass die Nachricht gesendet worden ist. Ich hoffe ich verstehe das richtig. Leider bekomme ich keine Antwort.
    Was soll ich tun ??

    Danke im voraus
    Manfred

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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