امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
serial interrupt_codevision
نویسنده پیام
mohandes_mybb1.2_import12665 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 25
موضوع‌ها: 3
تاریخ عضویت: خرداد ۱۳۸۵

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #1
serial interrupt_codevision
سلام
ما یه مدت که زدیم تو codevision انگار خیلی از bascome بهتره و قویتره.
حالا یه مشکل دارم . چطور می تونم با codevision ارتباط سریال رو با interrupt بنویسم.

میشه یه مثال بهم معرفی کنید که کامل باشه!؟ درواقه چیزی از رجیسترهایی که باید تنظیم شه و رسمالخط نوشتن تابع interrupt نمیدونم

ممنون
۲۰-آبان-۱۳۸۵, ۱۴:۴۰:۵۱
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #2
 
بابا کاری نداره که یه ویزارد داره با اون اگه بنویسی سه سوت حل می شه یعنی با چند تا کلیک می تونی انتخاب کنی که با interrupt برای سریال کد هاشو برات می نویسه از همون جا هم می تونی نحوه نوشتن اینتراپت رو هم ببینی

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۲۰-آبان-۱۳۸۵, ۲۳:۵۹:۱۲
وب سایت ارسال‌ها
پاسخ
mohandes_mybb1.2_import12665 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 25
موضوع‌ها: 3
تاریخ عضویت: خرداد ۱۳۸۵

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #3
 
هادی جان خورت یه امتحان بکن wizardوقتی میخواد interrupt رو ساپورت کنه گنگ و پیچیده ماشه
اصلا محل تابع interrupt معلوم نیست
یه چک کن و نظرتو بگو

ممنون
۲۱-آبان-۱۳۸۵, ۰۷:۲۵:۱۶
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #4
 
کد:
interrupt [USART_TXC] void usart_tx_isr(void)
{
if (tx_counter)
   {
   --tx_counter;
   UDR=tx_buffer[tx_rd_index];
   if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
   };
}
این اینتراپت ارسال برای مثال
اول می بینی آیا چیزی توی بافر هست یا نه اگه هست یکی از تعدادش کم می کنه و یکی از بافر می خونه می ریزه تو UDR بعد محل داده ها رو یکی افزایش می ده تا به داده بعدی اشاره کنه و اگه از آخر زد بیرون مییاد به اول اشاره می کنه این یه جور بافر که مثل دایره می مونه فرض کن 8 تا جای خالی داره که مثلا 7 تا داده داری توی اولی تا هفتمی می ریزی بعد از اول شروع می کنی 3 تا رو خوندن حالا اگه 2 تا دیگه به خوای بریزی یکی رو تو هشتمی و بعدی رو که باید تو نهمی بریزی که نداری می ریزی تو اولی مثل این می مونه که آخرش به اول وصل چون اولی رو هم قبلا خوندی پس مهم نیست می شه پاکش کرد البته باید چک کنی که رو هم ننویسی یعنی جایی رو که نخوندی روش چیزی ننویسی
البته اگه نفهمیدی مهم نیست هر جور دوست داری بنویس یا از همون getchar و putchar که خودش نوشته استفاده کن

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۲۲-آبان-۱۳۸۵, ۰۰:۳۴:۴۴
وب سایت ارسال‌ها
پاسخ
mohandes_mybb1.2_import12665 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 25
موضوع‌ها: 3
تاریخ عضویت: خرداد ۱۳۸۵

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #5
 
هادی جان به خدا هرکاری می کنم نمیشه
خودت تاحالا واسه usart از interrupt استفاده کردی؟
راهنماییت کمکی بهم نکرد
میشه یه مثال ساده اما کامل در ارسال با وقفه برام بزنی
ممنون
۲۲-آبان-۱۳۸۵, ۱۹:۱۷:۳۰
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #6
 
من استفاده کردم با همین تابع ها هم کار کردم
این اینتراپت ها اولا 2 تا هستند یکی برای ارسال یکی برای دریافت
یکی شون دریافت داده رو بهت اعلام می کنه یعنی می گه داده آماده دریافت اون چیزی که می بینی نوشته این رو می گیره می زاره توی یه متغیر که بعدا در یافت کنی چون یه بایت بیشتر نیست و معمولا یه بایت به درد نمی خوره باید همه دریافت بشن
و اون یکی ارسال رو بهت اطلاع می ده که باید داده ها رو توی یه متغیر بزاری و وقتی ارسال یک بایت تموم شد بایت بعدی رو بخونی و ارسال کنی باید تعدادشون هم بدونی تا وقتی تموم شد الکی نفرستی این تابع دوم هم این کارو می کنه (همین که مثال زدم)
می گم که کاریت نباشه هرچی خواستی بفرستی با putchar و هر چی خواستی بگیری با getchar بگیر تو اول کار هم بگو با اینتراپت کار کنه خودش درست می شه :wink:

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۲۲-آبان-۱۳۸۵, ۲۲:۳۴:۵۵
وب سایت ارسال‌ها
پاسخ
mohandes_mybb1.2_import12665 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 25
موضوع‌ها: 3
تاریخ عضویت: خرداد ۱۳۸۵

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #7
 
ممنون هادی جان .درست شد . تا اینجا که مشکلم حل شد

قربونت
۲۵-آبان-۱۳۸۵, ۱۱:۰۲:۲۱
ارسال‌ها
پاسخ
mahdi20 آفلاین
کاربر با تجربه
****

ارسال‌ها: 518
موضوع‌ها: 35
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 5261
( 1763 تشکر در 452 ارسال )
ارسال: #8
RE: serial interrupt_codevision
سلام

اگر بخواهیم که دوتا میکرو که با هم ارتباط سریال دارن ، هر دوتاشون هم فرستنده باشن و هم گیرنده، توی برنامه نویسیش نکته ی خواصی را می خواد رعایت کرد؟؟؟؟

