-         

Ergebnis 1 bis 8 von 8

Thema: Auslesen einer Nachricht beim MCP2515

  1. #1
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9

    Auslesen einer Nachricht beim MCP2515

    Anzeige

    Hallo Forum,

    ich bastel derweil etwas an meinem CAN-Bus rum und stecke nun an der Software um Daten mit einem MCP2515 zu empfangen und an meinen PC zu senden.
    Dabei habe ich mich, so gut es ging, an dieses Tutorial gehalten:

    http://www.kreatives-chaos.com/artik...cp2515#receive

    Jetzt spuckt der Mikrocontroller der Empfangen soll aber nur 255 aus und nicht den Wert den ich (hoffe zu) sende.
    Vielleicht findet ja einer von euch den Fehler.
    Hier ist das Programm welches zum Empfangen da ist (ich mache das erstmal nur mittels Polling der Register. Interrupt kommt dann sobald dies funktioniert):

    Code:
    'Mikrocontroller
    $regfile = "m32def.dat"
    $crystal = 16000000
    
    'Stacks
    $hwstack = 200
    $swstack = 200
    $framesize = 400
    
    'UART konfigurieren
    $baud = 19200
    
    'SPI konfigurieren
    Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Noss = 1 , Clockrate = 16
    Spiinit
    
    'Unterprogramme
    Declare Sub Read_register(byval Adress As Byte )
    Declare Sub Write_register(byval Adress As Byte , Byval Daten As Byte)
    Declare Sub Bitmodify(byval Reg_add As Byte , Byval Reg_mask As Byte , Byval Reg_val As Byte)
    Declare Sub Register
    Declare Sub Mcp2515_init
    Declare Sub Send_can(byval Daten As Byte)
    Declare Sub Read_rx_status
    
    'Befehle
    Const Spi_read = &H03
    Const Spi_write = &H02
    Const Spi_reset = &HC0
    Const Spi_rts0 = &H81
    Const Spi_bitmodify = &H05
    Const Spi_rx_status = &HB0
    
    'Registeradressen
    Const Cnf1 = &H2A
    Const Cnf2 = &H29
    Const Cnf3 = &H28
    Const Canctrl = &H0F
    Const Caninte = &H2B
    Const Txb0ctrl = &H30                                       'Transmit Buffer 0 Control Register
    Const Txb0sidh = &H31                                       'Transmit Buffer 0 Std Identifier High
    Const Txb0sidl = &H32                                       'Transmit Buffer 0 Std Identifier Low
    Const Txb0eid8 = &H33                                       'Transmit Buffer 0 Ext Identifier High
    Const Txb0eid0 = &H34                                       'Transmit Buffer 0 Ext Identifier Low
    Const Txb0dlc = &H35                                        'Transmit Buffer 0 Data Length Code
    Const Txb0d0 = &H36                                         'Transmit Buffer 0 Data Byte 0
    Const Txb0d1 = &H37                                         'Transmit Buffer 0 Data Byte 1
    Const Txb0d2 = &H38                                         'Transmit Buffer 0 Data Byte 2
    Const Txb0d3 = &H39                                         'Transmit Buffer 0 Data Byte 3
    Const Txb0d4 = &H3A                                         'Transmit Buffer 0 Data Byte 4
    Const Txb0d5 = &H3B                                         'Transmit Buffer 0 Data Byte 5
    Const Txb0d6 = &H3C                                         'Transmit Buffer 0 Data Byte 6
    Const Txb0d7 = &H3D                                         'Transmit Buffer 0 Data Byte 7
    Const Rxm0sidh = &H20                                       'Receive Buffer 0 Std Identifier High
    Const Rxm0sidl = &H21                                       'Receive Buffer 0 Std Identifier Low
    Const Rxm0eid8 = &H22                                       'Receive Buffer 0 Ext Identifier High
    Const Rxm0eid0 = &H23                                       'Receive Buffer 0 Ext Identifier low
    Const Rxm1sidh = &BH24                                      'Receive Buffer 1 Std Identifier High
    Const Rxm1sidl = &H25                                       'Receive Buffer 1 Std Identifier Low
    Const Rxm1eid8 = &H26                                       'Receive Buffer 1 Ext Identifier High
    Const Rxm1eid0 = &H27                                       'Receive Buffer 1 Ext Identifier low
    Const Rxb0ctrl = &H60
    Const Rxb1ctrl = &H70
    
    'I/O Einstellungen
    Config Portb.4 = Output
    
    'Namen vergeben
    Cs Alias Portb.4
    
    'Variablen
    Dim Canin As Byte
    
    'Interrupts aktivieren
    Enable Interrupts
    
    'Chipselect auf High setzen
    Set Cs
    Wait 1
    
    'MCP2515 initialisieren
    Call Mcp2515_init
    
    
    'Hauptprogramm
    Do
    
    'Call Send_can(1)                                            'Daten senden
    Call Read_rx_status
    'Call Register
                                                                'Register auslesen
    Waitms 100
    
    Loop
    End
    
    
    
    'Unterprogramme
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Read_register(byval Adress As Byte )
    
    Reset Cs                                                    'Chipselect auf Low ziehen
    Spdr = Spi_read                                             'Inhalt von "SPI_Read" im Datenregister speichern                                            'Read Instruction (0000 0011) senden
    Spiout Spdr , 1
    Spiout Adress , 1
    Spiin Canin , 1                                             'Registerinhalt einlesen
    Set Cs                                                      'Chipselect auf High ziehen
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Write_register(byval Adress As Byte , Byval Daten As Byte)
    
    Reset Cs                                                    'Chipselect auf Low ziehen
    Spdr = Spi_write                                            'Inhalt von "SPI-Write" ins SPI_Data_Register schieben
    Do                                                          'Schleife bis SPI Interrupt Flag gesetzt wurde, also bis
    Loop Until Spsr.spif = 1                                    'die Übertragung abgeschlossen ist
    
    Spdr = Adress
    Do
    Loop Until Spsr.spif = 1
    
    Spdr = Daten
    Do
    Loop Until Spsr.spif = 1
    Set Cs                                                      'Chipselect auf High ziehen
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Mcp2515_init
    
    Reset Cs
    
    'MCP2515 reseten
    Spdr = Spi_reset
    Do
    Loop Until Spsr.spif = 1
    Waitms 10
    Set Cs                                                      '10ms warten, da sonst das Auslesen von CNF1
                                                              'nicht richtig erfolgen kann
    'Control Register beschreiben
    Write_register Canctrl , &H8F                               'Device in Configuration Mode versetzen, OSC-Pin
                                                                 'aktivieren, Fclk = F / 8 einstellen
    'Interrupts einstellen
    Write_register Caninte , &H05                               'Transmit und Recieve Buffer 0 Interrupt aktivieren
    
    'TX-Konfiguration
    Bitmodify Txb0ctrl , &H03 , &H03
    
    'Bittiming einstellen
    Write_register Cnf1 , &H03                                  'Baudrate einstellen
    Write_register Cnf2 , &HA0                                  'Phasensegmenteinstellungen
    Write_register Cnf3 , &H02
    
    'Rx Buffer einstellen
    Write_register Rxb0ctrl , &H60
    Write_register Rxb1ctrl , &H60
    Write_register Rxm0sidh , 0                                 'Empfängeradressen auf 0, Filter aus
    Write_register Rxm0sidl , 0
    Write_register Rxm0eid8 , 0
    Write_register Rxm0eid0 , 0
    Write_register Rxm1sidh , 0
    Write_register Rxm1sidl , 0
    Write_register Rxm1eid8 , 0
    Write_register Rxm1eid0 , 0
    
    'CAN-Controller in den "Normal Mode" versetzen
    Bitmodify Canctrl , &HE0 , &H0
    
    'Priorität einstellen
    Write_register Txb0ctrl , &H03                              'Höchste Message Priority für Transmit Buffer 0
    
    'Message Identifier einstellen
    Write_register Txb0sidh , &H00
    Write_register Txb0sidl , &H03
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Bitmodify(reg_add , Reg_mask , Reg_val)
    
    Reset Cs
    Spdr = Spi_bitmodify
    Do
    Loop Until Spsr.spif = 1
    Waitms 2
    Spdr = Reg_add
    Do
    Loop Until Spsr.spif = 1
    Spdr = Reg_mask
    Do
    Loop Until Spsr.spif = 1
    Spdr = Reg_val
    Do
    Loop Until Spsr.spif = 1
    Set Cs
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Send_can(byval Daten As Byte)
    
    Write_register Txb0sidh , 0
    Write_register Txb0sidl , 1
    
    Write_register Txb0dlc , 1
    Write_register Txb0d0 , Daten
    
    Reset Cs
    Spdr = Spi_rts0                                             'Übertragung auslösen
    Do
    Loop Until Spsr.spif = 1
    Set Cs
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Read_rx_status
    
    Reset Cs
    
    Spdr = Spi_rx_status
    Do
    Loop Until Spsr.spif = 1
    Canin = Spdr
    
    Set Cs
    
    Print "Wert: " ; Canin
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Register
    
    'Terminalausgabe
    Print "Registereinstellungen:"
    Read_register Cnf1
    Print "Registerinhalt CNF1: " ; Canin
    Read_register Cnf2
    Print "Registerinhalt CNF2: " ; Canin
    Read_register Cnf3
    Print "Registerinhalt CNF3: " ; Canin
    Read_register Canctrl
    Print "Registerinhalt CAN Control: " ; Canin
    Read_register Txb0ctrl
    Print "Registerinhalt TXB0 Control: " ; Canin
    Read_register Txb0sidl
    Print "Registerinhalt TXB0 Identifier Low: " ; Canin
    Read_register Txb0sidh
    Print "Registerinhalt TXB0 Identifier High: " ; Canin
    Read_register Txb0dlc
    Print "Registerinhalt TXB0 Data Lenght: " ; Canin
    Read_register Caninte
    Print "Registerinhalt CAN Interrupt Enable: " ; Canin
    Print "----------------------------------------------------------"
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    Und hier nochmal der vollständigkeit halber der Code zum senden:

    Code:
    'Mikrocontroller
    $regfile = "m32def.dat"
    $crystal = 16000000
    
    'Stacks
    $hwstack = 200
    $swstack = 200
    $framesize = 400
    
    'UART konfigurieren
    $baud = 19200
    
    'SPI konfigurieren
    Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Noss = 1 , Clockrate = 16
    Spiinit
    
    'Unterprogramme
    Declare Sub Read_register(byval Adress As Byte )
    Declare Sub Write_register(byval Adress As Byte , Byval Daten As Byte)
    Declare Sub Bitmodify(byval Reg_add As Byte , Byval Reg_mask As Byte , Byval Reg_val As Byte)
    Declare Sub Register
    Declare Sub Mcp2515_init
    Declare Sub Send_can(byval Daten As Byte)
    
    'Befehle
    Const Spi_read = &H03
    Const Spi_write = &H02
    Const Spi_reset = &HC0
    Const Spi_rts0 = &H81
    Const Spi_bitmodify = &H05
    
    'Registeradressen
    Const Cnf1 = &H2A
    Const Cnf2 = &H29
    Const Cnf3 = &H28
    Const Canctrl = &H0F
    Const Caninte = &H2B
    Const Txb0ctrl = &H30                                       'Transmit Buffer 0 Control Register
    Const Txb0sidh = &H31                                       'Transmit Buffer 0 Std Identifier High
    Const Txb0sidl = &H32                                       'Transmit Buffer 0 Std Identifier Low
    Const Txb0eid8 = &H33                                       'Transmit Buffer 0 Ext Identifier High
    Const Txb0eid0 = &H34                                       'Transmit Buffer 0 Ext Identifier Low
    Const Txb0dlc = &H35                                        'Transmit Buffer 0 Data Length Code
    Const Txb0d0 = &H36                                         'Transmit Buffer 0 Data Byte 0
    Const Txb0d1 = &H37                                         'Transmit Buffer 0 Data Byte 1
    Const Txb0d2 = &H38                                         'Transmit Buffer 0 Data Byte 2
    Const Txb0d3 = &H39                                         'Transmit Buffer 0 Data Byte 3
    Const Txb0d4 = &H3A                                         'Transmit Buffer 0 Data Byte 4
    Const Txb0d5 = &H3B                                         'Transmit Buffer 0 Data Byte 5
    Const Txb0d6 = &H3C                                         'Transmit Buffer 0 Data Byte 6
    Const Txb0d7 = &H3D                                         'Transmit Buffer 0 Data Byte 7
    Const Rxm0sidh = &H20                                       'Receive Buffer 0 Std Identifier High
    Const Rxm0sidl = &H21                                       'Receive Buffer 0 Std Identifier Low
    Const Rxm0eid8 = &H22                                       'Receive Buffer 0 Ext Identifier High
    Const Rxm0eid0 = &H23                                       'Receive Buffer 0 Ext Identifier low
    Const Rxm1sidh = &BH24                                      'Receive Buffer 1 Std Identifier High
    Const Rxm1sidl = &H25                                       'Receive Buffer 1 Std Identifier Low
    Const Rxm1eid8 = &H26                                       'Receive Buffer 1 Ext Identifier High
    Const Rxm1eid0 = &H27                                       'Receive Buffer 1 Ext Identifier low
    Const Rxb0ctrl = &H60
    Const Rxb1ctrl = &H70
    
    
    'I/O Einstellungen
    Config Portb.4 = Output
    
    'Namen vergeben
    Cs Alias Portb.4
    
    'Variablen
    Dim Canin As Byte
    
    'Interrupts aktivieren
    Enable Interrupts
    
    'Chipselect auf High setzen
    Set Cs
    Wait 1
    
    'MCP2515 initialisieren
    Call Mcp2515_init
    
    
    'Hauptprogramm
    Do
    
    Call Send_can(1)                                            'Daten senden
    Call Register
                                                                'Register auslesen
    Waitms 100
    
    Loop
    End
    
    
    
    'Unterprogramme
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Read_register(byval Adress As Byte )
    
    Reset Cs                                                    'Chipselect auf Low ziehen
    Spdr = Spi_read                                             'Inhalt von "SPI_Read" im Datenregister speichern                                            'Read Instruction (0000 0011) senden
    Spiout Spdr , 1
    Spiout Adress , 1
    Spiin Canin , 1                                             'Registerinhalt einlesen
    Set Cs                                                      'Chipselect auf High ziehen
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Write_register(byval Adress As Byte , Byval Daten As Byte)
    
    Reset Cs                                                    'Chipselect auf Low ziehen
    Spdr = Spi_write                                            'Inhalt von "SPI-Write" ins SPI_Data_Register schieben
    Do                                                          'Schleife bis SPI Interrupt Flag gesetzt wurde, also bis
    Loop Until Spsr.spif = 1                                    'die Übertragung abgeschlossen ist
    
    Spdr = Adress
    Do
    Loop Until Spsr.spif = 1
    
    Spdr = Daten
    Do
    Loop Until Spsr.spif = 1
    Set Cs                                                      'Chipselect auf High ziehen
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Mcp2515_init
    
    Reset Cs
    
    'MCP2515 reseten
    Spdr = Spi_reset
    Do
    Loop Until Spsr.spif = 1
    Waitms 10
    Set Cs                                                      '10ms warten, da sonst das Auslesen von CNF1
                                                              'nicht richtig erfolgen kann
    'Control Register beschreiben
    Write_register Canctrl , &H8F                               'Device in Configuration Mode versetzen, OSC-Pin
                                                                 'aktivieren, Fclk = F / 8 einstellen
    'Interrupts einstellen
    Write_register Caninte , &H05                               'Transmit und Recieve Buffer 0 Interrupt aktivieren
    
    'TX-Konfiguration
    Bitmodify Txb0ctrl , &H03 , &H03
    
    'Bittiming einstellen
    Write_register Cnf1 , &H03                                  'Baudrate einstellen
    Write_register Cnf2 , &HA0                                  'Phasensegmenteinstellungen
    Write_register Cnf3 , &H02
    
    'Rx Buffer einstellen
    Write_register Rxb0ctrl , &H60
    Write_register Rxb1ctrl , &H60
    Write_register Rxm0sidh , 0                                 'Empfängeradressen auf 0, Filter aus
    Write_register Rxm0sidl , 0
    Write_register Rxm0eid8 , 0
    Write_register Rxm0eid0 , 0
    Write_register Rxm1sidh , 0
    Write_register Rxm1sidl , 0
    Write_register Rxm1eid8 , 0
    Write_register Rxm1eid0 , 0
    
    'CAN-Controller in den "Normal Mode" versetzen
    Bitmodify Canctrl , &HE0 , &H0
    
    'Priorität einstellen
    Write_register Txb0ctrl , &H03                              'Höchste Message Priority für Transmit Buffer 0
    
    'Message Identifier einstellen
    Write_register Txb0sidh , &H00
    Write_register Txb0sidl , &H03
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Bitmodify(reg_add , Reg_mask , Reg_val)
    
    Reset Cs
    Spdr = Spi_bitmodify
    Do
    Loop Until Spsr.spif = 1
    Waitms 2
    Spdr = Reg_add
    Do
    Loop Until Spsr.spif = 1
    Spdr = Reg_mask
    Do
    Loop Until Spsr.spif = 1
    Spdr = Reg_val
    Do
    Loop Until Spsr.spif = 1
    Set Cs
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Send_can(byval Daten As Byte)
    
    Write_register Txb0sidh , 0
    Write_register Txb0sidl , 1
    
    Write_register Txb0dlc , 1
    Write_register Txb0d0 , Daten
    
    Reset Cs
    Spdr = Spi_rts0                                             'Übertragung auslösen
    Do
    Loop Until Spsr.spif = 1
    Set Cs
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Register
    
    'Terminalausgabe
    Print "Registereinstellungen:"
    Read_register Cnf1
    Print "Registerinhalt CNF1: " ; Canin
    Read_register Cnf2
    Print "Registerinhalt CNF2: " ; Canin
    Read_register Cnf3
    Print "Registerinhalt CNF3: " ; Canin
    Read_register Canctrl
    Print "Registerinhalt CAN Control: " ; Canin
    Read_register Txb0ctrl
    Print "Registerinhalt TXB0 Control: " ; Canin
    Read_register Txb0sidl
    Print "Registerinhalt TXB0 Identifier Low: " ; Canin
    Read_register Txb0sidh
    Print "Registerinhalt TXB0 Identifier High: " ; Canin
    Read_register Txb0dlc
    Print "Registerinhalt TXB0 Data Lenght: " ; Canin
    Read_register Caninte
    Print "Registerinhalt CAN Interrupt Enable: " ; Canin
    Print "----------------------------------------------------------"
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    Wie man sieht, sende ich erstmal nur den Wert "1". Die Übertragung habe ich auch schon mit meinem Oszilloskop kontrolliert. Das Bild sieht so aus:



    Danke schonmal für die Hilfe
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Hallo Daniel,
    ändere mal dies
    Const Rxm1sidh = &BH24
    im Empfangsteil, da hast du dich verschrieben. Für Bascom ist das dann ein String.

  3. #3
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Hi,

    danke für den Hinweis. Aber das ändert leider nichts an meinem Problem
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Hallo Daniel,
    der MCP2515 ist ja ein recht komplexes Teil und es klingt so, als hättest du bisher überhaupt noch keine Erfolge mit der Übertragung gehabt.
    Um nun Fehler beim Senden auszuschließen, würde ich mal versuchen, Register des MCP auszulesen, deren Werte du kennst. Kommen die dann auch nicht, weißt du, dass es die Empfangsroutine ist. Sind sie ok, ist es wahrscheinlich eher die Senderoutine.
    Ehrlich gesagt ist es etwas zu aufwendig, sich in die ganze Sache einzuarbeiten und scheinbar hat niemand eine funktionierende Routine. Hast du den C-Code der Webseite mal 1:1 geflasht um zu sehen, ob das bei dir funktioniert?

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Hey,

    erstmal danke für die Antwort.
    Die Register des Senders lese ich bereits aus:



    Als allerletztes siehst du "Registerinhalt CAN Datenregister" und dort steht eine 3. Also genau das was ich auch senden möchte. Dementsprechend nehme ich an, dass der Transfer der Daten in die Register klappt. Ich nutze schließlich immer die selbe Routine und ändere nur die Parameter.
    Für den Empfänger nehme ich exakt dasselbe Programm, nur dass dieser statt einer Senderoutine eine Empfangsroutine hat, welche die Daten empfangen und auslesen soll. Nur genau da liegt der Hund begraben
    Den C-Code habe ich noch nicht geflashed. Aber wenn ich den richtig verstehe, sendet und empfängt dieser Code ja. Das heißt beide Controller bekommen den selben Code oder irre ich mich da?
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  6. #6
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    So ich habe das C-Programm soweit abgeändert wie ich es benötige, sprich SPI Interface angepasst und den UART umgeändert. Allerdings wird mir nun im Terminal ausgegeben, dass er den MCP2515 nicht initialisieren kann :/
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Ok ich denke ich hatte soweit ein Erfolgserlebnis. Ich habe mich mit dem ersteller des CAN Tutorials vom kreativen Chaos auseinander gesetzt und wollte es erst über die CAN-Lib machen. Als dies aber auf Grund mehrerer Hürden fehlschlug habe ich mich entschlossen die Fehlersuche in meinem Bascom Code fortzusetzen.
    Das "Problem" ist ganz offensichtlich die Leseroutine. Ich habe eine Routine ins Programm gebracht die immer einen festen Buffer ausließt und siehe da es kommen Daten an. Allerdings gibt es neue Daten immer erst wenn ich den Controller resete
    Sprich mein nächster Schritt wird sein die Leseroutine ordentlich zu machen, sodass die Daten kontinuirlich ausgelesen werden. Aber immerhin funktioniert das Sendeprogramm
    Um den Fehler mit dem reset zu beheben, sende ich nun einen Wert der sich jede Sekunde um 1 erhöht. Dadurch habe ich immer einen anderen Wert der zum MCP geschickt wird.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  8. #8
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Ok großes Erfolgserlebnis
    Der CAN-Controller sendet und der andere Empfängt alles
    Dank dir nochmal for_ro für deine Hilfe!
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

Ähnliche Themen

  1. LIN Nachricht in GCC für AT90CAN128
    Von andirs18 im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 15.09.2010, 13:57
  2. Ersten 8 bit einer 32 bit Zahl auslesen
    Von C_Classic im Forum C - Programmierung (GCC u.a.)
    Antworten: 15
    Letzter Beitrag: 23.05.2010, 01:06
  3. SPI 64bit nachricht
    Von fabian_83 im Forum Sensoren / Sensorik
    Antworten: 1
    Letzter Beitrag: 20.05.2010, 16:07
  4. MCP2515 Register auslesen?
    Von SeveQ im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 19.10.2006, 12:23
  5. Auslesen einer PS/2-Schnittstelle
    Von t-linz im Forum Software, Algorithmen und KI
    Antworten: 9
    Letzter Beitrag: 13.02.2006, 17:02

Berechtigungen

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