पीआईसी 18 एफ और पोर्ट-बी

एक पीआईसी 18f4685 के साथ काम कर रहे 4x4 कीपैड प्राप्त करने का प्रयास कर रहा है।

I've turned on weak-pulls ups. Set the appropriate pins to either input/output but when I send a signal out I'm not getting it back on bits 6 & 7. It just gets zeros...

मैंने PicKit3 का उपयोग करके डीबग करने का प्रयास किया है लेकिन ऐसा लगता है कि यह आरबी 7 का उपयोग करता है और उस पंक्ति के लिए बटन दबाए जाने पर चीजें क्रैश करता है। बेशक यह मुझे बताता है कि सिग्नल एक बिंदु पर हो रहा है।

क्या विशेष रूप से कुछ और है कि मुझे पोर्ट बी के लिए कॉन्फ़िगरेशन में स्थापित करने की आवश्यकता है?

हमेशा की तरह ... आपकी मदद की बहुत सराहना की जाती है।

0
जोड़ा
विचारों: 1
संभावित कॉन्फ़िगरेशन समस्याओं के अतिरिक्त विचारों के लिए सभी को देखने के लिए धन्यवाद। मैं इसे चलाने में कामयाब रहा। हां, डीबग परीक्षण के दौरान PicKit3 का उपयोग नहीं कर सकता और मेरे सोल्डर जोड़ों में से एक खराब था। आप सबसे अच्छे मंच हैं! हमेशा एक तेज़ दोस्ताना responce मिलता है!
जोड़ा लेखक Chef Flambe, स्रोत
कौन से पिन इनपुट हैं और कौन सा आउटपुट हैं? मान लें कि आरबी 4-7 इनपुट हैं ...
जोड़ा लेखक ajs410, स्रोत

3 उत्तर

क्या आप ट्रिस्टेट रजिस्टरों (TRISB) और आप कैसे पढ़ रहे हैं, सेट करने के लिए अपना कोड उपयोग कर सकते हैं। क्या आपने बटन प्रेस के पहले और उसके दौरान डिजिटल मल्टीमीटर (डीएमएम) के साथ इनपुट पिन पर वोल्टेज की जांच की है? वे $ 10 हैं और इसके लायक हैं।

Finally, did you disable the analog pins? On PIC24 chips you have to do:

<�कोड> AD1PCFG = 0xFFFF

डिजिटल इनपुट पढ़ने से पहले काम करेगा। आपकी चिप पर भी वही हो सकता है।

क्या आप हमें अपने चिप का सटीक मॉडल नंबर दे सकते हैं?

0
जोड़ा

चूंकि ईई साइट आपको जवाब देने से पहले इतनी कठोर रूप से बंद कर देती है, मुझे लगा कि मैं आपके प्रश्न का उत्तर देने के लिए यहां आउंगा।

पृष्ठ 135 पर तालिका 10-3 की जांच करें, यह पोर्ट बी पिन की सभी क्षमताओं को सूचीबद्ध करता है। ध्यान दें कि आरबी 6 और आरबी 7 भी डिबगिंग पिन हैं, इसलिए मैं इनका उपयोग नहीं करता।

Also, are you writing to LATx and reading from PORTx? It's important to do this when reading and writing to the same port. If you read and write to PORTx, you can accidentally read a stale value from an output that has not had enough time to change yet, and your next write will obliterate your intended value. This is particularly pernicious on PICs that don't have a LATx register; any operation, even bit-wise operations like BSF/BCF, will do a read-modify-write of the ENTIRE port register, affecting more than the bit that you intended to modify. See the answer to this EE question: https://electronics.stackexchange.com/questions/28744/interfacing-a-keypad-with-a-microcontroller

0
जोड़ा
एलएटीएक्स रजिस्टरों के बारे में अच्छा बिंदु।
जोड़ा लेखक Adam Casey, स्रोत

बिल्कुल आपकी योजनाबद्ध नहीं है (एक स्केच मदद कर सकता है) लेकिन पीआईसी जीपीआईओ में एक आम त्रुटि एडीसी रजिस्ट्रार को डिजिटल इनपुट में सेट नहीं कर रही है। वे एनालॉग इनपुट के रूप में रीसेट से बाहर आते हैं।

PIC18F4685 डेटाशीट में पंजीकरण विवरण 19-2 देखें।

ADCON1 comes out of reset as 0x00. To set all the analog pins to digital I/O, PCFG3:0 need to be set to 1.

ADCON1bits.PCFG = 0x0F;
0
जोड़ा
धन्यवाद ... मैं इसे दोबारा जांच दूंगा। हालांकि मैं सोच रहा हूं कि यह वास्तव में एक हार्डवेयर मुद्दा हो सकता है ... गरीब सोल्डर संयुक्त। फिर से प्रवाह करने के लिए जा रहे हैं और उचित सेट-अप के लिए ADCON1 reg भी जांचें।
जोड़ा लेखक Chef Flambe, स्रोत
ADCON1 सेट करने से बचने के लिए आप कॉन्फ़िगरेशन बिट PBADEN भी सेट कर सकते हैं।
जोड़ा लेखक ajs410, स्रोत
मैं उस के साथ @ एडम के साथ जवाब दूंगा क्योंकि यह एक आम गलती है :) आपके लिए +1।
जोड़ा लेखक Diego Garcia, स्रोत