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 (http://www.upload.tc/download/182868/temel3.rar.html)
Sorunu çözmemde yardımcı olabilir misiniz?
ccs ile yazılım yapsaydınız yardımcı olurdum..
ccs ile yazdım biraz ama sorunlar yaşayınca c18 geçtim. Elinizde çalışan ccs ile can uygulaması varsa inceleyebilir miyim?
can bus kodunuzu nasıl deniyorsunuz acaba,canbus tester gibi bir program varmı bildiğiniz kartları test etmek için ?
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.
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..
@ gambit1244: Hocam size mail attım, mail üzerinden görüşelim.
Arkadaşlar sorunu hala çözemedim, sanırım .lkr dosyası ile alakalı da bir sorun var yardım edebilecek biri yok mu?
#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;
}
}