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

อุปกรณ์ซึ่งรวมถึงหน่วยประมวลผลกลาง (CPU) หน่วยความจำและ (โดยทั่วไป) ชุดอุปกรณ์ต่อพ่วง I / O (UART, ADC, DAC, I / O วัตถุประสงค์ทั่วไป, I2C และอื่น ๆ ) ในสแตนด์อะโลน บรรจุภัณฑ์

6
ฉันจะควบคุมไฟ LED จำนวนมากด้วยพินเพียงไม่กี่ตัวบนไมโครของฉันได้อย่างไร
ฉันใช้ Atmel ATtiny13 ซึ่งมี I / O 6-pin ฉันต้องการควบคุมไฟ LED ประมาณ 15 ดวง แต่ไม่แน่ใจว่าจะเชื่อมต่อทุกสิ่งได้อย่างไร ดูเหมือนว่าฉันสามารถควบคุม LED ได้ครั้งละ 6 ตัวเท่านั้น ฉัน จำกัด เพียง LED 6 ดวงเท่านั้นเนื่องจากขนาดของไมโครคอนโทรลเลอร์หรือไม่

5
ซีรี่ส์ XMOS คืออะไร?
ตกลงดังนั้นฉันเพิ่งได้เห็นชื่อ XMOS ปรากฏในสถานที่ ฉันดูในเว็บไซต์และค้นหาทางออนไลน์ แต่ฉันไม่สามารถเข้าใจได้ว่ามันคืออะไร แล้วมันคืออะไร ดูเหมือนว่าจะเป็นจุดตัดระหว่างไมโครคอนโทรลเลอร์กับ FPGA ฉันได้ดูไซต์ของพวกเขาด้วยและฉันไม่สามารถมองเห็นสิ่งใดที่ฉันสามารถเข้าใจได้ (เพียงแค่ตัวอย่างการออกแบบและเอกสารอ้างอิงอื่น ๆ ) สำหรับ XMOS คืออะไรและอะไรคือสิ่งที่แตกต่างจากบรรทัดไมโครคอนโทรลเลอร์อื่น ๆ

10
ไมโครคอนโทรลเลอร์พร้อม Java API
ทีมฮาร์ดแวร์ของฉันวางแผนที่จะใช้ไมโครคอนโทรลเลอร์ Atmel AVR 8 บิตสำหรับโครงการในอนาคต เท่าที่ฉันรู้มันจะต้องตั้งโปรแกรมใน C. ฉันได้พบJVMสำหรับ AVR แม้ว่ามันจะมีข้อ จำกัด มากกว่าไลบรารี่ C ดั้งเดิมจาก Atmel คุณช่วยแนะนำไมโครคอนโทรลเลอร์ 8 บิตที่สนับสนุน Java ได้ไหม PS ฉันไม่รู้ C และฉันไม่มีประสบการณ์ในการเขียนโปรแกรมไมโครโปรเซสเซอร์

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

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

