سلام
از دستگاهی مثل یه میکرو دیگه یا کامپیوتر یا سیگنال ژنراتور یا...
در بعضی از میکرو ها تایمر 2 و در بعضی تایمر1 هست
باید کریستال نوشته شده در برنامه با کریستالی که میکرو با ان کار میکند یکی باشد (در حالت پیش فرض میکرو با کریستال 1 مگا هرتز داخلی کار میکند )
محدوده کریستال داخلی بین 1 تا 8 مگا هر تز و خارجی بین 1 تا 16مگا هرتز میباشد ، هنگامی که شما کریستال رو بین 1 تا 8 مگا هرتز معرفی میکنید ، استفاده ار کریستال خارجی یا داخلی فرقی با هم ندارد .
سلام
چرا كريستال ساعت32768hz هست؟
وقتي از كريستال خود ميكرو استفاده ميكنيم دستورهاي تاخير دذرس كار نميكنه؟مگه فركانس داخلي مگا 16 نيز 8مگا نيست؟
mehrdadgh نوشته است:چرا كريستال ساعت32768hz هست؟
چون اين فركانس طوري تنظيم شده كه به راحتي و با تقسيم كننده مي توان به فركانس دقيق 1 هرتز دست يافت .
2 به توان 15 مي شه 32768
يعني اگه يه تقسيم كننده 15 طبقه داشته باشيم و به ورودي تقسيم كننده 32768 هرتز بديم در خروجي فركانس 1 هرتز داريم .
اگر در avr
کد:
Config Timer2 = Timer , Prescale = 128 , Async = On
قرار بديم ابتدا فركانس 32768 هرتز بر 128 تقسيم مي شوند ( 256 = 128/32768) و فركانس 256 هرتز به تايمر دو داده مي شه . تايمر دو 8 بيتي بوده يعني بين 0 تا 255 شمرده و دوباره صفر مي شود ( انگار 256 تا مي شمرد ) . و وقفه تايمر دو هم پس از 255 فعال مي شود . و چون فركانش ورودي هم 256 هرتز است پس وقفه تايمر دو دقيقا هر 1 ثانيه يك مي شود .
2 به توان 8 مي شه 256
2 به توان 7 مي شه 128
8+7=15
256*128=32768
mehrdadgh نوشته است:وقتي از كريستال خود ميكرو استفاده ميكنيم دستورهاي تاخير درست كار نميكنه؟
مگه فركانس داخلي مگا 16 نيز 8 مگا نيست ؟
اگه تو فيوز بيت ها فركانس داخلي رو عوض نكرده باشيد روي 1 مگاهرتز هستش .
فابريكي رو 1 مگاهرتز داخلي تنظيم شده .
البته مي شه با مراجعه به فيوز بيت ها اين مقدار رو عوض كرد .
نكته ديگه :
اين دستورات تاخير مثل wait و waitms زياد دقيق نيستند و اگه وقفه اي در حين تاخير رخ بده . ميكرو برنامه هاي وقفه رو انجام مي ده و اين زمان ( زمان انجام دادن برنامه هاي وقفه تا زمان برگشت از وقفه ) به زمان تاخير اضافه مي شه .
پس دستور $crystal=8000000
چي ميشه؟
يعني فقط با فيوز بيتها فركانس تغيير ميكنه؟
((من كه سر در نياوردم))
شما اگه crystal=8000000$ انتخاب كنيد و كريستال واقعيتون 1 مگ باشه اون وقت دستورات تاخير 8 برابر سريع تر انجام مي شه .
علتشو فكر كنيد مي فهميد .
سلام
شما گفتيد كه تو فركانسهاي 1تا 8 مگ ميكرو ديگه نيازي به كريستال نداره وفرقي ندارن و من هم دستورهاي تاخيري مانند wait و هم تايمر ها رو بدون كريستال امتحان كردم ولي هيچ كدوم درست جواب نداد بخصوص wait 1 كه به جاي يه ثانيه 5يا 6 ثانيه تاخير ايجاد كرد.!
اصلا كريستال خارجي رو كي ميزارن؟ (با اين كريستال 8 مگاهرتز خارجي دستور wait درست كار ميكنه؟جوابش آري هست! به اين خاطر پرسيدم كه شما گفتيد خارجي و داخلي تا 8 مگا فرقي ندارن ولي آزمايش يه چيز ديگه شد.)
{ شما اگه crystal=8000000$ انتخاب كنيد و كريستال واقعيتون 1 مگ باشه اون وقت دستورات تاخير 8 برابر سريع تر انجام مي شه .}
ايني كه گفتين يعني چه؟ كريستال واقعي ديگه چه صيغه ايه؟(والا گاتي كردم!!!!)
مگه با دستور crystal فركانس رو تعيين نميكنيم پس جه دخلي به فيوزبيت داره كه يك مگ باشه؟؟؟؟؟؟؟؟
خدا خيرتون بده فقط يه طوري توضيح بدين كه من ديگه اين بار بفهمم (مثل اينكه داره به خنگي ميكشه !)
(۲۸-شهریور-۱۳۸۷, ۱۶:۳۸:۲۲)mehrdadgh نوشته است: [ -> ]شما گفتيد كه تو فركانسهاي 1تا 8 مگ ميكرو ديگه نيازي به كريستال نداره وفرقي ندارن و من هم دستورهاي تاخيري مانند wait و هم تايمر ها رو بدون كريستال امتحان كردم ولي هيچ كدوم درست جواب نداد بخصوص wait 1 كه به جاي يه ثانيه 5يا 6 ثانيه تاخير ايجاد كرد.!
سلام
نیازی به کریستال خارجی نیست ، شما میتونید از کریستال داخلی میکرو استفاده کنید(میکرو از کریستال داخلی استفاده میکنه)، شما باید فرکانس کریستالی رو که در برنامه با دستور $crystal مشخص میکنید با فرکانس کریستال (قطعه )یکی باشه ، در حالت پیشفرض فرکانس کار میکرو 1 مگا هرتز است ، در صورتی که شما در برنامه فرکانس کریستال رو 1 مگا هرتز بنویسید و برنامه رو روی میکرو پروگرام کنید دستورات تاخیر درست انجام میشوند اما سرعت عمل میکرو کمتر است (یعنی :$crystal=1000000)
در صورتی که فرکانس نوشته شده در برنامه مثلا 8 مگا هرتز باشد ($crystal=8000000) شما باید یا یه کریستال 8مگا هرتز به میکرو متصل کنید و فیوز بیت مربوط به کریستال رو روی کریستال خارجی 8 مگا هرتز تنظیم کنید یاز کریستال داخلی استفاده کنید ،در این صورت باید فیوز بیت مربوطه رو روی کریستال داخلی تنظیم کنید
(۲۸-شهریور-۱۳۸۷, ۱۶:۳۸:۲۲)mehrdadgh نوشته است: [ -> ]اصلا كريستال خارجي رو كي ميزارن؟ (با اين كريستال 8 مگاهرتز خارجي دستور wait درست كار ميكنه؟جوابش آري هست! به اين خاطر پرسيدم كه شما گفتيد خارجي و داخلي تا 8 مگا فرقي ندارن ولي آزمايش يه چيز ديگه شد.)
کریستال خارجی رو موقعی میزارن که نیاز به سرعت و دقت بالا باشه ،شما یه بار دیگه فیوز بیت ها رو درست چک کن
(۲۸-شهریور-۱۳۸۷, ۱۶:۳۸:۲۲)mehrdadgh نوشته است: [ -> ]{ شما اگه crystal=8000000$ انتخاب كنيد و كريستال واقعيتون 1 مگ باشه اون وقت دستورات تاخير 8 برابر سريع تر انجام مي شه .}
ايني كه گفتين يعني چه؟ كريستال واقعي ديگه چه صيغه ايه؟(والا گاتي كردم!!!!)
یعنی شما توی برنامه مینویسید :$crystal=8000000
و برنامه رو روی میکرو پروگرم میکنید ، نرم افزار کامپایلر دستوراتی که برای ایجاد تاخیر ، مثلا 1ثانیه محاسبه کرده برمبنای کریستال 8 مگا هرتز بوده ، اما فرکانس کار میکرو 8 مگا هرتز نیست و 1 مگا هرتزه ، پس تاخیر که باید 1 ثانیه طول بکشه 8 پانیه طول میکشه. کریستال واقعی کریستالی هست که میکرو با اون کار میکنه
(۲۸-شهریور-۱۳۸۷, ۱۶:۳۸:۲۲)mehrdadgh نوشته است: [ -> ]مگه با دستور crystal فركانس رو تعيين نميكنيم پس جه دخلي به فيوزبيت داره كه يك مگ باشه؟؟؟؟؟؟؟؟
خدا خيرتون بده فقط يه طوري توضيح بدين كه من ديگه اين بار بفهمم (مثل اينكه داره به خنگي ميكشه !)
با دستور $crystal کریستال در برنامه تعیین میشه و کامپایلر بر مبنای کریستال نوشته شده محاسبات برای تاخیر رو انجام میده .
در avr شما میتونید از انواع نوسان ساز ها استفاده کنید ، شما باید به میکرو بفهمونید که این فرکانسی که توی برنامه نوشتید از کجا میخواد تامین بشه ، میکرو میخواد تامینش کنه ، کریستال خارجی این کار رو میکنه ،.....
اگه توی پروگرام کردن فیوز بیت ها مشکل داری بگو تا عکسش رو بذارم
سلام
اقا خدا خيرتون بده مشكلم حل شد.!
اگه يه مثال واسم با كلاك خارجي هم بگي كه نور علي نور ميشه
بازم ممنون.
دستورات كرستال خارجي هم همينانند .
فقط بايد تو فيوز بيت ها كريستال خارجي رو انتخاب كني و يه كريستال و دوتا خازن هم وصل كني .
(۳۰-شهریور-۱۳۸۷, ۲۲:۲۸:۴۰)terip2008 نوشته است: [ -> ]دستورات كرستال خارجي هم همينانند .
فقط بايد تو فيوز بيت ها كريستال خارجي رو انتخاب كني و يه كريستال و دوتا خازن هم وصل كني .
سلام
كلاك خارجي نه كريستال!
راستش واسه كلاك خارجي اصلا مثال پيدا نكردم
تو كلاك خارجي منظور پايه nc چيه؟ همون پايه كم اهميته يا چيز ديگه ايه؟
حواسم نبود .
NC = NOT CONNECT
يعني به هيچي وصل نمي شه و آزاد هستش .
همون پايه كم اهميته .
پروژه هاش هم فرقي ندارن .
فقط بايد فيوز بيت رو تنظيم كنيد و به ورودي ميكرو فركانس مورد نظرتون كه تو برنامه هم تنظيمش كرديد وارد كنيد .