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

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

2
การออกแบบการเข้ารหัส C - ตัวชี้ฟังก์ชั่น?
ฉันมีPIC18F46K22และตั้งโปรแกรมด้วยคอมไพเลอร์ XC8 ในท้ายที่สุดผมจะมีระบบเช่นเครื่องคอมพิวเตอร์ด้วยและstdin stdoutดังนั้นในลูปหลักจะมีฟังก์ชันที่ตรวจสอบว่ามีอินพุตใหม่หรือไม่ หากมีการป้อนข้อมูลฟังก์ชั่นจะถูกเรียกตาม ตัวอย่างเช่นเมื่อฉันป้อน A บนstdinPIC จะเรียกใช้ฟังก์ชันเช่นfunction_Aแทนที่จะfunction_Bเรียกว่าเมื่อฉันป้อน a เมื่อ PIC เสร็จสิ้นด้วยฟังก์ชั่นฉันต้องการให้อินพุตใหม่ถูกส่งไปยังฟังก์ชั่น ดังนั้นเมื่อกด A จะเปิดตัวส่งสัญญาณ RS232 จากช่วงเวลานั้นทุกอินพุตจะถูกส่งผ่าน RS232 ในที่สุดโครงการนี้เป็นโปรแกรมแก้ไขข้อความแบบสแตนด์อโลน ดังนั้นเมื่อกด A จะเป็นการเปิดระบบไฟล์จากช่วงเวลานั้นคุณจะไม่แก้ไขข้อความอีกต่อไป แต่ลองดูรายการไฟล์ต่างๆ นั่นหมายความว่าการกดขึ้นและลงหมายถึงสิ่งที่แตกต่างจากในสภาพแวดล้อมการแก้ไขข้อความ ฉันได้คิดมากเกี่ยวกับวิธีการเขียนโปรแกรมใน C. ฉันคิดว่าเมื่อคืนนี้และอยากจะรู้ว่าเป็นไปได้หรือไม่และถ้าเป็นเช่นนั้น สิ่งที่ฉันต้องการจะทำคือ: mainเรียกฟังก์ชันการทำงานเช่นfunction_A function_Aเปลี่ยนตัวแปรโกลบอลfunction_addrเป็นตัวชี้แอดเดรสของฟังก์ชันin_function_A จากช่วงเวลานั้นmainเรียกใช้ฟังก์ชันfunction_addrเมื่อมีอินพุตใหม่ สิ่งที่ฉันต้องการคือmainฟังก์ชั่นที่ตรวจสอบว่าfunction_addrเป็นศูนย์หรือไม่ ถ้ามันเป็นฟังก์ชั่น 'ปกติ' function_Aควรจะเรียกว่าเหมือน ถ้าไม่ใช่ฟังก์ชันที่function_addrควรจะถูกเรียก ฉันยังต้องfunction_Aซึ่งการเปลี่ยนแปลงที่จะชี้ไปยังfunction_addrin_function_A หมายเหตุ: เมื่อควรปิดฟังก์ชั่นระบบแฟ้มis_function_Aควรเปลี่ยนfunction_addrเป็น 0 ดังนั้นโดยทั่วไปคำถามของฉันคือฉันจะทำอย่างไร รับที่อยู่ของฟังก์ชั่น (และเก็บไว้ในตัวแปร) เรียกใช้ฟังก์ชันตามที่อยู่ที่ระบุ

4
จะแนะนำให้ติดกับ Arduino IDE หรือไม่
มันจะดีกว่าถ้าจะย้ายไปที่สตูดิโอ AVR (หรือทางเลือกอื่นที่ดีกว่าหรือไม่) เหนือ Arduino IDE รู้สึกเหมือนง่ายและไร้เดียงสา ฉันจำเป็นต้องรู้แนวคิดและทางเลือกของผู้เชี่ยวชาญ ..

7
ไมโครคอนโทรลเลอร์กับระบบบนชิป
ฉันเริ่มเขียนโปรแกรมไมโครคอนโทรลเลอร์และฉันกำลังอ่านเอกสารและตำราบางเล่ม ฉันสับสนเล็กน้อยเกี่ยวกับความแตกต่างระหว่างตัวควบคุมไมโครและระบบบนชิปคืออะไร เอกสารบางฉบับใช้คำศัพท์สองคำนี้ระหว่างกัน อย่างไรก็ตามตำราเรียนส่วนใหญ่ชี้ให้เห็นว่าการใช้คำสองคำระหว่างการเปลี่ยนแปลงอาจไม่ถูกต้องดังนั้นจึงต้องมีความแตกต่างที่น่าสังเกต ... ขอบคุณ!

7
หนังสือดีสำหรับการพัฒนาเฟิร์มแวร์ที่ไม่ใช่มือใหม่
ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันทำงานเฟิร์มแวร์มากมายกับงานของฉัน แต่ฉันกำลังมองหาหนังสือขั้นสูงเพิ่มเติมในหัวข้อ สิ่งที่ไม่ชอบพื้นฐานของ "สิ่งที่ขัดจังหวะ" ฉันอ่านหนังสือ O'Reilly เกี่ยวกับการพัฒนาระบบฝังตัวซึ่งก็โอเค แต่ยังไม่ก้าวหน้าพอ ตัวอย่างเช่นหนังสือหายากที่จะพูดคุยเกี่ยวกับสิ่งต่างๆเช่นหน้า Flash (ซึ่งอาจมีประโยชน์จริงๆ) วิธีใส่ส่วนของรหัสในพื้นที่เฉพาะของหน่วยความจำ บางทีสิ่งที่มีเคล็ดลับและลูกเล่น ฉันทำโปรแกรม PIC เป็นหลัก

13
โปรแกรมดู / ผู้อ่าน Intel HEX (.hex)
เมื่อเร็ว ๆ นี้ฉันได้ทำงานกับไฟล์Intel HEXเป็นจำนวนมาก ฉันต้องการโปรแกรมที่สามารถนำเข้าไฟล์ Intel HEX และอนุญาตให้ฉันดูเนื้อหาไบต์ที่แต่ละที่อยู่ มีโปรแกรมจำนวนหนึ่งที่ฉันเคยเห็นว่าทำเช่นนี้ แต่มีโปรแกรมที่ดีซึ่งฟรีและอนุญาตให้คุณดูเนื้อหาในที่อยู่ที่แน่นอนไม่ใช่ที่อยู่ที่สัมพันธ์กับจุดเริ่มต้นของไฟล์ hex (สำหรับ ตัวอย่างถ้าไฟล์ Intel HEX เริ่มเขียนที่อยู่ 200 แอปพลิเคชันควรแสดงว่าที่อยู่ 0-199 ว่างเปล่าและไม่แสดงราวกับว่ามันเริ่มต้นที่ที่อยู่ 0)? เครื่องมือที่ดีที่สุดที่ฉันพบไม่ใช่เครื่องมือที่ใช้ดูไฟล์ HEX แต่ซอฟต์แวร์การเขียนโปรแกรม J-Link Flash ของ Segger มันมีความหมายกับชิปโปรแกรม แต่อ่านไฟล์ HEX ได้อย่างสวยงาม ค้นหาได้ที่J-Link / J-Trace ดาวน์โหลด


