السلام عليكم
ال ADC عبارة عن multiplexer بمعنى انه ياخذ القراءة من كل قناة بالترتيب (على حسب الكود) ويبدا بعملية التحويل. مثلاُ لو كان عندنا كود وقمنا بقراءة (AN4), ثم AN5) كالتالي:
كود:
:
:
unsigned An4;
unsigned An5;
An4 = ADC_Read(4);
An5 = ADC_Read(5);
:
:
راح يبدا البيك بتحويل القراءة لقناة 4. عند الانتهاء من التحويل, يفعل المقاطعة الخاصة بالانتهاء من التحويل وراح تصير قيمتها بواحد (ADIF=1). وبعد كذا يدخل في دالة المقاطعة اذا كانت المقاطعة العامه مفعلة ( PEIE=1 و GIE=1 ). وراح ينفذ المهام المطلوبه تحت دالة المقاطعة. طبعاُ على حسب ماهو مكتوب في الداتا شيت, ان ADIF لازم تصفر في الكود (ADIF=0) حتى تستطيع الخروج من داله المقاطعة والرجوع الى الدالة الرئيسية وقراءة القناة التالية (AN5)..وكذا تتم نفس العملية لكل قناة.
ملاحظة , اغلب اكواد التحويل لل ADC تعتمد على قراءة GO/DONE bit او ADIF بدون الحاجة الى دالة المقاطعة. هذا لايعني ان استخدام دالة المقاطعة خطا,ولكن استخدام دالة المقاطعة ياخذ وقت اطول وتعقيد اكثر خصوصا عندما تكون القراءة لاكثر من قناة.