منظورم اینه که delay می خواد ؟؟؟ اینتراپت می خواد؟؟؟؟ چیزی لازم داره؟؟؟؟؟ یا همینطوری پشت سر هم توابع ارسال و دریافت ها را مینویسیم؟؟؟؟

[تصویر:  iran2.png]
(آخرین ویرایش در این ارسال: ۱۵-آبان-۱۳۸۹, ۱۸:۳۶:۳۷، توسط mahdi20.)
۱۵-آبان-۱۳۸۹, ۱۸:۳۶:۰۸
وب سایت ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #9
RE: serial interrupt_codevision
شما تست کن !

کار کنی می فهمی چی می خواد و چی نمی خواد !!!
۱۵-آبان-۱۳۸۹, ۲۱:۳۴:۵۱
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi20
mahdi20 آفلاین
کاربر با تجربه
****

ارسال‌ها: 518
موضوع‌ها: 35
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 5261
( 1763 تشکر در 452 ارسال )
ارسال: #10
RE: serial interrupt_codevision
دو روزه دارم بهش ور میرم و نمیفهمم که چه جوریه!!!!!!!!!!AngryAngryAngry

از اینتراپت استفاده میکنم.

واسه آیسی 2 مینویسم وقتی که rx_counter یک میشه اطلاعات را از پورت سریال دریافت کن.

دریافت میکنه. و دستورات مربوط بهش را انجام میده

ولی وقتی میخوام همین اطلاعات یا هر اطلاعاتی دیگه را واسه میکرو فرستنده (آیسی شماره 1) بفرستم ، هیچ اطلاعاتی نمیفرسته!!!!!ExclamationExclamationExclamation

انگار توی حلقه ی دریافت گیر میکنه!!!!! فقط دریافت میکنه!!!!! یعنی هر اطلاعاتی توسط آیسی 1 براش بفرستم، دریافت میکنه ولی از ارسال خبری نیست.

در ضمن همون آیسی شماره 1 هم انگار توی حلقه ارسال گیر میکنه و از دریافت خبری نیست!!!!!

من با کدویژن کار میکنم ، ولی توی رجیسترها فکر نمیکنم فرقی داشته باشه با بیسکام.

اگه میشه گین مشکل من از کجاست؟؟؟؟ یه جا دارم سوتی میدم ولی خودم متوجه نیستم!!!!!

اینم برنامه هر دوتاش


.rar   usart.rar (اندازه: 83.91 KB / تعداد دفعات دریافت: 52)


این واسه کسایی که کدویژن ندارن



برنامه آیسی 1


کد:
while (1){
   PORTC.1=1;
     PORTC.0=1;
     delay_ms(300);
     a=PINA;
     putchar(a);
     PORTC.0=0;
     delay_ms(300);
     if (rx_counter>0){
     b=getchar();
     PORTB=b;
     PORTC.1=0;
     delay_ms(300);

}
    
      };


برنامه آیسی دوم


کد:
while (1)
      {
      PORTC.0=1;
       delay_ms(300);
      if (rx_counter>0){
     b=getchar();
     PORTB=b;
     PORTC.0=0;
     delay_ms(300);

     putchar(b);
      }
    
      };


[تصویر:  iran2.png]
۱۶-آبان-۱۳۸۹, ۱۸:۰۰:۰۶
وب سایت ارسال‌ها
پاسخ
mahdi20 آفلاین
کاربر با تجربه
****

ارسال‌ها: 518
موضوع‌ها: 35
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 5261
( 1763 تشکر در 452 ارسال )
ارسال: #11
RE: serial interrupt_codevision
آقا من سوتیم را گرفتم. بعدا میام مفصل توضیح میدم که کسی دیگه این سوتی را نده!!!!!

[تصویر:  iran2.png]
۱۷-آبان-۱۳۸۹, ۱۰:۲۶:۲۰
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Question مشکل با ماژول usb به serial hamedspartacus 2 3,077 ۱۰-تير-۱۳۹۳, ۱۱:۴۰:۴۸
آخرین ارسال: hamedspartacus
  USB TO SERIAL alirezahedaiaty 6 4,662 ۳۰-بهمن-۱۳۹۲, ۲۱:۵۷:۳۱
آخرین ارسال: alirezahedaiaty
  usb to serial with f232bl salehjg 8 7,469 ۲۵-فروردین-۱۳۸۹, ۲۲:۲۱:۳۶
آخرین ارسال: salehjg
Exclamation Bascom AVR Serial Port aliroosta 4 8,674 ۰۱-اسفند-۱۳۸۸, ۱۰:۵۶:۴۹
آخرین ارسال: aliroosta
  يك نكته در مورد avr & serial port MOJTABA AR 2 3,627 ۲۱-بهمن-۱۳۸۸, ۱۸:۴۴:۲۱
آخرین ارسال: t3r!p3000
  Serial Port Blossom 19 8,107 ۲۵-آذر-۱۳۸۸, ۰۱:۴۶:۳۶
آخرین ارسال: t3r!p3000
  Serial - ADC 25 2,746 ۱۳-مرداد-۱۳۸۶, ۱۰:۴۹:۱۰
آخرین ارسال: Guest
  Serial - ADC vahid_ve_mybb1.2_import12823 50 16,530 ۱۳-مرداد-۱۳۸۶, ۱۰:۴۹:۱۰
آخرین ارسال: ha_60
  serial interrupt_codevision 6 1,197 ۲۵-آبان-۱۳۸۵, ۱۱:۰۲:۲۱
آخرین ارسال: Guest
  Serial Port 8 1,696 ۲۸-شهریور-۱۳۸۵, ۰۰:۱۷:۲۰
آخرین ارسال: Guest

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS