- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 177

Thema: Funktionierendes CAN Bus Projekt entwickeln unter Bascom

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    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  

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    20.04.2009
    Ort
    Lübeck, Germany
    Alter
    39
    Beiträge
    7

    Schaltpläne für Can Knoten

    Hi @ all,
    ich heiße Oliver bin 27 Jahre jung.
    Immer wenn ich mal Zeit habe beschäftige ich mich mit Elektronik und co.

    So dann wollen wir mal

    Ich weiß das dieses Thema schon älter ist, aber wie man sieht immer noch nicht abgeschoben

    Beschäftige mich schon länger mit dem CAN-BUS, wie gesagt wenn zeit war.
    Habe jetzt ein par Schaltpläne erstellt die ich später mal selber Ätzen möchte usw.
    Wollte jetzt gerne eure meinung zu den Schaltplänen hören, vom Grund her sind sie alle gleich
    es sollen nur verschiedene Knoten sein.

    CAN Atmega USB soll als verbindung zum PC dienen
    CAN Mini Knoten soll nachher in ein Unterputz gehäuse passen
    CAN Uni Knoten soll ein Universal Knoten sein für alles wo ich ein wenig mehr platz habe als in einer Unterputzdose.

    Anstat des Atmega 168 soll ein Atmega 328P-AU in gleicher Form zum einsatz kommen.

    Gruß Olli
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken CAN Atmega USB.jpg   CAN Mini Knoten.jpg   CAN Uni Knoten.jpg  

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

    schau mal.....ich habe auch mal sowas gemacht (bin auch ab und an noch dabei):

    http://kampis-elektroecke.de/index.p...ow?page_id=453

    Vielleicht hilft dir das ja auch weiter (auch vom Code her).
    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
    Neuer Benutzer Öfters hier
    Registriert seit
    20.04.2009
    Ort
    Lübeck, Germany
    Alter
    39
    Beiträge
    7
    Hi @Kampi

    manchmal sieht man den Wald vor lauter Bäumen nicht mehr.
    Bin vor ca. eine Woche über diese Seite gestolpert aber völlig vergessen (ich werd alt *husthust* )
    Werde die Seite mal studieren .

    Was meinst du sonnst so zu meinen Schaltplänen?

    Gruß Olli

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von olli1986 Beitrag anzeigen
    Hi @Kampi

    manchmal sieht man den Wald vor lauter Bäumen nicht mehr.
    Bin vor ca. eine Woche über diese Seite gestolpert aber völlig vergessen (ich werd alt *husthust* )
    Werde die Seite mal studieren .

    Was meinst du sonnst so zu meinen Schaltplänen?

    Gruß Olli
    Hey,

    die Pläne muss ich mir heute Mittag mal anschauen.
    Wenn du den Code verwenden willst, erwarte aber keine Wunder....der ist noch nicht fertig (ich glaube Masken und Filter setzen ist noch gar nicht implementiert).....senden und empfangen klappt aber 1a!
    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
    Neuer Benutzer Öfters hier
    Registriert seit
    20.04.2009
    Ort
    Lübeck, Germany
    Alter
    39
    Beiträge
    7
    Hi Kampi,

    habe mir jetzt mal deine Homepage angeschaut und ich muss sagen, ich habe wieder was dazu gelernt.
    Die Idee hatte ich auch schon gehabt bloß nicht verwirklicht .

    Ich hatte den Code irgend wo hier aus diesem Thema wo mit ich die ersten nachrichten verschickt und empfangen habe,
    aber das von dir schein ein wenig besser Organisiert zu sein.

    Mit den Filtern und Masken habe ich auch noch nicht so ganz verstanden, das ist doch im Grunde so wie eine IP Adresse,
    oder bin ich da völlig aufm falschen weg?

    Gruß Olli

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von olli1986 Beitrag anzeigen
    Hi Kampi,

    habe mir jetzt mal deine Homepage angeschaut und ich muss sagen, ich habe wieder was dazu gelernt.
    Die Idee hatte ich auch schon gehabt bloß nicht verwirklicht .

    Ich hatte den Code irgend wo hier aus diesem Thema wo mit ich die ersten nachrichten verschickt und empfangen habe,
    aber das von dir schein ein wenig besser Organisiert zu sein.

    Mit den Filtern und Masken habe ich auch noch nicht so ganz verstanden, das ist doch im Grunde so wie eine IP Adresse,
    oder bin ich da völlig aufm falschen weg?

    Gruß Olli
    Hey,

    im Grunde ja.
    Mit den Maskenbits legst du fest, welche der Filterbits beachtet werden. Setzt du alle auf High, beachtet der Controller alle 8 Filterbits.
    Die Filterbits hingegen sind die Adressbits eines jeden Controllers.
    Das ist jetzt nur einfach ausgedrückt
    Für genauere Infos solltest du dir das Kapitel mal genauer durchlesen.
    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

Berechtigungen

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

LiFePO4 Speicher Test