سلام دوستان
کسی میدونه چطوری برنامه های نوشته شده به زبان بسکام رو توسط کامپایلر خط فرمانش میشه کامپایل کرد ؟
و حتی اگه کسی درمورد هر کامپایلر خط فرمان دیگه ای اطلاعات داره که برنامه های میکرو های سری avr رو حداقل کامپایل کنه به هگز ممنون میشم توضیح بدین
ممنون از همگـــــــــــــــی
کلید f7 رو بزنید، اگه برنامه تون مشکلی نداشته باشه کد هگزش تولید میشه.
منظورتون همین بود؟
ممنون از شما دوست عزیز جهت همکاری :
ببینید من قصد دارم یک ادیتور کد بنویسم... این ادیتور احتمالا به زبان C# یا vb نوشته میشه و برای کامپایل کدها نیاز به یک کامپایلر دارم که تحت داس این کارو از طریق خط فرمان انجام بده ... ( البته از خود برنامه مثلا بسکام هم میشه با محیط گرافیکیش استفاده کرد ولی کار به شدت ضعیف میشه چون محیط گرافیکی بسکام باید توسط برنامه ادیتور من کنترل بشه ... ) برای این منظور درخواست کردم ببینم از دوستان کسی می تونن با استفاده از یک کامپایلری که ویژوال نیست ( مثل کامند لاین بسکام یا .. ) منو راهنمایی کنن ؟
مثلا فایل Bascomp.exe ، خط فرمان تحت داس برنامه بسکام هست ، که فایل هگز از سورس اصلی رو تولید نمی کنه ( یا من نتونستم .... اگه شما میدونید چطوریه؟ یا روش خاصی داره بهم بگید )
ممنون از شما دوست عزیز.... امیدوارم منظورم رو فهمیده باشین
الا شما برنامه میکرو میخوایی کامپایل کنی یا c# و ... ؟
این دوستان الکترونیکی هستند؛ جوابشون هم احتمالا واسه بسکام و .. بود
اگه برنامت ویژوالیه و میخوایی با ویژوال استدیو کارکنی؛ نه تنها از نحسط گرافیکش بلکه میتونی از محیط dos (با cmd) برای کامپایل استفاده کنی
ببینید این کار رو باید بکنید
شما برنامه ی "bascomp.exe" رو که اجرا میکنید یک سری ورودی میخواد من فعلا میگم با CMD چه جوری اجرا کنید بعد توی برنامه هم همین طوری میتونید برنامه رو کامپایل کنید
اول توی پوشه برنامه بسکام برید
برای من این هست "C:\Program Files (x86)\MCS Electronics\BASCOM-AVR"
بعد برنامه که bascomp باشه رو مینویسیم ادامه اون با یک فاصله آدرس کامل فایل بیسیک رو مینویسید
مثلا
C:\Users\Behzad\Downloads\Compressed\tes\no.bas
بعد یک فاسله
جای x باید میزان حافظه Sram رو مشخص کنید
بعد یک فاصله
که میزان framesize هست
بعد یک فاصله
حالا x برابر میزان حافظه سخت افزاری هست hardwarestack
بعد فاصله
حالا x باید عددی متناظر با میکرو ی شما باشه برای پیدا کردنش اول یک بار برنامه بالا رو بدون هیچ چیزی باز کنید بهتون یه لیست میده که میکرو ی مورد نطر رو انتخاب کنید برای من این لیست رو داد
کد:
26=AT90S1200
0=AT90S2313
1=AT90S2323
2=AT90S2333
3=AT90S2343
4=AT90S4414
5=AT90S4433
6=AT90S4434
7=AT90S8515
8=AT90S8535
27=AT86RF401
81=AT90PWM216
80=AT90PWM3
15=ATtiny12
30=ATtiny13
30=ATtiny13A
16=ATtiny15
110=ATtiny167
64=ATtiny20
11=ATtiny22
31=ATtiny2313
31=ATtiny2313A
46=ATtiny24
36=ATtiny25
22=ATtiny26
58=ATtiny261
49=ATtiny4313
44=ATtiny44
35=ATtiny45
56=ATtiny461
91=ATtiny48
45=ATtiny84
38=ATtiny85
57=ATtiny861
90=ATtiny88
10=ATMega103
48=ATMega1280
21=ATMega128
47=ATMega1281
103=ATMEGA1284P
40=AT90CAN128
20=ATMega128
12=ATMEGA161
28=ATmega162
13=ATMEGA163
52=ATMEGA164P
42=ATMega165
34=ATmega168
61=ATmega168P
29=ATmega169
18=ATmega16
77=ATMEGA16U4
43=ATMega2560
41=ATMega2561
14=ATMEGA323
151=ATMEGA324PA
51=ATMEGA324P
105=ATMEGA3250P
100=ATMEGA325
60=ATmega328
60=ATmega328P
50=ATmega329
80=AT90CAN32
23=ATMEGA32
106=ATMEGA32M1
78=ATMEGA32U2
75=ATMEGA32U4
54=ATmega406
32=ATmega48
92=ATmega48P
9=ATmega603
55=ATMega640
37=ATMEGA644
59=ATMEGA644P
102=ATMEGA645
53=ATmega649
19=atmega64
24=ATmega8515
25=ATmega8535
33=ATmega88
62=ATmega88P
17=ATmega8
70=AT90USB1287
74=AT90USB162
71=AT90USB646
76=AT90USB82
200=ATXMega128A1
208=ATXMega128A3
212=ATXMega128D3
202=ATxmega16A4
209=ATxmega16D4
204=ATXMega192A3
213=ATXMega192D3
206=ATXMega256A3B
205=ATXMega256A3
214=ATXMega256D3
203=ATxmega32A4
210=ATxmega16D4
201=ATXMega64A1
207=ATXMega64A3
211=ATXMega64D3
بعد اینتر رو بزنید اگه فایل مشکلی نداشته یه فایل هگز در محل فایل بیسیک میسازه
حالا شما هم توی برنامه باید یک فایل بیسیک مثلا توی temp درست بکنی و بهش بدی و بعد هم برنامه رو اجرا کنی و فایل هگز رو به جایی که میخوای ببری
دوست عزیز درمورد Sram و FrameSIze و HardwareStack اطلاعاتی دارم ولی نه زیاد ... کلا میتونید این مسئله رو بیشتر بسط بدین تا شفاف تر بشه برای همه دوستان ؟
(۲۳-دى-۱۳۹۱, ۱۷:۲۴:۰۲)sezar.co نوشته است: [ -> ]دوست عزیز درمورد Sram و FrameSIze و HardwareStack اطلاعاتی دارم ولی نه زیاد ... کلا میتونید این مسئله رو بیشتر بسط بدین تا شفاف تر بشه برای همه دوستان ؟
ببینید شما بیشتر با sram برخورد میکنید در واقع همون رم می باشد
که فقط مربوط به برنامه شما هست یه قسمتی هم از رم مشتق میشه که hardwarestack هست (جمع این دوتا میشه رم - اگه stack و heap نداشته باشیم)
framesize هم اندازه ی صفحات میکرو هستند (برنامه شما در صفحاتی درون میکرو نوشته می شوند)
دو مورد آخری موارد کاربرد زیادی در موارد عادی ندارند شما میتوانید با مراجعه به دیتاشیت میکرو ها این هارو ذخیره کنید framesize هم مقداری ثابت است
البته توی فایل های خود بیسکام برای هر میکرو این مقدار ها نوشته شده اند
که باید ببینید می توانید استخراج کنید یا نه اگر حوصله دیدن دیتاشیت را هم ندارید codevision در قسمت تنظیمات هر پروژه مقدار این ها رو نوشته است و می توانید استفاده کنید
در کل طولانی هست اگر نیاز دارید به طور کامل توضیح دهم
ممنونم از پاسخ جامع شما ،
درصورت امکان آدرس کامل تری از بخش مورد نظر codevision که مقدار این موارد رو مشخص می کنه بدین ، تشکر ویژه میشه
منظور از رم رو واضح تر بیان می کنید ؟
و برای هر میکرو این ها مقدار ثابتی هست مگه ؟! برنامه های زیادی دوستان اجرا کردن و بنا به نیازشون از میزان stack کم و زیاد کردن ... چطور میشه که مقدار ثابتی برای میکرو در نظر گرفته شده باشه ؟
تو دیتاشیت تراشه ها من چیزی ندیدم ؟ با همین عنوان مشخص شدن ؟
تشکر
برای اطلاعات کامل برید به دیتاشیت
کامل atmega16 صفحه ی 16
به طور کامل تمامی حافظه هارو توضیح داده
-
اما اگر در ابتدای تمامی دیتاشیت هارو نگاه کرده باشید مقدار حافظه ها نوشته شده است
atmega16 datasheet نوشته است:– 16 Kbytes of In-System Self-programmable Flash program memory
– 512 Bytes EEPROM
– 1 Kbyte Internal SRAM
هر میکرو دارای یک SRAM میباشد که به سه قسمت تقسیم شده است که یکی از این قسمت ها INTERNAL SRAM است
و مقدار بالا که 1 کیلو میباشد مربوط به این قسمت است و
مقداری ثابت است
اما این حافظه خود به سه قسمت دیگر تقسیم میشود
1- حافظه برای متغییر ها و ...
2- HEAP
3- stack
که زمانی که در برنامه مقدار اسرم را تغییر میدهید در حقیقت مقدار اولی را تغییر می دهید
مورد سوم را مشخص نمی کنند و بقیه حافظه ی تخصیص داده نشده متعلق به آن قسمت است
اما مورد دوم که در برخی برنامه ها که به ان نیاز است تعریف میشود وگرنه در برنامه های ساده هیچ مقداری به آن اختصاص داده نمی شود توجه داشته باشید که اگر مجموع این سه از میزان حافظه (1 کیلو) بیشتر شود داده ها ذخیره نمیشوند و چون معمولا باقی مانده حافظه به استک تعلق میگیرد برنامه نمی تواند پس از بازگشت از توابع ادامه پیدا کند
به عدد های آدرس های هر قسمت این عکس توجه کنید و میزان حافظه را محاسبه کنید
این مربوط به میکرویی دیگر است