- Labornetzteil AliExpress         
Seite 10 von 18 ErsteErste ... 89101112 ... LetzteLetzte
Ergebnis 91 bis 100 von 177

Thema: Funktionierendes CAN Bus Projekt entwickeln unter Bascom

  1. #91
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    Anzeige

    Powerstation Test
    Zitat Zitat von Skragan
    Ich bekomme es einfach nicht hingefummelt.... die Beschreibung im Datenblatt finde ich einfach nur kryptisch. Ist BRP gleich NBR ? Könnte mir das nicht mal jemand in einfachen Worten erklären, wie ich mit meinem Takt von 16MHz diese Forderung für die Konfiguration erfülle ? Die Details kann ich mir dann sicherlich rückwärts erarbeiten...

    /edit/

    Nach knappen zwei Stunden habe ich einige Fortschritte erzielt, denke ich. Ein paar Dinge konnte ich jetzt begreifen:

    Bei einer Fosc von 16MHz und einer gewünschten Bitrate von 125kbit/s berechne ich also TQ wie folgt: (2*125)/62,5ns=4

    Das SyncSegment muss 1TQ sein, PropSeg setze ich mit 2TQ, PS1 auf 4TQ (BTLMode auf 0) und um die unter 5.3 gelisteten Regeln zu erfüllen also PS2 auf 3. Dann sähe das so aus:

    CNF1 = &B00000100
    CNF2 = &B01100010
    CNF3 = &B00000011

    Aber: Was ist Tdelay unter Punkt 5.3 ? Und wie kommen die bei Punkt 5.3 auf folgende Aussage: "Tosc=50ns, choose BRP<5:0>=04H, then TQ=500ns. To obtain 125kHz, the bit time must be 16TQ" ?? Wäre super, wenn mir das jemand erklären könnte...
    DU wirst es nicht glauben, aber ich habe es 3Tage lang mehrmals lesen müssen um da einigermaßen durchzusteigen. Die Formel in Kombination mit den Beispielen ist einfach nur seltsam..und schlecht erklärt.

    Folgende Sachen sind mir noch aufgefallen:
    - Dein Widerstand RS des 2551 gegen Masse ist 10K, für low speed nimmt man eigentlich 3,3k. Ich habe sogar direkt an Masse gelötet. Musst nur auf beiden Platinen gleich machen.
    - bekommt dein 2515 wirklich ordentliche 16MHz ?
    - " Canmod Canctrl , &B11100000 , &B00000000 'Device zurück in den normalen Modus versetzen" -> funktioniert das Wikrlich? warum nicht einfach "Canwrite Canctrl , &B00000000" ?
    Gruß Thomas \/

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

  2. #92
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    50
    Beiträge
    80
    Danke für die Hinweise, aber ist meine CNF Konfiguration denn nu richtig ?

    Bezüglich des Widerstandes: Direkt auf Masse soll er doch für Highspeed liegen, damit die Flanken steiler werden ? So sagt es zumindest Punkt 1.4.1 im Datenblatt. Ich werde es trotzdem mal probieren, auf EMV achte ich ja zur Zeit eh nicht

    Der Canmod Canctrl , &B11100000 , &B00000000 setzt Bit 7, 6 und 5 im Canctrl auf Null, und das ist doch normal operation mode ? Wobei ich nicht abstreiten möchte, das canwrite cancontrol,0 nicht auch geht. Es könnte aber sein, daß dann die restlichen Bits noch geklappert werden, bevor der Chip im normal mode ist - deshalb die Maskierung.

    Takt ist genau 16MHz, die kommen auch beim MCP richtig an. AufPin 3 kommt ein Rechteck mit 2MHz wieder raus - sieht alles gut aus.

    Ich wühle mich gerade noch weiter in das MCP Datenblatt, vielleicht habe ich ja auch nur noch etwas nicht verstanden...
    Alles wird gut... Gruß Alex

  3. #93
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    Das klingt soweit schonmal ganz gut. Aber du musst mindestens noch Bit 7 in CNF2 setzten, sonst wird deine Einstellung in CNF3 nicht verwendet.

    SPI comm kannst du ganz einfach testen in dem du per SPI den clock prescaler mal änderst, so dass dann statt der 2MHz z.B. 4Mhz rauskommen sollen. Wenn das funzt liegt es schon mal nicht mehr an SPI
    Gruß Thomas \/

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

  4. #94
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    50
    Beiträge
    80
    Nene, es klappt immernoch nicht. Ich lasse also gerade die ganze Kommunikationssuppe weg und versuche, nur den MCP zu schreiben und zu lesen, aber es klappt nicht. Eine Änderung des Prescalers nimmt er nicht an. Hier mal der letzte Stand:

    Teil 1
    Code:
    '**** Deklarationen ************************************************************
    $hwstack = 32                                               ' default use 32 for the hardware stack
    $swstack = 8                                                'default use 10 for the SW stack
    $framesize = 24                                             'default use 40 for the frame space
    $regfile = "m8def.dat"                                      'Chipdefinition
    $crystal = 16000000                                         'Ext. crystal Osc. Speed 16Mhz
    $baud = 2400                                                'Speed COM1
    
    Declare Sub Mcpinit()
    Declare Sub Canwrite(byval Reg_add As Byte , Byval Reg_val As Byte)
    Declare Sub Canmod(byval Reg_add As Byte , Byval Reg_mask As Byte , Byval Reg_val As Byte)
    Declare Function Canread(byval Reg_add As Byte ) As Byte
    
    '**** Portinitialisierung ******************************************************
    Portb = &H00                                                'Port B hochohmig schalten
    Portc = &H00                                                'Port C hochohmig schalten
    Portd = &H00                                                'Port D hochohmig schalten
    
    Config Portb.0 = Output                                     'LED gelb
    Led_gelb Alias Portb.0
    Led_gelb = 0
    Config Portb.1 = Output                                     'LED rot
    Led_rot Alias Portb.1
    Led_rot = 0
    Config Portb.2 = Input                                      '/SS Eingang
    Config Portc = Output                                       'Aux
    Config Pind.2 = Input                                       'MCP Interrupt MCP2515 /INT
    Config Portd.4 = Output                                     'MCP /CS Chip Select
    Mcp_cs Alias Portd.4
    Config Portd.6 = Input                                      'Taster S1
    Portd.6 = 1                                                 'Pullup für S1
    S1 Alias Pind.6
    Config Portd.7 = Input                                      'Taster S2
    Portd.7 = 1                                                 'Pullup für S2
    S2 Alias Pind.7
    
    Led_rot = 1                                                 'Resetmerker und Zeit zum ISP Stecker abziehen ;)
    Wait 3
    Led_rot = 0
    
    
    '**** Interupts einschalten ****************************************************
    Config Int0 = Falling                                       'INT MCP ist low aktiv
    On Int0 Int_mcp                                             'Wenn INT, dann Routine INT_mcp aufrufen
    Enable Int0                                                 'INT0 einschalten
    Enable Interrupts                                           'Globale Interrupts einschalten
    
    '**** Watchdog einrichten ******************************************************
    Config Watchdog = 2048                                      'WD Timer 2 sek
    Start Watchdog
    
    '**** Variablen deklarieren ****************************************************
    Const Cmd_read = &H03                                       'Read Command
    Const Cmd_write = &H02                                      'Write Command
    Const Cmd_bitmodify = &H05                                  'Bit-modify Command
    Const Cmd_readstatus = &HA0                                 'Read Status Command (poll)
    'Const Cmd_read_rx_status = &HB0                             '?
    Const Cmd_reset = &HC0                                      'Reset Command
    Const Cmd_rts0 = &H81                                       'Sendekommando RTS Buffer 0
    Const Cmd_rts1 = &H82                                       'Sendekommando RTS Buffer 1
    Const Cmd_rts2 = &H84                                       'Sendekommando RTS Buffer 2
    
    Const Bfpctrl = &H0C                                        'RXnBF Pins
    Const Txrtsctrl = &H0D                                      'TXnRTS Pins
    Const Caninte = &H2B                                        'Interrupt enable
    Const Canintf = &H2C                                        'Interrupt flag
    Const Canctrl = &H0F                                        'Control Register
    Const Canstat = &H0E                                        'Statusregister
    Const Eflg = &H2D                                           'Error Flag Register
    Const Cnf3 = &H28                                           'MCP 2515 Configuration Register 3
    Const Cnf2 = &H29                                           'MCP 2515 Configuration Register 2
    Const Cnf1 = &H2A                                           'MCP 2515 Configuration Register 1
    Const Tec = &H1C                                            'Transmit Error Counter
    Const Rec = &H1D                                            'Receive Error counter
    
    Const Rxm0sidh = &H20                                       'Receive Buffer Mask 0 Std Identifier High
    Const Rxm0sidl = &H21                                       'Receive Buffer Mask 0 Std Identifier Low
    Const Rxm0eid8 = &H22                                       'Receive Buffer Mask 0 Ext Identifier High
    Const Rxm0eid0 = &H23                                       'Receive Buffer Mask 0 Ext Identifier low
    Const Rxm1sidh = &H24                                       'Receive Buffer Mask 1 Std Identifier High
    Const Rxm1sidl = &H25                                       'Receive Buffer Mask 1 Std Identifier Low
    Const Rxm1eid8 = &H26                                       'Receive Buffer Mask 1 Ext Identifier High
    Const Rxm1eid0 = &H27                                       'Receive Buffer Mask 1 Ext Identifier low
    
    Const Rxb0ctrl = &H60                                       'Receive Buffer 0 Control Register
    Const Rxb0sidh = &H61                                       'Receive Buffer 0 Std Identifier High
    Const Rxb0sidl = &H62                                       'Receive Buffer 0 Std Identifier Low
    Const Rxb0eid8 = &H63                                       'Receive Buffer 0 ext Identifier High
    Const Rxb0eid0 = &H64                                       'Receive Buffer 0 ext Identifier Low
    Const Rxb0dlc = &H65                                        'Receive Buffer 0 Data Length Code
    Const Rxb0d0 = &H66                                         'Receive Buffer 0 Data Byte 0
    Const Rxb0d1 = &H67                                         'Receive Buffer 0 Data Byte 1
    Const Rxb0d2 = &H68                                         'Receive Buffer 0 Data Byte 2
    Const Rxb0d3 = &H69                                         'Receive Buffer 0 Data Byte 3
    Const Rxb0d4 = &H6A                                         'Receive Buffer 0 Data Byte 4
    Const Rxb0d5 = &H6B                                         'Receive Buffer 0 Data Byte 5
    Const Rxb0d6 = &H6C                                         'Receive Buffer 0 Data Byte 6
    Const Rxb0d7 = &H6D                                         'Receive Buffer 0 Data Byte 7
    
    Const Rxb1ctrl = &H70                                       'Receive Buffer 1 Control Register
    Const Rxb1sidh = &H71                                       'Receive Buffer 1 Std Identifier High
    Const Rxb1sidl = &H72                                       'Receive Buffer 1 Std Identifier Low
    Const Rxb1eid8 = &H73                                       'Receive Buffer 1 ext Identifier High
    Const Rxb1eid0 = &H74                                       'Receive Buffer 1 ext Identifier Low
    Const Rxb1dlc = &H75                                        'Receive Buffer 1 Data Length Code
    Const Rxb1d0 = &H76                                         'Receive Buffer 1 Data Byte 0
    Const Rxb1d1 = &H77                                         'Receive Buffer 1 Data Byte 1
    Const Rxb1d2 = &H78                                         'Receive Buffer 1 Data Byte 2
    Const Rxb1d3 = &H79                                         'Receive Buffer 1 Data Byte 3
    Const Rxb1d4 = &H7A                                         'Receive Buffer 1 Data Byte 4
    Const Rxb1d5 = &H7B                                         'Receive Buffer 1 Data Byte 5
    Const Rxb1d6 = &H7C                                         'Receive Buffer 1 Data Byte 6
    Const Rxb1d7 = &H7D                                         'Receive Buffer 1 Data Byte 7
    
    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 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
    
    
    Dim Can_post_holen As Bit                                   'Merker für MCP Interrupt (Post ist da)
    Can_post_holen = 0                                          'Merker auf Null
    Dim Data_tmp As Byte                                        'Temp Datenbyte
    Dim Can_rxd_post(8) As Byte                                 'Datenarray für empfangene Daten
    Dim Can_txd_post(8) As Byte                                 'Datenarray für zu sendende Daten
    Dim Canstatus As Byte                                       'Statuswort
    Ich bin echt unglücklich
    Alles wird gut... Gruß Alex

  5. #95
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    50
    Beiträge
    80
    Teil 2
    Code:
    '**** Schnittstellen konfigurieren *********************************************
    
    'SPI
    'Config Portb.4 = Input                                      'MISO Input
    'Config Portb.3 = Output                                     'MOSI Output
    'Config Portb.5 = Output                                     'SCK Output
    
    'Spcr = &B01010011                                           'HardwareSPI AN, SPI Int off, MSB, Master, Low, Phase 0, Clock 16MHZ/8 = 2MHz
    'Spsr = &B00000000                                           'SPI2X=0
    
    'In BASCOM:
    Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Noss = 1 , Clockrate = 16
    Spiinit
    
    Print " "
    Print "Neustart !"
    Print " "
    Print "Call mcpinit..."
    
    Call Mcpinit()
    
    Print "done!"
    
    Data_tmp = Canread(caninte)
    Print "CANINTE:" ; Data_tmp
    
    Data_tmp = Canread(canintf)
    
    Print "CANINTF:" ; Data_tmp
    
    Data_tmp = Canread(canctrl)
    Print "Canctrl=" ; Data_tmp
    
    Data_tmp = Canread(cnf1)
    Print "CNF1=" ; Data_tmp
    Data_tmp = Canread(cnf2)
    Print "CNF2=" ; Data_tmp
    Data_tmp = Canread(cnf3)
    Print "CNF3=" ; Data_tmp
    
    '*******************************************************************************
    '* Hauptprogramm                                                               *
    '*******************************************************************************
    Do
    Reset Watchdog
    
    If S1 = 0 Then
       Led_rot = 1
       Waitms 500
       'Prescaler auf clock/1 stellen
       Reset Mcp_cs                                             'MCP Chip select an (aktiv)
       Waitus 10                                                'Warten bis Pegel stabil
       Data_tmp = Cmd_reset
       Spdr = Data_tmp                                          '&HC0 ins SPI Data Register laden
       Do                                                       'Warte bis
       Loop Until Spsr.spif = 1                                 'SPI Interrupt cleared (Transfer abgeschlossen)
       Waitus 10                                                'Warten bis Pegel stabil
       Set Mcp_cs                                               'Chip select wieder an (inaktiv)
       Led_gelb = 1
       Waitms 500
       Canmod Canctrl , &B00000011 , &B00000000                 'Device zurück in den normalen Modus versetzen
       Canmod Canctrl , &B11100000 , &B00000000                 'Device zurück in den normalen Modus versetzen
       Led_gelb = 0
    
       Led_rot = 0
    End If
    
    If S2 = 0 Then
       Led_rot = 1
       Waitms 500
       Led_rot = 0
    End If
    
    'If Can_post_holen = 1 Then
    '   Print "Empfangen"
    '   Data_tmp = Canread(canintf)
    '   Print "CANINTF: " ; Data_tmp
    '   Can_post_holen = 0
    '   Led_gelb = 0
    'End If
    
    Loop
    
    '*******************************************************************************
    '*******************************************************************************
    
    Sub Mcpinit()
       Local Can_tmp As Byte                                    'Lokale Variable
       Reset Mcp_cs                                             'MCP Chip select an (aktiv)
       Waitus 10                                                'Warten bis Pegel stabil
       Can_tmp = Cmd_reset
       Spdr = Can_tmp                                           '&HC0 ins SPI Data Register laden
       Do                                                       'Warte bis
       Loop Until Spsr.spif = 1                                 'SPI Interrupt cleared (Transfer abgeschlossen)
       Waitus 10                                                'Warten bis Pegel stabil
       Set Mcp_cs                                               'Chip select wieder an (inaktiv)
       Led_gelb = 1
       Waitms 500
       Canwrite Cnf1 , &B00000100                               'forum &B00010011                               'selbst:&B00000100
       Canwrite Cnf2 , &B11100010                               'forum &B10010000                               'selbst:&B11100010                               '
       Canwrite Cnf3 , &B00000011                               '&B00000010                               'selbst: &B00000011                               '
       Canwrite Caninte , &B00000011                            'Interrupt einstellen
       Canwrite Rxb0ctrl , &B01100000                           'Buffer 0: Empfangen aller Nachrichten
       Canwrite Rxb1ctrl , &B01100000                           'Buffer 1: Empfang aller Nachrichten
    
       Canwrite Rxm0sidh , 0                                    'Kein Filter, Empfängeradresse Null
       Canwrite Rxm0sidl , 0
       Canwrite Rxm0eid8 , 0
       Canwrite Rxm0eid0 , 0
       Canwrite Rxm1sidh , 0
       Canwrite Rxm1sidl , 0
       Canwrite Rxm1eid8 , 0
       Canwrite Rxm1eid0 , 0
    
       Canwrite Bfpctrl , 0                                     'Deaktivieren der RXnBF Pins (High Impedance)
       Canwrite Txrtsctrl , 0                                   'TXnRTS Bits als Inputs schalten
       Canmod Canctrl , &B11100000 , &B00000000                 'Device zurück in den normalen Modus versetzen
       Led_gelb = 0
    End Sub
    
    Sub Canwrite(reg_add , Reg_val)
       Local Can_tmp2 As Byte
       Reset Mcp_cs                                             'MCP Chip select an (aktiv)
       Waitus 10
       Can_tmp2 = Cmd_write
    
    ' In Bascom:
    '   Spiout Can_tmp2 , 1
    '   Spiout Reg_add , 1
    '   Spiout Reg_val , 1
    
       Spdr = Can_tmp2                                          '&H02 ins SPI Data Register laden
       Do                                                       'Warte bis
       Loop Until Spsr.spif = 1                                 'SPI Interrupt cleared (Transfer abgeschlossen)
       Spdr = Reg_add
       Do                                                       'Warte bis
       Loop Until Spsr.spif = 1                                 'SPI Interrupt cleared (Transfer abgeschlossen)
       Spdr = Reg_val
       Do                                                       'Warte bis
       Loop Until Spsr.spif = 1                                 'SPI Interrupt cleared (Transfer abgeschlossen)
       Waitus 10
       Set Mcp_cs                                               'Chip select wieder an (inaktiv)
    End Sub
    
    Sub Canmod(reg_add , Reg_mask , Reg_val )
       Local Can_tmp2 As Byte
       Reset Mcp_cs
       Waitus 10
       Can_tmp2 = Cmd_bitmodify                                 '&H05
    
    ' In Bascom:
    '   Spiout Can_tmp2 , 1
    '   Spiout Reg_add , 1
    '   Spiout Reg_mask , 1
    '   Spiout Reg_val , 1
    
       Spdr = Can_tmp2                                          'ins SPI Data Register laden
       Do                                                       'Warte bis
       Loop Until Spsr.spif = 1                                 'SPI Interrupt cleared (Transfer abgeschlossen)
       Spdr = Reg_add
       Do                                                       'Warte bis
       Loop Until Spsr.spif = 1                                 'SPI Interrupt cleared (Transfer abgeschlossen)
       Spdr = Reg_mask
       Do                                                       'Warte bis
       Loop Until Spsr.spif = 1                                 'SPI Interrupt cleared (Transfer abgeschlossen)
       Spdr = Reg_val
       Do                                                       'Warte bis
       Loop Until Spsr.spif = 1                                 'SPI Interrupt cleared (Transfer abgeschlossen)
       Waitus 10
       Set Mcp_cs
    End Sub
    
    Function Canread(reg_add )
       Local Can_tmp2 As Byte
       Reset Mcp_cs
       Waitus 10
       Can_tmp2 = Cmd_read                                      '&H03
    
    ' In Bascom:
    '   Spiout Can_tmp2 , 1
    '   Spiout Reg_add , 1
    '   Spiin canread , 1
    
       Spdr = Can_tmp2                                          'ins SPI Data Register laden
       Do                                                       'Warte bis
       Loop Until Spsr.spif = 1                                 'SPI Interrupt cleared (Transfer abgeschlossen)
       Spdr = Reg_add
       Do                                                       'Warte bis
       Loop Until Spsr.spif = 1                                 'SPI Interrupt cleared (Transfer abgeschlossen)
       Canread = Spdr                                           'Datenübernahme
       Spdr = 0
       Do                                                       'Warte bis
       Loop Until Spsr.spif = 1                                 'SPI Interrupt cleared (Transfer abgeschlossen)
       Waitus 10
       Set Mcp_cs
    End Function
    
    End
    
    '*** ISR ***********************************************************************
    Int_mcp:                                                    'ISR für Empfang
    
    Led_gelb = 1
    
    Can_post_holen = 1
    
    Return
    Bit 7 in CNF2 habe ich geändert, ich hatte das so verstanden, das bei Null die Länge von PS2 > PS1 und IPT ist. Aber naja, ist halt mies beschrieben

    Die Ausgabe im Terminal ist bei allen Abfragen 255...
    Alles wird gut... Gruß Alex

  6. #96
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    50
    Beiträge
    80
    Also ich bin hilflos - ich finde einfach nicht heraus, warum es nicht läuft.
    Alles wird gut... Gruß Alex

  7. #97
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    Ja, ist manchmal nicht so vertändlich geschrieben, aber manchmal fehlts auch einfach an genügend englischerfahrung

    Bleib mal ganz ruhig, wenn du den prescaler nicht ändern kannst ist CNF eh egal! Dann funzt SPI nicht. Wenn aber ein Takt aus dem Pin 3 kommt, läuft er bekommt nur kein brauchbaren SPI befehl von deinem µC.

    Daran musst du nun ansetzen. SPI config prüfen, Hardware prüfen. Hast du z.B. auch die SS Leitung angeschlossen und NOSS entsprechend konfiguriert? bzw. wenn nicht musst du den CS des MCP manuell reseten wenn du senden willst

    Check das mal, ich seh da nicht so richtig durch das ist kein Bascom oder? Worin programmierst du da?
    Gruß Thomas \/

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

  8. #98
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    50
    Beiträge
    80
    Aber klar ist das Bascom

    Die /SS Leitung vom 128er liegt über Pullup als Eingang geschaltet auf 5V, dadurch soll SPI immer senden können. Der /CS vom MCP liegt auf PortD.4 des 128ers und wird vor jeder Übertragung gelöscht bzw. nach jeder Übertragung wieder gesetzt.

    Ich habe mir gerade die Leitungen auf dem Skop angeschaut, das passt soweit. Ich hole mir gleich mal ein 4 Kanal, dann mache ich mal einen Screenie von /CS, MOSI und SCK - vielleicht werde ich daraus schlauer...
    Alles wird gut... Gruß Alex

  9. #99
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    50
    Beiträge
    80
    Also, folgenden Code habe ich auf eine Taste gelegt:

    Code:
       Data_tmp = &B01011010                                    'Cmd_reset
       Reset Mcp_cs                                             'MCP Chip select an (aktiv)
       Waitus 10                                                'Warten bis Pegel stabil
       Spiout Data_tmp , 1
       Waitus 10                                                'Warten bis Pegel stabil
       Set Mcp_cs                                               'Chip select wieder an (inaktiv)
    Dann sieht man auf dem Skop folgendes (was eigentlich alles perfekt ist):

    Chan1: /CS
    Chan2: MOSI
    Chan3: SCK
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken d005.jpg  
    Alles wird gut... Gruß Alex

  10. #100
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    50
    Beiträge
    80
    Falls jemand noch irgendeine Idee hat - ich such mir einen Wolf. Keine Ahnung, warum ich nicht mit Ihm reden kann. Der gleiche Effekt bei beiden Boards, an einem defekten Baustein kann es ja nicht liegen, zumal der Code von feitzi ja irgendetwas sendet. Ein genauer Vergleich brachte mir aber keine Erkenntnisse.
    Alles wird gut... Gruß Alex

Seite 10 von 18 ErsteErste ... 89101112 ... LetzteLetzte

Berechtigungen

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

12V Akku bauen