मैं इसे बनाने की कोशिश कर रहा हूं ताकि फिर पिनबी 7 को दबाया जाए (जो कि पिन ऑफ बॉटन है) एलईडी को लाइट करने के लिए। PINB7 बोर्ड पर PCINT8 है। तो मैंने सेट किया

PCICR|=(1<<1);//enable interrupts for pins 14-8
sei();
PCMSK1|=(<<PCINT8); // mask for pin 8

मुझे नहीं पता कि ISR में मुझे किस वेक्टर का उपयोग करना चाहिए। मैंने जो देखा उससे मुझे बस PCINT8_vect करना चाहिए, हालाँकि वेक्टर हाइलाइट नहीं होता है, तो मैं "TIMER2_COMPB_vect" का उपयोग करता हूं। तो क्या PCINT8 वेक्टर मौजूद नहीं है या इसके लिए PCINT0 और 1 का उपयोग करने का कोई तरीका है?

c avr
1
l.leo 15 नवम्बर 2018, 20:39

1 उत्तर

सबसे बढ़िया उत्तर

जाहिरा तौर पर, mega328pb पर, व्यक्तिगत पिन इंटरप्ट के लिए कोई वैक्टर नहीं है, लेकिन PCIE0,1,2,3 के लिए वैक्टर हैं। 0- बिट्स 0:7 1-8:14 2-16:23 3-24:27

इसलिए यदि आप पिन b7 के लिए इंटरप्ट का उपयोग करना चाहते हैं। PB7 PCINT7 है (i/o पोर्ट के बारे में अध्याय में देखा जा सकता है)। इसलिए आईडी को PCIRC रजिस्टर में PCIE0 को सक्षम करना होगा, इसे TMSK0 को सही तरीके से मास्क करना होगा। और ISR (PCINT0_vect) का उपयोग करें। लेकिन अगर आपके पास PCINT6 और PCINT7 पर रुकावट है, तो आपको ISR में यह निर्धारित करने की आवश्यकता है कि 2 में से कौन सा पिन बाधित हुआ है

0
l.leo 17 नवम्बर 2018, 09:10