คำถามติดแท็ก pic

PIC เป็นแบรนด์ไมโครคอนโทรลเลอร์ RISC 8, 16 และ 32 บิตที่ผลิตโดย Microchip "PIC" เป็นตัวย่อสำหรับ "Peripheral Interface Controller"

5
Arduino หรือ PIC ไมโครคอนโทรลเลอร์
ฉันกำลังคิดที่จะสร้างหุ่นยนต์มือถือเพื่อการเฝ้าระวัง และฉันมีปัญหาในการเลือก PIC หรือไมโครคอนโทรลเลอร์ Arduino หุ่นยนต์เฝ้าระวังเคลื่อนที่ถูกควบคุมผ่านระบบไร้สายความจงรักภักดี (Wi-Fi) หากฉันเลือก PIC จำเป็นต้องมีโมดูลอีเธอร์เน็ตหรือไม่? ฉันค้นหาว่าต้องการบอร์ด Arduino เพื่อเชื่อมต่ออินเทอร์เน็ต ฉันมีประสบการณ์เล็กน้อยกับ PIC แต่บางคนบอกว่า Arduino นั้นดีกว่าสำหรับผู้เริ่มต้น สิ่งใดดีกว่า: การใช้ Arduino หรือ PIC สำหรับโครงการ หรือควรจะทำกับทั้ง Arduino และ PIC? และฉันก็คิดว่าจะใช้โทรศัพท์ Android เป็นตัวควบคุมสำหรับหุ่นยนต์ ฉันควรทำอย่างไรดี?

7
การใช้ malloc ใน PIC
ฉันจะใช้malloc()และfree()ฟังก์ชั่นใน PIC ได้อย่างไร? ฉันตรวจสอบstdlib.hส่วนหัวแล้วและไม่มีการกล่าวถึงเลย ฉันใช้ MCC18 มีใครต้องใช้พวกเขา? ฉันต้องการพวกเขาเพราะฉันกำลังย้ายห้องสมุดจาก Windows XP ไปยัง PIC คู่มือการย้ายระบบบอกว่า ปรับฟังก์ชั่นเฉพาะของระบบปฏิบัติการให้เข้ากับ PIC ของฉัน แต่ฉันไม่รู้วิธี "แปล" malloc()และfree()ฟังก์ชั่น
10 pic  memory 

6
ฉันจะตัวอย่างสัญญาณอะนาล็อก -2 V ถึง +2 V ด้วยไมโครคอนโทรลเลอร์ PIC ได้อย่างไร
ฉันใช้ PIC ไมโครกับ ADC ขนาด 10 บิตเพื่ออ่านจากสัญญาณอะนาล็อกที่มีความถี่น้อยกว่า 300 เฮิร์ตซ์ อย่างไรก็ตามสัญญาณอะนาล็อกนั้นอยู่ในช่วง -2 V และ +2 V ฉันจะกำหนดเงื่อนไขสัญญาณเพื่อให้อยู่ในช่วงที่ใช้งานได้ (สมมติว่าอินพุตไปยัง ADC ต้องเป็นค่าบวก) นอกจากนี้ฉันไม่มีค่าบวกและ แหล่งจ่ายไฟเชิงลบ

3
การเลือกเลเยอร์เครือข่ายผ่าน CAN บัส
ฉันวางแผนที่จะใช้ CAN บัสในแอพพลิเคชั่นระบบอัตโนมัติทางอุตสาหกรรม แต่ฉันมีเวลาตัดสินใจยากที่จะใช้เลเยอร์เครือข่าย ใครบ้างที่นี่มีคำแนะนำใด ๆ สำหรับโพรโทคอลเลเยอร์ที่สูงกว่าเพื่อใช้ผ่าน CAN ที่ให้แนวทางสำหรับการกำหนด ID ข้อความและวิธีจัดรูปแบบแพ็กเก็ตข้อมูลหรือไม่ ฉันควรพัฒนาเลเยอร์เครือข่ายที่เป็นกรรมสิทธิ์ของตัวเองหรือใช้มาตรฐานที่มีอยู่อย่าง CANopen หรือไม่

