یک تمرین کاربردی برنامه نویسی میکروکنترلر:
با اتصال یک صفحه کلید ps2 و یک LCD کاراکتری به میکروکنترلر، برنامه ای برای ذخیره کردن پسوردهای مورد استفاده خود جهت دسترسی به شبکه های اجتماعی و سایت ها و مانند آن را بنویسید. روال کار می تواند به این صورت باشد که در ابتدا از طریق صفحه کلید یک پسورد اصلی دریافت شود و در صورت صحیح بودن آن، قابلیت مشاهده و تصحیح و ذخیره سازی تعدادی پسورد به همراه نام سایت های مربوطه روی LCD وجود داشته باشد.
@KnowledgePlus
با اتصال یک صفحه کلید ps2 و یک LCD کاراکتری به میکروکنترلر، برنامه ای برای ذخیره کردن پسوردهای مورد استفاده خود جهت دسترسی به شبکه های اجتماعی و سایت ها و مانند آن را بنویسید. روال کار می تواند به این صورت باشد که در ابتدا از طریق صفحه کلید یک پسورد اصلی دریافت شود و در صورت صحیح بودن آن، قابلیت مشاهده و تصحیح و ذخیره سازی تعدادی پسورد به همراه نام سایت های مربوطه روی LCD وجود داشته باشد.
@KnowledgePlus
نکته ای در مورد مد CTC در تایمر کانترهای AVR:
با توجه به immediate و فوری بودن تغییر مقدار رجیستر مقایسه در مد CTC که نقش TOP را به عهده دارد، تغییر این رجیستر می تواند منجر به ایجاد خطای ناخواسته در یک سیکل تایمر شود. برای درک بهتر، فرض کنید تایمر شماره 1 در مد CTC قرار داشته باشد و مقدار فعلی تایمر برابر 101 و OCR1A برابر 200 باشد. در این وضعیت اگر مقدار 100 در OCR1A نوشته شود، به دلیل تاثیر فوری این تغییر مقدار و بزرگتر بودن مقدار تایمر کانتر از مقدار جدید رجیستر OCR1A، تایمر به شمارش خود از 101 تا 65535 ادامه می دهد و بعد مجددا صفر می شود تا در سیکل بعدی مقدار 100 به عنوان حداکثر مقدار تایمر کانتر اثر گذار باشد. با چنین فرضی تعداد کلاک لازم برای صفر شدن تایمر بسیار بیشتر از مقدار مورد انتظار خواهد بود که باعث ایجاد خطا می شود. برای بر طرف کردن این مسئله اگر در تایمری از میکروکنترلر مورد استفاده مد fast pwm با مقدار TOP قابل تنظیم وجود داشته باشد، برای اجتناب از مشکل فوق بجای مد CTC می توان از این نوع fast pwm استفاده کرد. زیرا در مد fast pwm مقدار دهی به TOP با مکانیزم double buffering انجام می شود و بصورت immediate نیست و در نتیجه تغییر مقدار TOP تا ابتدای سیکل بعد به تاخیر خواهد افتاد و مشکل مذکور بوجود نخواهد آمد. به عنوان مثال مدهای 14 و 15 در تایمر کانترهای 1 و 3 در mega64 دارای TOP متغیر هستند و می توانند به این منظور مورد استفاده قرار بگیرند.
@KnowledgePlus
با توجه به immediate و فوری بودن تغییر مقدار رجیستر مقایسه در مد CTC که نقش TOP را به عهده دارد، تغییر این رجیستر می تواند منجر به ایجاد خطای ناخواسته در یک سیکل تایمر شود. برای درک بهتر، فرض کنید تایمر شماره 1 در مد CTC قرار داشته باشد و مقدار فعلی تایمر برابر 101 و OCR1A برابر 200 باشد. در این وضعیت اگر مقدار 100 در OCR1A نوشته شود، به دلیل تاثیر فوری این تغییر مقدار و بزرگتر بودن مقدار تایمر کانتر از مقدار جدید رجیستر OCR1A، تایمر به شمارش خود از 101 تا 65535 ادامه می دهد و بعد مجددا صفر می شود تا در سیکل بعدی مقدار 100 به عنوان حداکثر مقدار تایمر کانتر اثر گذار باشد. با چنین فرضی تعداد کلاک لازم برای صفر شدن تایمر بسیار بیشتر از مقدار مورد انتظار خواهد بود که باعث ایجاد خطا می شود. برای بر طرف کردن این مسئله اگر در تایمری از میکروکنترلر مورد استفاده مد fast pwm با مقدار TOP قابل تنظیم وجود داشته باشد، برای اجتناب از مشکل فوق بجای مد CTC می توان از این نوع fast pwm استفاده کرد. زیرا در مد fast pwm مقدار دهی به TOP با مکانیزم double buffering انجام می شود و بصورت immediate نیست و در نتیجه تغییر مقدار TOP تا ابتدای سیکل بعد به تاخیر خواهد افتاد و مشکل مذکور بوجود نخواهد آمد. به عنوان مثال مدهای 14 و 15 در تایمر کانترهای 1 و 3 در mega64 دارای TOP متغیر هستند و می توانند به این منظور مورد استفاده قرار بگیرند.
@KnowledgePlus
نظر سنجی: به نظر شما در یک میکروکنترلر، کدامیک از سخت افزارهای زیر در عمل پر کاربردتر و مهم تر هستند؟
Timers (pwm) – 384
👍👍👍👍👍👍👍 57%
USART – 163
👍👍👍 24%
ADC – 63
👍 9%
SPI – 19
▫️ 3%
USB – 14
▫️ 2%
I2C – 11
▫️ 2%
Ethernet – 9
▫️ 1%
DAC – 8
▫️ 1%
CAN – 8
▫️ 1%
👥 679 people voted so far. Poll closed.
Timers (pwm) – 384
👍👍👍👍👍👍👍 57%
USART – 163
👍👍👍 24%
ADC – 63
👍 9%
SPI – 19
▫️ 3%
USB – 14
▫️ 2%
I2C – 11
▫️ 2%
Ethernet – 9
▫️ 1%
DAC – 8
▫️ 1%
CAN – 8
▫️ 1%
👥 679 people voted so far. Poll closed.
مشاهداتی از نصب تعداد زیادی avr در تولیدات صنعتی برای مدت زمانی بیش از ده سال:
1- مواردی از سوختن میکروکنترلر دیده شده است.
2- با نمونه هایی برخورد شده که میکروکنترلر سالم بوده، اما پین های خاصی از آن آسیب دیده بودند.
3- حتی یک مورد پاک شدن eeprom داخلی مشاهده نشده است.
4- با رعایت ملاحظات طراحی و تغذیه، بحث هنگ کردن موضوعیتی نداشته است.
@KnowledgePlus
1- مواردی از سوختن میکروکنترلر دیده شده است.
2- با نمونه هایی برخورد شده که میکروکنترلر سالم بوده، اما پین های خاصی از آن آسیب دیده بودند.
3- حتی یک مورد پاک شدن eeprom داخلی مشاهده نشده است.
4- با رعایت ملاحظات طراحی و تغذیه، بحث هنگ کردن موضوعیتی نداشته است.
@KnowledgePlus
استفاده از کریستال پیزوالکتریک به عنوان آشکار ساز ضربه:
در برخی از کاربردها گاهی این نیاز بوجود می آید که از طریق اتصال سنسور مناسب به میکروکنترلر، وجود ضربه های مکانیکی را آشکار کنیم. یک روش آسان و ارزان قیمت برای این کار استفاده از کریستال های پیزو الکتریک موجود در بازار است که معمولا زرد زنگ هستند. در آزمایش های عملی انجام شده مشاهده شد که حتی با اتصال مستقیم خروجی این پیزوها به پین میکروکنترلر و بعد از فعال کردن وقفه خارجی، با وارد شدن ضربه فرمان وقفه ایجاد می شود.
@KonwledgePlus
در برخی از کاربردها گاهی این نیاز بوجود می آید که از طریق اتصال سنسور مناسب به میکروکنترلر، وجود ضربه های مکانیکی را آشکار کنیم. یک روش آسان و ارزان قیمت برای این کار استفاده از کریستال های پیزو الکتریک موجود در بازار است که معمولا زرد زنگ هستند. در آزمایش های عملی انجام شده مشاهده شد که حتی با اتصال مستقیم خروجی این پیزوها به پین میکروکنترلر و بعد از فعال کردن وقفه خارجی، با وارد شدن ضربه فرمان وقفه ایجاد می شود.
@KonwledgePlus
در صنف ساختمان روالی وجود دارد که اگر شما کاری را به یک نفر دادید (مثلا یک لوله کش) و به هر دلیلی با آن فرد به مشکل برخورد کردید و کار نیمه تمام ماند، سایر افراد آن صنف معمولا حاضر نمی شوند به کار نیمه تمام همکارشان دست بزنند و در واقع بدون آنکه همدیگر را بشناسند، با این عملکرد از همکارشان حمایت می کنند. ای کاش در رشته الکترونیک هم یک فرهنگ حمایت جمعی از افراد شاغل در این رشته شکل می گرفت و رفتارهای برخی افراد این صنف مانند مهندسی معکوس و کپی کردن طرح های همکاران و سعی برای در آوردن کار از دست آنان با قیمت های بسیار پایین، کمتر مشاهده می شد.
@KnowledgePlus
@KnowledgePlus
یکی از کاربردهای کمتر شناخته شده در الکترونیک که به نتیجه رسیدن و فراگیر شدن آن به دلیل مشکل کمبود آب می تواند تاثیر مثبتی در مقیاس ملی داشته باشد پیاده سازی اتوماسیون آبیاری است.
@KnowledgePlus
@KnowledgePlus
نکته ای در مورد eeprom های سریال سری at24cxx:
با توجه به اینکه زمان ذخیره سازی اطلاعات بصورت داخلی در این حافظه ها در حدود چند میلی ثانیه است، برای بالا بردن سرعت نوشتن در حافظه و در صورتی که نیاز به نوشتن بیش از یک بایت وجود داشته باشد، بجای ذخیره سازی اطلاعات بصورت بایت به بایت می توانیم مجموعه ای از بایت ها را بصورت یک page ذخیره کنیم. سایز page در شماره های مختلف این خانواده متفاوت است و مثلا برای at24c01 برابر 8 بایت و برای at24c1024 برابر 256 بایت است.
@KnowledgePlus
با توجه به اینکه زمان ذخیره سازی اطلاعات بصورت داخلی در این حافظه ها در حدود چند میلی ثانیه است، برای بالا بردن سرعت نوشتن در حافظه و در صورتی که نیاز به نوشتن بیش از یک بایت وجود داشته باشد، بجای ذخیره سازی اطلاعات بصورت بایت به بایت می توانیم مجموعه ای از بایت ها را بصورت یک page ذخیره کنیم. سایز page در شماره های مختلف این خانواده متفاوت است و مثلا برای at24c01 برابر 8 بایت و برای at24c1024 برابر 256 بایت است.
@KnowledgePlus
پر کردن هارد کامپیوتر از نرم افزار و فیلم آموزشی و فایل pdf از کسی طراح و برنامه نویس نمی سازد. رسیدن به مرتبه طراحی و برنامه نویسی از آنجا شروع می شود که بسته به نیاز بالاخره از یک جا شروع کنیم و سعی کنیم تا انتهای آن برویم.
@KnowledgePlus
@KnowledgePlus
برای راه اندازی Buzzer های اسیلاتور دار موجود در بازار و اتصال آنها به میکروکنترلرها باید توجه کنیم که این قطعات دارای ولتاژهای راه اندازی مختلفی مانند 3v و 5v و 12v هستند که در هنگام خریداری باید به این ولتاژ دقت شود. مورد دیگر اینکه مطابق با آزمایش های عملی انجام شده برخی از انواع ولتاژ پایین Buzzer های موجود در بازار را به دلیل جریان کشی بالایی که دارند بصورت مستقیم نمی توان به پین میکروکنترلر متصل کرد و این اتصال باید با واسطه یک سوییچ ترانزیستوری و مانند آن انجام شود.
@KnowledgePlus
@KnowledgePlus
تابع زیر قبلا در پروژه ای برای گرد کردن اعداد مثبت و منفی به زبان BASIC نوشته شده بود و از آنجایی که ممکن است برای کسی قابل استفاده باشد در اینجا قرار داده می شود:
Public Function myround(n As Double)
Dim m As Double
If n >= 0 Then
If (n - Int(n)) >= 0.5 Then
myround = (1 + Int(n))
Else
myround = Int(n)
End If
Else
m = -n
If (m - Int(m)) >= 0.5 Then
myround = -(1 + Int(m))
Else
myround = -Int(m)
End If
End If
End Function
@KnowledgePlus
Public Function myround(n As Double)
Dim m As Double
If n >= 0 Then
If (n - Int(n)) >= 0.5 Then
myround = (1 + Int(n))
Else
myround = Int(n)
End If
Else
m = -n
If (m - Int(m)) >= 0.5 Then
myround = -(1 + Int(m))
Else
myround = -Int(m)
End If
End If
End Function
@KnowledgePlus
تابع زیر توسط جناب آقای مهندس شهرام نوربخش راد برای گرد کردن اعداد در زبان BASIC پیشنهاد شده است:
Public Function myround(n As Double)
Dim m As Double
If n >= 0 Then
m = n + 0.5
myround = Int(m)
Else
m = -(n - 0.5)
myround = -Int(m)
End If
End Function
@KnowledgePlus
Public Function myround(n As Double)
Dim m As Double
If n >= 0 Then
m = n + 0.5
myround = Int(m)
Else
m = -(n - 0.5)
myround = -Int(m)
End If
End Function
@KnowledgePlus
خبری درباره هک کردن گوشی که در آن از avr و stm32 هم ذکری به میان آمده است:
www.mehrnews.com/news/4065188
@KnowledgePlus
www.mehrnews.com/news/4065188
@KnowledgePlus
برای توجه به ضررهای ناشی از عدم وجود قانون کپی رایت در کشور و سلب فرصت های شغلی در سطح داخلی و بین المللی به پاسخ این سوال فکر کنید که با وجود این همه دانشجو و فارغ التحصیل در رشته های نرم افزار و سخت افزار و الکترونیک و مانند آن، چرا برای نوشتن و فروش و حتی صادرات نرم افزارهای تخصصی با عملکردی شبیه به codevision یا bascom یا iar یا keil یا proteus یا altium designer یا photoshop یا autocad یا coreldraw و ده ها نرم افزار مشابه هیچ تلاشی انجام نمی شود و چرا کسانی که با نرم افزارهای تخصصی کار می کنند اکثرا اطلاعاتی سطحی دارند و افراد متخصص و حرفه ای به معنای واقعی در اینگونه نرم افزارها تا این حد انگشت شمار هستند.
@KnowledgePlus
@KnowledgePlus
آیا ممکن است با یک میکروکنترلر 8 بیتی مانند avr کنسول بازی ساخت؟ بله ممکن است:
belogic.com/uzebox/
@KnowledgePlus
belogic.com/uzebox/
@KnowledgePlus
uzebox.org
Uzebox - The ATMega Game Console
The Uzebox is a retro-minimalist open source game console based on Atmel's ATmega644 microcontroller. The design contains only two chips: an
ATmega644 and an AD725 RGB-to-NTSC converter.
ATmega644 and an AD725 RGB-to-NTSC converter.
نقل یک تجربه در طراحی:
چندین سال پیش در جریان طراحی مدارات دیجیتال و آنالوگ و میکروکنترلر یک لابراتوار آموزشی زبان، مشکلی مشاهده شد که در اینجا نقل می شود. در این لابراتوار زبان روش کار به این صورت بود که هر نفر یک هد ست شامل گوشی و میکروفن داشت و افرادی که در یک گروه بودند می توانستند با هم صحبت کنند و صدای هم را بشنوند. امکان پخش خروجی نوار کاست و سی دی و مانند آن هم در هر گروه وجود داشت. و اما مشکل ایجاد شده این بود که زمانی که یک نفر صحبت می کرد صدا عادی بود، اما وقتی چند نفر با هم صحبت می کردند به دلیل جمع شدن صدای آنها با هم وضعیت اشباع در سیستم به وجود می آمد و صدا خراب می شد. برای بر طرف کردن این مشکل با الهام گرفتن از یکی از مدارات موجود در سری کتاب های 30x مدار و استفاده از ترانزیستور و تقویت کننده های عملیاتی، مدار آنالوگی طراحی شد که از دامنه صدا فیدبک میگرفت و وقتی دامنه از یک حد بیشتر می شد گین تقویت کننده کاهش پیدا می کرد. بنابراین زمانی که چند نفر با هم صحبت می کردند و دامنه صدا از یک حد بیشتر می شد، مدار مذکور با کاهش گین دامنه را تعدیل می کرد و مانع از به اشباع رفتن خروجی می گردید. در نهایت این مدار به خوبی جواب داد و مشکل مذکور بر طرف گردید.
@KnowledgePlus
چندین سال پیش در جریان طراحی مدارات دیجیتال و آنالوگ و میکروکنترلر یک لابراتوار آموزشی زبان، مشکلی مشاهده شد که در اینجا نقل می شود. در این لابراتوار زبان روش کار به این صورت بود که هر نفر یک هد ست شامل گوشی و میکروفن داشت و افرادی که در یک گروه بودند می توانستند با هم صحبت کنند و صدای هم را بشنوند. امکان پخش خروجی نوار کاست و سی دی و مانند آن هم در هر گروه وجود داشت. و اما مشکل ایجاد شده این بود که زمانی که یک نفر صحبت می کرد صدا عادی بود، اما وقتی چند نفر با هم صحبت می کردند به دلیل جمع شدن صدای آنها با هم وضعیت اشباع در سیستم به وجود می آمد و صدا خراب می شد. برای بر طرف کردن این مشکل با الهام گرفتن از یکی از مدارات موجود در سری کتاب های 30x مدار و استفاده از ترانزیستور و تقویت کننده های عملیاتی، مدار آنالوگی طراحی شد که از دامنه صدا فیدبک میگرفت و وقتی دامنه از یک حد بیشتر می شد گین تقویت کننده کاهش پیدا می کرد. بنابراین زمانی که چند نفر با هم صحبت می کردند و دامنه صدا از یک حد بیشتر می شد، مدار مذکور با کاهش گین دامنه را تعدیل می کرد و مانع از به اشباع رفتن خروجی می گردید. در نهایت این مدار به خوبی جواب داد و مشکل مذکور بر طرف گردید.
@KnowledgePlus
از جمله اساسی ترین تصمیماتی که هر کس برای انتخاب شغل باید بگیرد دو مورد است:
1- می خواهد برای خود کار کند یا برای دیگری.
2- در چه رشته ای می خواهد فعالیت کند.
با فرض انتخاب الکترونیک به عنوان رشته مورد فعالیت، تصمیم برای کار کردن برای خود یا دیگران تاثیر اساسی در انتخاب سرفصل ها برای مطالعه و کسب تجربه دارد. حال اگر شما در زمره کسانی هستید که تصمیم دارید برای خودتان کار کنید، حوزه مطالعات و کسب تجربه شما بستگی به علاقه شما و موضوعی دارد که برای فعالیت خود انتخاب می کنید و نیازی نیست به دنبال مطالب غیر مرتبط بروید. اما اگر تصمیم دارید برای دیگران کار کنید، باید ببینید چه موضوعاتی مورد نیاز و پسند بازار کار و به اصطلاح در بورس است و روی همان ها متمرکز شوید تا امکان استخدام شما افزایش پیدا کند و در این حالت نیاز بازار کار است که تعیین کننده است.
@KnowledgePlus
1- می خواهد برای خود کار کند یا برای دیگری.
2- در چه رشته ای می خواهد فعالیت کند.
با فرض انتخاب الکترونیک به عنوان رشته مورد فعالیت، تصمیم برای کار کردن برای خود یا دیگران تاثیر اساسی در انتخاب سرفصل ها برای مطالعه و کسب تجربه دارد. حال اگر شما در زمره کسانی هستید که تصمیم دارید برای خودتان کار کنید، حوزه مطالعات و کسب تجربه شما بستگی به علاقه شما و موضوعی دارد که برای فعالیت خود انتخاب می کنید و نیازی نیست به دنبال مطالب غیر مرتبط بروید. اما اگر تصمیم دارید برای دیگران کار کنید، باید ببینید چه موضوعاتی مورد نیاز و پسند بازار کار و به اصطلاح در بورس است و روی همان ها متمرکز شوید تا امکان استخدام شما افزایش پیدا کند و در این حالت نیاز بازار کار است که تعیین کننده است.
@KnowledgePlus