Forwarded from KnowledgePlus.ir
با هم پیشرفت کنیم:
دانش و اطلاعات را می توان به خون تشبیه کرد که وقتی آن را اهدا می کنیم، خون تازه تر و سالم تری جای آن را می گیرد. یا به تعبیر دیگر می توان آن را به آب تشبیه کرد که در یک مرداب و باتلاق ساکن می گندد. اما در یک رودخانه جاری، آب دم به دم تازه می شود. تجربه سالها فعالیت و عمل به روش منتقل کردن تجربیات و اطلاعات به دیگران نشان می دهد که این باور که ما چیزهایی را که بلدیم فقط برای خود نگه داریم تا مبادا دیگران هم آن را یاد بگیرند و از ما جلوتر بروند و رقیب ما شوند، رویکرد چندان درستی نیست و اگر در یک نقطه متوقف نباشیم و از نظر فکری به اصطلاح بازنشسته نشده باشیم، هر چه اطلاعات و تجربیات خود را با دیگران به اشتراک بگذاریم، این خود عامل و انگیزه ای می شود تا اطلاعات خودمان را هم بیشتر افزایش دهیم و بیشتر پیشرفت کنیم. اگر بزرگ ترها و صاحب تجربه ها و کسانی که سرد و گرم کارها را چشیده اند، نسبت به جامعه احساس وظیفه کنند و در حد وسعی که دارند با انتقال تجربیات و دانسته ها دین خود را به جامعه ادا کنند، چنین جامعه ای بسیار سریع تر رشد خواهد کرد. در دنیای پر رقابت امروز بین ملت ها، جامعه ای که در آن هر کس مانند یک جزیره مستقل فقط به فکر خود و اطرافیانش باشد و نسبت به جامعه احساس وظیفه نکند، بعید است بتواند در قیاس با جوامعی که همه در راستای موفقیت کل اجتماع حرکت می کنند، حرفی برای گفتن داشته باشد و روز به روز بیشتر عقب خواهد افتاد.
@KnowledgePlus
دانش و اطلاعات را می توان به خون تشبیه کرد که وقتی آن را اهدا می کنیم، خون تازه تر و سالم تری جای آن را می گیرد. یا به تعبیر دیگر می توان آن را به آب تشبیه کرد که در یک مرداب و باتلاق ساکن می گندد. اما در یک رودخانه جاری، آب دم به دم تازه می شود. تجربه سالها فعالیت و عمل به روش منتقل کردن تجربیات و اطلاعات به دیگران نشان می دهد که این باور که ما چیزهایی را که بلدیم فقط برای خود نگه داریم تا مبادا دیگران هم آن را یاد بگیرند و از ما جلوتر بروند و رقیب ما شوند، رویکرد چندان درستی نیست و اگر در یک نقطه متوقف نباشیم و از نظر فکری به اصطلاح بازنشسته نشده باشیم، هر چه اطلاعات و تجربیات خود را با دیگران به اشتراک بگذاریم، این خود عامل و انگیزه ای می شود تا اطلاعات خودمان را هم بیشتر افزایش دهیم و بیشتر پیشرفت کنیم. اگر بزرگ ترها و صاحب تجربه ها و کسانی که سرد و گرم کارها را چشیده اند، نسبت به جامعه احساس وظیفه کنند و در حد وسعی که دارند با انتقال تجربیات و دانسته ها دین خود را به جامعه ادا کنند، چنین جامعه ای بسیار سریع تر رشد خواهد کرد. در دنیای پر رقابت امروز بین ملت ها، جامعه ای که در آن هر کس مانند یک جزیره مستقل فقط به فکر خود و اطرافیانش باشد و نسبت به جامعه احساس وظیفه نکند، بعید است بتواند در قیاس با جوامعی که همه در راستای موفقیت کل اجتماع حرکت می کنند، حرفی برای گفتن داشته باشد و روز به روز بیشتر عقب خواهد افتاد.
@KnowledgePlus
Media is too big
VIEW IN TELEGRAM
#قسمت_اول_آموزش_برنامه_نویسی_ویژه_میکروکنترلها_C
مدرس : میثم حاجی مزدارانی
#یکبار_برای_همیشه
✅برنامه نویسی اصولی میکروها را #رایگان آموزش ببینیم✅
سرفصل های جلسه اول :
۱- معرفی دوره
۲-آشنایی با سیستم های نهفته
۳-معرفی زبان C
۴-ویژگی ها و ساختار برنامه نویسی C
۵-تفاوت برنانه نویسی کامپیوتر و میکروکنترلها
۶-آشنایی مفهومی با رجیستر یا ثبات
۷-اجرای پروژه Hello world در C
۸-آشنایی با متغیر ها و ثابت ها
مدت زمان :
یک ساعت
کامپایلر مورد استفاده این جلسه :
#Codeblocks
سوالات و انتقادات و پیشنهادات:
@rsz_electronic
مدرس : میثم حاجی مزدارانی
#یکبار_برای_همیشه
✅برنامه نویسی اصولی میکروها را #رایگان آموزش ببینیم✅
سرفصل های جلسه اول :
۱- معرفی دوره
۲-آشنایی با سیستم های نهفته
۳-معرفی زبان C
۴-ویژگی ها و ساختار برنامه نویسی C
۵-تفاوت برنانه نویسی کامپیوتر و میکروکنترلها
۶-آشنایی مفهومی با رجیستر یا ثبات
۷-اجرای پروژه Hello world در C
۸-آشنایی با متغیر ها و ثابت ها
مدت زمان :
یک ساعت
کامپایلر مورد استفاده این جلسه :
#Codeblocks
سوالات و انتقادات و پیشنهادات:
@rsz_electronic
نمونه کد ماشین حالت در C:
typedef enum { STATE_INITIAL, STATE_FOO, STATE_BAR, NUM_STATES } state_t;
typedef struct instance_data instance_data_t;
typedef state_t state_func_t( instance_data_t *data );
state_t do_state_initial( instance_data_t *data );
state_t do_state_foo( instance_data_t *data );
state_t do_state_bar( instance_data_t *data );
state_func_t* const state_table[ NUM_STATES ] = {
do_state_initial, do_state_foo, do_state_bar
};
@rszelectronic
state_t run_state( state_t cur_state, instance_data_t *data ) {
return state_table[ cur_state ]( data );
};
int main( void ) {
state_t cur_state = STATE_INITIAL;
instance_data_t data;
while ( 1 ) {
cur_state = run_state( cur_state, &data );
}
}
@rszelectronic
typedef enum { STATE_INITIAL, STATE_FOO, STATE_BAR, NUM_STATES } state_t;
typedef struct instance_data instance_data_t;
typedef state_t state_func_t( instance_data_t *data );
state_t do_state_initial( instance_data_t *data );
state_t do_state_foo( instance_data_t *data );
state_t do_state_bar( instance_data_t *data );
state_func_t* const state_table[ NUM_STATES ] = {
do_state_initial, do_state_foo, do_state_bar
};
@rszelectronic
state_t run_state( state_t cur_state, instance_data_t *data ) {
return state_table[ cur_state ]( data );
};
int main( void ) {
state_t cur_state = STATE_INITIAL;
instance_data_t data;
while ( 1 ) {
cur_state = run_state( cur_state, &data );
}
}
@rszelectronic
چک سام (Checksum) چیست ؟
این اصطلاح از ترکیب دو واژه "Check" به معنی مقایسه و تطبیق و "Sum" به معنی مقدار ایجاد شده است .
چک سام عموما قسمتی از یک فایل است که وظیفه آن حفاظت از کل فایل در برابر تغییرات میباشد . این قسمت از فایل شامل بایت یا بایتهایی (تیبلی) است که وظیفه آن نگهداری مقدار چک سام کل فایل منهای خود همین بایتها و ( Ignore Bytes ) میباشد . به زبان ساده تر میتوان گفت که اگر چک سام کل یا یک قسمت از فایلی را بر اساس الگوریتمی خاص محاسبه کرده و خروجی آن را در محلی از یک فایل و در لابلای بایتها یا پکتها قرار دهیم ، چک سامی برای فایل تعریف کرده ایم که در این فایل ،اگر تنها مقدار چک سام قسمتی از فایل را محاسبه کرده باشیم ، به قسمت محاسبه نشده این فایل اصطلاحا ( Ignore Bytes ) گقته میشود . یعنی این قسمت در محاسبه چک سام منظور نشده است و از آن چشم پوشی کرده ایم . پس در محاسبه بعدی چک سام هم بایستی از آن چشم پوشی کنیم .
مثال کاملا واضح :
در بعضی از امیولیتور محل قرار گیری چک سام در بایتهای ابتدایی 10 و 11 فایل قرار دارند . اگر هر آفست را بر مبنای هگزادسیمال (16) در نظر بگیریم ، این چک سام در آفست اول و در بایتهای 10 و 11 اميوليتور قرار گرفته است . پس از تغییرات در پیکر فایل ، نوبت به محاسبه چک سام میرسد . ما در امولیتورسامسونگ با چک سام از نوع الگوریتم Chechsum16 بیتی روبرو استیم .
نکته : هر 1 بایت (Byte) برابر با 8 بیت (Bit) دیتا میشود .
پس چک سام 16 بیتی ما برابر با دوبایت میشود ! که گفتیم مکان قرار گیری آن در آفست نخست و در بایتهای 10 و 11 قرار دارد .
ولی در بعضی از امیولیتور با بایتهای خنثی ( Ignore Bytes ) هم روبرو هستیم و میدانید که در الگوریتم محاسبه چک سام ، از بایتهای نامبرده باید چشم پوشی کرد . محل این بایتهای ایگنور در امیولیتور سامسونگ همان آفست نخست میباشد . یعنی آفست نخست این امیولیتور که 16 بایت فرض میشود شامل دو بایت چک سام و 14 بایت خنثی (Ignore Bytes) است . پس برای محاسبه چک سام این فایل بایستی آفست نخست را اصلا محاسبه نکنیم . به گویش ساده تر ما از آفست دوم یا بایت 17 تا آفست آخر فایل را بر اساس الگوریتم Chechsum16 بیتی محاسبه و مقدار بدست آمده را در بایت 10 و 11 آفست نخست (محل قرار گیری مقدار چک سام) مینویسیم ... همین !
برخی از الگوریتمهای چک سام :
برخی از الگوریتمهای سادهء چک سام ، الگوریتم 8 - 16 - 32 - 64 بیتی و CRC32 - CRC16 بیتی و ... میباشند .
دقت کنید که بین الگوریتم چک سام و الگوریتم CRC تفاوتهایی هم هست که بعدها براتان توضیح خواهم داد .
چک سام بر اساس هر الگوریتمی که باشد تعداد بیتهای (Bit) آن تقسیم بر 8 برابر با تعداد بایت (Byte) میشود .
مثلا اگر چک سام بر اساس الگوریتم Checksum8 بیتی باشد مقدار چک سام ما 1 بایت است .
اگر چک سام بر اساس الگوریتم Checksum16 باشد مقدار چک سام ما 2 بایت است .
و اگر چک سام بر اساس الگوریتم Checksum32 باشد مقدار چک سام ما 4 بایت است ... الی آخر ...
توضیحات بیشتر :
بطور کلی هر بیت از فایل دارای چک سام خود است که بر اساس الگوریتمی استاندارد و مطلق محاسبه میشود .از سوي دگر اگر در یک فایل چک سام ما بر اساس الگوریتم CRC16 بیتی باشد ، از آنجاییکه هر 8 بیت برابر با یک بایت میشود پس چک سام ما دو بایت از فایل را شامل میشود . حال جای قرار گیری آن در فایلکجاست ؟ این یکی از پرسشهای سخت است که لازمه درک آن ، محاسبات پیچیده ریاضیات و مهندسی معکوس میباشد و یا دسترسی به سورس (Source) آن برنامه میباشد .
الگوریتم ها برای محاسبه چک سام بر اساس محاسبات ریاضی و بصورت استاندارد و در دسترس میباشند .
دانستنیهای لازم برای محاسبه چک سام :
برای محاسبه چک سام یک فایل ، نخست باید بدانیم که چک سام ما بر اساس چه الگوریتمی محاسبه شده است .
سپس بایستی مکان قرار گیری چک سام را شناسایی کنیم .
... و در آخر هم باید بدانیم که آیا با " Ignore Bytes " هم طرف هستیم یا نه و اگر بله مکان آن کجاست ؟؟؟
اکنون در زمان تغییرات معقول یک فایل میتوانیم به سادگی چک سام تازه آنرا هم محاسبه و جایگزین کنیم .
گاهی وقتها هم در ویرایش یک فایل برای تعدیل مقدار چک سام ، بایتهایی به انتهای فایل اضافه میکنند که البته در این راه هم به دانستن الگوریتم چک سام در آن فایل و هم به اطلاعات پیش زمینه دیگری نیاز داریم . اين موضوع فعلا مورد بحث ما نيست ...
------------------------------------
مثالی بسیار مهم و قابل توجه برای دوستان گرامی
برای مثال در یک امیولیتور بایتهایی که مقدار (Value) چک سام در آن نگهداری میشود بایت 7 و 8 از آفست نخست امیولیتور میباشد . در این امیولیتور ما با الگوریتم Checksum16 روبرو هستیم .
@Rszelectronic
این اصطلاح از ترکیب دو واژه "Check" به معنی مقایسه و تطبیق و "Sum" به معنی مقدار ایجاد شده است .
چک سام عموما قسمتی از یک فایل است که وظیفه آن حفاظت از کل فایل در برابر تغییرات میباشد . این قسمت از فایل شامل بایت یا بایتهایی (تیبلی) است که وظیفه آن نگهداری مقدار چک سام کل فایل منهای خود همین بایتها و ( Ignore Bytes ) میباشد . به زبان ساده تر میتوان گفت که اگر چک سام کل یا یک قسمت از فایلی را بر اساس الگوریتمی خاص محاسبه کرده و خروجی آن را در محلی از یک فایل و در لابلای بایتها یا پکتها قرار دهیم ، چک سامی برای فایل تعریف کرده ایم که در این فایل ،اگر تنها مقدار چک سام قسمتی از فایل را محاسبه کرده باشیم ، به قسمت محاسبه نشده این فایل اصطلاحا ( Ignore Bytes ) گقته میشود . یعنی این قسمت در محاسبه چک سام منظور نشده است و از آن چشم پوشی کرده ایم . پس در محاسبه بعدی چک سام هم بایستی از آن چشم پوشی کنیم .
مثال کاملا واضح :
در بعضی از امیولیتور محل قرار گیری چک سام در بایتهای ابتدایی 10 و 11 فایل قرار دارند . اگر هر آفست را بر مبنای هگزادسیمال (16) در نظر بگیریم ، این چک سام در آفست اول و در بایتهای 10 و 11 اميوليتور قرار گرفته است . پس از تغییرات در پیکر فایل ، نوبت به محاسبه چک سام میرسد . ما در امولیتورسامسونگ با چک سام از نوع الگوریتم Chechsum16 بیتی روبرو استیم .
نکته : هر 1 بایت (Byte) برابر با 8 بیت (Bit) دیتا میشود .
پس چک سام 16 بیتی ما برابر با دوبایت میشود ! که گفتیم مکان قرار گیری آن در آفست نخست و در بایتهای 10 و 11 قرار دارد .
ولی در بعضی از امیولیتور با بایتهای خنثی ( Ignore Bytes ) هم روبرو هستیم و میدانید که در الگوریتم محاسبه چک سام ، از بایتهای نامبرده باید چشم پوشی کرد . محل این بایتهای ایگنور در امیولیتور سامسونگ همان آفست نخست میباشد . یعنی آفست نخست این امیولیتور که 16 بایت فرض میشود شامل دو بایت چک سام و 14 بایت خنثی (Ignore Bytes) است . پس برای محاسبه چک سام این فایل بایستی آفست نخست را اصلا محاسبه نکنیم . به گویش ساده تر ما از آفست دوم یا بایت 17 تا آفست آخر فایل را بر اساس الگوریتم Chechsum16 بیتی محاسبه و مقدار بدست آمده را در بایت 10 و 11 آفست نخست (محل قرار گیری مقدار چک سام) مینویسیم ... همین !
برخی از الگوریتمهای چک سام :
برخی از الگوریتمهای سادهء چک سام ، الگوریتم 8 - 16 - 32 - 64 بیتی و CRC32 - CRC16 بیتی و ... میباشند .
دقت کنید که بین الگوریتم چک سام و الگوریتم CRC تفاوتهایی هم هست که بعدها براتان توضیح خواهم داد .
چک سام بر اساس هر الگوریتمی که باشد تعداد بیتهای (Bit) آن تقسیم بر 8 برابر با تعداد بایت (Byte) میشود .
مثلا اگر چک سام بر اساس الگوریتم Checksum8 بیتی باشد مقدار چک سام ما 1 بایت است .
اگر چک سام بر اساس الگوریتم Checksum16 باشد مقدار چک سام ما 2 بایت است .
و اگر چک سام بر اساس الگوریتم Checksum32 باشد مقدار چک سام ما 4 بایت است ... الی آخر ...
توضیحات بیشتر :
بطور کلی هر بیت از فایل دارای چک سام خود است که بر اساس الگوریتمی استاندارد و مطلق محاسبه میشود .از سوي دگر اگر در یک فایل چک سام ما بر اساس الگوریتم CRC16 بیتی باشد ، از آنجاییکه هر 8 بیت برابر با یک بایت میشود پس چک سام ما دو بایت از فایل را شامل میشود . حال جای قرار گیری آن در فایلکجاست ؟ این یکی از پرسشهای سخت است که لازمه درک آن ، محاسبات پیچیده ریاضیات و مهندسی معکوس میباشد و یا دسترسی به سورس (Source) آن برنامه میباشد .
الگوریتم ها برای محاسبه چک سام بر اساس محاسبات ریاضی و بصورت استاندارد و در دسترس میباشند .
دانستنیهای لازم برای محاسبه چک سام :
برای محاسبه چک سام یک فایل ، نخست باید بدانیم که چک سام ما بر اساس چه الگوریتمی محاسبه شده است .
سپس بایستی مکان قرار گیری چک سام را شناسایی کنیم .
... و در آخر هم باید بدانیم که آیا با " Ignore Bytes " هم طرف هستیم یا نه و اگر بله مکان آن کجاست ؟؟؟
اکنون در زمان تغییرات معقول یک فایل میتوانیم به سادگی چک سام تازه آنرا هم محاسبه و جایگزین کنیم .
گاهی وقتها هم در ویرایش یک فایل برای تعدیل مقدار چک سام ، بایتهایی به انتهای فایل اضافه میکنند که البته در این راه هم به دانستن الگوریتم چک سام در آن فایل و هم به اطلاعات پیش زمینه دیگری نیاز داریم . اين موضوع فعلا مورد بحث ما نيست ...
------------------------------------
مثالی بسیار مهم و قابل توجه برای دوستان گرامی
برای مثال در یک امیولیتور بایتهایی که مقدار (Value) چک سام در آن نگهداری میشود بایت 7 و 8 از آفست نخست امیولیتور میباشد . در این امیولیتور ما با الگوریتم Checksum16 روبرو هستیم .
@Rszelectronic
avr board.rar
2.2 MB
#Opensource
#Hardware
#برد_توسعه_میکروکنترلر_AVR
پردازنده : Atmeg32
مجهز به مبدل usb ttl
و بدون نیاز به پراگرامر
خروجی کلیه I.O ها
سون سگمنت ۲ رقمی
LCD 16X2 کاراکتری
دارای خروجی GLCD
دارای هدربرد ((مانند برد برد )) جهت استفاده مستقیم برروی برد
حافظه ایپرام At24Lc512
مجهز به ماژول Sim800L
دارای شیفت رجیستر 74hc595 و باراگراف
@rszelectronic
#Hardware
#برد_توسعه_میکروکنترلر_AVR
پردازنده : Atmeg32
مجهز به مبدل usb ttl
و بدون نیاز به پراگرامر
خروجی کلیه I.O ها
سون سگمنت ۲ رقمی
LCD 16X2 کاراکتری
دارای خروجی GLCD
دارای هدربرد ((مانند برد برد )) جهت استفاده مستقیم برروی برد
حافظه ایپرام At24Lc512
مجهز به ماژول Sim800L
دارای شیفت رجیستر 74hc595 و باراگراف
@rszelectronic
Lem_Elec | لِم الکترونیک
#RaspberryPi #Pin_Header فایل آلتیوم پین هدر رزبری پای جهت طراحی و ساخت انواع HAT برای #Soc های رزبری پای @rszelectronic
#Raspberry_Pi
#Hat
#RTC
#Rs485
هت ساخته شده توسط طرح فوق
امکانات هت
پیاده سازی مدار Rs485
پیاده سازی تغدیه مورد نیاز Rpi
پیاده سازی مدار RTC
جهت حذف سیم کشی در پروژه مورد نیاز رزبری پای
@rszelectronic
#Hat
#RTC
#Rs485
هت ساخته شده توسط طرح فوق
امکانات هت
پیاده سازی مدار Rs485
پیاده سازی تغدیه مورد نیاز Rpi
پیاده سازی مدار RTC
جهت حذف سیم کشی در پروژه مورد نیاز رزبری پای
@rszelectronic
#جلسه_دوم_C_ویژه_میکروکنترلرها
لینک در اپارات
https://www.aparat.com/v/nxXpH
✅موارد مورد بحث :
_توابع در C و اجرای مثال
_ساختار شرطی در C و اجرای مثال
_ساختار حلقه در C و اجرای مثال
_آشنایی با عملگرهای بیتی و مقدار دهی رجیستر
_آشنایی با ماشین حالت State Machine
ورود به اتمل استدیو
معرفی رجیستر I.O و اجرای یک پروژه فلاشر تابلو ال ای دی به همراه توضیح طراحی سخت افزار
🖊انتظار از دانشپذیران :
اجرای یک پروژه کامل فلاشر تابلو LED توسط آموخته های این دوره .
مدرس مهندس میثم حاجی مزدارانی
مدت زمان : ۱ ساعت ۱۵ دقیقه
در صورت داشتن هرگونه ابهام و سوال به pv بنده و یاگروه مراجعه نمایید.
🆔 @rszelectronic
لینک در اپارات
https://www.aparat.com/v/nxXpH
✅موارد مورد بحث :
_توابع در C و اجرای مثال
_ساختار شرطی در C و اجرای مثال
_ساختار حلقه در C و اجرای مثال
_آشنایی با عملگرهای بیتی و مقدار دهی رجیستر
_آشنایی با ماشین حالت State Machine
ورود به اتمل استدیو
معرفی رجیستر I.O و اجرای یک پروژه فلاشر تابلو ال ای دی به همراه توضیح طراحی سخت افزار
🖊انتظار از دانشپذیران :
اجرای یک پروژه کامل فلاشر تابلو LED توسط آموخته های این دوره .
مدرس مهندس میثم حاجی مزدارانی
مدت زمان : ۱ ساعت ۱۵ دقیقه
در صورت داشتن هرگونه ابهام و سوال به pv بنده و یاگروه مراجعه نمایید.
🆔 @rszelectronic
آپارات - سرویس اشتراک ویدیو
آموزش زبان c ویژه میکرو کنترلر جلسه دوم
✅موارد مورد بحث :
_توابع در C و اجرای مثال
_ساختار شرطی در C و اجرای مثال
_ساختار حلقه در C و اجرای مثال
_آشنایی با عملگرهای بیتی و مقدار دهی رجیستر
_آشنایی با ماشین حالت State Machine
ورود به اتمل استدیو
معرفی رجیستر I.O و اجرای یک پروژه فلاشر تابلو…
_توابع در C و اجرای مثال
_ساختار شرطی در C و اجرای مثال
_ساختار حلقه در C و اجرای مثال
_آشنایی با عملگرهای بیتی و مقدار دهی رجیستر
_آشنایی با ماشین حالت State Machine
ورود به اتمل استدیو
معرفی رجیستر I.O و اجرای یک پروژه فلاشر تابلو…