سلام دوستان، من میخوام یه برنامه برای میکرو کنترلر ATmega32 بنویسم که ورودی که قرار هست به یکی از پایه های میکرو اعمال بشه خروجی یک xor دوتا سیگنال هست که باتوجه به سیگنال های ورودی مرتب 0 و 1 میشه و چهار حالت مختلف رو بوجود میاره {..و0و1} ، {..و1و0}، {0و0} و {...و1و1} ، و با توجه به این چهارحالت باید یک سری دستور رو برام اجرا کنن من برای خواندن ورودی از رجیستر PIN استفاده کردم و برای صفر ویک شدنش یک متغیر تعریف کردم، سوالم این هست که چطور این متغیرهارو تعریف کنم که با هم همپوشانی نداشته باشن، یااینکه چه راه حل دیگه ای وجود داره که تفاوت بین این چهار حالت رو بشه تشخیص داد؟ممنون میشم راهنماییم کنید
اطلاعیه
Collapse
No announcement yet.
برنامه نویسی برای میکرو armega32
Collapse
X
-
پاسخ : برنامه نویسی برای میکرو armega32
میتونی گیت xor را حذف کنی و بجاش دوتا ورودی را به دوتا از پینهای میکرو بدی و نرم افزاری ورودیهات را xor کنی.
اگه هم از نظر تعداد پین ورودی میکرو محدودیت داری،دوتا سیگنال ورودیت را با سه تا مقاومت بصورت D/A , وصل کنی و به یکی از پینهای ورودی آنالوگ A/D بدی و با خوندن مقدار آنالوگ ،وضعیت سیگنالهات را پیدا کنی و بصورت نرم افزاری xor کنی.جدیدترین ویرایش توسط madasazegan; ۱۳:۵۶ ۱۴۰۱/۱۰/۰۳.
- تشکرها 1
-
پاسخ : برنامه نویسی برای میکرو armega32
نوشته اصلی توسط madasazegan نمایش پست هامیتونی گیت xor را حذف کنی و بجاش دوتا ورودی را به دوتا از پینهای میکرو بدی و نرم افزاری ورودیهات را xor کنی.
اگه هم از نظر تعداد پین ورودی میکرو محدودیت داری،دوتا سیگنال ورودیت را با سه تا مقاومت R و2Rبصورت D/A , وصل کنی و به یکی از پینهای ورودی آنالوگ A/D بدی و با خوندن مقدار آنالوگ ،وضعیت سیگنالهات را پیدا کنی و بصورت نرم افزاری xor کنی.
دیدگاه
-
پاسخ : برنامه نویسی برای میکرو armega32
نوشته اصلی توسط arash13691 نمایش پست هامنظورتون از xor کردن ورودی به صورت نرم افزاری چی هست؟سیگنال های ورودیم آنالوگ هستند که اومدم به IC4046 اعمالش کردم وفرکانس سیگنالهای ورودیم در حد مگاهرتز هست
شما در اصل دو تا فرکانس دارید اونم در حد مگا هرتز
خب بعد اومدید دوباره این دو خروجی به گیت ایکس اور دادید و خروجی نهایی به یک پین میکرو وصلا کردید
جالا این ورودی هی صفر و یک میشه و شما میخواید بدونید این صفر یک ها دریافتی مربوط به کدام حالت
خب اول از همه ایا میگرو شما قادر به خواندن فرکانس در حد مگا هرتز هست ؟ خیر
دو ما اگر فرکانس خیلی پاین تر بود نیازی به گیت اور خارجی نبود و دو فرکانس به کمک دو پایه میکرو و همچنین وقفه میخونید و از همه حالت با خبر بودید
- تشکرها 1
دیدگاه
-
پاسخ : برنامه نویسی برای میکرو armega32
نوشته اصلی توسط کاکو نمایش پست هابا درود
شما در اصل دو تا فرکانس دارید اونم در حد مگا هرتز
خب بعد اومدید دوباره این دو خروجی به گیت ایکس اور دادید و خروجی نهایی به یک پین میکرو وصلا کردید
جالا این ورودی هی صفر و یک میشه و شما میخواید بدونید این صفر یک ها دریافتی مربوط به کدام حالت
خب اول از همه ایا میگرو شما قادر به خواندن فرکانس در حد مگا هرتز هست ؟ خیر
دو ما اگر فرکانس خیلی پاین تر بود نیازی به گیت اور خارجی نبود و دو فرکانس به کمک دو پایه میکرو و همچنین وقفه میخونید و از همه حالت با خبر بودید
ممنون از توضیحاتتون
در اینجا فرکانس سیگنال های ورودی مطرح نیست، چون من فقط صفر ویک شدن متناوب خروجی IC4046 رو به میکرو اعمال میکنم، واگر فرکانس کاری میکرو رو که تا 16 مگاهرتز میتونه باشه رو در نظر بگیریم این صفر ویک شدن متناوب رو میتونه با رجیستر PIN بخونه ودر این مورد مشکلی وجود نداره
دیدگاه
-
پاسخ : برنامه نویسی برای میکرو armega32
نوشته اصلی توسط arash13691 نمایش پست هابا سلام
ممنون از توضیحاتتون
در اینجا فرکانس سیگنال های ورودی مطرح نیست، چون من فقط صفر ویک شدن متناوب خروجی IC4046 رو به میکرو اعمال میکنم، واگر فرکانس کاری میکرو رو که تا 16 مگاهرتز میتونه باشه رو در نظر بگیریم این صفر ویک شدن متناوب رو میتونه با رجیستر PIN بخونه ودر این مورد مشکلی وجود نداره
منم خروجی اسی مذکوره رو گفتم و اون ورودی به گیت ایکس اور وصل شده و در نهایت خروجی گیت به پین و.رودی میکرو
اصلا بیا فقط خروجی گیت ایکس اور در نظر بگیریم
فرکانس ها که فقط انالوگ نیستن .. فرکانس دیجیتالی هم داریم که میشه گفت تمام دنیا داره با این مدل فرکانس ها میچرخه
همون صفر و یک های نازنین یک فرکانس رو تشکیل میدن .
پس ورودی پین میکرو داره یک فرکانس دیجیتالی رو دریافت میکنه
و کلاک میکرو هم اینجوری که برای اجرای یک دستور شاید 100 کلاک مصرف میشه
و سیکل روشنایی و خاموشی این ورودی شما هم به خاطر عملیالت های گیت ثابت نیست و تناوب متفاوتی داره و فرکانس هم در حال تغییره
و برای خوانش از کلاک یک طبقه پایین تر باید به عنوان کلاک پالس استفاده کنی یعنی خروجی اسی مذکوره
در کل تا جایی که میدونم میکرو نمیتونه این فرکانس بخونه
و خوانش فرکانس های تقریبا بالا ذهن میکرو مشغول میکنه و دیگه نمیتونه کار دیگه ای انجام بده
دیدگاه
-
پاسخ : برنامه نویسی برای میکرو armega32
نوشته اصلی توسط کاکو نمایش پست هاو خوانش فرکانس های تقریبا بالا ذهن میکرو مشغول میکنه و دیگه نمیتونه کار دیگه ای انجام بده
برای اندازه گیری فرکانس میتوان از وقفه های تایمر/کانتر استفاده کرد.
موفق باشید.
- تشکرها 1
دیدگاه
-
پاسخ : برنامه نویسی برای میکرو armega32
نوشته اصلی توسط evergreen نمایش پست هابا سلام و احترام
برای اندازه گیری فرکانس میتوان از وقفه های تایمر/کانتر استفاده کرد.
موفق باشید.
سپاس از راهنمایی تون
ولی بازم این میکرو نمیتونه این فرکانس بخونه درسته ؟
منظور شما اینه در بازه یک ثانیه این کار بکنه تا فرکانس مشخص بشه
این پالس های ورودی سیکل خاموش روشناییشون برابر نیست بخاطر گیت ایکس اور
البته ایشون نمیخوان فرکانس بسنجن
میخوان خروجی گیتا ایکس اور که فرکانسی در حد مگا هرتز داره پردازش کنن اونم دانه دانه سیکل هاجدیدترین ویرایش توسط کاکو; ۲۰:۲۹ ۱۴۰۱/۱۰/۰۴.
- تشکرها 3
دیدگاه
-
پاسخ : برنامه نویسی برای میکرو armega32
dim a as byte
a.0=pinc.0
a.1=pinc.1
حالا با تغیرر ورودی هر دو پایه میکرو متغییرت 00=0 01=1 10=2 11=3
پس متغییرت الان با تغییر دو پایه میکرو 0 1 2 3 میشود
میکرو با توجه به کریستال می تونه در حالت مستقیم 4 مگاهرتز را بخونه و اگه به خواندن فرکانس های بالاتر نیازه از مدارات تقسیم فرکانس استفاده نمایید بطور مثال مدار زیر با میکروی اتمگا 8 40 مگاهرتز را نشان میده
جدیدترین ویرایش توسط saeidssm; ۲۰:۳۷ ۱۴۰۱/۱۰/۰۴.
- تشکرها 1
دیدگاه
-
پاسخ : برنامه نویسی برای میکرو armega32
نوشته اصلی توسط saeidssm نمایش پست هاdim a as byte
a.0=pinc.0
a.1=pinc.1
حالا با تغیرر ورودی هر دو پایه میکرو متغییرت 00=0 01=1 10=2 11=3
پس متغییرت الان با تغییر دو پایه میکرو 0 1 2 3 میشود
میکرو با توجه به کریستال می تونه در حالت مستقیم 4 مگاهرتز را بخونه و اگه به خواندن فرکانس های بالاتر نیازه از مدارات تقسیم فرکانس استفاده نمایید بطور مثال مدار زیر با میکروی اتمگا 8 40 مگاهرتز را نشان میده
http://www.avr-asm-tutorial.net/avr_...fcount_m8.html
ایشون نمیخو.ان فرکانس رو بسنجن حالا کاری با شدن یا نشدنش نداریم
توجه کنید ایشون میخوان حداقل هر یک میکرو ثانیه یکی از پایه های میکرو رو بخونه ؟ بنظرتون میشه ؟
- تشکرها 1
دیدگاه
-
پاسخ : برنامه نویسی برای میکرو armega32
نوشته اصلی توسط کاکو نمایش پست هابا درود
ایشون نمیخو.ان فرکانس رو بسنجن حالا کاری با شدن یا نشدنش نداریم
توجه کنید ایشون میخوان حداقل هر یک میکرو ثانیه یکی از پایه های میکرو رو بخونه ؟ بنظرتون میشه ؟
- تشکرها 1
دیدگاه
-
پاسخ : برنامه نویسی برای میکرو armega32
نوشته اصلی توسط saeidssm نمایش پست هاdim a as byte
a.0=pinc.0
a.1=pinc.1
حالا با تغیرر ورودی هر دو پایه میکرو متغییرت 00=0 01=1 10=2 11=3
پس متغییرت الان با تغییر دو پایه میکرو 0 1 2 3 میشود
میکرو با توجه به کریستال می تونه در حالت مستقیم 4 مگاهرتز را بخونه و اگه به خواندن فرکانس های بالاتر نیازه از مدارات تقسیم فرکانس استفاده نمایید بطور مثال مدار زیر با میکروی اتمگا 8 40 مگاهرتز را نشان میده
http://www.avr-asm-tutorial.net/avr_...fcount_m8.html
ممنون از توضیحاتتون
حداکثر فرکانس سیگنال ورودی من 2 مگاهرتز هست،اگر کریستال غیر استاندارد 11.0592MHz استفاده کنم درست عمل میکنه یا از فرکانس کاری بالاتر استفاده کنم؟
من دوتاسیگنال برای اعمال به میکرو ندارم من فقط یک ورودی دارم که میتونه 0 یا 1 بشه، من اومدم دوتامتغیر تعریف کردم که در صورت تغییر وضعیت پایه اون متغیر تغییر کنه، و با بزرگتر موازی وکوچکتر درنظر گرفتن این دوتا متغیر سه حالت بدست میاد وقتی که دوتا صفر پشت سر هم هست وقتی دوتا یک پشت سر هم هست که جواب درسته ولی با این کار وقتی 01 و10 هست رو یکی درنظر میگیره، چه راهی وجود داره که بشه برای حالت سوم تفاوتی به وجود آورد؟
(0==0.PINA)if
1=x
(1==0.PINA)if
y=1
دیدگاه
-
جدیدترین ویرایش توسط Amie.s.m; ۱۵:۴۶ ۱۴۰۱/۱۰/۰۶.
- تشکرها 2
دیدگاه
دیدگاه