6
โปรโตคอลการ จำกัด / การซิงโครไนซ์เทคนิคแบบอนุกรม
เนื่องจากการสื่อสารแบบซีเรียลแบบอะซิงโครนัสแพร่กระจายอย่างกว้างขวางในอุปกรณ์อิเล็กทรอนิกส์ทุกวันนี้ฉันเชื่อว่าพวกเราหลายคนได้พบคำถามเช่นนี้เป็นครั้งคราว พิจารณาอุปกรณ์อิเล็กทรอนิกส์Dและคอมพิวเตอร์PCที่เชื่อมต่อกับสายอนุกรม (RS-232 หรือคล้ายกัน) และจำเป็นต้องมีการแลกเปลี่ยนข้อมูลอย่างต่อเนื่อง Ie PCกำลังส่งเฟรมคำสั่งแต่ละเฟรมX msและDกำลังตอบกลับด้วยรายงานสถานะ / เฟรม telemetry แต่ละรายการY ms(สามารถส่งรายงานเป็นการตอบสนองต่อคำขอหรือเป็นอิสระ - ไม่สำคัญเลยที่นี่) กรอบการสื่อสารสามารถมีข้อมูลไบนารีใด ๆ โดยพลการ สมมติว่าเฟรมการสื่อสารเป็นแพ็กเก็ตที่มีความยาวคงที่ ปัญหา: เนื่องจากโปรโตคอลมีความต่อเนื่องด้านการรับอาจหลุดการซิงโครไนซ์หรือเพียงแค่ "เข้าร่วม" ที่อยู่ตรงกลางของเฟรมที่ส่งต่อเนื่องดังนั้นมันจะไม่รู้ว่าจุดเริ่มต้นของเฟรม (SOF) นั้นอยู่ที่ไหน ข้อมูลมีความหมายที่แตกต่างกันไปตามตำแหน่งของ SOF ข้อมูลที่ได้รับจะเสียหายและอาจเกิดขึ้นตลอดไป ทางออกที่ต้องการ รูปแบบการลด / ประสานที่เชื่อถือได้ในการตรวจจับ SOF ด้วยเวลาการกู้คืนสั้น ๆ (เช่นไม่ควรใช้เวลามากกว่านั้นพูด 1 เฟรมเพื่อซิงโครไนซ์อีกครั้ง) เทคนิคที่มีอยู่ฉันรู้ (และใช้บางส่วน) ของ: 1) ส่วนหัว / การตรวจสอบ - SOF เป็นค่าไบต์ที่กำหนดไว้ล่วงหน้า ตรวจสอบผลรวมในตอนท้ายของเฟรม จุดเด่น:เรียบง่าย …
24 serial  communication  protocol  brushless-dc-motor  hall-effect  hdd  scr  flipflop  state-machines  pic  c  uart  gps  arduino  gsm  microcontroller  can  resonance  memory  microprocessor  verilog  modelsim  transistors  relay  voltage-regulator  switch-mode-power-supply  resistance  bluetooth  emc  fcc  microcontroller  atmel  flash  microcontroller  pic  c  stm32  interrupts  freertos  oscilloscope  arduino  esp8266  pcb-assembly  microcontroller  uart  level  arduino  transistors  amplifier  audio  transistors  diodes  spice  ltspice  schmitt-trigger  voltage  digital-logic  microprocessor  clock-speed  overclocking  filter  passive-networks  arduino  mosfet  control  12v  switching  temperature  light  luminous-flux  photometry  circuit-analysis  integrated-circuit  memory  pwm  simulation  behavioral-source  usb  serial  rs232  converter  diy  energia  diodes  7segmentdisplay  keypad  pcb-design  schematics  fuses  fuse-holders  radio  transmitter  power-supply  voltage  multimeter  tools  control  servo  avr  adc  uc3  identification  wire  port  not-gate  dc-motor  microcontroller  c  spi  voltage-regulator  microcontroller  sensor  c  i2c  conversion  microcontroller  low-battery  arduino  resistors  voltage-divider  lipo  pic  microchip  gpio  remappable-pins  peripheral-pin-select  soldering  flux  cleaning  sampling  filter  noise  computers  interference  power-supply  switch-mode-power-supply  efficiency  lm78xx 

