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

กลไกในการควบคุมการไหลของโปรแกรมในคอมพิวเตอร์ เมื่อถูกขัดจังหวะคอมพิวเตอร์จะบันทึกสถานะการทำงานปัจจุบันและการเปลี่ยนแปลงการเรียกใช้รหัสที่ขึ้นอยู่กับการขัดจังหวะที่สร้างขึ้น การขัดจังหวะอาจเป็นได้ทั้งที่มาจากฮาร์ดแวร์หรือที่มาจากซอฟต์แวร์ การขัดจังหวะที่มาจากซอฟต์แวร์เรียกว่ากับดัก เป็นกลไกทางเลือกในการสำรวจความคิดเห็นและเป็นพื้นฐานที่ใช้ I / O, มัลติทาสก์และการควบคุมส่วนใหญ่

3
ส่วนที่สำคัญใน Cortex-M3
ฉันสงสัยเล็กน้อยเกี่ยวกับการติดตั้งส่วนรหัสที่สำคัญใน Cortex-M3 ที่ไม่อนุญาตให้มีข้อยกเว้นเนื่องจากข้อ จำกัด ด้านเวลาหรือปัญหาการเห็นพ้องด้วย ในกรณีของฉันฉันใช้ LPC1758 และฉันมีตัวรับส่งสัญญาณ TI CC2500 บนเครื่อง CC2500 มีพินซึ่งสามารถใช้เป็นบรรทัดอินเตอร์รัปต์สำหรับข้อมูลในบัฟเฟอร์ RX และพื้นที่ว่างในบัฟเฟอร์ TX ตัวอย่างเช่นฉันต้องการมีบัฟเฟอร์ TX ใน SRAM ของ MCU ของฉันและเมื่อมีพื้นที่ว่างในบัฟเฟอร์ TX ของตัวรับส่งสัญญาณฉันต้องการเขียนข้อมูลนี้ในนั้น แต่รูทีนที่ทำให้ข้อมูลในบัฟเฟอร์ SRAM ชัดไม่สามารถถูกขัดจังหวะโดยขัดจังหวะว่างในพื้นที่ TX ดังนั้นสิ่งที่ฉันต้องการทำคือปิดการใช้งานอินเตอร์รัปต์ชั่วคราวขณะที่ทำโพรซีเดอร์นี้เพื่อเติมบัฟเฟอร์นี้ แต่มีการขัดจังหวะใด ๆ ที่เกิดขึ้นระหว่างโพรซีเดอร์นี้ดำเนินการหลังจากที่เสร็จสิ้น วิธีนี้ทำได้ดีที่สุดใน Cortex-M3

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); …

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

2
STM32F4 Cube HAL UART มันเป็นข้อบกพร่องหรือฉันหายไปบางอย่าง?
ฉันกำลังใช้ UART IO แบบขัดจังหวะ (ไม่มี DMA) HAL_UART_Transmit_ITฟังก์ชั่นตั้งค่าEIEบิตในการCR3ลงทะเบียน ตามแผ่นข้อมูล STM32F407 (และลักษณะการทำงานจริง) สิ่งนี้จะสร้างการขัดจังหวะในโหมดมัลติบัฟเฟอร์เท่านั้น (เมื่อDMARตั้งค่าบิต) EIEช่วยให้การสร้างขัดจังหวะสำหรับข้อผิดพลาดของเฟรม ( FE), ข้อผิดพลาดเกิน ( ORE), ข้อผิดพลาดของเสียง ( NE) ข้อผิดพลาดนี้ตามที่ฉันเข้าใจเพียงเพื่อรับเท่านั้น ส่วนหนึ่งของHAL_UART_IRQHandlerฟังก์ชั่น: tmp1 = __HAL_UART_GET_FLAG(huart, UART_FLAG_ORE); tmp2 = __HAL_UART_GET_IT_SOURCE(huart, UART_IT_ERR); /* UART Over-Run interrupt occurred ----------------------------------------*/ if((tmp1 != RESET) && (tmp2 != RESET)) { __HAL_UART_CLEAR_OREFLAG(huart); huart->ErrorCode |= HAL_UART_ERROR_ORE; } …