5
ตรวจสอบอายุการใช้งานแบตเตอรี่ในวงจร PIC
ฉันมีวงจรขนาดเล็กโดยใช้ชิปไมโครคอนโทรลเลอร์ PIC18F14F50 ซึ่งกำลังบันทึกข้อมูลลงในชิป EEPROM ภายนอกผ่านอินเทอร์เฟซ i2c (ซึ่งฉันสามารถอ่านได้ในภายหลังผ่านอินเตอร์เฟส USB) ตัวอย่างหนึ่งรายการจะถูกบันทึกทุก ๆ 15 นาทีและไม่จำเป็นต้องจับเวลาอย่างแม่นยำ มันก็โอเคถ้าตัวอย่างจะพลาดหรือผิดพลาดในขณะที่มีการเปลี่ยนแบตเตอรี่ แต่มันไม่ดีถ้าแบตเตอรี่หมดอายุและไม่มีการบันทึกข้อมูลเป็นเวลาหลายวันจนกว่าจะมีคนสังเกตเห็น ดังนั้นฉันต้องการเตือนผู้ใช้เมื่อแบตเตอรี่เหลือน้อยในเวลาที่พวกเขาจะเปลี่ยน ค่าเฉลี่ยปัจจุบันต่ำกว่า 2mA และฉันใช้แบตเตอรี่อัลคาไลน์ขนาด AA 3 ก้อนในซีรีย์เพื่อให้ 4.5 โวลต์ดังนั้นฉันคาดว่าจะใช้งานได้นานหลายวัน แต่ฉันสงสัยว่าจะตรวจสอบว่าแบตเตอรี่เหลือน้อยได้อย่างไร ฉันเชื่อว่าแรงดันไฟฟ้าจะลดลงเมื่อแบตเตอรี่หมดอายุการใช้งาน ฉันคิดว่า PIC นี้มีแรงดันอ้างอิง 1.024 โวลต์ดังนั้นฉันสามารถแบ่งแรงดันและจ่ายให้กับอินพุตแบบอะนาล็อกและเมื่อแรงดันไฟฟ้าที่แบ่งแล้วลดลงต่ำกว่านั้นจะเป็นการเตือน แต่ฉันไม่รู้เกี่ยวกับแบตเตอรี่เพียงพอที่จะรู้ว่ามันจะทำงานได้ดีแค่ไหน? และฉันไม่รู้ว่าจะเลือกแรงดันไฟฟ้าแบบไหนที่จะบ่งบอกว่าแบตเตอรี่อาจเหลือ 10-20% มันจะใช้งานได้จริงเหรอ? มีแนวทางที่ดีกว่านี้ไหม? สิ่งนี้ไม่จำเป็นต้องแม่นยำเลยฉันแค่ต้องการให้การเตือนที่ดีในเวลามากมายโดยไม่ให้ผู้คนทิ้งแบตเตอรี่ที่ยังมีชีวิตเหลืออยู่ เนื่องจากการใช้งานในปัจจุบันของฉันค่อนข้างคงที่ตัวจับเวลาธรรมดาจะสมเหตุสมผลถ้าฉันสามารถคำนวณว่าแบตเตอรี่จะใช้งานได้นานเท่าใดโดยเฉลี่ยแล้วเลือก 85% ของเวลานั้นก่อนที่ฉันจะเตือน หรือแบตเตอรี่มีอายุการใช้งานที่แตกต่างกันไปกว่านั้น? ความคิดใด ๆ ที่จะได้รับการต้อนรับ
10 pic  batteries 

4
โปรแกรมเมอร์ PIC ที่ดีที่สุด?
ฉันต้องการเริ่มใช้ PIC ในโครงการของฉันและสงสัยว่าฉันควรได้โปรแกรมเมอร์คนไหน ฉันมีประสบการณ์มากมายในการใช้ไมโครคอนโทรลเลอร์ (68k, avr) ฉันยังมีประสบการณ์มากมายเกี่ยวกับอุปกรณ์อิเล็กทรอนิกส์ (ดังนั้นจึงสามารถสร้างโปรแกรมเมอร์ได้) ฉันต้องการใช้ MPLAB, icsp และคุณสมบัติการดีบักในวงจรนั้นค่อนข้างเรียบร้อย USB ก็สะดวกเช่นกัน แต่ไม่จำเป็น ในคำตอบของคุณฉันขอขอบคุณการเปรียบเทียบข้อดีข้อเสียของคำแนะนำของคุณ