1
คำถามเกี่ยวกับรูปแบบ PCB สำหรับคณะกรรมการฝ่าวงล้อม MCU
ฉันกำลังพยายามหาเส้นทางบอร์ดที่เป็นหลักคือการฝ่าวงล้อมสำหรับ LPC23xx / LPC17xx MCU ฉันไม่เคยทำอะไรเลยที่เข้าใกล้ความซับซ้อนนี้มาก่อนและฉันก็มีข้อกังวลเล็กน้อย ฉันรู้ว่า PCB สี่ชั้นจะดีที่สุด แต่ฉันเป็นนักอดิเรกและการเปลี่ยนให้เป็นบอร์ดสี่ชั้นจะทำให้สิ่งนี้มีราคาแพงเท่ากับตัวเลือกที่มีขายทั่วไป ฉันได้ออกแบบโดยใช้กระดานโฆษณาสองชั้นที่ได้รับการพิสูจน์แล้วดังนั้นฉันจึงรู้ว่าเป็นไปได้ที่จะทำให้งานนี้สำเร็จ อย่างแรกนี่คือบอร์ดที่มีเส้นทางส่วนใหญ่ (ไม่สนใจอุปกรณ์ USB ทั้งหมดทางด้านขวาฉันยังไม่ได้ตัดสินใจว่าจะรวมไว้หรือไม่) (เช่นกันฉันรู้ว่าซิลค์สกรีนนั้นน่ากลัวฉันยังไม่ได้ทำงาน ): 1) สิ่งที่ฉันกังวลอย่างหนึ่งคือความยาวของร่องรอยระหว่าง MCU และคริสตัล (หนึ่งสำหรับ RTC และอีกอันสำหรับ MCU) พวกเขาไม่ได้เป็นบอร์ดที่ฉันออกแบบตาม แต่ฉันต้องการการตรวจสอบ 2) สิ่งที่ฉันกังวลอีกอย่างคือ ฉันรู้ว่าโดยทั่วไปแล้วไม่มีการ decoupling มากเกินไป แต่ในกรณีนี้ฉันขาดพื้นที่ดังนั้นฉันจึงไม่แยกคู่ VCC / GND ทั้งหมดออก (มีจำนวนมาก!) กระดานทั้งสองที่ฉันออกแบบตามที่ฉันมีมีเพียงแคปตัวแยก 2 ตัวและฉันมีสามตัวดังนั้นฉันอาจทำได้ดี ฉันควรทำงานเพื่อให้ได้อย่างน้อยหนึ่งหรือสองอย่างในหรือไม่ 3) ฉันทำงานอย่างหนักเพื่อจัดหาเครื่องบินกราวด์เกือบไม่แตกที่ชั้นล่าง มันเสียแค่จุดสองสามอันเท่านั้นสำหรับรูทะลุ (ซึ่งฉันคิดว่าควรจะเป็นแผ่น) ที่ผลึกอันใดอันหนึ่งและอีกเส้นทางหนึ่งเป็นเส้นทางอันยิ่งใหญ่สำหรับ VCC ไปยัง MCU …



10
STM ไมโครคอนโทรลเลอร์เผาไหม้ทุกครั้ง
ฉันมีประสบการณ์การทำงานกับ stm32 แต่ฉันเคยใช้พวกเขาบนกระดาน dev เท่านั้น ฉันเพิ่งพยายามบัดกรี stm32 และ stm8 บนกระดานแยกง่ายและโปรแกรมพวกเขาด้วย st-linkv2 โคลนของฉัน เมื่อเปิดเครื่องครั้งแรก mcu จะทำเสียงเล็กน้อยเหมือนการเผาหลังจากไม่กี่วินาทีและ 2 นาทีต่อมาก็วาด 100mA และสูบบุหรี่ ฉันคิดว่ามีรายละเอียดที่สำคัญบางอย่างที่ฉันหายไป มีอะไรผิดปกติในการตั้งค่าอย่างง่ายเช่นนี้? (เฉพาะ vdd, vss, decoupling cap และ st-link) ฉันลองมากกว่า 20 ครั้งด้วย stm8 และ stm32 ฉันได้ฝาปิดดีวีดีที่สุดเท่าที่จะเป็นไปได้และให้มาพร้อมกับ 3.3v สองสามครั้งที่ฉันสามารถตั้งโปรแกรมและตรวจสอบแฟลชได้ แต่มันแสดงพฤติกรรมแปลก ๆ * และอีกครั้งก็ขึ้นไปสูบบุหรี่ในไม่กี่นาทีต่อมา ฉันพยายามลากการบัดกรีการบัดกรีปกติด้วยปลาย smd และอุณหภูมิต่ำสุดที่ 260C และเวลาคูลดาวน์หลังจากแต่ละแผ่น ฉันลองปืนลมร้อนที่ 270C และฉันก็ใกล้จะแน่ใจว่าปัญหานั้นไม่ได้เกิดจากการบัดกรี ฉันลองด้วยการดึง …