3
การใช้อินเตอร์รัปต์ภายนอกหลายรายการใน PIC
ฉันใช้PIC16F877( แผ่นข้อมูล ) สำหรับหลายโครงการ สำหรับการขัดจังหวะการเปลี่ยนพินภายนอกเดียวคุณสามารถใช้PORTB0อินเตอร์รัปต์ แต่ตอนนี้ฉันต้องการสนับสนุนการขัดจังหวะการเปลี่ยนพินภายนอก 8 อิสระในวงจรเดียว ในแผ่นข้อมูลมีข้อความระบุว่ามีอินเทอร์รัปต์ 15 รายการPIC16F877แต่ฉันเดาว่าจะนับรวมการขัดจังหวะตัวจับเวลาและอื่น ๆ ... ซึ่งไร้ประโยชน์ในกรณีนี้ นี่คือสิ่งที่แผ่นข้อมูลพูดเกี่ยวกับการINTCONลงทะเบียน ฉันสามารถใช้อินเทอร์รัปต์ 4 รายการโดยใช้ bit0 ได้RBIFหรือไม่ PB7:PB4มันหมายถึงการเปลี่ยนแปลงใน ฉันจะระบุพินที่เปลี่ยนแปลงได้อย่างไรโดยการอ่านค่าพอร์ตในรูทีนการขัดจังหวะ แม้ว่าฉันจะได้รับคำตอบในเชิงบวกจากข้างต้น แต่ฉันต้องการการขัดจังหวะ 8 ครั้ง แน่นอนฉันยังคงสามารถใช้INTEสำหรับPORTB0การเปลี่ยนแปลง ถ้าอย่างนั้น4 + 1 = 5อีก 3 คนล่ะ? (อย่างไรก็ตามการที่อินเตอร์รัปต์ทั้ง 8 เหตุการณ์นั้นเป็นประเภทเดียวกัน4 + 1 + 3 = 8สิ่งที่ดูน่าเกลียดใช่มั้ย) ไม่มีงานหนักอื่น ๆ ที่คาดหวังจากตัวควบคุมไมโครอื่น ๆ ที่ตรวจสอบ 8 พิน …

2
การพิจารณาว่าพินใดที่เรียกใช้การขัดจังหวะของ PCINTn
ฉันคิดถูกไหมถ้าคุณมีสองพินที่ทำให้เกิดการขัดจังหวะ AVR PCINT แบบเดียวกัน (เช่นเวกเตอร์ PCINT0 ที่เกิดจากพิน PCINT0 หรือ PCINT1 - ฉันคิดว่าการตั้งชื่อซ้อนทับกันของเวกเตอร์และพินนั้นสับสน) วิธีเดียว (s) ที่ทำให้เกิดการขัดจังหวะคือการบันทึกสถานะของพวกเขาหลังจากการขัดจังหวะแต่ละครั้งและเปรียบเทียบค่าก่อนหน้าและปัจจุบันของหมุดทั้งหมดที่เปิดใช้งานใน PCMSKn?
9 avr  interrupts  atmel 

4
ฉันจะสร้างตัวจับเวลาขัดจังหวะด้วย Arduino ได้อย่างไร
ฉันพยายามสร้างการหน่วงเวลาขัดจังหวะด้วย Arduino ฉันต้องการใช้ฟังก์ชั่นการขัดจังหวะ () เพราะเป็นการขัดจังหวะภายใน ตัวอย่าง: สมมุติว่าฉันต้องการเปิดและปิดไฟกะพริบโดยมีเพียงช่วงเวลาของการขัดจังหวะเท่านั้น มีโค้ดตัวอย่าง แต่ใช้อินเตอร์รัปต์ภายนอก (attachInterrupt ()) ฉันต้องการใช้อินเทอร์รัปต์ภายในต่อไป

3
ตัวจัดการขัดจังหวะถูกนำไปใช้ใน CMSIS ของ Cortex M0 อย่างไร
ฉันมีชุด LPC1114 ไม่กี่วันที่ผ่านมาฉันได้ขุดการใช้งาน CMSIS ของ Cortex M0 เพื่อค้นหาสิ่งต่างๆ จนถึงตอนนี้ฉันเข้าใจว่าการลงทะเบียนแต่ละครั้งถูกทำแผนที่อย่างไรและฉันสามารถเข้าถึงได้อย่างไร แต่ถึงกระนั้นฉันก็ไม่รู้ว่ามีการใช้อินเทอร์รัปต์อย่างไร สิ่งที่ฉันรู้เกี่ยวกับการขัดจังหวะใน CMSIS คือมีบางชื่อตัวจัดการขัดจังหวะที่กล่าวถึงในไฟล์เริ่มต้น และฉันสามารถเขียนตัวจัดการของฉันเองโดยเพียงแค่เขียนฟังก์ชั่น C ที่มีชื่อเดียวกับที่ระบุในไฟล์เริ่มต้น สิ่งที่ทำให้ฉันสับสนคือในคู่มือผู้ใช้จะมีการบอกว่า GPIO ทั้งหมดสามารถใช้เป็นแหล่งขัดจังหวะภายนอก แต่มีอินเทอร์รัปต์ PIO เพียง 4 ตัวที่กล่าวถึงในไฟล์เริ่มต้น ดังนั้นบอกฉัน: ฉันจะใช้ตัวจัดการขัดจังหวะภายนอกสำหรับ GPIO อื่นได้อย่างไร ตารางขัดจังหวะอยู่ที่ไหนใน CMSIS อะไรคือความแตกต่างที่สำคัญระหว่าง NVIC และการติดตั้ง Interrupt ใน AVRs / PICs? (ยกเว้น NVIC สามารถทำแผนที่ได้ทุกที่ในแฟลช)
9 arm  interrupts 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.