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

   

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
نشاط [ مشتاق الله ]
قوة السمعة:
قديم 19-02-2016, 09:20 AM المشاركة 9   
x4



بسم الله الرحمن الرحيم

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

ارجو ارسال الكود الذى كتبته و الله يوفقنا و نساعدك

انك تحب العمل مع المسجلات ... و انا مثلك ... الله يوفقنا و يتقبل منا جميعا .



يا ليتنا نقرأ القران كما نقرا غيره من الكتب
كتاب( غربة القران )


اعلانات

الصورة الرمزية gheas
gheas
:: مهندس متواجد ::
تاريخ التسجيل: May 2005
الدولة: https://t.me/pump_upp
المشاركات: 125
نشاط [ gheas ]
قوة السمعة:
قديم 19-02-2016, 11:50 AM المشاركة 10   
افتراضي


بسم الله الرحمن الرحيم

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

ارجو ارسال الكود الذى كتبته و الله يوفقنا و نساعدك

انك تحب العمل مع المسجلات ... و انا مثلك ... الله يوفقنا و يتقبل منا جميعا .



يا ليتنا نقرأ القران كما نقرا غيره من الكتب
كتاب( غربة القران )

وعليكم السلام ورحمة الله وبركاته
بارك الله فيك استاذ مشتاق الله وشكرا لردك
اخي نفس الكود السابق حيث انه اتضح لي ان الكومبلير Micro c
يستخدم اعدادات افتراضية كلمقارنة مع القطب الخارجي للمحول التشابهي الرقمي والقيمة 5v علما ان عائلة ATmega هناك مقارنة داخلية لل AREF
5V
2.65
بالاضافة للمقارنة الخارجية عبر القطب AREF
وبالمكتبة المساعدة للكوملير MICRO C مكتوب هذه الخيارا فقط لمعالجات XMEGA
بالاضافة ان اغلب الناس تستخدم ال pic وجميع الشروحات على النت من نصيبه
وقليل جدا من يبرمج AVR باستخدم MICRO C

هذا الكود

كود:
// ATMEGA8
 //8.000000 MHZ
sbit LCD_RS at PORTD2_bit;
sbit LCD_EN at PORTD3_bit;
sbit LCD_D4 at PORTD4_bit;
sbit LCD_D5 at PORTD5_bit;
sbit LCD_D6 at PORTD6_bit;
sbit LCD_D7 at PORTD7_bit;

sbit LCD_RS_Direction at DDD2_bit;
sbit LCD_EN_Direction at DDD3_bit;
sbit LCD_D4_Direction at DDD4_bit;
sbit LCD_D5_Direction at DDD5_bit;
sbit LCD_D6_Direction at DDD6_bit;
sbit LCD_D7_Direction at DDD7_bit;

   float v;
   char x_txt[15];

void main() {

ADMUX=0XF0;

     ADC_Init();
     Lcd_Init();
     Lcd_Cmd(_LCD_CURSOR_OFF);

    while(1)
  {

        v= ADC_Read(0);

        floatToStr(v,x_txt);

         lcd_out(1,1,x_txt);

    }
}


التعديل الأخير تم بواسطة : gheas بتاريخ 19-02-2016 الساعة 11:57 AM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
نشاط [ مشتاق الله ]
قوة السمعة:
قديم 19-02-2016, 12:16 PM المشاركة 11   
sun


بسم الله الرحمن الرحيم

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

فهمتك اخى , لكى تستخدم اعدادات خاصة بك فلا تستخدم المكتبة
الجاهزة اصلا , و تستخدم الخطوات ال
معتمدة عند القراءة بالمسجلات اى مثلا:
1-
كود:
 ADMUX |= 1<<REFS0 | 1<<REFS1 | 0<<ADLAR ;  // REF VOLT = AREF

2-
كود:
 ADCSRA |= ((1<<ADEN) | (1<<ADPS0) | (1<<ADPS2))  ;  // ADC PRESCALAR = 32

3-
كود:
ADCSRA |= 1<<ADSC ;         // START OF CONVERSION

4-
كود:
 while(ADCSRA & (1<<ADSC)){} // WAIT UNTIL FINISH OF CONVERSION .


ارجو من الله ان يفيدك الله بالكود هذا .

قال رسول الله صلى الله عليه وسلم:


من قرأ سورة الكهف في يوم الجمعة، أضاء له من النور ما بين الجمعتين.

رواه الحاكم والبيهقي وصححه الألباني.





ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 11,652
نشاط [ ماجد عباس محمد ]
قوة السمعة:
قديم 19-02-2016, 01:27 PM المشاركة 12   
افتراضي


مشكلتك انك تستخدم
كود:
v= ADC_Read(0);
وهو يعيد تهيئة المنفذ بالقيم الإفتراضية

المفترض أن تستخدم الكود
كود:
v= ADC_Get_Sample(0);
فهو يقرأ المنفذ دون إعادة تهيئة فيتركه على ما وضعت له من خيارات


