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

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

HugE
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2009
المشاركات: 73
نشاط [ HugE ]
قوة السمعة:0
قديم 14-05-2009, 06:06 AM المشاركة 1   
افتراضي ارجوا منكم المساعده في tmr0 Twitter FaceBook Google+



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

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


ولكن لدي بعض الاساله حول tmr0

انا اريد ان يتم العد لكل 1us

ويكون العد ختى 2000us تقريبا

نوع الكريستال المستخدم 4MHz

option_reg = %00000010

ويكون الدقه 1:8


طبعا الفكره انه سوف ياتيني 3 اشارات على 3 مخارج

عند قوم الاشاره يقوم مؤقت خاص بالعد

وعند قدوم الاشاره الثانيه يعمل مؤقت اخر بالعد وهكذا بالنسبه للثالثه


قمت بكتابة هذا الكود ولاينقص الا ضبط الموقت لكي يعد كل 1us



كود:
device = 16f877a
xtal 4

DECLARE LCD_DTPIN PORTb.4 
DECLARE LCD_ENPIN PORTb.3 
DECLARE LCD_INTERFACE 4
DECLARE LCD_RSPIN PORTb.2

SYMBOL T0IE = INTCON.5 
SYMBOL T0IF = INTCON.2 
SYMBOL GIE = INTCON.7

gie =0
t0if =0
t0ie=1

option_reg = %00000010

dim i1 as word
dim i2 as word
dim i3 as word
dim flg_1 as byte
dim flg_2 as byte
dim flg_3 as byte 
dim f1 as word
dim f2 as word
dim f3 as word

 tmr0=132
 
on_INTERRUPT GOTO count



main:

print at 1,1,dec f1
print at 1,7,dec f2
print at 2,1,dec f3


if portd.0=1 then
flg_1 =1
end if


if portd.1=1 then
flg_2 =1
end if


if portd.2=1 then
flg_3 =1
end if



gie=1
goto main

count:

if flg_1 =1 then
if i1 <1000 then 
inc i1
t0if=0

end if
end if


if flg_2 =1 then
if i2 <1000 then 
inc i2
t0if=0

end if
end if


if flg_3 =1 then
if i3 <1000 then 
inc i3
t0if=0

end if
end if


if i1 = 1000 then
inc f1 
i1 =0
t0if=0

end if


if i2 = 1000 then
inc f2  
i2 =0
t0if=0
end if


if i3 = 1000 then 
inc f3 
i3 =0
t0if=0
end if


tmr0=132
context restore


مع العلم ان الموقت في البرنامج المكتوب سابقا يعد كل 1ms وانا اريده كل 1us


ارجو المساعده لمن يملك الخبره في هذا الامر

وخاصه اخي العزيز زكي شاكر


ودمتم سالمين

اعلانات

HugE
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2009
المشاركات: 73
نشاط [ HugE ]
قوة السمعة:0
قديم 14-05-2009, 06:13 AM المشاركة 2   
افتراضي


هذه بعض المعلومات tmr0 التي وضعتها في البرنامج

Timer offset = 132

prescaler ratio = 1:8

Instruct Cycle Time = 1 micro sec

Timer Period = 1000 micro sec

Timer frequency = 1000 times per second Hz

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

زكي شاكر
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: المغرب
المشاركات: 3,062
نشاط [ زكي شاكر ]
قوة السمعة:183
قديم 14-05-2009, 02:33 PM المشاركة 3   
افتراضي


السلام عليكم
مادام التردد عندك هو 4000000 هرتز معناه ان :
Instruct Cycle Time = 1 micro sec
للحصول على توقيت 1 micro sec
يكفي كتابة تعليمة "فارغة" مكان تعليمة Delay


HugE
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2009
المشاركات: 73
نشاط [ HugE ]
قوة السمعة:0
قديم 15-05-2009, 09:56 AM المشاركة 4   
افتراضي


السلام عليكم
مادام التردد عندك هو 4000000 هرتز معناه ان :
Instruct Cycle Time = 1 micro sec
للحصول على توقيت 1 micro sec
يكفي كتابة تعليمة "فارغة" مكان تعليمة Delay
المشكله انني لا اريد ان اعمل hold للمايكرو عن طريق delay

انا اريد ان بيدا المايكرو العد بعد قدوم اول اشاره ولكن العد يجب ان يكون بالمايكرو


زكي شاكر
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: المغرب
المشاركات: 3,062
نشاط [ زكي شاكر ]
قوة السمعة:183
قديم 15-05-2009, 01:28 PM المشاركة 5   
افتراضي timer0


اذا كنت تود استخدام التايمر0 لابد اولا ان تحدد:
هل استخدام عادي مثل أي عداد يخبرك انه اكمل دورة؟
ام استخدام نظام مقاطعة تايمر0 بحيث تحدث مقاطعة كلما اكمل التايمر0 دورة؟
في الحالتين طريقة حساب النبضة الخارجة منه عند اكماله دورة في هذا الجدول: هنا
وأظن ان هناك تعليمات في الكومبيلر تتعامل مع المسجلين الضرورين وهما بحسب الحالتين السابقتين:
OPTION_REG وحده او مع INTCON

وبما ان الزمن يساوي مقلوب التردد :
T = 1/F
فأن معطيات الجدول السابق تتحول كما في الجدول التالي :

وبناء على معطيات الجدول السابق سيتحدد ماهو ممكن وما هو غير ممكن بحسب التردد الذي تم اختياره لمذبذب المتحكم ..


التعديل الأخير تم بواسطة : زكي شاكر بتاريخ 16-05-2009 الساعة 02:39 PM

حمودي1010
:: مهندس جيد ::
تاريخ التسجيل: Apr 2007
المشاركات: 237
نشاط [ حمودي1010 ]
قوة السمعة:0
قديم 15-05-2009, 08:23 PM المشاركة 6   
ha الى اخي زكي شاكر


اخي شاكرا اريد منك ان تفهمنا في intereption
et timer et convertisseur A/N
وبارك الله فيك



زكي شاكر
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: المغرب
المشاركات: 3,062
نشاط [ زكي شاكر ]
قوة السمعة:183
قديم 15-05-2009, 09:08 PM المشاركة 7   
sun


أخي العزيز حمودي
هي ما شاء الله كل واحد منها عنوان لموضوع كبير ..
إن شاء الله اخي اذا ما تيسرت الاسباب عندي نية الاستفاضة فيها من خلال موضوع "دورة البرمجة بفلوكود" حيث ان الطموح هو بناء جسر بين البرمجة بفلوكود والبرمجة بالاسمبلي ..
اسأل الله التيسير.
في انتظار ذلك تفضل أخي العزيز بطرح اي سؤال عن اي استعمال جزئي لهذه المواضيع سواء في موضوع فلوكود او في مواضيع مستقلة خاصة بك
وشكرا على تقتك...


HugE
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2009
المشاركات: 73
نشاط [ HugE ]
قوة السمعة:0
قديم 15-05-2009, 09:49 PM المشاركة 8   
افتراضي


مشكووووووور اخي زكي وجزاك الله خير على الرساله

والله اني فرحت جدا عندما قراتها

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

إضافة رد

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

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

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


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

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