8
ฉันควรใช้ไมโครคอนโทรลเลอร์ชนิดใด
ฉันพยายามค้นหาแพ็คเกจคอนโทรลเลอร์ไมโครที่ดีที่สุดสำหรับโปรแกรมคอมพิวเตอร์ของฉันเพื่อสื่อสารกับโลกแห่งความจริง ฉันหวังว่าหมุด I / O จำนวนมาก (จนถึง 64 ดิจิตอลเป็นสิ่งที่ฉันต้องการไม่มีอะไรที่น่าประหลาดใจอย่างอะนาล็อกและ PWM) ที่ฉันสามารถอ่านและเขียนโดยตรงโดยการเรียกฟังก์ชั่นจากโปรแกรมของฉันที่ทำงานบน CPU ฉันไม่ต้องการดาวน์โหลดโปรแกรมไปยังตัวควบคุมขนาดเล็กเพื่อให้ทำงานได้ แต่ฉันต้องการสิ่งที่เพียงแค่เสียบเข้ากับ USB ของฉันและให้ CPU จำนวนมากที่ควบคุม I / O pin ที่ฉันสามารถควบคุมได้จากโปรแกรม C ++ ของฉัน แพคเกจไมโครคอนโทรลเลอร์ที่ดีที่สุดสำหรับฉันจะเป็นอย่างไร? ฉันหวังว่าจะมีบางสิ่งที่ค่อนข้างไม่แพง แต่มีข้อพิสูจน์ในอนาคตเนื่องจากมันทำงานบน USB และมีไดรเวอร์ 64- บิตสำหรับระบบปฏิบัติการที่ทันสมัยเช่น Windows 7 ความสามารถในการเชื่อมต่อมากกว่าหนึ่งในคอนโทรลเลอร์ไมโครคอนโทรลเลอร์เหล่านี้ด้วยโปรแกรมคอมพิวเตอร์เดียวกัน โบนัสที่ดีเช่นกัน (การขยายตัวในอนาคต) แก้ไข: ฉันไม่ต้องการอัตราการสุ่มตัวอย่างสูง (อาจจะ 10 Hz สำหรับการอ่านอินพุต, 1 kHz สำหรับสัญญาณขาออก) และหมุดส่วนใหญ่ใช้สำหรับเอาต์พุตเท่านั้น ฉันทำงานกับคอมพิวเตอร์ใหม่เอี่ยม (คอร์ …

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

7
ใบพัด Parallax เป็นผลิตภัณฑ์ที่ดีหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว Parallax Propeller แตกต่างจากโซลูชั่นมัลติคอร์อื่นอย่างไร ฉันเพิ่งเห็นบทความเกี่ยวกับโปรเจคเปิดที่ชนะการประกวดออกแบบของพวกเขา ฉันต้องการเห็นสิ่งที่คนอื่นคิดเกี่ยวกับชิป ผลิตภัณฑ์ใด ๆ ที่คล้ายกัน แต่ดีกว่า อัตราการหมุนอย่างไร

3
พฤติกรรมเปรียบเทียบแบบอะนาล็อกสุ่มและไม่แน่นอน
ฉันกำลังทำงานในโครงการ "เรียบง่าย" ที่ฉันต้องการวัดความถี่ของคลื่นไซน์ที่แตกต่างกันไปตามแอมพลิจูดและความถี่ เพื่อลดความซับซ้อนของสิ่งต่าง ๆ ตอนนี้ฉันมีเพียงอินพุตคลื่นไซน์ (27Hz) ความถี่คงที่ (อินพุตลบของตัวเปรียบเทียบ) ซึ่งสามารถเปลี่ยนแปลงได้ในแอมพลิจูดเท่านั้น (โดยใช้โพเทนชิออมิเตอร์) อินพุตเชิงบวกของตัวเปรียบเทียบถูกตั้งค่าเป็น Vcc / 2 เอาต์พุตของตัวเปรียบเทียบจะถูกป้อนเข้าสู่รีจิสเตอร์การจับการป้อนข้อมูลของไมโครคอนโทรลเลอร์ atmega2560 เพื่อวัดความถี่ ปัญหาคือที่แอมพลิจูดบางอย่างของสัญญาณอินพุตฉันได้รับการสลับค่อนข้างรุนแรง (หรือบางครั้งแถบแบนด์ตาย) บนเอาต์พุตซึ่งมีลักษณะดังนี้: โดยที่ผลลัพธ์ที่คาดไว้ควรมีลักษณะดังนี้: สิ่งที่ฉันได้ลองไปแล้ว: ใช้ตัวเปรียบเทียบภายในของ atmega2560 ใช้ตัวเปรียบเทียบภายนอก แนะนำ hysteresis โดยใช้ซอฟต์แวร์และวงจรทริกเกอร์ Schmitt พยายามตั้งค่าอินพุตที่หลากหลายรวมถึงการตั้งค่าการอ้างอิงแบบคงที่และการตั้งค่าตัวแบ่งข้อมูล ลองใช้ atmega2560 ที่แตกต่างกัน ลองใช้ความเร็วสัญญาณนาฬิกาที่แตกต่างกัน วิธีแก้ปัญหาบางอย่างมีความเสถียรมากกว่าโซลูชันอื่น ๆ แต่ก็ไม่มีวิธีใดใกล้เคียงที่ยอมรับได้ ฉันได้ตัดสินด้วยการกำหนดค่าที่เสถียรที่สุดแล้ว: ด้วยการตั้งค่านี้บางสิ่งปรับปรุง / เปลี่ยนแปลงเสถียรภาพ แต่ก็ยังไม่มีที่ไหนใกล้เคียงที่สมบูรณ์แบบ: การเปลี่ยนค่าของ R5 เพื่อเพิ่มฮิสเทรีซิส นำ C2 ออกอย่างสมบูรณ์ (ไม่รู้เลยว่าทำไม) …

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 บิตสองตัว (จาก บริษัท เดียวกัน) …

4
การแปลง ADC STM32 โดยใช้ HAL
ฉันพยายามเรียนรู้วิธีใช้ไลบรารี่ HAL "ใหม่" จาก stm32 เมื่อฉันพยายามแปลง ADC อย่างง่ายมันใช้งานได้เพียงครั้งเดียว แต่ก็หยุดการแปลง ฉันคิดว่าไม่ได้ตั้งค่าสิ้นสุดการแปลง ฉันกำลังใช้บอร์ดค้นพบ STM32f429I ซึ่งมีบอร์ด STM32f429ZI อยู่ โปรดทราบว่าฉันรู้ว่า sprintf เป็นการฝึกที่ไม่ดีและการทำ adc ด้วยการขัดจังหวะนั้นดีกว่าฉันรู้ว่าโปรดอย่าชี้ให้เห็นว่านี่ไม่เกี่ยวข้องกับคำถามฉันแค่ทดสอบ HAL ที่นี่ ดังนั้นคำถามคือทำไมไม่ตั้งค่าสถานะ EOC หรือฉันต้องทำอย่างไรเพื่อให้ใช้งานได้ Googling ไม่ได้ช่วยอะไรมากมายเนื่องจากมีเนื้อหาที่ดีเกี่ยวกับ HAL อยู่เล็กน้อย นี่คือรหัส: __IO uint16_t ADCValue=0; void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc); int main(void) { char str[15]; /* Various initializations */ HAL_ADC_Start(&hadc1); while (1) { if …

4
STM32: การขัดจังหวะตัวจับเวลาทำงานทันที
นี่คือรหัสสำหรับตัวจับเวลาในโครงการของฉันบน STM32F429: //timer initialization void timerInit() { uwPrescalerValue2 = (uint32_t) ((SystemCoreClock / 2) / 100000) - 1; RS485Timer.Instance = TIM5; RS485Timer.Init.Period = 67400000; // high value to notice interrupt even without debugging RS485Timer.Init.Prescaler = 400000; RS485Timer.Init.ClockDivision = 0; RS485Timer.Init.CounterMode = TIM_COUNTERMODE_UP; HAL_TIM_Base_Init(&RS485Timer); } void timerReset() { HAL_TIM_Base_Stop_IT(&RS485Timer); HAL_TIM_Base_DeInit(&RS485Timer); HAL_TIM_Base_Init(&RS485Timer); HAL_TIM_Base_Start_IT(&RS485Timer); …

7
Arduino Serial print เปลี่ยนแปลงพฤติกรรมของโปรแกรมที่ไม่พึงปรารถนา
ฉันใช้ตัวนับลูปที่ประกาศในส่วนหัว: int loop_counter = 0; ฉันใช้ตัวนับนี้เพื่อกระตุ้นเหตุการณ์ทุกครั้ง ฉันเคยใช้โมดูโล่สำหรับพฤติกรรมประเภทเดียวกันนี้ แต่ฉันทำให้มันง่ายขึ้นดังนั้นมันจึงทำงานได้ง่ายขึ้น (มันยังคงส่งผลให้เกิดพฤติกรรมเดียวกัน) void loop() { if(loop_counter > 100) loop_counter = 0; else loop_counter++; //Serial.println("hey"); if(loop_counter == 0) { //do_something_important(); } } ทั้งหมดเป็นสิ่งที่ดีและดีจนกระทั่งฉันพยายามสื่อสารด้วยSerialการไม่แสดงความคิดเห็น//Serial.println("hey"); ( "hey"ในตัวอย่างนี้เพราะสำหรับฉันพฤติกรรมนี้ไร้สาระ) ผลลัพธ์นี้จะloop_counterไม่เรียกdo_something_important();ส่วนของรหัส ฉันพยายามประกาศloop_counterเป็นvolatileที่ไม่ได้เปลี่ยนแปลงอะไร ฉันลองSerial.printไอเอ็นจีloop_counterและฉันยังได้รับพฤติกรรมแปลก ๆ (มันจะหยุดวน) Serial.println("hey");ทำงานในแง่ที่ว่าใน Serial Monitor ฉันได้รับ "hey" มากมาย (เช่นเร็วกว่า 100 "heys" จำนวนการวนซ้ำที่ส่วนอื่น ๆ ของรหัสควรเรียกใช้) สิ่งที่อาจทำให้เกิดการใช้งานSerialกับข้อมูลที่ไม่ได้ (เท่าที่ฉันสามารถบอกได้) …

5
เขียนบ่อยไปยังหน่วยความจำไม่ลบเลือน
ฉันกำลังออกแบบอุปกรณ์ที่ปรับตำแหน่งทางกายภาพโดยอัตโนมัติเมื่ออุณหภูมิเปลี่ยนแปลง หากอุปกรณ์นั้นถูกปิดหรือมีการตัดการเชื่อมต่ออุปกรณ์จำเป็นต้องจำไว้ว่ามันเป็นอุณหภูมิและตำแหน่งสุดท้าย ฉันมีความสามารถในการเก็บค่าเหล่านี้ใน EEPROM แต่ปัญหาคือตำแหน่งและอุณหภูมิสามารถเปลี่ยนแปลงได้อย่างรวดเร็ว ถ้าฉันจะเขียน temp และ pos เป็น EEPROM ทุกครั้งที่มีการเปลี่ยนแปลงพวกเขาจะ (1) ทำให้เฟิร์มแวร์ช้าลงเล็กน้อยและ (2) น่าจะฆ่า EEPROM หลังจากหนึ่งหรือสองปี ดังนั้นฉันเห็นตัวเลือกของฉันมีดังนี้ ... 1) ใช้ตัวเก็บประจุ / แบตเตอรี่เพื่อให้อุปกรณ์ขับเคลื่อนในเวลาสั้น ๆ หลังจากไฟฟ้าดับเพื่อให้ฉันสามารถเขียนค่าไปยัง EEPROM ในเวลานั้นเท่านั้น ฉันไม่ชอบสิ่งนี้เพราะบอร์ดค่อนข้างหิวและต้องใช้ฝาครอบขนาดใหญ่ และฉันไม่มีพื้นที่ว่างเหลือเฟือ และฉันไม่ต้องการค่าใช้จ่ายเพิ่มเติมของแบตเตอรี่และที่ใส่แบตเตอรี่ / หรือฝาปิดขนาดใหญ่ 2) ใช้ F-RAM แทน EEPROM เพื่อให้ฉันสามารถเขียนถึงล้านล้านครั้งโดยไม่ทำให้มันหมดไป ฉันไม่ชอบตัวเลือกนี้เนื่องจาก FRAM นั้นค่อนข้างแพงกว่า EEPROM ค่อนข้างมากและนี่เป็นผลิตภัณฑ์ที่ใช้ผลิต (ไม่ใช่แค่ตัวเดียว) 3) เขียนตำแหน่งและอุณหภูมิทุก ๆ 5 นาที …