الصورة الرمزية gheas
gheas
:: مهندس متواجد ::
تاريخ التسجيل: May 2005
الدولة: https://t.me/pump_upp
المشاركات: 125
نشاط [ gheas ]
قوة السمعة:
قديم 19-02-2016, 01:53 PM المشاركة 13   
x4


بارك الله بكم استاذ مشتاق الله والاستاذ ماجد عباس محمد
واشكز تعاونكم معي
سوف اجرب ارشاداتكم واخبركم بالنتائج باذن الله
هل لي بشيئ من مراجعكم بلغة ال MICRO C AVR
مثل كتاب يشرح التعامل مع التايمرات واعداداتها
وكيف يمكن ان نضيف مقاطعات للتايمرات و المحول التشابهي الرقمي


الصورة الرمزية gheas
gheas
:: مهندس متواجد ::
تاريخ التسجيل: May 2005
الدولة: https://t.me/pump_upp
المشاركات: 125
نشاط [ gheas ]
قوة السمعة:
قديم 20-02-2016, 12:30 AM المشاركة 14   
افتراضي


بسم الله الرحمن الرحيم

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

فهمتك اخى , لكى تستخدم اعدادات خاصة بك فلا تستخدم المكتبة
الجاهزة اصلا , و تستخدم الخطوات ال
معتمدة عند القراءة بالمسجلات اى مثلا:
1-
كود:
 ADMUX |= 1<<REFS0 | 1<<REFS1 | 0<<ADLAR ;  // REF VOLT = AREF

2-
كود:
 ADCSRA |= ((1<<ADEN) | (1<<ADPS0) | (1<<ADPS2))  ;  // ADC PRESCALAR = 32

3-
كود:
ADCSRA |= 1<<ADSC ;         // START OF CONVERSION

4-
كود:
 while(ADCSRA & (1<<ADSC)){} // WAIT UNTIL FINISH OF CONVERSION .


ارجو من الله ان يفيدك الله بالكود هذا .

قال رسول الله صلى الله عليه وسلم:


من قرأ سورة الكهف في يوم الجمعة، أضاء له من النور ما بين الجمعتين.

رواه الحاكم والبيهقي وصححه الألباني.



اخي مشتاق الله بارك الله جهودك معي
بعد التجريب اتضح ان هذه الخيارات تقوم بتهيئة ال ADC بالخيارات
الخاصة ولكن المشكلة بقيت بقرائة قيمة ال ADC لعرضها او استخدامها
لان استخدام المكتبات الموجودة بالملف المساعد تجبر الكومبلير باستخدام
الاعدادات الافتراضية


كود:
adc_value = ADC_Get_Sample(2);
كود:
adc_rd = ADC_Read(2);


الصورة الرمزية gheas
gheas
:: مهندس متواجد ::
تاريخ التسجيل: May 2005
الدولة: https://t.me/pump_upp
المشاركات: 125
نشاط [ gheas ]
قوة السمعة:
قديم 20-02-2016, 12:43 AM المشاركة 15   
افتراضي


مشكلتك انك تستخدم
كود:
v= ADC_Read(0);
وهو يعيد تهيئة المنفذ بالقيم الإفتراضية

المفترض أن تستخدم الكود
كود:
v= ADC_Get_Sample(0);
فهو يقرأ المنفذ دون إعادة تهيئة فيتركه على ما وضعت له من خيارات

شكرا لمرورك استاذي
تم التجريب واتضح ان المكتبة

كود:
v= ADC_Get_Sample(0);
تقوم بنفس عمل المكتبة

كود:
v= ADC_Read(0)
والفرق ان الاولى تستخدم عند اخذ قراءات مفردة ل ADC
لتوفير الطاقة ولزمن للمعالج
والاخيرة لتشغيل ADC بشكل دائم اي بالوضع الحر
لذلك وللاسف مازالت تنقص مكتبة او طريقة لاستخدام
خيارات المتحكم بهذه اللغة كما هو الحال بلغة السي والبايسك
بحسب علمي والله اعلم


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
نشاط [ مشتاق الله ]
قوة السمعة:
قديم 20-02-2016, 08:41 AM المشاركة 16   
x4


بسم الله الرحمن الرحيم

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

اخى بعد الاعدادات السابقة يمكنك القراءة كما التالى :
1- تضع الاعلان التالى فى اول البرنامج ليمكنك من استخدام دالة () LO() , HI

ستجد شرحهم فى HELP و تقوم بالاعلان عن متغير int VALUE ;
كود:
 #include <built_in.h>


2- بعد كتابة الاوامر السابقة , القراءة بالامر التالى :
كود:
 lo(VALUE) = ADCL ; 
hi(VALUE)= ADCH  ;

ملحوظة : عكس ترتيب القراءة ADCH ثم ADCL لا يقرأ القيمة و هذا من الداتا شيت .
و بالتالى قيمة القراءة موجودة فى المتغير VALUE ان شاء الله .
كود:
WORDTOSTR(VALUE ,txt);
 lcd_out(2,2,txt);

و الله ولى التوفيق
الجمد لله الذى بنعمته تتم الصالحات

من اكبر منن الله علينا
" انا جعلناه قرانا عربيا لعلكم تعقلون "
الحمد لله رب العالمين






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