Elektrotekno.com Ana Sayfa || Programlanabilir Cihaz ve Elemanlar || Microchip Pic Serisi


ccs c için yardım...

Açıklama:
Elektrik, Elektronik, Haberleşme ve Otomasyon konularının ağırlıklı olarak konuşulduğu, tartışıldığı ve bilgi paylaşımı yapıldığı forumumuza hoşgeldiniz.
Şu an Kod Paylaşım ve Soru Cevap Alanı kategorisi içerisindeki Microchip Pic Serisi forumunda bulunuyorsunuz.
Bu sayfada üyelerimizin "pic den başka bir module nasıl ascii karakter gönderebilirim" konusundaki problem, görüş ve önerileri okuyabilir ayrıca konu hakkındaki doküman, resim, proje, devre ve programlara ücretsiz olarak ulaşabilirsiniz. Üye olduktan sonra sizler de konu hakkında sorular sorabilir ya da yorum ve paylaşım yaparak birikimlerinizi aktarabilirsiniz.
Forumdan tam olarak yararlanabilmek için üye olmayı unutmayınız!
Kayıt: 08 Ekm 2006
Mesajlar: 127

Offline
unusual
Tarih: 31 03 2007 14:12

char a[1081];
char b[20][46]; şeklinde tanımlamaları yazdığım iki satırda "data item too big" diye hata veriyor nedenini biliyormusunuz ve nasıl düzeltebilirim?
Kayıt: 25 Ekm 2005
Mesajlar: 60
Konum: İstanbul
Offline
blackhawk22
Tarih: 31 03 2007 14:48

char yerine int yaparsan sorun kalmaz.
Başa dön
Kayıt: 08 Ekm 2006
Mesajlar: 127

Offline
unusual
Tarih: 31 03 2007 17:57

düzelmedi kardes başka fikri olan?
Başa dön
Kayıt: 05 Ekm 2005
Mesajlar: 26

Offline
cenkara
Tarih: 31 03 2007 21:07

Ram belleği yetmiyor herhalde işlemcinin ne olduğunu bilmiyorum ama böyle bir dene

const char a[1081];
const char b[20][46];
Başa dön
Kayıt: 23 Mar 2007
Mesajlar: 140

Offline
onur_zafer
Tarih: 31 03 2007 23:34

Kod


char a[1081];
char b[20][46];


yazınca hata vermesi çok dogal. çünkü ram yetmiyor.

Kod


const char a[1081];
const char b[20][46];


yazınca verileri direk rom'a yazdıgı için sorun çıkmayacaktır. tabi 1024'den fazla rom'a sahip bir işlemcin varsa
Başa dön
Kayıt: 08 Ekm 2006
Mesajlar: 127

Offline
unusual
Tarih: 01 04 2007 10:41

16f877 kullanacağım!const yapıp derledim ama hala aynı hatayı veriyor.eğer bu işlemcinin hafızası yeterli gelmiyorsa ne kullanabilirim öneride bulunabilirmisiniz?
Başa dön
Kayıt: 23 Mar 2007
Mesajlar: 140

Offline
onur_zafer
Tarih: 01 04 2007 12:38

yazdıgın programın bir kısmını yollarsan daha iyi olabilir. Anladıgımız kadarıyla sen look up table felan yapmıyosun yani ortada hazır veri yok. o zaman const terimini kullanmanında bir anlamı yok.

Birde CCS nin hangi sürümünü kullanıyon. v3 dizin kurarken terimin 256 yı geçmesine izin vermiyor.
Başa dön
Kayıt: 08 Ekm 2006
Mesajlar: 127

Offline
unusual
Tarih: 01 04 2007 18:57

kodlar


kodlarım bunlar: *** 3 hata var çözemedim!!!
#include <stdio.h>

#define num_bıts 1080
#define num_codes 20

char curr_sample;
char code_count;
char start_flag;
int totalbits;
const char bit_array[num_bıts+1]; *** data item too big
int sample_buffer;
int start_sequence;
int end_sequence;
char reduced_array[91];
char final_code[46];
char code_check[46];
char no_code[46];
const char code_bank[num_codes][46]; ***data item too big
char temp[46];
char bank_status[20];