5
การจัดการขัดจังหวะในไมโครคอนโทรลเลอร์และตัวอย่าง FSM
คำถามเริ่มต้น ฉันมีคำถามทั่วไปเกี่ยวกับการจัดการอินเทอร์รัปต์ในไมโครคอนโทรลเลอร์ ฉันใช้ MSP430 แต่ฉันคิดว่าคำถามอาจขยายไปยังยูซีเอสอื่น ๆ ฉันต้องการทราบว่าเป็นวิธีปฏิบัติที่ดีในการเปิด / ปิดการใช้งานอินเตอร์รัปต์ตามรหัสหรือไม่ ฉันหมายถึงถ้าฉันมีบางส่วนของรหัสที่ไม่ไวต่อการขัดจังหวะ (หรือแย่กว่านั้นคือต้องไม่ฟังการขัดจังหวะไม่ว่าด้วยเหตุผลใดก็ตาม) ดีกว่าไหมที่จะ: ปิดการใช้งานอินเทอร์รัปต์ก่อนและเปิดใช้งานอีกครั้งหลังจากส่วนที่สำคัญ วางธงไว้ใน ISR ที่เกี่ยวข้องและ (แทนที่จะปิดการใช้งานอินเตอร์รัปต์) ตั้งค่าสถานะเป็นเท็จก่อนส่วนสำคัญและรีเซ็ตเป็นจริงทันทีหลังจากนั้น เพื่อป้องกันรหัสของ ISR จากการถูกดำเนินการ ไม่ใช่ทั้งสองข้อเสนอแนะจึงยินดีต้อนรับ! อัปเดต: อินเตอร์รัปต์และแผนภูมิสถานะ ฉันจะให้สถานการณ์ที่เฉพาะเจาะจง ให้เราสมมติว่าเราต้องการใช้แผนภูมิสถานะซึ่งประกอบด้วย 4 บล็อก: การเปลี่ยน / ผล เงื่อนไขการออก กิจกรรมเข้า ทำกิจกรรม นี่คือสิ่งที่อาจารย์สอนเราที่มหาวิทยาลัย อาจไม่ใช่วิธีที่ดีที่สุดในการทำคือทำตามรูปแบบนี้: while(true) { /* Transitions/Effects */ //---------------------------------------------------------------------- next_state = current_state; switch (current_state) { case STATE_A: …

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