7
ทำไม I2C ออกแบบมาเพื่อทำงานกับตัวต้านทานแบบดึงขึ้นและไม่ใช่แบบตัวดึงลง
ฉันเข้าใจว่าใน I2C, SCL และสาย SDA ใช้ตัวต้านทานแบบดึงขึ้นและไดรเวอร์พินเป็นอุปกรณ์เก็บสะสม NPN แบบเปิดซึ่งสามารถขับหมุดไปที่พื้นได้ สิ่งนี้ทำให้ I2C ได้เปรียบที่ตอนนี้บัสเดียวกันสามารถใช้ร่วมกับทาสหลายคนได้และแม้ว่าทาสสองคนหรือมากกว่านั้นพยายามขับรถบัสโดยไม่ตั้งใจในเวลาเดียวกัน แต่ก็ไม่ทำให้ระบบเสียหาย แต่สิ่งนี้สามารถทำได้โดยใช้PNP open drain driversและตัวต้านทานแบบดึงลงในสาย SDA และ SCL สิ่งต่าง ๆ เช่นการยืดนาฬิกาและอนุญาโตตุลาการหลายหลักสามารถทำได้ด้วยเช่นกัน การติดตั้งใช้งานโปรโตคอล I2C ปัจจุบันให้ประโยชน์มากกว่าการใช้ทางเลือกที่แนะนำข้างต้นหรือไม่?

6
ฉันจะวางแผนผลิตภัณฑ์ระยะยาวด้วยไมโครคอนโทรลเลอร์ที่ต้องการการสนับสนุนระยะยาวได้อย่างไร
ฉันต้องใช้ไมโครคอนโทรลเลอร์บนระบบที่ต้องทำงานต่อไปโดยไม่มีการเปลี่ยนแปลงครั้งใหญ่เป็นเวลานาน (หลายทศวรรษ) เพื่อให้แน่ใจว่าจะมีชิ้นส่วนอะไหล่อยู่เสมอฉันต้องการไมโครคอนโทรลเลอร์ที่จะผลิตหรือผลิตในระยะยาวโดยผู้ผลิตบางรายในไบนารีไบร์ท ฉันจะทำอย่างไรเพื่อให้แน่ใจว่าไมโครคอนโทรลเลอร์ที่ฉันเลือกนั้นมีคุณสมบัติตรงตามเกณฑ์เหล่านี้? แอปพลิเคชันไม่ต้องการพลังการประมวลผลมาก เป้าหมายคือเพื่อควบคุมมอเตอร์และระบบอุตสาหกรรมอื่น ๆ ไมโครคอนโทรลเลอร์ขนาด 8 บิตสามารถเปลี่ยนสถานะของหมุดประมาณ 8-16 IO ที่ความถี่ 0.5-1 MHz ได้ ADC อาจมีค่า แต่สามารถแทนที่ด้วยเครื่องมือเปรียบเทียบภายนอกอย่างง่าย

