قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

اشرف يوسف
:: مهندس ::
تاريخ التسجيل: Sep 2009
الدولة: مصر
المشاركات: 7
نشاط [ اشرف يوسف ]
قوة السمعة:0
قديم 30-04-2011, 01:45 PM المشاركة 1   
Angry ارجوا المساعدة فى توصيل الميكرو avr بالكمبيوتر Twitter FaceBook Google+



السلام عليكم و رحمة الله و بركاتة

اخوانى الاعزاء ارجوا منكم المساغدة فى تنفيذ دائرة الاتصال التسلسلى (serial communication) بالكمبيوتر من خلال ميكرو avr atmega16 .



لقد قمت بتنفيذ هذة الدائرة عمليا


http://img577.imageshack.us/i/img0.png/

و عملت برنامج للميكرو من المفروض انه لو بعتله string فيه رقم "1" بس يخلي أول ليد فى بروت A تنور (PORTA = 0x01)
و لو اى رقم او حرف تانى (غير "1") يخلى كل الليدات تنور (PORTA = 0xFF)
المشكلة انه سواء بعتله "1" او اى حاجة تانية بيخلى البورت A كله ينور
انا جربت الhyperterminal علشان ابعتله الstring مش نافع و كمان عملت برنامج c# و برده مش نافع نفس المشكله

اما بقى لما بعمل simulation with proteus و الviusal serial port بيهنج و بيطلع الاف من رسائل ال Rx frame error

ارجوا منكم المساعدة اخونى فى الله لانى دة جزء من مشروع تخرجى و متوقف علية بلاوى تانية و بسببة مش عارف اكمل و انجز فيها

و جزاكم الله كل خير

اعلانات

الصورة الرمزية 5282
5282
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2008
الدولة: مصر- الاسكندرية
المشاركات: 1,630
نشاط [ 5282 ]
قوة السمعة:112
قديم 30-04-2011, 05:08 PM المشاركة 2   
افتراضي


فى الغالب يكون المشكلة بالكود لان لما يهنج البروتوس بسبب الكود فية مشاكل

- جرب تنفيذ ملف الهيكس المرفق مع برنامج المترجم compiler وستجدة ضمن الامثلة .

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

اشرف يوسف
:: مهندس ::
تاريخ التسجيل: Sep 2009
الدولة: مصر
المشاركات: 7
نشاط [ اشرف يوسف ]
قوة السمعة:0
قديم 30-04-2011, 11:35 PM المشاركة 3   
افتراضي


اخى الكريم 5282

الف شكر على اهتمامك

ده كود الinterrupt بتاع الrx

كود:
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
   {
   rx_buffer[rx_wr_index++]=data;
#if RX_BUFFER_SIZE == 256
   // special case for receiver buffer size=256
   if (++rx_counter == 0)
      {                                                                                                       
#else
   if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
   if (++rx_counter == RX_BUFFER_SIZE)
      {
      rx_counter=0;
#endif
      rx_buffer_overflow=1;
      }
   }
   if (data == "1")
   {
   PORTA = 0x01;
   delay_ms(500);   
   printf("hi");
   }else{
   PORTA = 0xFF;
   printf("bye");
   }
   delay_ms(1000);
}
انا بستخدم برنامج codeVision
الكود بسيط جدا و بيتهيئلى مش هو المشكلة
انا حاسس ان المشكلة فى الclock انا جربت كريستاله 12MHZ و جربت الinternal clock و ماقيش فايدة


اشرف يوسف
:: مهندس ::
تاريخ التسجيل: Sep 2009
الدولة: مصر
المشاركات: 7
نشاط [ اشرف يوسف ]
قوة السمعة:0
قديم 01-05-2011, 04:22 PM المشاركة 4   
افتراضي


انا شاكك ان الclock بتاعت الميكرو هى المشكلة
انا مستخدم الinternal clock و التردد 7372800
انا جربت كذا كمبيلر (codeVision,WinAVR,MiKroC) و اكواد مختلفة بتأدي نفس الغرض و مافيش فايده

ياريت يا اخوانى تساعدونى و جزاكم الله خيرا

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 02:01 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025