2010-06-06 13 views
6

एक pic18f के साथ माइक्रोचिप सी 18 कंपाइलर का उपयोग करके एक pic18f पर बड़े बफर बनाएं, मैं प्रोग्राम डेटा स्पेस में 3000 बाइट्स का "बड़ा" बफर बनाना चाहता हूं।माइक्रोचिप सी 18 कंपाइलर

तो मैं मुख्य() (स्टैक पर) में यह डाल:

char tab[127]; 

मैं इस त्रुटि है:

Error [1300] stack frame too large 

अगर मैं वैश्विक में रख, मैं इस त्रुटि है:

Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x0000007f 

एक बड़ा बफर कैसे बनाएं? क्या आपके पास c18 के साथ pic18f पर बड़े बफर को प्रबंधित करने के तरीके पर ट्यूटोरियल है? http://www.dwengo.org/tips-tricks/large-variables

मूल रूप से, आप एक विशेष भाग में अपने चर ऐलान करते हैं और डिफ़ॉल्ट खंड में इसे करने के लिए एक सूचक:

उत्तर

2

यहाँ वास्तव में इस पर एक ट्यूटोरियल है

#pragma udata DATA // section DATA 
    int large_table[768]; 

    #pragma udata // return to default section 
    int *table_ptr = &large_table[0]; 

इसके बाद, आप लिंकर अद्यतन स्क्रिप्ट कुछ इस तरह जोड़कर बड़े वर्ग को परिभाषित करने के:

DATABANK NAME=data  START=0x200   END=0x7FF   PROTECTED 
SECTION NAME=DATA  RAM=data 

ध्यान दें कि वहां आम तौर पर किसी भी तुच्छ स्मृति नहीं है, जो आपने अभी पी कर सकते हैं अपने डेटा अनुभाग के रूप में, लेकिन यूएसबी बफर आम तौर पर कैनबलाइज करने के लिए मेरी पहली पसंद हैं (जब तक आपको पाठ्यक्रम की उसी परियोजना में यूएसबी की आवश्यकता न हो ...)

संबंधित मुद्दे