6
วิธีการเปลี่ยนจากไมโครคอนโทรลเลอร์ "พื้นฐาน" เป็น ARM Cortex
ฉันมีประสบการณ์หลายปีกับคอร์ 8 บิตจากผู้ผลิตหลายรายเช่น 8051, PIC และ AVR - และตอนนี้ฉันมี Cortex M0 เพื่อค้นหา เฉพาะอันนี้แต่ฉันหวังว่าเราจะได้ทั่วไปมากกว่านั้น มันกลายเป็นมากกว่าที่ฉันต่อรองเล็กน้อยด้วยเอกสารหลายฉบับที่อธิบายส่วนต่าง ๆ ของระบบในระดับรายละเอียดที่แตกต่างกันและไม่มีจริง ๆ ที่ฉันเห็นว่าเชื่อมต่อเข้าด้วยกัน เมื่อเทียบกับการมีแผ่นข้อมูลเดียวที่อธิบายทุกอย่าง ฉันเข้าใจว่ามีเอกสารมากขึ้นตั้งแต่แรก แต่การเปลี่ยนรูปแบบทำให้ฉันต้องวนซ้ำ เว็บไซต์ด้านบนมีเอกสารหนึ่งฉบับที่เป็นภาพรวมที่ดีของแต่ละระบบย่อยและอุปกรณ์ต่อพ่วงแยกและอีกอันหนึ่งอธิบายรายละเอียดการลงทะเบียนแต่ละครั้งและฉันมีซอร์สโค้ดทั้งหมดสำหรับ SDK ของพวกเขารวมถึงไฟล์ส่วนหัวและตัวอย่างที่ซับซ้อนบางอย่าง ไม่มีอะไรที่อธิบายถึงความเชื่อมโยงทั้งหมดเข้าด้วยกัน มีคำแนะนำสั้น ๆ ของสถาปัตยกรรม Cortex ที่อธิบายการทำงานของสิ่งต่าง ๆ ที่คอนโทรลเลอร์ขนาดเล็กไม่มี - เช่นบัสหลายชั้นจาก CPU ไปยังอุปกรณ์ต่อพ่วงแต่ละตัวมีตัวจับเวลาจ้องจับผิดของตัวเอง - และพวกมันเชื่อมต่อกันอย่างไร?

5
จะมั่นใจได้อย่างไรว่าการผลิตส่วนประกอบกลางเป็นเวลานาน
คำถามนี้เกี่ยวข้องกับการวางแผนโครงการและลดความเสี่ยงในอนาคต สมมติว่า บริษัท X สร้างอุปกรณ์ที่ฉลาดนี้ (ฉันไม่ได้เป็นเจ้าของ บริษัท - ฉันแค่อยากรู้อยากเห็น) อุปกรณ์ที่ชาญฉลาดใช้ประโยชน์จากไมโครคอนโทรลเลอร์ยูนิต (MCU) เป็นส่วนประกอบที่สำคัญที่สุด MCU นี้ผลิตโดย บริษัท Y ในวันนี้ในปี 2556 เราจะมั่นใจได้อย่างไรว่าแบรนด์ Y และรุ่นยังคงผลิตได้ X ปีในอนาคตทั้ง บริษัท Y หรือคนอื่น ๆ ขณะนี้มีแบรนด์เฉพาะ + รุ่นตระกูล (หรือเฉพาะสถาปัตยกรรมทั่วไป) ที่สามารถพึ่งพาได้ในอนาคต (un) มองเห็นได้หรือไม่? แบรนด์ / ตระกูลแบบ / สถาปัตยกรรมใด ๆ ที่รู้ว่าไม่แน่นอน? ฉันเดาว่า Intel และ Atmel จะต้องผลิตตระกูลรุ่นที่แน่นอนซึ่งค่อนข้างแน่นอนว่าจะยังคงใช้งานได้เป็นเวลาหลายปี / หลายทศวรรษ แต่โมเดลหรือสถาปัตยกรรมใดกันแน่

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