مگه تیکش خورده نشده بود!؟
این نبود در فیلم ها!؟
در پروژه ام تمام تیک های generate IRQ handler در تب code generate زده شده و یادم نمیاد من این تیک ها را زده باشم.
مگه تیکش خورده نشده بود!؟
این نبود در فیلم ها!؟
در پروژه ام تمام تیک های generate IRQ handler در تب code generate زده شده و یادم نمیاد من این تیک ها را زده باشم.
ویرایش توسط mzarkoob : 13-02-2018 در ساعت 01:38
سلام مهندس
ببخشید دیر جواب میدم خیلی گرفتارم ..همش توی ازمایشگاه VLSI هستم ...
(بگو آخه نونت نبود ! آبت نبود ! ارشد گرفتنت برا چی بود ؟!! )
خیر مهندس... توی این فیلم آموزشی وقفه سریال شما سربرگ Code generate رو نشون نمیدی ..
راستی یه سوال دیگه :
فرض کنید که ۲ کلید به ۲تا از وقفه های خارجی متصل شده اند که با کلید اول عبارت ۱ و با کلید دوم عبارت ۲ روی پورت سریال قرار می گیرد . حال چگونه باید برای هر وقفه یک زیر روال جداگانه تعریف کرد؟؟
آیا باید در زیر روال CallBack یک برنامه برای تشخیص هر کلید نوشته شود ؟؟
چطوری زیرروال های وقفه ها رو جدا کنم ؟؟
این خیلی برام مهمه..
ممنون
کلید 1 و کلید 2 به کدام پای ها وصل است؟
اگر زیروال وقفه چند پایه یکی باشد فکر می کنید باید چه کنید؟
عرض کردم بهکدام پایه های میکرو وصل است؟ قائدتا هر کدوم به یه پایه از پایه های وصل است در هوا که نیست!
زیروال وقفه ۵ تا ۹ و ۱۰ تا ۱۵ مشترک هستند.
هر دو وارد یک زیروال می شود.
در فیلم مقدماتی متوسط stm32 نیز در مبحث رجیستری این موضوع ذکر شده که از فلاگ وقفه برای تشخیص اینکه کدام پایه زده شده می توان به سادگی استفاده کرد.
در سریال نیازی به پاک کردن فلاگ دریافت وقفه نیست.
مگر چه شده که احساس نیاز کردید فلگ وقفه سریال را باید پاک کنید!؟
در فیلم 4-3- دریافت یک کاراکتر از پورت سریال با استفاده از وقفه در توابع HAL
برای یک کاراکتر این کار انجام شده و مشاهده می کنید که خارج می شود!
ولی شما اینجا در زیروال وقفه می خواهید سه بایت دریافت کنید! چرا بایت بایت نمیگیرید و در یک آرایه قرار دهید؟
این کار نیز در فیلم مقدماتی متوسط stm32 در شرح رجیستری انجام شده است.
سلام
چون تا الان کسی نگفته بود! اعلام نیاز نشده بود
آقا مهدی کاش میرسیدید
رو اترنت ام کار میکردیم
پایه تونم شدید
بازم بابته فیلم ها ممنون
خیلی عالیه
آقا مهدی سلام خسته نباشید
یه سوال درباره rtcداشتم
شما تا حالا از باتری backupاستفاده کردین تو rtc
الان با همین برنامه ای که از rtcگذاشتین بنده باتری هم گذاشتم
وقتی برق برد رو قطع و وصل میکنم
زمان از بین نمیره
ولی تاریخ صفر میشه
شما تا حالا اینکارو نکردین ؟میتونید کمکم کنید
دیتا شیت همون قسمت rtc رو خوندم یه نکته ای در این رابطه گفته
ولی نمیدونم دقیقا چه جوری با توابع halاین کاررو بکنم و بیت های مربوطه رو ست کنم
After reset, access to the Backup registers and RTC is disabled and the Backup domain
(BKP) is protected against possible parasitic write access. To enable access to the Backup
registers and the RTC, proceed as follows:
enable the power and backup interface clocks by setting the PWREN and BKPEN bits
.in the RCC_APB1ENR register
set the DBP bit the Power Control Register (PWR_CR) to enable access to the Backup
.registers and RTC
آقا مهدی تو دیتا شیت گفته تو بیت از دوتا رجیستر مربوط به RCCوPWRباید یک بشن
ولی initکردنه مربوط به این قسمت ها و ست کردنه اون دوتا بیت و نمیدونم چه کنم
یه کارایی کردم ولی جواب نگرفتم
آقا مهدی این دوتا بیت تو تابع
(void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle
به کمکه تو تابع زیر فعال میشن
;()HAL_PWR_EnableBkUpAccess
/* Enable BKP CLK enable for backup registers */
;()HAL_RCC_BKP_CLK_ENABLE__
که این تابع تو فایل rtc.cموجوده
مشکل اینجاست که موقع روشن و خاموش کردنه برد فقط زمان داخل خودش حفظ میکنه و تاریخ رو صفر میکنه
باید بشه تاریخ رو هم تو رجیسترهای backupذخیره کرد
ولی نمیدونم چه جوری؟
یه برد ازstm32f746دارم همین کانفیگ و برای اون انجام دادم
ولی اون درسته برق و که قطع و وصل میکنم نه زمان میپره و نه تاریخ
نمیدونم چرا برا f103داره اینجوری میشه
آقا مهدی شاید من دارم اشتباه میکنم
شاید رجیسترهای backupقسمت rtcفقط زمان و تو خودشون نگه میدارن
و تاریخ رو خودمون باید ذخیره کنیم مثلا تو یه eepromو وقتی دوباره برق آمد بری از تو حافظه بخونی و تاریخ رو نمایش بدی
خوب اگه از رفتن برق چند روز گذشته باشه نمیشه فهمید چند روز گذشته که بخوایم به مقدار قبلی تاریخ اضافه کنیم
شاید دارم اشتباه میکنم نمیدونم
این شرط تو تابع ;()rtc_initکارش چیه؟
(if(HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR1) != 0x32F2
این عدد 0x32f2ازکجا میاد دقیقا یعنی چی مجددا آخره همین تابع دستور زیر اعمال میشه
;(HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR1,0x32F2
اول از رجیستر backupمیخونه با یه عدد که نمیدونم چیه مقایسه میکنه(0x32f2)دوباره همون عدد رو تو رجیستر backupمیریزه