void find_start_code(void);
void reduce_sequence(void);
void manchester_decode(void);
unsigned char match_code(unsigned char *char1,unsigned char *char2);
void copy_code(unsigned char *char1,unsigned char *char2);
unsigned char verify_code(unsigned char char1[]);
void store_into_bank(char position, char code[], char offset);

#int_ext
void ext_isr()
{
delay_us(16);
curr_sample=input(pın_a0);
if((start_flag == 0) && (curr_sample == 1))
{
start_flag= 1;
sample_buffer++;
}
else if((start_flag == 1) && (sample_buffer <= 500))
sample_buffer++;
else if((start_flag == 1) && (totalbits < num_bıts))
{
if(curr_sample == 1)
bit_array[totalbits++]= 49;
else
bit_array[totalbits++]= 48;
}
}






void main()
{

setup_adc_ports(no_analogs);
setup_adc(adc_off);
setup_psp(psp_dısabled);
setup_spi(false);
setup_timer_0(rtcc_ınternal|rtcc_dıv_1);
setup_timer_1(t1_dısabled);
setup_timer_2(t2_dısabled,0,1);
init_ext_eeprom();
enable_interrupts(ınt_ext);
enable_interrupts(global);

while(true)
{
if((totalbits == num_bıts)
{ *** expecting a close paren
find_start_code();
reduce_sequence();
manchester_decode();
if(code_count == 0)
{
copy_code(code_check,final_code);
code_count= 1;
}
else if(code_count == 1)
{
if(match_code(code_check,final_code))
code_count= 2;
else
code_count= 0;
}
else if(code_count == 2)
{
if(match_code(code_check,final_code))
{
if(verify_code(final_code))
{

output_c(0b00000010);
}
else
{

output_c(0b00000001);
}
}
}
code_count= 0;
}
totalbits= 0;
start_flag= 0;
sample_buffer= 0;
}
}

void store_into_bank(char position, char code[], char offset)
{
unsigned char i;
for(i= 0; i < 45; i++) code_bank[position][i]= code[i+offset];
}

unsigned char verify_code(unsigned char char1[])
{
unsigned char i= 0;
unsigned char j= 0;
unsigned char code_match= 0;
unsigned char element_match;
while((code_match == 0) && (i < num_codes))
{
if(bank_status[i]==1)
{
element_match= 1;
while((element_match == 1) && (j <45))
{
if(code_bank[i][j] != char1[j]) element_match= 0;
j++;
}
code_match= element_match;
}
i++;
}
return code_match;
}

unsigned char match_code(unsigned char char1[], unsigned char char2[])
{
char i= 0;
char correct= 1;
while((correct == 1) && (i < 45))
{
if(char1[i] != char2[i]) correct= 0;
i++;
}
return correct;
}
void copy_code(unsigned char char1[], unsigned char char2[])
{
unsigned char i;
for(i= 0; i < 45; i++) char1[i]= char2[i];
}

void find_start_code(void)
{
int i= 0;
char sequence= 0;
char count= 0;
start_sequence= 0;
end_sequence= 0;
while((i < totalbits))
{
if(bit_array[i] == 49)
{
sequence= 1;
count++;
}
else
{
if((sequence == 1) && (count >= 15))
{
start_sequence= i-count;
end_sequence= start_sequence+539;
i= totalbits+1;
}
sequence= 0;
count= 0;
}
i++;
}
if (i == totalbits) start_sequence= -1;
}

void reduce_sequence(void)
{
int i;
signed char j= -1;
unsigned char count;
unsigned char value;
i= start_sequence;
while(i <= end_sequence)
{
count= 0;
value= bit_array[i];
if(j == 89)
{
reduced_array[j]= value;
i= end_sequence+1;
}
else
{
while(value == bit_array[i])
{
count++;
i++;
}
if(j == -1) j++;
else if((count == 5) || (count ==6)) reduced_array[j++]= value;
else if((count == 10) || (count == 11) || (count == 12))
{
reduced_array[j++]= value;
reduced_array[j++]= value;
}
}
}
}

void manchester_decode(void)
{
unsigned char i;
unsigned char j= 0;
for(i= 0; i< 90; i+=2)
{
if((reduced_array[i] == 49) && (reduced_array[i+1] == 4Cool) final_code[j++]= 48;
else final_code[j++]= 49;
}
}

En son unusual tarafından 07.04.2007, 20:46 tarihinde değiştirildi, toplam 1 kere değiştirildi
Başa dön
Kayıt: 20 Mar 2007
Mesajlar: 7

Offline
planix
Tarih: 07 04 2007 16:41

öncelikle kodun tamamı buysa eksiklikler war en başta #include <16f877.h> yok. bu nedenle düşük bir işlemcide çalıştığını war sayabilir compiler. ikincisi #fuse satırın yok ama bu şu aşamada bir sorun teşkil etmez.

hatalara gelince
*** expecting a close paren
hatası bir üst satırdaki input(pın_xx) den dolayı kaynaklanyor sanırım... ı değil i olucak pin_xx ...
yine aynı şekilde
const char bit_array[num_bıts+1]; tanımlamasında ingilizce karakterler kullanman gerekiyor tr karakterlerde sorun cıkıyor her compilerde olduğu gibi. ayrıca bu satır const olarak yazılacaksa içeriğide aynı satırda yazılması gerekli eğer değişiklik yapmayacaksan const olarak tanımlayıp bütün girdileri burada yap ama değişiklik warsa mecbur bu şekilde kalacak.
son hatada yine #use delay(clock=aaa) nın olmaması
bunları kodun tamamını gönderdiğini warsaydığım için yazdım

diğer arkadaşlarında dedği gibi ram ve rom 1080*46 karakterlik bilgiye yetmediği için data too big uyarısnı alıyorsun headeri değiştirip 18f452 ye cektiğimde kod derleniyor.
Başa dön
Kayıt: 08 Ekm 2006
Mesajlar: 127

Offline
unusual
Tarih: 07 04 2007 20:45

yok ordaki tanımlamalar "I" ile yazılmış olduğundan foruma atınca bunlar kuculuyor.yani orda bir sorun yok.dediğiniz gibi 18f452 yapınca data item too big hatası vermiyor onuda hallettik fakat bir tanesi kaldı.
şu kısımda:

while(TRUE)
{
if((totalBits == NUM_BITS)
{ *** expecting a close paren
find_start_code();
reduce_sequence();
Başa dön


Sayfaya git 1, 2  Sonraki

ccs c için yardım...


Benzer Konular

- Aydınlatma projeleri için ayrı bölüm açılmıştır

- Topraklama ve Paratoner projeleri için ayrı bölüm açılmıştır
- İstekleriniz için bu bölümü kullanının.
- Autocad proje istekleriniz için bu başlığı kullanın.
- Dosya paylaşmak için yukarıdaki alt forumları kullanınız
- anfi devreleri ile ilgilenen arkadaslardan bir yardım...
- matlab ödevi yardım ?
- PIC16F84 Haftaya perşembeye kadar Yardım!!!(çok Önemli)
- Akülü tekerlekli sandalye icin yardım

- telefonla açılan kapı projesi yardım...

- D.A Servo motor modellemesi - yardım

Sitemize üyelik ve içeriğin indirilmesi tamamen ücretsizdir. Sitemizde paylaşılan tüm dokümanlar (Tezler, makaleler, ders notları, sınav soru cevaplar, projeler) paylaşımcıların bireysel çalışmaları olup telif hakları kendilerine aittir ya da açık bir şekilde kamusal alana yerleştirilmiş dokümanların birer kopyalarıdır. Kişilerin bireysel çalışmalarını sitemizde yüklemesinde, sitemizde paylaşıma teşvik eden puanlama sisteminin de etkisi büyüktür. Bunlara rağmen hala size ait olan ve burada bulunmasına izin vermediğiniz dokümanlar varsa iletişim bölümünden yöneticilere bildirmeniz durumunda derhal silineceklerdir.
Powered by phpBB | Translated by phpBB Türkiye | Ads by Google Adsense | Design by Crazy Bat based
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72