3
จำลอง Magstripe หรือไม่?
ฉันต้องการทำงานในโครงการที่คุณสามารถแทนที่ magstripe ด้วยไอเท็มอื่นซึ่งสามารถเปลี่ยนข้อมูลที่เก็บไว้ใน PIC ผ่าน แต่ยังคงสามารถอ่านได้โดยตัวอ่าน magstripe ซึ่งหมายความว่า PIC สามารถ 'เขียน' ค่าอื่นให้กับแทร็กที่แตกต่างกันบนแถบแม่เหล็กเพื่อทำซ้ำการ์ดที่แตกต่าง ดังนั้นวิธีการใดที่สามารถใช้ในการทำสิ่งนี้? จะใช้แถบแม่เหล็กหรือไม่?
10 pic  magstripe 

5
PIC32 vs dsPIC กับ ARM vs AVR สถาปัตยกรรมนั้นสำคัญหรือไม่เมื่อเราทำการเขียนโปรแกรมในภาษา C [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ขณะนี้เรากำลังใช้ไมโครคอนโทรลเลอร์ PIC32 แบบ 32 บิต มันใช้งานได้ดีสำหรับความต้องการของเรา แต่เรากำลังสำรวจไมโครคอนโทรเลอร์คนอื่น ๆ ที่สามารถทำให้เราดีขึ้น + เรามีโครงการอื่นที่เรากำลังเลือก MCU เพื่อจุดประสงค์นั้นเราได้เลือกไมโครคอนโทรลเลอร์SAM DA ที่ใช้ ARMซึ่งเป็น 32- บิตเหมือนกัน แต่ใช้ ARM (เป็นที่นิยมมากกว่า PIC32 - ฉลาดในอุตสาหกรรม) ตอนนี้สำหรับ PIC32 เราใช้ MPLAB แต่สำหรับ ARM cortex-M0 เราจะใช้ Atmel Studio เราจะใช้ภาษา C ในทั้งสองแพลตฟอร์ม สิ่งที่ฉันกังวลคือเราจะใช้ไมโครคอนโทลเลอร์ 32 บิตสองตัว (จาก บริษัท เดียวกัน) …

3
dsPIC สามารถทำอะไรได้ซึ่งไมโครคอนโทรลเลอร์ PIC ที่ต่ำต้อยไม่สามารถทำได้?
ฉันยังไม่ได้ใช้ชิป DSP เลย สิ่งที่ฉันรู้ก็คือสถาปัตยกรรมของพวกเขานั้นสามารถคำนวณได้ค่อนข้างเร็วโดยปกติจะอยู่ในวงจรนาฬิกาพวกเขามีคำแนะนำในการเพิ่มทวีคูณในชุดคำสั่งและมี DMAs ดังนั้น CPU จึงไม่ต้องเสียเวลาอันมีค่าในการย้ายข้อมูล รอบ ฉันคิดว่ามีมากกว่านั้น แต่สิ่งเหล่านี้เป็นจุดพื้นฐานไม่กี่ ฉันเห็นได้ว่า Microchip มี dsPIC ซึ่งเป็นสายชิป DSP ของพวกเขา เราไม่สามารถใช้ PIC18 หรือ PIC32 ที่มีตัวคูณในตัวเพื่อทำ DSP ได้หรือไม่ dsPIC แตกต่างจาก PIC ปกติอย่างไร คำถามหลักของฉันคือสิ่งนี้ทำไมเราต้องมีบางสิ่งบางอย่างที่แยกและแตกต่างที่เรียกว่าชิป DSP และไม่รวมความสามารถในการคำนวณความแม่นยำสูงในหน่วยไมโครคอนโทรลเลอร์ทั้งหมด? แน่นอนว่าด้วยเทคโนโลยีกระบวนการที่เรามีตอนนี้สิ่งนี้ไม่ควรใช้พื้นที่มาก นอกจากนี้ฉันจะรู้ได้อย่างไรว่าฉันต้องใช้ชิป DSP ในโครงการของฉันแทนที่จะเป็นไมโครคอนโทรลเลอร์ปกติ>
10 pic  dsp 

2
การพิมพ์อักขระตัวแปรไปยัง UART ไม่ทำงานค่าคงที่ทำงานได้ดี
ฉันมีปัญหาที่ค่อนข้างแปลกด้วย XC8 ในไมโครคอนโทรลเลอร์ PIC18F27K40 ใน PIC16F1778 มันใช้งานได้ ฉันได้กำหนด: void uart_putch(unsigned char byte) { while (!PIR3bits.TX1IF); TX1REG = byte; } เมื่อในของฉันmainห่วงผมเรียกuart_putch('a');นี้ทำงานได้ดี อย่างไรก็ตามเมื่อฉันกำหนดconst char c = 'a';และโทรuart_putch(c);มันไม่ทำงาน มันพิมพ์อะไรบางอย่าง แต่ไม่ได้a- ฉันคิดว่าพวกเขาเป็นตัวละครที่ฉันได้รับจาก0x00 hexdump -x /dev/ttyUSB0นี่ไม่ใช่ปัญหากับพอร์ตอนุกรมในคอมพิวเตอร์ของฉัน ฉันมองด้วยขอบเขตและสัญญาณแตกต่างกัน (ทำงานซ้ายใช่ไหม): รหัสง่าย ๆ : void main(void) { init(); // Sets up ports and UART control registers while (1) …

3
การเชื่อมต่อบัส SPI - เพื่อวนซ้ำหรือไม่วนซ้ำ?
ฉันมีคำถามเกี่ยวกับการเชื่อมต่อทางกายภาพของบัส SPI ฉันมีต้นแบบ SPI (อุปกรณ์ PIC32) และทาสจำนวนหนึ่ง (ในกรณีนี้คืออุปกรณ์ PIC16) ฉันเขียนไปยังทาสเท่านั้นและโปรโตคอลจะดูแลสิ่งที่ทำเมื่อไหร่ดังนั้นจึงไม่มีสัญญาณ MISO หรือ SS ที่ต้องกังวลและฉันแค่ขนานข้อมูลและสายนาฬิกากับทาสทั้งหมด ความยาวรวมของบัสไม่เกินสองสามฟุต (60 ซม.) และฉันใช้ SCK ที่ 8MHz ตอนนี้ตำแหน่งทางกายภาพของอุปกรณ์สลาฟ (ซึ่งจริง ๆ แล้วเป็นโหนดเชื่อมต่อบนบอร์ดอื่น ๆ ) เป็นเช่นนั้นที่บัส SPI วนกลับไปที่ต้นแบบเพื่อให้สามารถเชื่อมต่อปลายทั้งสองของแต่ละลูปเข้ากับ MOSI และ SCK ตามลำดับ แผนภาพต่อไปนี้แสดงให้เห็นถึงสิ่งที่ฉันหมายถึง - ฉันกำลังพูดถึงการเชื่อมต่อจุดสีแดง - และคำถามคือ: มันเป็นสิ่งที่ดีที่จะทำสิ่งนี้หรือไม่? ฉันมีพลังและพื้นดินในการเดินทางที่คล้ายกันและเห็นได้ชัดว่ามีประโยชน์เพราะมันช่วยลดแรงดันไฟฟ้าตกที่เกิดจากทาส อย่างไรก็ตามฉันไม่รู้ว่ามันเป็นสิ่งที่ดีหรือไม่ดีที่จะทำเช่นเดียวกันกับสายสัญญาณเหล่านี้ ฉันควรอนุญาตให้มีการเลิกจ้างบางประเภท - ตัวต้านทานต่อกราวด์ (?) - หรืออาจเป็นตัวต้านทานแบบอนุกรมเพื่อยับยั้งการสะท้อนกลับหรืออะไร? ฉันลองทั้งที่มีและไม่มีการเชื่อมต่อจุดดังนั้นพูดและไม่มีความแตกต่างในการทำงานและไม่มีการเปลี่ยนแปลงใด ๆ …

3
FSInit () -“ CE_BAD_PARTITION” [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับการแลกเปลี่ยนกองวิศวกรรมไฟฟ้า ปิดให้บริการใน10 เดือนที่ผ่านมา ฉันใช้ PIC18F26K80 และคอมไพเลอร์ XC8 ฉันพยายามเริ่มต้นการ์ด SD และสร้างไฟล์ ฉันเพิ่งฟอร์แมตการ์ด SD บน Windows เพื่อให้มีระบบไฟล์ "FAT32" และ "ขนาดหน่วยการจัดสรร" ที่ 512 ไบต์ ความจุของการ์ด SD คือ 2GB ฉันใช้ไลบรารี MDD จากรุ่น MLA Legacy หลักของฉันคือต่อไปนี้: FSFILE * file; char sendBuffer[22] = "This is test string 1"; //************************************************** // main function …
9 pic  spi  sd  fat 

1
ดูเหมือนจะไม่สามารถเขียนไปยังแฟลช spi
ฉันติดอยู่กับเรื่องนี้มาซักพักหนึ่งแล้วประมาณ 2-3 สัปดาห์ ฉันไม่แน่ใจว่าฉันทำอะไรผิด ฉันกำลังพยายามเขียนถึงส่วนแฟลช spiนี้และตอนนี้ฉันกำลังรันรูทีนเพื่อลบเขียนและอ่านเพื่อพยายามแยกมันออก แต่ก็ไม่มีโชค แน่นอนฉันได้แก้ไขข้อบกพร่องระหว่างทาง ... อย่างไรก็ตามฉันมีสาย WP ของฉันผูกไว้บนกระดานและฉันลดความเร็วของนาฬิกาลงเหลือ 200khz จากนั้นฉันก็ใช้รูทีนการลบและดูเหมือนว่า: ก่อนอื่นฉันจะตรวจสอบ ID เพียงแค่ตรวจแก้จุดบกพร่องนั่นคือคำสั่ง 9F จากนั้นฉันตั้งค่า WREN ด้วยคำสั่ง 06, C7 คือการลบชิปทั้งหมดจากนั้นฉันตรวจสอบบิตสถานะด้วย 05 และชัดเจน เวลาลบชิปของสิ่งนี้มีเพียง 35 มิลลิวินาที ตอนนี้ฉันโหลดรหัสของฉันและลองเขียน: ครั้งแรกที่ฉันตั้งค่า WREN กับ 06 ตรวจสอบสถานะเพื่อดูว่า WREN ถูกตั้งค่าเป็น 05 มันคือจากนั้นส่งคำสั่งโปรแกรมหน้า 02 ไปยังที่อยู่ 0x000000 คุณสามารถเห็นฉันเขียน deadcafe เป็นบิตแรก ๆ ยังไม่ได้วาดภาพที่นี่หลังจากเขียนเสร็จ (หนึ่งหน้าหรือ 256 ไบต์) …
9 pic  spi  flash 

2
สามารถใช้หน่วยความจำแฟลชโปรแกรมไมโครคอนโทรลเลอร์สำหรับจัดเก็บการกำหนดค่าผู้ใช้ได้หรือไม่
ไมโครคอนโทรลเลอร์หลายตัวเช่นPIC18Fมีหน่วยความจำโปรแกรมแฟลช: "หน่วยความจำโปรแกรมแฟลชสามารถอ่านและเขียนได้ในระหว่างการทำงานปกติ" นี่หมายความว่าฉันสามารถจัดเก็บการกำหนดค่าผู้ใช้บางอย่างไว้ในหน่วยความจำของโปรแกรม

2
การเขียนโปรแกรม PIC ผ่าน FPGA
ฉันต้องการทราบว่ามีวิธีการเขียนโปรแกรม PIC เป็นครั้งแรก (เขียนเป็น Flash) ผ่านการ์ด FPGA หรือไม่ PIC ถูกบัดกรีไปยัง FPGA แล้วและฉันไม่สามารถลบได้ ไม่มี bootloader อยู่บน PIC ดังนั้นฉันต้องตั้งโปรแกรมในโหมด USART / SPI / I2C ด้วย bootloader เพื่อให้สามารถรับข้อมูลจาก FPGA ฉันรู้ว่าปกติฉันต้องปลดล็อคมันเชื่อมต่อกับโปรแกรมเมอร์ฮาร์ดแวร์เช่น PICKit และตั้งโปรแกรมด้วยซอฟต์แวร์บนคอมพิวเตอร์เช่น MPLAB แต่ฉันไม่สามารถจ่ายได้ ฉันสามารถสร้าง bootloader ด้วย MPLAB ซึ่งเป็นไฟล์. hex แต่ฉันจะถ่ายโอนไปยัง FPGA แล้วไปยัง PIC ผ่านทางหมุด FPGA ได้อย่างไร PIC ที่ใช้คือ Microchip PIC12F1822

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.