Template errors

  • Template public:post_macros: Cannot call method isMemberOf on a non-object (NULL) (src/XF/Template/Templater.php:927)
  • کاربر مهمان ،حجم مصرفی اینترت و دانلود شما از این انجمن به صورت نیم بها محاسبه می گرد . در صورتی که این سایت مورد توجه و رضایت شما قرار گرفته است ،لطفا با عضویت در سایت ،به جمع ما بپیوندید .
منتظر افتتاح فروشگاه اینترنتی جدید ما باشید . فروشگاه AZAX به زودی افتتاح خواهد شد .

سوال کاربرد و مفهوم PCINT در میکرو کنترلر ها

در مجموع 0 کاربر از این موضوع بازدید داشته است دیدن جزئیات

هم اکنون 1 نفر شامل 0عضو و 1مهمان در حال مشاهده این موضوع است

اسمیت

کاربر فعال
کاربر فعال
عضو انجمن 220ولت
عضویت
8 April 2016
ارسال ها
51
لایک ها
55
با سلام
به عکس زیر توجه کنید ..

اطلاعاتی در مورد این نوع وقفه میخواستم . و چه فرقی با خود پایه های وقفه سخت افزاری معمولی دارن مثل INT0 ؟
و با چه لبه و سطحی ای فعال میشن ؟ چون تنظیماتی برای این گزینه ندارند ؟
 

مهران چمنی

مدیریت کل سایت
عضو کادر مدیریت
مدیریت کل انجمن ها
مدیریت کل فروشگاه
عضویت
21 October 2015
ارسال ها
869
لایک ها
901
محل سکونت
مشهد / شهر عشـــق
در سمپلز خود بسکام ، برنامه ای برای آموزش تغییر در pcint برنامه ای وجود دارد
در بخش هایی که بعد از ( ' ) قرار گرفته اند ،توضیحات جهت آموزش قرار دارند
PHP:
'---------------------------------------------------------------------------
'                       (c) 1995-2011, MCS Electronics
'                             PCINT_CHANGE.BAS
' This sample shows how to use the PC interrupts
'---------------------------------------------------------------------------

$regfile = "m88def.dat"
$crystal = 8000000
$baud = 19200

Print "{027}[2J";                                           ' when you have a terminal emulator, this will clear the screen
Print "Test M88 ints"                                       ' init message

'The M88 and M168 can detect a level change on all port pins.
'We will just check on portB, pins 0-3

Config Portb = Input
Portb = &HF                                                 'activate pull up

Enable Interrupts                                           'enable global ints
Enable Pcint0                                               'we enable pcint0 as this has pcint0-pcint7
On Pcint0 Isr_pcint0                                        'we jump to this label when one of the pins is changed
Pcmsk0 = &B00001111                                         'enable pcint0-pcint3  (portb.0-portb.3)
'With pcmsk you individual select which pins must react on a logic level
'When you write a 1, the change in logic level will be detected.

Do
! nop
  'you can do anything here
  'But we show how to use the pin level change in manual mode without interrupts
  'Say we want to detect logic level change of pin 23, (PINC.0) / INT8
  Config Pinc.0 = Input                                     'you can also detect output changes but we use input
  Pcmsk1 = &B00000001                                       ' enable the bit of PCINT8 which is in PCMSK1
  If Pcifr.pcif1 = 1 Then                                   ' change detected
      Print "pinc.0 has changed"                            'in this case it must be pinc.0
      Pcifr.pcif1 = 1                                       ' write a 1 to clear the flag so we can detect it again
  End If
Loop


Isr_pcint0:
  Print "Pin change " ; Bin(pcmsk0) ; Spc(3) ; Bin(pinb)
  'As you see the mask does not change, so to find out which pin changed,
  'you need to read the PINB register.
Return

End

در مورد توضیحات بیشتر و دقیق تر ،بهتر است خودم در این زمینه وارد نشوم .
یکی از دوستان بنده "جناب مهندس حاجی پور" بسیار در زمینه طراحی سخت افزار و نرم افزار میکرو مهارت دارند ،از ایشون دعوت خواهم کرد تا اگر فرصت لازم را داشتند ،افتخار حضور داشته باشند و سوال شما پاسخ بدهند .​
 
S

Saeed

کاربر ثبت نام نکرده
مهمان انجمن 220ولت
با سلام
به عکس زیر توجه کنید ..

اطلاعاتی در مورد این نوع وقفه میخواستم . و چه فرقی با خود پایه های وقفه سخت افزاری معمولی دارن مثل INT0 ؟
و با چه لبه و سطحی ای فعال میشن ؟ چون تنظیماتی برای این گزینه ندارند ؟


روی اون پایه ها یعنی پایه های PINC در حالتی که ورودی باشن، فقط در صورتی که تغییر در سطح منطقی اونها اتفاق بیوفته یعنی از صفر به یک یا بلعکس تغییری صورت بگیره زیربرنامه وقفه مربوطه اجرا میشه، و مثل پایه های INT0 و INT1 نیست که نوع وقفه اش قابل تنظیم باشه که با سطح یا لبه بالا رونده یا پایین رونده بره تو زیربرنامه وقفه