- LiFePO4 Speicher Test         
Ergebnis 161 bis 170 von 177

Thema: Funktionierendes CAN Bus Projekt entwickeln unter Bascom

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #32
    Neuer Benutzer Öfters hier
    Registriert seit
    23.07.2010
    Beiträge
    10
    Hallo!
    ich kenne mein Code schon fast auswendig, aber ich habe das programm immer noch nicht zum Laufen bekommen.
    Ich habe schon alles probiert, was mir nur einfallen konnte.
    Habe jetzt den gesammten Code so weit gekürzt wie es nur geht.
    Ich hoffe ich habe nichts "falsches" weggekürzt.

    für mich scheint das Programm logisch zu sein, und müsste laufen. Tut es aber nicht.
    ich habe am TX vom MCP2515 kein Signal.

    Falls Jemand Zeit hat, BITTE durchgucken. Ich bin schon Ratlos.

    Code:
    $regfile = "m8def.dat"                                      ' ATMega8
    $crystal = 16000000                                         ' Baudratenquarz der AVR (mega8 mit 16MHz)
    $hwstack = 40                                               ' default use 32 for the hardware stack
    $swstack = 80                                               ' default use 10 for the SW stack
    $framesize = 90
    $baud = 9600
    
    
    ' Allgemeine Config ************************************************************
    
    Config Pind.2 = Input                                       'Taster
    Config Portb.0 = Output                                     'LED
    Taster Alias Pind.2
    Led Alias Portb.0
    
    Led = 0                                                     'Grundstellung
    
    
    
    'CAN relevante Config **********************************************************
    
    Declare Sub Mcp2515_write(byval Reg_add As Byte , Byval Reg_val As Word)
    Declare Sub Mcp2515_bitmodify(byval Reg_add As Byte , Byval Reg_mask As Byte , Byval Reg_val As Byte)
    
    
    Mcp2515cs Alias Portb.2                                     'CS am Mega8
    Config Mcp2515cs = Output
    
    
    Const Cmd_write = &H02                                      ' Write Command
    Const Cmd_bitmodify = &H05                                  ' Bit-modify Command
    Const Cmd_reset = &HC0                                      ' Reset Command
    Const Cmd_rts0 = &H81
    Const Cmd_rts1 = &H82
    Const Caninte = &H2B
    Const Canctrl = &H0F
    Const Canstat = &H0E                                        ' Statusregister
    Const Eflg = &H2D                                           ' Error Flag Register
    
    Const Cnf3 = &H28                                           ' Configuration Register 3
    Const Cnf2 = &H29                                           ' Configuration Register 2
    Const Cnf1 = &H2A                                           ' Configuration Register 1
    
    
    Const Txb0ctrl = &B00110000                                 ' Transmit Buffer 0 Control Register
    Const Txb0sidh = &B00110001                                 ' Transmit Buffer 0 Std Identifier High
    Const Txb0sidl = &B00110010                                 ' Transmit Buffer 0 Std Identifier Low
    Const Txb0dlc = &B00110101                                  ' Transmit Buffer 0 Data Length Code
    Const Txb0d0 = &B00110110                                   ' Transmit Buffer 0 Data Byte 0
    
    
    ' Hardware SPI-Schnittstelle konfigurieren**************************************
    
    Config Portb.4 = Input                                      'MISO  von 2515
    Config Portb.3 = Output                                     'MOSI  von 2515
    Config Portb.5 = Output                                     'SCK
    Spcr = &B01010001                                           'Bit7=0:IntAus, Bit6=1:SPIAn, Bit5=0:MSBfirst,
                                                                 'Bit4=1:Masterfunktion, Bit3=0:SCK=0wennIdle,
                                                                 'Bit2=0:L-H-Flanke, Bit1+0=01:AVRClock/16
    
    
    'Programm Start*****************************************************************
    Gosub Can_init
    
    Abfrage:
    Do
    If Taster = 0 Then
    Set Led
    Wait 1
    Reset Led
    Waitms 500
    Gosub Data_send
    Else
    Goto Abfrage
    Loop
    End If
    
    End
    
    'CAN Initialisieren *****************************
    
    Can_init:
    
    Reset Mcp2515cs                                             ' Reset MCP2515
    
       Spdr = &HC0                                              ' IC reset
       Do
       Loop Until Spsr.spif = 1
       Set Mcp2515cs
    
       Waitms 2000
       Mcp2515_write Canctrl , &B10001101                       ' set configuration mode, osm=1, clkout enabled, prescaler /2
    
       ' CAN 100 kbit/s
       Mcp2515_write Cnf1 , &B00000001                          ' Can Geschwindigkeit einstellen (Cnf1-Cnf3)
       Mcp2515_write Cnf2 , &B10111010                          ' Cnf2 = &H29
       Mcp2515_write Cnf3 , &B00000111                          ' Cnf3 = &H28
       Mcp2515_write Caninte , &B00000000                       'Can interrupt disabled
       Mcp2515_write Canctrl , &B00001101                       ' set normal operation mode, osm=1, clkout enabled, prescaler /2
    
    Return
    
    
    'Daten ubertargen    ***********************************************************
    Data_send:
    
       Mcp2515_bitmodify Txb0ctrl , &B00000011 , &B00000011     ' TX-Konfiguration
       Mcp2515_write Txb0sidh , &B10101010                      ' Empfangeradresse setzen
       Mcp2515_write Txb0sidl , &B10101010                      ' Empfangeradresse setzen
       Mcp2515_write Txb0dlc , &B00000001                       ' Paketlange festlegen fur ein Byte
    
    
    'Daten zur Uebertragung************************
       Mcp2515_write Txb0d0 , &B01011101                        ' Zu ubertragende Daten setzen
    
    
       ' Ubertragung auslosen
       Reset Mcp2515cs
       Waitms 20
       Spdr = Cmd_rts0                                          '!!!!! DIESE STELLE IST MIR UNKLAR
    
       Do
       Loop Until Spsr.spif = 1
       Waitus 20
       Set Mcp2515cs
    
       Waitms 2
       Set Led                                                  'LED als Anzeige "Gesendet"
       Waitms 200
       Reset Led
       Waitms 100
    
    Goto Abfrage                                                'Zurück zur Abfrage
    
    
    
    
    
     Sub Mcp2515_bitmodify(reg_add , Reg_mask , Reg_val)
       Local Can_tmp2 As Byte
       Mcp2515cs = 0
       Can_tmp2 = Cmd_bitmodify
       Spdr = 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
       Mcp2515cs = 1
    End Sub
    
    Sub Mcp2515_write(reg_add , Reg_val)
       Local Can_tmp2 As Byte
       Mcp2515cs = 0
       Can_tmp2 = Cmd_write
       Spdr = Can_tmp2
       Do
       Loop Until Spsr.spif = 1
       Waitms 2
       Spdr = Reg_add
       Do
       Loop Until Spsr.spif = 1
       Spdr = Reg_val
       Do
       Loop Until Spsr.spif = 1
       Mcp2515cs = 1
    End Sub
    Im Anhang ist der Schaltplan.
    Danke schön
    Gruss Alexander
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken canboard_607.jpg  

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress