- Akku Tests und Balkonkraftwerk Speicher         
Seite 16 von 18 ErsteErste ... 61415161718 LetzteLetzte
Ergebnis 151 bis 160 von 177

Thema: Funktionierendes CAN Bus Projekt entwickeln unter Bascom

  1. #151
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Anzeige

    Praxistest und DIY Projekte
    ob M8 oder M32 ist dem MCP herzlich wurst,
    kann nur auf Fehler beim Transfer oder
    falsche Fuses oder Beschaltungsfehler beruhen
    wenn der Dingsda nix macht.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  2. #152
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2006
    Ort
    Nidda
    Alter
    52
    Beiträge
    180
    kannst du mir sagen welche Fuse damit was zu tun haben?!
    Wenn ich sie doch so eingestellt habe wie beim Mega8 muss es doch gehen, oder?

  3. #153
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    Zitat Zitat von elkokiller
    na ja, ich meine auf Basis der Mega's. Beim 8er läufts super. nur bei meinem 32er geht nichts.
    Den Pic kann ich nicht einschätzen und dass es beim AT90CAN.. läuft ist auch klar.

    Aber wie so geht es beim 32er nicht?
    Ich ahbe eine, zum Mega8 identtische Schaltung aufgebaut und das selbe Programm eingespielt. Aber es geht nichts!
    das macht keinen Unterschied. Ich habe meine Schaltung generell mit nem 32er getestet und dann einen 8er auf die Platine gelötet. Da hast du irgendwo n fehler oder einen HW Unterschied der beiden Megas nicht beachtet.
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  4. #154
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2006
    Ort
    Nidda
    Alter
    52
    Beiträge
    180
    Hallo T.J.,

    dann muss es bei mir an der HW liegen (das Programm läuft sonst ja).
    Liegt es vielleicht an den genutzen Anschlüssen?
    Fällt dir im Schaltplan etwas auf? Ich habe ihn auf das Wesentliche gekürzt:
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken m32_194.jpg  

  5. #155
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2006
    Ort
    Nidda
    Alter
    52
    Beiträge
    180
    ist es möglich dass es an meiner Resetschaltung liegt?
    Ich habe die Resets beider IC's verbunden und über einen Widerstand auf +5V gelegt.
    Der Taster, im Schaltplan nicht mehr enthalten, geht auf Masse.

    Ich habe nähmich festgestellt, dass die Schaltung doch geht wenn ich die Spannung kompl. wegnehme und wieder anlege.
    Über den Resetschalter hängt sich das Programm bei Neustart auf!

  6. #156
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    Hm, nein da fällt mir nix auf. Miso Mosi und SCk eben. Mehr brauchts ja nicht! Ist ja sehr seltsam. gerade da und beim CS sollte es zum mega32 ja keinen Unterschied machen
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  7. #157
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2006
    Ort
    Nidda
    Alter
    52
    Beiträge
    180
    Hallo zusammen,

    nachdem ich das Programm noch mal von grund auf neu geschrieben habe bin ich mehr oder weniger zufällig auf die Ursache für mein Problem (M32 und MCP2515) gestoßen!

    So ganz nachvollziehen kann ich es nicht und hoffe auf eure Unterstützung:
    Ich habe neben dem CAN Controller auch ein LCD Display in der 4 Bit Variante angeschlossen (separate Ports am M32).
    Ohne die Displaykonfig läuft das Programm, in dem neben dem MCP2515 auch weitere I/O's beschaltet sind problemlos.
    Nehme ich die Display Konfig hinzu, hängt sich das Programm beim Initialisieren des MCP auf!

    Jetz bin ich der Verzweiflung nahe. Die beiden Bausteine und ihre Ports haben nichts miteinander zu tun und trotzdem geht entweder das eine oder das andere.

    Was kann ich jetzt noch tun?

  8. #158
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    seltsam, sollte normal nicht sein, ist wohl mal wieder n Baascom Bug ...
    oder ein Initialisierungsfehler im Programm ... müsste man aber das Listing
    sehen dafür.
    Im Extremfall müsstest Du dann halt die Init vom LCD von Hand
    machen oder gar die LCD Ausgaberoutinen manuell machen.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  9. #159
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2006
    Ort
    Nidda
    Alter
    52
    Beiträge
    180
    ich bin selbst noch am zweifeln ob es daran liegen kann!

    Ich habe jetzt so viel an dem Programm rumgebastelt dass es selbst ohne LCD nicht mehr läuft.
    Bisher starte die Initialisierung wenigstens, jetzt hängt selbst sie sich auf und ich muss die Spannung kompl. wegnehmen.

    Ich habe meinen Code jetzt mal auf das wesentliche gekürzt.
    Hat jemand ne Idee wo hier der Fehler steckt?

    Code:
    $regfile = "m32def.dat"
    $crystal = 7372800
    $baud = 9600
    
    
    $hwstack = 32
    $swstack = 8
    $framesize = 24
    
    
    Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Noss = 1 , Clockrate = 16
    Spiinit
    
    
    
     Dim Mcphilf As Byte
    
     Dim Id As Integer
     Dim Idh As Byte
     Dim Idl As Byte
     Dim Dfl As Byte
     Dim Idi As Byte
     Dim Canin As Byte
     Dim Db0(8) As Byte
     Dim Canstat As Byte
    
     Dim T As Integer
     Dim L As Byte
    
     Dim Verify As Byte
     Verify = 10
    
     Dim Hilf1 As Word
     Dim Hilf2 As Word
     Dim Absender As Byte
    
    
     Const Spi_reset = &HC0
     Const Spi_write = &H02
     Const Spi_read = &H03
     Const Spi_rts0 = &H81
     Const Spi_rts1 = &H82
     Const Spi_rts2 = &H84
     Const Spi_read_status = &HA0
     Const Spi_bit_modify = &H05
    
     Const Rxb0ctrl = &H60
     Const Rxb1ctrl = &H70
    
     Const Rxm0sidh = &H20
     Const Rxm0sidl = &H21
     Const Rxm1sidh = &H24
     Const Rxm1sidl = &H25
    
     Const Rxf0sidh = &H00
     Const Rxf0sidl = &H01
     Const Rxf1sidh = &H04
     Const Rxf1sidl = &H05
    
    
     Const Bfpctrl = &H0C
     Const Txrtsctrl = &H0D
     Const Canctrl = &H0F
    
     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 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 Txb1ctrl = &H40                                      ' Transmit Buffer 1 Control Register
     Const Txb1sidh = &H41                                      ' Transmit Buffer 1 Std Identifier High
     Const Txb1sidl = &H42                                      ' Transmit Buffer 1 Std Identifier Low
     Const Txb1dlc = &H45                                       ' Transmit Buffer 1 Data Length Code
     Const Txb1d0 = &H46                                        ' Transmit Buffer 1 Data Byte 0
     Const Txb1d1 = &H47                                        ' Transmit Buffer 1 Data Byte 1
     Const Txb1d2 = &H48                                        ' Transmit Buffer 1 Data Byte 2
     Const Txb1d3 = &H49                                        ' Transmit Buffer 1 Data Byte 3
     Const Txb1d4 = &H4A                                        ' Transmit Buffer 1 Data Byte 4
     Const Txb1d5 = &H4B                                        ' Transmit Buffer 1 Data Byte 5
     Const Txb1d6 = &H4C                                        ' Transmit Buffer 1 Data Byte 6
     Const Txb1d7 = &H4D                                        ' Transmit Buffer 1 Data Byte 7
    
     Const Txb2ctrl = &H50                                      ' Transmit Buffer 2 Control Register
     Const Txb2sidh = &H51                                      ' Transmit Buffer 2 Std Identifier High
     Const Txb2sidl = &H52                                      ' Transmit Buffer 2 Std Identifier Low
     Const Txb2dlc = &H55                                       ' Transmit Buffer 2 Data Length Code
     Const Txb2d0 = &H56                                        ' Transmit Buffer 2 Data Byte 0
     Const Txb2d1 = &H57                                        ' Transmit Buffer 2 Data Byte 1
     Const Txb2d2 = &H58                                        ' Transmit Buffer 2 Data Byte 2
     Const Txb2d3 = &H59                                        ' Transmit Buffer 2 Data Byte 3
     Const Txb2d4 = &H5A                                        ' Transmit Buffer 2 Data Byte 4
     Const Txb2d5 = &H5B                                        ' Transmit Buffer 2 Data Byte 5
     Const Txb2d6 = &H5C                                        ' Transmit Buffer 2 Data Byte 6
     Const Txb2d7 = &H5D                                        ' Transmit Buffer 2 Data Byte 7
    
     Const Rxb0sidh = &H61
     Const Rxb0sidl = &H62
     Const Rxb0dlc = &H65
     Const Rxb1sidh = &H71
     Const Rxb1sidl = &H72
     Const Rxb1dlc = &H75
    
    
     Const Cnf1 = &H2A
     Const Cnf2 = &H29
     Const Cnf3 = &H28
     Const Caninte = &H2B
     Const Canintf = &H2C
    
    
     Declare Sub Mcp2515_write_register(byval Adress As Byte , Byval Daten As Byte)
     Declare Sub Mcp2515_read_register(byval Adress As Byte )
     Declare Sub Mcp2515_bitmodify(byval Reg_add As Byte , Byval Reg_mask As Byte , Byval Reg_val As Byte)
    
    
    
     Config Pind.3 = Input
     Mcpint Alias Pind.3                                        ' Mcpint Alias Pind.3
     Css Alias Portd.4
     Config Css = Output
    
    
     Set Css
     Wait 1
    
     Absender = 106
     Id = 105
    
    
     Gosub Mcp2515_init
     Print "init o.k."
    
     Idi = 10
    
    
    
    'Aktivmeldung an CAN Bus
    
     Gosub Status
     Gosub Senden
    
    
    Do
    
       If Mcpint = 0 Then Gosub Mcpempfang
    
    
    Loop
    
    
    '*****************************************************************************************
    '********* $include "Can_config_V1_beschriftet.bas" **************************************
    '*****************************************************************************************
    
    Status:
    
    Print "Status: Senden - " ; Mcpint
    
    If Mcpint = 1 Then
    
    
    
         Gosub Senden
    
    
         Else
    
         Print "MCP Pin=0"
    
         End If
    
    
    
      Mcp2515_read_register Canintf                             'Spi_rx_status
    
      Canstat = Canin
    
      Print "CANINTF: " ; Canstat
    
    
      Mcp2515_bitmodify Canctrl , &B11101000 , &B00001000
    
    
    
     Waitms 500
     Return
    
    
    Senden:
    
     Print "Senden: Mcp2515_read_register Txb0ctrl  "
     Mcp2515_read_register Txb0ctrl                             '&HA0
     Print "Senden: Mcp2515_read_register Txb0ctrl o.k. "
    
     'ID auf SIDL und SIDH "verteilen"
    
     Hilf1 = Id / 8
     Idh = Hilf1
     Hilf1 = Idh * 8
     Hilf1 = Id - Hilf1
     Hilf1 = Hilf1 * 32
     Idl = Hilf1
    
    Print Id
    
    Print "SPI_read_Status0: " ; Canin
     If Canin.3 = 0 Then Gosub Send_buffer0
     Mcp2515_read_register Txb1ctrl                             '&HA0
    Print "SPI_read_Status1: " ; Canin
    
    
    
    Print "Senden-Ende"
    
    Return
    
    '********senden mit Buffer 0****************************************
    
    Send_buffer0:
    
    Print "Send_buffer0:"
    'Priorität einstellen
      Mcp2515_bitmodify Txb0ctrl , &B00000011 , &B00000011
    
    
      'Standard ID einstellen
      Mcp2515_write_register Txb0sidh , Idh                     ' Absenderadresse setzen
      Mcp2515_write_register Txb0sidl , Idl                     ' Absenderadresse setzen
      'Nachrichtenlänge einstellen (DFL)
      Mcp2515_write_register Txb0dlc , Dfl
       'Daten
      Mcp2515_write_register Txb0d0 , Db0(1)
      Mcp2515_write_register Txb0d1 , Db0(2)
      Mcp2515_write_register Txb0d2 , Db0(3)
      Mcp2515_write_register Txb0d3 , Db0(4)
      Mcp2515_write_register Txb0d4 , Db0(5)
      Mcp2515_write_register Txb0d5 , Db0(6)
      Mcp2515_write_register Txb0d6 , Db0(7)
      Mcp2515_write_register Txb0d7 , Db0(8)
      'nachricht versenden
      Reset Css
       Waitus 10
       Mcphilf = Spi_rts0
       Spdr = Mcphilf
       Do
       Loop Until Spsr.spif = 1
       Waitus 10
     Set Css
     Print "gesendet Buffer-0"
     Waitms 50
      Return
    
    '********senden mit Buffer 1****************************************
      Send_buffer1:
    
      Mcp2515_bitmodify Txb1ctrl , &B00000011 , &B00000011
    
    
      'Standard ID einstellen
      Mcp2515_write_register Txb1sidh , Idh
      Mcp2515_write_register Txb1sidl , Idl
      'Nachrichtenlänge einstellen (DFL)
      Mcp2515_write_register Txb1dlc , Dfl
       'Daten
      Mcp2515_write_register Txb1d0 , Db0(1)
      Mcp2515_write_register Txb1d1 , Db0(2)
      Mcp2515_write_register Txb1d2 , Db0(3)
      Mcp2515_write_register Txb1d3 , Db0(4)
      Mcp2515_write_register Txb1d4 , Db0(5)
      Mcp2515_write_register Txb1d5 , Db0(6)
      Mcp2515_write_register Txb1d6 , Db0(7)
      Mcp2515_write_register Txb1d7 , Db0(8)
      'nachricht versenden
      Reset Css
       Waitus 10
       Mcphilf = Spi_rts1
       Spdr = Mcphilf
       Do
       Loop Until Spsr.spif = 1
       Waitus 10
     Set Css
     Waitms 50
      Return
    
    
    
    Send_buffer2:
    
    Return
    
    
    '********MCP2515 Initialisieren****************************************
    
     Mcp2515_init:
    
      'ID auf SIDL und SIDH "verteilen"
    
    
     Hilf1 = Id / 8
     Idh = Hilf1
     Hilf1 = Idh * 8
     Hilf1 = Id - Hilf1
     Hilf1 = Hilf1 * 32
     Idl = Hilf1
    
    
    
     'MCP2515 per Software Reset zurücksetzen
     Mcphilf = Spi_reset
     Print "Mcphilf = Spi_reset    "
     Reset Css
     Print "Reset CSS"
       Waitus 10
       Spdr = Mcphilf
       Do
       Loop Until Spsr.spif = 1
       Waitus 10
     Set Css
     Print "Set Css1"
     'einstellen des Bit Timings
     'CNF1 &H07==>125 kbit/s    &H13==>50 kbit/s
    
     Mcp2515_write_register Cnf1 , &H13
     Mcp2515_write_register Cnf2 , &H90
     Mcp2515_write_register Cnf3 , &H02
    
     Print "Timing o.k."
    
    'Interrupt einstellen
     Mcp2515_write_register Caninte , &B00000011
    
    
    'Einstellen der Filter
     Mcp2515_write_register Rxb0ctrl , &B01100000
    
    'Buffer 1: Empfang aller Nachrichten
     Mcp2515_write_register Rxb1ctrl , &B01100000
    '                                     **
    
    
    
    '****************************************************************************
    '******************       Filter  und Maske einstellen   ********************
    '****************************************************************************
    
    'Maske setzen       - alle Bits auf "1" führen zu einem eindeutigen Filtern einer ID
     Mcp2515_write_register Rxm0sidh , &B00111111               '
     Mcp2515_write_register Rxm0sidl , &B11100000               '
     Mcp2515_write_register Rxm1sidh , &B00111111               '
     Mcp2515_write_register Rxm1sidl , &B11100000               '
    
    'Filter setzen         "25"
     Mcp2515_write_register Rxf0sidh , &B00000011
     Mcp2515_write_register Rxf0sidl , &B00100000
     Mcp2515_write_register Rxf1sidh , &B00000011
     Mcp2515_write_register Rxf1sidl , &B00100000
    
    '****************************************************************************
    '****************************************************************************
    '****************************************************************************
    
    
    
    'Einstellen der Pin Funktionen
    'Deaktivieren der Pins RXnBF Pins (High Impedance State)
     Mcp2515_write_register Bfpctrl , 0
    
    'TXnRTS Bits als Input schalten
     Mcp2515_write_register Txrtsctrl , 0
    
    
    'Device zurück in den normalen Modus versetzen
     Mcp2515_bitmodify Canctrl , &B11100000 , &B00000000
    
    '  Bit 7 Unimplemented: Lesen als'0 '
    '  Bit 6 ABTF: Nachricht Aborted Flag Bit -
    '              1 = Nachricht wurde abgebrochen
    '              0 = Nachricht erfolgreich abgeschlossene Übertragung
    '  Bit 5 MLOA: Nachricht Lost Arbitration Bit -
    '              1 = Nachricht verloren, Schiedsverfahren gleichzeitig gesendet
    '              0 = Nachricht nicht verloren, während Schiedsverfahren gesendet
    '  Bit 4 TXERR: Übermittlung Bit-Fehler erkannt
    '              1 = Ein Bus-Fehler ist aufgetreten, während die Nachricht übermittelt wurde,
    '              0 = es ist keine Bus-Fehler aufgetreten, während die Nachricht übermittelt wurde,
    '  Bit 3 TXREQ: Nachricht Transmit Request-Bit -
    '              1 = Buffer ist derzeit zur Übertragung anhängig
    '              (MCU setzt dieses Bit auf Anfrage Nachricht übertragen werden - Bit wird automatisch gelöscht, wenn
    '               Wird die Nachricht gesendet)
    '              0 = Buffer ist derzeit nicht zur Übertragung anhängig
    '              (MCU kann dieses Bit klar um eine Nachricht abbrechen)
    '               Unimplemented
    '  Bit 2:      Lesen als'0 '
    '  Bit 1-0 TXP: Sendepuffer Priority
    '               11 = Höchste Priorität
    '               10 = High Intermediate Priority
    '               11 = Low Intermediate Priority
    '               00 = Tiefste Message Priority
    
    
      Mcp2515_read_register Caninte
     Print "CANINTE: " ; Canin
      Mcp2515_read_register Canintf
     Print "CANINTF: " ; Canintf
      Mcp2515_read_register Canstat
     Print "Canstat: " ; Canstat
      Mcp2515_read_register Canctrl
     Print "CANCTRL: " ; Canctrl
      Mcp2515_read_register Cnf1
     Print "CNF1: " ; Cnf1
      Mcp2515_read_register Cnf2
     Print "CNF2: " ; Cnf2
      Mcp2515_read_register Cnf3
     Print "CNF3: " ; Cnf3
      Mcp2515_read_register Txb0ctrl
     Print "TXB0CTRL: " ; Txb0ctrl
      Mcp2515_read_register Txb1ctrl
     Print "TXB1CTRL: " ; Txb1ctrl
    '  Mcp2515_read_register Txb2ctrl
    ' Print "TXB2CTRL: " ; Txb2ctrl
      Mcp2515_read_register Rxb0ctrl
     Print "RXB0CTRL: " ; Rxb0ctrl
      Mcp2515_read_register Rxb1ctrl
     Print "RXB1CTRL: " ; Rxb1ctrl
      Mcp2515_read_register Bfpctrl
     Print "BFPCTRL: " ; Bfpctrl
      Mcp2515_read_register Txrtsctrl
     Print "TXRTSCTRL: " ; Txrtsctrl
    
    
    
    
     Return
    
    
    '********MCP2515  schreiben****************************************
    
     Sub Mcp2515_write_register(byval Adress As Byte , Byval Daten As Byte)
     'Print "Reg: " ; Adress ; " Val: " ; Daten
     Mcphilf = Spi_write
     Reset Css
     Spdr = Mcphilf
     Do
     Loop Until Spsr.spif = 1
     Waitms 2
     Spdr = Adress
     Do
     Loop Until Spsr.spif = 1
     Spdr = Daten
     Do
     Loop Until Spsr.spif = 1
     Set Css
     End Sub
    
    
    
    '********MCP2515  lesen****************************************
    
     Sub Mcp2515_read_register(byval Adress As Byte )
     Mcphilf = Spi_read
     Reset Css
     Spdr = Mcphilf
     Do
     Loop Until Spsr.spif = 1
     Waitms 2
     Spdr = Adress
     Do
     Loop Until Spsr.spif = 1
     Spdr = 0
       Do
       Loop Until Spsr.spif = 1
       Canin = Spdr
     Set Css
     End Sub
    
    
    
    '********MCP2515  bitmodify****************************************
    
    Sub Mcp2515_bitmodify(reg_add , Reg_mask , Reg_val)
       'Local Can_tmp2 As Byte
       Reset Css
       Mcphilf = Spi_bit_modify
       Spdr = Mcphilf                                           'Can_tmp2
       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 Css
    End Sub
    
    
    
    '******** Datenempfang ********************************************
    
     Mcpempfang:
     Print "Empfangen"
     Mcp2515_read_register Canintf                              'Spi_rx_status
     Canstat = Canin
     Print "CANINTF: " ; Canstat
     If Canstat.0 = 1 Then Gosub Mcp_read_buffer0
     If Canstat.1 = 1 Then Gosub Mcp_read_buffer1
     Return
    
     '--------   lesen vom Buffer 0
     Mcp_read_buffer0:
     Print "Mcp_read_buffer0:"
     Mcp2515_read_register Rxb0sidh
     Idh = Canin
     Mcp2515_read_register Rxb0sidl
     Idl = Canin
     Mcp2515_read_register Rxb0dlc
    
     Dfl = Canin
      Id = Idh * 8
      Hilf1 = Idl / 32
      Id = Id + Hilf1
    
     'Print "ID-0=" ; Id ; "  DFL-0=" ; Dfl
     'Daten
     For L = 1 To 8
     If L = 1 Then Mcp2515_read_register &H66
     If L = 2 Then Mcp2515_read_register &H67
     If L = 3 Then Mcp2515_read_register &H68
     If L = 4 Then Mcp2515_read_register &H69
     If L = 5 Then Mcp2515_read_register &H6A
     If L = 6 Then Mcp2515_read_register &H6B
     If L = 7 Then Mcp2515_read_register &H6C
     If L = 8 Then Mcp2515_read_register &H6D
     Db0(l) = Canin
     Next L
     Mcp2515_bitmodify Canintf , &B00000001 , &B00000000
     Print "Daten Buffer-0:" ; Db0(1) ; "-" ; Db0(2) ; "-" ; Db0(3) ; "-" ; Db0(4) ; "-" ; Db0(5) ; "-" ; Db0(6) ; "-" ; Db0(7) ; "-" ; Db0(8)
    
      Gosub Auswertung
    
     Return
    
    '--------   lesen vom Buffer 1   ---------- falls erforderlich
     Mcp_read_buffer1:
     Print "Mcp_read_buffer1:"
     Mcp2515_read_register Rxb1sidh
     Idh = Canin
     Mcp2515_read_register Rxb1sidl
     Idl = Canin
     Mcp2515_read_register Rxb1dlc
     Dfl = Canin
      Id = Idh * 8 : Hilf1 = Idl / 32 : Id = Id + Hilf1
    '  Print "ID-1=" ; Id ; "  DFL-1=" ; Dfl
    'Daten
     For L = 1 To 8
     If L = 1 Then Mcp2515_read_register &H76
     If L = 2 Then Mcp2515_read_register &H77
     If L = 3 Then Mcp2515_read_register &H78
     If L = 4 Then Mcp2515_read_register &H79
     If L = 5 Then Mcp2515_read_register &H7A
     If L = 6 Then Mcp2515_read_register &H7B
     If L = 7 Then Mcp2515_read_register &H7C
     If L = 8 Then Mcp2515_read_register &H7D
     Db0(l) = Canin
     Next L
     Mcp2515_bitmodify Canintf , &B00000010 , &B00000000
     Print "Daten Buffer-1:" ; Db0(1) ; "-" ; Db0(2) ; "-" ; Db0(3) ; "-" ; Db0(4) ; "-" ; Db0(5) ; "-" ; Db0(6) ; "-" ; Db0(7) ; "-" ; Db0(8)
     Return
    
    
    
    
    
    
    
    
    '*****************************************************************************************
    '*****************************************************************************************
    '*********** Auswertung *****************************************
    Auswertung:
      Print "Auswerten Daten Buffer-1:" ; Db0(1) ; "-" ; Db0(2) ; "-" ; Db0(3) ; "-" ; Db0(4) ; "-" ; Db0(5) ; "-" ; Db0(6) ; "-" ; Db0(7) ; "-" ; Db0(8)
    
       If Db0(2) = 140 Then
    
       Select Case Db0(1)
       Case 101 To 105 : Gosub Schreiben                        'In Knoten schreiben
       Case 150 To 155 : Gosub Lesen                            'aus Knoten lesen
       Case 201 To 208 : Gosub Befehl                           'in Knoten ausführen
    
       End Select
    
       Else
          If Db0(2) = 255 Then Gosub Status                     'kann zu Problemen führen wenn alle Knoten gleichzeitig ihren Status senden!!!!!
    
    
       End If
    
       Return
    
    
    '*********** neue Zeit programmieren *****************************************
    
    Schreiben:                                                  'In Knoten schreiben
    
    
    
    Return
    
    '***********    Lesen ausführen    ********************************************
    
    Lesen:                                                      'aus Knoten lesen
    
    
    
    Return
    
    
    '*********** Lesebefehl ausführen ********************************************
    
    Befehl:                                                     'in Knoten ausführen
    
    
    
    
       Print "Befehl Daten Buffer-1:" ; Db0(1) ; "-" ; Db0(2) ; "-" ; Db0(3) ; "-" ; Db0(4) ; "-" ; Db0(5) ; "-" ; Db0(6) ; "-" ; Db0(7) ; "-" ; Db0(8)
      Return

  10. #160
    Hollo

    Jetzt habe ich mich auch einmal an die CAN Schaltung gewagt, was anhand der hier vorliegenende Informationen gut nachvollziehbar ist. Ich kann eine Message von einem Node mittels Schalter auslösen und diese im zweiten Node empfangen. Drücke ich aber ein zweites Mal auf den Schalter so funktioniert es nicht mehr und ich bekomme folgende Werte:

    Empfangen...
    eflg=11111111
    canintf=11111111
    Reading RxB 0
    RxB0CTRL=11111111
    RxB0SIDL=11111111
    RxB0SIDH=11111111
    RxB0DLC=11111111
    RxB0CTRL=11111111
    RxB0d0=11111111
    Reading RxB 1
    RxB1CTRL=11111111
    RxB1SIDL=11111111
    RxB1SIDH=11111111
    RxB1DLC=11111111
    RxB1CTRL=11111111
    RxB1d0=11111111

    Woran kann das liegen?
    Hat schonmal jemand das gleiche Verhalten erlebt?

    Gruss, Tefi

Seite 16 von 18 ErsteErste ... 61415161718 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test