C18 CAN Bus

Başlatan eemre.09, 13 Nisan 2012, 15:42:06

eemre.09

Merhaba arkadaşlar,

C18 de CAN Bus uygulaması yapmaya çalışıyorum. C18 in örnek can  bus uygulamalarından birine kendi kodlarımı ekledim. Amacım veri gönderimi ve alımı yapıldığında ilgili ledleri yakmak. Daha sonrasında can üzerinden verileri okuyarak lcd ye yazdıracağım. Fakat şuan programımda hata var. Bir çok hatayı çözdüm ama en son takıldım. Hata  şu;

MPLINK 4.40, Linker
Device Database Version 1.3
Copyright (c) 1998-2011 Microchip Technology Inc.
Error - could not find definition of symbol 'CANSendMessage' in file './Temel3.o'.
Errors    : 1

Aşağıdaki linkte  pogramım var;

http://www.upload.tc/download/182868/temel3.rar.html

Sorunu çözmemde yardımcı olabilir misiniz?

Okan AKÇA

ccs ile yazılım yapsaydınız yardımcı olurdum..

eemre.09

ccs ile yazdım biraz ama sorunlar yaşayınca c18 geçtim. Elinizde çalışan ccs ile can uygulaması varsa inceleyebilir miyim?

frederic

can bus kodunuzu nasıl deniyorsunuz acaba,canbus tester gibi bir program varmı bildiğiniz kartları test etmek için ?

eemre.09

Elimde Microchip in CAN-LIN2 deneme kartı var onunla çalışıyorum. CANKing programı ile kartı kontrol edebiliyorsunuz. Ben arıyorum aslında öyle bir program ama pek rastlamadım. Simüle etmek için de aradım onuda bulamadım.

gambit1244

ccs c nin canbus kiti var elimde acil paraya ihtiyacım var
zamanında baya tecrübe ettim ve şimdi satmayı düşünüyorum ilgilenirseniz 20 ye yakın uygulaması datasheet vs hepsi mevcut
led yakmadan öte veri alıp gonderebilirsiniz.
dediğim gibi kart cok güzel maddiyattan dolayı satabilirim..
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

eemre.09

@ gambit1244: Hocam size mail attım, mail üzerinden görüşelim.

eemre.09

Arkadaşlar sorunu hala çözemedim, sanırım .lkr dosyası ile  alakalı da bir sorun var yardım edebilecek biri yok mu?

gambit1244

#include <24HJ256GP610.h>
#fuses HS,PR,NOWDT
#use delay(clock=20M)
#use rs232(baud=9600, UART1)

#define CAN_BRG_PRESCALAR           4                bu 5 satır canbus hızını ayarlıyor
#define CAN_BRG_PHASE_SEGMENT_1     2
#define CAN_BRG_PHASE_SEGMENT_2     2
#define CAN_BRG_SYNCH_JUMP_WIDTH    0
#define CAN_BRG_PROPAGATION_TIME    0

#include <can-PIC24.c>                     pic canbus kutuphanesini ekledik

#define WRITE_REGISTER_D_ID 0x400                       tüm yazdıklarımız 400 hex adresinden gönderilicek

void write_7_segment(int8 value)                                karşı taraftaki can buslu 7 segment displayin değerleri
{
   const int8 lcd_seg[10]={ 0x40,0x79,0x24,0x30,0x19,
                           0x12,0x02,0x78,0x00,0x10};
   int8 buffer[3];

   buffer[0]=0x1E;                  //addr of gplat                 canbusta en fazla 8 byte gonderebiliriz
   buffer[1]=0x7F;                  //mask                                       burda gönderilen   400 1E 7F XX                xx değeri sürekli değişiyor
   buffer[2]=lcd_seg[value];
   can_putd(WRITE_REGISTER_D_ID, buffer, 3, 1, TRUE, FALSE);                     bu komut yaz komutu bu gidince yazma işlemi yapıyor
}

void main()
{
   int8 i=0;
     
   can_init();                                     //initializes can                                   can busı hazırla
   
   can_enable_b_transfer(TRB0);                    //enables buffer 0 in transmit mode
   
   can_putd(0x100,0,0,1,TRUE,FALSE);               //send an on-bus message                   elektriği ilk verdiğimizde 100 adresine bir boş data gonderim ben geldim uyan diyor.
                                                   //to wake up mcp250x0's
   delay_ms(1000);                                 //wait for node c to power-up
   while(TRUE)
   {
      write_7_segment(i);                        // saniyede bir değişiyor işte.
      delay_ms(1000);
      if( ++i==10)
         i=0;
   
   }
}
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.