ไมโครคอนโทรลเลอร์ 8 บิตแตกต่างจากไมโครคอนโทรลเลอร์ 32 บิตเมื่อพูดถึงการเขียนโปรแกรม


19

ใช่แล้วเรามีไมโครคอนโทรลเลอร์ 8 บิต 16 บิตและ 32 บิตในโลกนี้ในขณะนี้ พวกเขาทั้งหมดมักจะใช้ การเขียนโปรแกรมไมโครคอนโทรลเลอร์ 8 บิตและ 16 บิตแตกต่างกันอย่างไร? ฉันหมายความว่ามันต้องใช้เทคนิคหรือทักษะที่แตกต่างกันหรือไม่? ยกตัวอย่างเช่นไมโครชิพ บุคคลใดต้องการเรียนรู้สิ่งใหม่ ๆ หากต้องการเปลี่ยนจากไมโครคอนโทรลเลอร์ 8 บิตเป็นไมโครคอนโทรลเลอร์ 32 บิต


ไม่แน่นอนมีข้อกังวลต่าง ๆ แต่ส่วนใหญ่อยู่ในระดับของรายละเอียดเฉพาะอุปกรณ์ ตัวอย่างเช่นอนุญาตการเข้าถึงคำที่ไม่ได้รับอนุญาตหรือไม่ (บนแขนมันไม่ได้ - แต่บน x86 มันคือ) คำถามนี้ไม่เฉพาะเจาะจงมากพอ
Chris Stratton

ว้าวพวกขอบคุณสำหรับคำตอบ ดังนั้นจึงมีความแตกต่างที่สำคัญมากที่เราต้องคำนึงถึงเมื่อทำการเขียนโปรแกรมตัวประมวลผล 32 บิตเทียบกับตัวประมวลผล 8 บิต ที่นี่ฉันหมายถึง C เพราะฉันคิดว่าคนส่วนใหญ่ไม่ได้เจาะลึกเข้าไปในสภาเพื่อการเขียนโปรแกรมด้วยเหตุผลที่เราทุกคนรู้ดีมาก ขอบคุณสำหรับคำตอบอย่างละเอียดฉันซาบซึ้งจริงๆ
quantum231

ด้วย 32 บิต uc มีตัวเลือกมากมายและมีอีกมากที่คุณต้องทำถูกต้อง ฉันเดาว่ามันขึ้นอยู่กับสิ่งที่คุณกำลังทำ ที่กล่าวว่าวันนี้คุณจะได้รับคณะกรรมการพัฒนาคอมไพเลอร์ดีบักเกอร์ IDE ประมาณ $ 50 ย้อนกลับไปในวันที่จะมีราคาใกล้เคียงกับ $ 1,000

คำตอบ:


33

โดยทั่วไปการเพิ่มขึ้นจาก 8 ถึง 16 เป็น 32 บิตไมโครคอนโทรลเลอร์หมายความว่าคุณจะมีข้อ จำกัด ด้านทรัพยากรน้อยลงโดยเฉพาะหน่วยความจำและความกว้างของรีจิสเตอร์ที่ใช้สำหรับการคำนวณและการดำเนินการทางตรรกะ โดยทั่วไปแล้วชื่อเล่นขนาด 8, 16 และ 32 บิตหมายถึงทั้งขนาดของบัสข้อมูลภายในและภายนอกและขนาดของรีจิสเตอร์ภายในที่ใช้สำหรับการคำนวณทางคณิตศาสตร์และตรรกะ (ใช้เป็นเพียงหนึ่งหรือสองเรียกว่าแอคคูมูเลเตอร์ ตอนนี้มักจะมีธนาคารลงทะเบียน 16 หรือ 32)

ขนาดพอร์ตพอร์ต I / O โดยทั่วไปจะเป็นไปตามขนาดบัสข้อมูลดังนั้นไมโคร 8 บิตจะมีพอร์ต 8 บิต 16 บิตจะมีพอร์ต 16 บิตเป็นต้น

แม้จะมีบัสข้อมูล 8 บิตไมโครคอนโทรลเลอร์ 8 บิตหลายตัวมีบัสแอดเดรส 16 บิตและสามารถจัดการกับหน่วยความจำขนาด 2 ^ 16 หรือ 64K ไบต์ได้ แต่ไมโคร 8 บิตบางตัวเช่น PIC ที่ต่ำสุดอาจมีพื้นที่ RAM ที่ จำกัด มาก (เช่น 96 ไบต์บน PIC16)

ในการหลีกเลี่ยงรูปแบบการ จำกัด ที่อยู่ไมโคร 8 บิตบางตัวใช้การเพจซึ่งเนื้อหาของการลงทะเบียนหน้าจะกำหนดหนึ่งในหลาย ๆ หน่วยความจำของธนาคารที่จะใช้ โดยทั่วไปจะมี RAM ทั่วไปบางส่วนที่พร้อมใช้งานไม่ว่าจะลงทะเบียนหน้าใดไว้

โดยทั่วไปแล้วไมโครคอนโทรลเลอร์ขนาด 16 บิตนั้น จำกัด อยู่ที่หน่วยความจำ 64K แต่อาจใช้เทคนิคการสลับหน้าเพื่อแก้ไขปัญหานี้ แน่นอนว่าไมโครคอนโทรลเลอร์ 32 บิตไม่มีข้อ จำกัด ดังกล่าวและสามารถจัดการหน่วยความจำได้สูงสุด 4GB

พร้อมกับขนาดหน่วยความจำที่แตกต่างกันคือขนาดสแต็ค ในไมโครสโคปด้านล่างสิ่งนี้อาจนำไปใช้ในพื้นที่หน่วยความจำพิเศษและมีขนาดเล็กมาก (PIC16 จำนวนมากมีสแต็กการโทรลึก 8 ระดับ) ในไมโคร 16 บิตและ 32 บิตสแต็กมักจะอยู่ใน RAM ทั่วไปและถูก จำกัด ด้วยขนาดของ RAM เท่านั้น

นอกจากนี้ยังมีความแตกต่างกันอย่างมากมายในปริมาณของหน่วยความจำ - ทั้งโปรแกรมและ RAM - ถูกนำไปใช้กับอุปกรณ์ต่าง ๆ 8-bit micros อาจมี RAM เพียงไม่กี่ร้อยไบต์และหน่วยความจำของโปรแกรมเพียงไม่กี่พันไบต์ (หรือน้อยกว่ามาก - ตัวอย่างเช่น PIC10F320 มีเพียง 256 คำ 14 บิตของแฟลชและ RAM 64 ไบต์) ไมโครสโคปแบบ 16 บิตอาจมี RAM สักสองสามพันไบต์และหน่วยความจำโปรแกรมนับหมื่นไบต์ ไมโคร 32 บิตมักมี RAM มากกว่า 64K ไบต์และอาจเป็น 1/2 MB หรือมากกว่าหน่วยความจำของโปรแกรม (PIC32MZ2048 มีแฟลช 2 MB และ RAM 512KB; PIC32MZ2064DAH176 ที่เพิ่งเปิดตัวใหม่ซึ่งได้รับการปรับให้เหมาะกับกราฟิกมีแฟลช 2 MB และ หน่วยความจำ RAM บนชิปขนาด 32MB)

หากคุณกำลังเขียนโปรแกรมในภาษาแอสเซมบลีข้อ จำกัด ของขนาดการลงทะเบียนจะชัดเจนมากตัวอย่างเช่นการเพิ่มตัวเลข 32 บิตสองบิตเป็นงานที่น่าทึ่งบนไมโครคอนโทรลเลอร์ 8 บิต แต่เล็กน้อยใน 32 บิต หากคุณกำลังเขียนโปรแกรมใน C สิ่งนี้จะโปร่งใสเป็นส่วนใหญ่ แต่แน่นอนว่าโค้ดที่คอมไพล์แล้วจะมีขนาดใหญ่กว่าสำหรับโปรแกรม 8-ขม

ฉันบอกว่าส่วนใหญ่โปร่งใสเนื่องจากขนาดของชนิดข้อมูล C ต่างๆอาจแตกต่างจากขนาดหนึ่งไปอีกขนาดหนึ่ง ตัวอย่างคอมไพเลอร์ซึ่งมีเป้าหมายเป็น 8 หรือ 16 บิตไมโครอาจใช้ "int" เพื่อหมายถึงตัวแปรที่เซ็นชื่อ 16 บิตและบนไมโคร 32 บิตนี่จะเป็นตัวแปร 32 บิต ดังนั้นโปรแกรมจำนวนมากใช้ #defines เพื่อบอกขนาดที่ต้องการอย่างชัดเจนเช่น "UINT16" สำหรับตัวแปร 16 บิตที่ไม่ได้ลงนาม

หากคุณเขียนโปรแกรมใน C ผลกระทบที่ใหญ่ที่สุดคือขนาดของตัวแปร ตัวอย่างเช่นหากคุณรู้ว่าตัวแปรจะน้อยกว่า 256 เสมอ (หรืออยู่ในช่วง -128 ถึง 127 หากลงนาม) คุณควรใช้ 8-bit (ถ่านที่ไม่ได้ลงชื่อ) ในไมโคร 8 บิต (เช่น PIC16 ) เนื่องจากการใช้ขนาดที่ใหญ่กว่าจะไม่มีประสิทธิภาพมาก เช่นเดียวกันตัวแปร 16 บิตบนไมโคร 16 บิต (เช่น PIC24) หากคุณใช้ไมโคร 32 บิต (PIC32) แสดงว่ามันไม่ได้สร้างความแตกต่างอย่างแท้จริงเนื่องจากชุดคำสั่ง MIPS มีคำแนะนำแบบไบต์คำและคำสองคำ อย่างไรก็ตามใน 32- บิต micros บางหากพวกเขาขาดคำแนะนำเช่นการจัดการตัวแปร 8 บิตอาจมีประสิทธิภาพน้อยกว่า 32- บิตหนึ่งเนื่องจากการหลอกลวง

ในฐานะสมาชิกฟอรัม vsz ชี้ให้เห็นบนระบบที่คุณมีตัวแปรที่มีขนาดใหญ่กว่าขนาดลงทะเบียนเริ่มต้น (เช่นตัวแปร 16 บิตบนไมโคร 8 บิต) และตัวแปรนั้นถูกแชร์ระหว่างสองเธรดหรือระหว่างเธรดพื้นฐาน และตัวจัดการอินเทอร์รัปต์จะต้องทำการดำเนินการใด ๆ (รวมถึงการอ่าน) บนตัวแปรอะตอมซึ่งทำให้ดูเหมือนเป็นคำสั่งเดียว สิ่งนี้เรียกว่าส่วนที่สำคัญ วิธีมาตรฐานในการลดปัญหานี้คือล้อมรอบส่วนสำคัญด้วยการปิดใช้งาน / เปิดใช้งานคู่การขัดจังหวะ

ดังนั้นการเปลี่ยนจากระบบ 32 บิตเป็น 16 บิตหรือ 16 บิตเป็น 8 บิตการดำเนินการใด ๆ กับตัวแปรประเภทนี้ซึ่งตอนนี้มีขนาดใหญ่กว่าขนาดลงทะเบียนเริ่มต้น (แต่ไม่เคยเป็นมาก่อน) จำเป็นต้องได้รับการพิจารณาว่าสำคัญ มาตรา.

ความแตกต่างที่สำคัญอีกอย่างหนึ่งคือการประมวลผลจาก PIC ตัวหนึ่งไปยังอีกตัวหนึ่งคือการจัดการอุปกรณ์ต่อพ่วง สิ่งนี้มีความเกี่ยวข้องกับขนาดของคำน้อยกว่าและเกี่ยวข้องกับชนิดและจำนวนของทรัพยากรที่จัดสรรในแต่ละชิป โดยทั่วไปแล้ว Microchip ได้พยายามที่จะทำให้การเขียนโปรแกรมของอุปกรณ์ต่อพ่วงเดียวกันที่ใช้ในชิปที่แตกต่างกันคล้ายกันมากที่สุด (เช่นตัวจับเวลา 0) แต่จะมีความแตกต่างอยู่เสมอ การใช้ไลบรารีอุปกรณ์ต่อพ่วงจะซ่อนความแตกต่างเหล่านี้ในระดับใหญ่ ข้อแตกต่างสุดท้ายคือการจัดการกับการขัดจังหวะ อีกครั้งมีความช่วยเหลือจากห้องสมุด Microchip


อาจเป็นที่น่าสังเกตว่าในระดับภาษาแอสเซมบลีโปรเซสเซอร์ 8 บิตมีแนวโน้มที่จะมีการลงทะเบียนน้อยลงและมีคำแนะนำแบบออโธกอนอลน้อยกว่า (AVR เป็นข้อยกเว้น RISCy ที่มากขึ้น) ซึ่งเป็นข้อ จำกัด ของการออกแบบ โปรเซสเซอร์ 32 บิตมีแนวโน้มที่จะเป็นลูกหลาน RISC (Renesas 'RX, CISC ที่ทันสมัยเป็นหนึ่งในข้อยกเว้นและ ColdFire ของ Freescale สืบทอดมาจาก m68k)
Paul A. Clayton

9
เพื่อไม่ให้เริ่มคำตอบใหม่สำหรับการเพิ่มนี้ฉันคิดว่าการเพิ่มการเปลี่ยนจาก 32 บิตเป็น 16 จาก 16 เป็น 8 อาจทำให้เกิดความประหลาดใจที่น่ารังเกียจเนื่องจากการหยุดคิดเลขคณิตเป็นอะตอม หากคุณเพิ่มตัวเลข 16 บิตสองตัวบนไมโครคอนโทรลเลอร์ 8 บิตและใช้ในการขัดจังหวะคุณจะต้องดูแลให้ปลอดภัยต่อเธรดมิฉะนั้นคุณอาจจะเพิ่มเพียงครึ่งเดียวก่อนที่อินเทอร์รัปต์ทริกเกอร์ส่งผลให้ ค่าที่ไม่ถูกต้องในรูทีนบริการขัดจังหวะของคุณ
vsz

2
@vsz - จุดดีลืมเกี่ยวกับสิ่งนั้น โดยทั่วไปควรปิดใช้งานอินเทอร์รัปต์รอบ ๆ การเข้าถึงใด ๆ (รวมถึงการอ่าน) ตัวแปรระเหยใด ๆ ที่ใหญ่กว่าขนาดเริ่มต้นที่ลงทะเบียนไว้
tcrosley

1
เป็นความจริงหรือไม่ที่ uC 32- บิตมักจะมีอินเตอร์เฟส I / O 32- บิต? ฉันคิดว่าต่อไปมันเป็นเรื่องธรรมดามากกว่าแค่การสื่อสารแบบอนุกรม
clabacchio

1
@clabacchio ประสบการณ์ของฉันคือการลงทะเบียนพอร์ต I / O ทั้งหมดถูกกำหนดเป็น 32- บิต แต่บางครั้ง 16 บิต 16-31 ชั้นนำไม่ได้ใช้ดังนั้นพอร์ตขนานยังคงเป็น 16 หมุดทางกายภาพ ในกรณีอื่น ๆ เช่น RTCC register จะใช้ 32 บิตทั้งหมด
tcrosley

8

ข้อแตกต่างทั่วไปอย่างหนึ่งระหว่างไมโครคอนโทรลเลอร์ขนาด 8 บิตและ 32 บิตคือตัวที่ 8 บิตมักจะมีช่วงของหน่วยความจำและพื้นที่ I / O ซึ่งอาจเข้าถึงได้ในคำสั่งเดียวโดยไม่คำนึงถึงบริบทการดำเนินการในขณะที่ไมโครคอนโทรลเลอร์ 32 บิตจะบ่อยครั้ง ต้องมีลำดับการเรียนการสอนหลาย ตัวอย่างเช่นในไมโครคอนโทรลเลอร์ 8 บิตทั่วไป (HC05, 8051, PIC-18F เป็นต้น) หนึ่งอาจเปลี่ยนสถานะของบิตพอร์ตโดยใช้คำสั่งเดียว บน ARM ทั่วไป (32- บิต) หากไม่ทราบเนื้อหาการลงทะเบียนในตอนแรกจำเป็นต้องมีลำดับการสอนสี่ขั้นตอน:

    ldr  r0,=GPIOA
    ldrh r1,[r0+GPIO_DDR]
    ior  r1,#64
    strh r1,[r0+GPIO_DDR]

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

ในทางกลับกันคอนโทรลเลอร์แบบ 32 บิตได้รับการออกแบบมาอย่างต่อเนื่องเพื่อเข้าถึงโครงสร้างข้อมูลหลายประเภทที่สามารถเก็บไว้ในหน่วยความจำได้อย่างมีประสิทธิภาพ โดยเปรียบเทียบคอนโทรลเลอร์ 8 บิตหลายตัวนั้นไม่มีประสิทธิภาพในการเข้าถึงโครงสร้างข้อมูลที่ไม่ได้รับการจัดสรรแบบคงที่ ตัวควบคุมแบบ 32 บิตอาจดำเนินการในการเรียนการสอนหนึ่งคำสั่งการเข้าถึงอาร์เรย์ที่จะใช้เวลาครึ่งโหลหรือมากกว่าคำแนะนำในตัวควบคุม 8 บิตทั่วไป


ฉันถือว่าคุณหมายถึง "bit-bang" อาจเป็นเรื่องที่น่าสังเกตว่า ARM รองรับขอบเขตบิตแบนด์ (ซึ่งการทำงานของ word เป็นการดำเนินงานบิตเดียว) และส่วนขยายเฉพาะแอปพลิเคชัน MCU สำหรับ MIPS ให้อะตอมบิต / ล้างบิตภายในคำแนะนำของไบต์ (ASET / ACLR)
Paul A. Clayton

@ PaulA.Clayton: ฉันไม่ได้ดู MIPS จริงๆในช่วง 20 ปีที่ผ่านมา; สำหรับภูมิภาคบิต - แบนด์ฉันไม่เคยคิดหาวิธีที่จะใช้มันในโค้ดที่ดูสมเหตุสมผลและแม้ว่าฉันจะสามารถใช้มันได้พวกเขาจะบันทึกคำสั่งเพียงคำเดียวเว้นแต่จะใช้เล่ห์อุบายการเขียนโปรแกรมบ้าในกรณีนี้ พวกเขาอาจบันทึกสอง [โหลด R0 ด้วยที่อยู่คู่หรือคี่ขึ้นอยู่กับว่าบิตควรจะตั้งค่าหรือล้างและปรับชดเชยในการเรียนการสอนตามความเหมาะสมเพื่อชดเชย] BTW คุณมีความคิดใด ๆ ว่าทำไมภูมิภาคบิต - แบนด์ใช้ที่อยู่คำ?
supercat

@supercat: การกำหนดที่อยู่ของ Word ช่วยให้คุณสามารถเข้าถึงขอบเขตบิต - แบนด์จาก C หรือ C ++ ผ่านการห้อยตัวชี้ ( region_base[offset])
Ben Voigt

@BenVoigt และทำไมคนเราถึงไม่สามารถทำได้ด้วยการระบุที่อยู่ไบต์? (อาจเป็นหนึ่งในเหตุผลที่เป็นไปได้คือการลบความคาดหวัง / หวังว่าจะสนับสนุนการดำเนินงานสองบิตและสี่บิต)
Paul A. Clayton

@BenVoigt: การปรับจำนวนบิตด้วยปัจจัย 4 มักจะต้องเสียค่าใช้จ่ายเพิ่มเติม ที่จริงแล้วสิ่งที่ฉันอยากจะเห็นมากกว่าพื้นที่บิตแบนด์คือชุดของสองพื้นที่ที่จะนั่งที่ออฟเซ็ตคงที่เมื่อเทียบกับการเข้าถึงหน่วยความจำ "ปกติ" แต่ระบุว่าเขียนลงในพื้นที่หนึ่ง จะทำได้ถ้าเป็นไปได้เพียงบิต "ตั้งค่า" และเขียนไปยังบิตอื่นเท่านั้นจะเป็น "ล้าง" บิต ถ้าบัสมีบิตควบคุม "write-ones-enable" และ "write-zeroes-enable" แยกจากกันใคร ๆ ก็สามารถบรรลุสิ่งต่าง ๆ ที่อนุญาตให้บิต - แถบ แต่ในหลาย ๆ กรณีหลีกเลี่ยงการอ่าน - แก้ไข - เขียน
supercat

6

ความแตกต่างในทางปฏิบัติที่ใหญ่ที่สุดคือปริมาณของเอกสารที่จะเข้าใจชิปทั้งหมดอย่างแท้จริง มีไมโครคอนโทรลเลอร์ 8 บิตที่มาพร้อมกับเอกสารเกือบ 1,000 หน้า เปรียบเทียบกับมูลค่าประมาณ 200-300 หน้าสำหรับซีพียู 8 บิตในปี 1980 และชิปต่อพ่วงยอดนิยมที่ใช้กับมัน อุปกรณ์ 32 บิตที่มีอุปกรณ์ต่อพ่วงมากมายจะทำให้คุณต้องอ่านเอกสารจำนวน 2,000-10,000 หน้าเพื่อทำความเข้าใจส่วนนั้น ชิ้นส่วนที่มีขอบกราฟิก 3 มิติที่ทันสมัยในหน้าเอกสารขนาด 20k

จากประสบการณ์ของฉันมันใช้เวลาประมาณ 10 เท่าในการรู้ทุกอย่างที่เป็นที่รู้จักเกี่ยวกับคอนโทรลเลอร์ 32 บิตสมัยใหม่ที่ได้รับตามที่ต้องการสำหรับ 8 บิตสมัยใหม่ โดย "ทุกอย่าง" ฉันหมายความว่าคุณรู้วิธีใช้อุปกรณ์ต่อพ่วงทั้งหมดแม้ในวิธีที่ไม่เป็นทางการและรู้ภาษาของเครื่องแอสเซมเบลอร์ของแพลตฟอร์มใช้เช่นเดียวกับเครื่องมืออื่น ๆ ABI (s) เป็นต้น

มันเป็นไปไม่ได้เลยที่หลาย ๆ การออกแบบจำนวนมากจะทำด้วยความเข้าใจบางส่วน บางครั้งมันไม่สำคัญบางครั้งก็ไม่ การเปลี่ยนแพลตฟอร์มจะต้องทำด้วยความเข้าใจว่าจะมีราคาในระยะสั้นและระยะกลางในการผลิตที่คุณจ่ายสำหรับการรับรู้ผลผลิตที่เพิ่มขึ้นจากสถาปัตยกรรมที่มีประสิทธิภาพยิ่งขึ้น ทำเพราะความขยันของคุณ


3

โดยส่วนตัวแล้วฉันจะไม่กังวลมากเกินไปเกี่ยวกับการอัพเกรด (8 บิต -> 32 บิต) uC ของตระกูลเดียวกันและคุณกำลังเพิ่มรายละเอียดทั่วกระดาน โดยทั่วไปแล้วฉันไม่ได้ทำอะไรที่ผิดปกติกับประเภทข้อมูลเพราะมันยากที่จะหยุดยั้ง

การลดระดับรหัสอุปกรณ์เป็นอีกเรื่องหนึ่ง


3
ขนาดของชนิดข้อมูลถูกกำหนดโดยคอมไพเลอร์ไม่ใช่สถาปัตยกรรมตัวประมวลผล ตัวประมวลผล 8 บิตสามารถมี int 32- บิตแม้ว่ามันจะใช้คำสั่งหลายวิธีในการจัดการกับพวกเขา
Joe Hass

ความคิดเห็นที่ดี - ฉันลบบรรทัดแรกเนื่องจากการแก้ไข
Nick Tullos

@JoeHass: เรียบเรียงสำหรับหน่วยประมวลผล 8 บิตจะกำหนดintให้เป็น 32 บิตหรือแม้กระทั่ง 64 สำหรับเรื่องที่ แต่ฉันไม่รู้มีอยู่คอมไพเลอร์ 8 บิตใด ๆ ซึ่งอันที่จริงไม่กำหนดintจะมีขนาดใหญ่กว่า 16 บิตหรือส่งเสริม ค่า 16 บิตสำหรับทุกสิ่งที่ใหญ่กว่า
supercat

-1

MCU แบบ 32 บิตจะกินพลังงานมากขึ้นสำหรับหนึ่งเดียว และต้องการวงจรรองรับมากขึ้น

หนึ่งไม่ได้เปลี่ยนเป็น 32- บิตจาก 8-bits ... คุณจะใช้ทั้งสองอย่างร่วมกันบ่อยครั้ง บรรทัดล่างคือคุณควรใช้ (และเรียนรู้) สิ่งที่เหมาะสมสำหรับงาน เรียนรู้ ARM เพราะมันจะเขย่าโลกที่ฝังอยู่ในตอนนี้และจะทำต่อไป เรียนรู้เกี่ยวกับ AVR หรือ PIC เพราะเป็นคอนโทรลเลอร์ที่ดีเยี่ยม

คุณอาจจะประสบกับความทุกข์ที่เปลี่ยนจาก AVR ไปเป็น ARM อย่างที่คุณต้องการจาก ARM ไปเป็น x86 อย่างไรก็ตามขนาดของบัสนั้นไม่ได้สร้างความแตกต่างอะไรมากมาย ฮาร์ดแวร์ขั้นสูงพิเศษทั้งหมดไม่ว่า การเปลี่ยนจากการขัดจังหวะแบบมาตรฐานไปสู่การขัดจังหวะแบบเวกเตอร์ที่มีลำดับความสำคัญ 6 ระดับจะยากกว่าการหาวิธีนับเป็นสี่พันล้านครั้ง


4
ฉันไม่รู้ว่าการอ้างสิทธิ์ MCU แบบ 32 บิตนั้นแม่นยำมากขึ้นหรือไม่ อย่างน้อยหนึ่ง บริษัท ( พลังงานขนาดเล็ก ) สายผลิตภัณฑ์ทั้งหมดคือ MCU พลังงานต่ำเป็นพิเศษและพวกเขาทั้งหมดเป็นแกน ARM 32 บิต
Connor Wolf

3
เพียงแค่ทำงานออกวงจร stm32l1 ว่าควรใช้เวลา 7 ปีใน CR2032
สกอตต์เซดแมน

2
คุณสามารถปรับความคิดเห็นว่า MCU แบบ 32 บิตต้องการ "วงจรสนับสนุน" มากขึ้นหรือไม่? ฉันคิดว่าคุณกำลังแสดงความคิดเห็นที่ไม่ยุติธรรมหลายอย่างที่นี่
Joe Hass

1
นอกจากนี้ความคิดเห็นของคุณที่ขัดจังหวะแบบเวกเตอร์ไม่สมเหตุสมผลนักเนื่องจากคุณสามารถรับความสำคัญหลายระดับในไมโครคอนโทรลเลอร์ 8 บิต (ดู Atmel xmega MCUs ซึ่งมี 3 ระดับความสำคัญ) และการขัดจังหวะแบบเวกเตอร์นั้นไม่เกี่ยวข้องเมื่ออุปกรณ์ฮาร์ดแวร์ทุกตัวมี เวกเตอร์อิสระของตัวเองต่อไป
Connor Wolf

2
ฉันใช้โปรเซสเซอร์ Cortex-M0 แบบ 32 บิตเพื่อควบคุมเครื่องชาร์จแบตเตอรี่อัจฉริยะสำหรับรถยนต์ไฟฟ้า ใช้แหล่งจ่ายไฟ 3.3 V เดียว มันมีออสซิลเลเตอร์ภายในและ PLL ดังนั้นฉันจึงไม่ต้องการแม้แต่คริสตัล ฉันกำลังใช้แพคเกจกรมทรัพย์สินทางปัญญา 28 พิน แต่ฉันสามารถรับ Cortex-M0 ในกรมทรัพย์สินทางปัญญา 8 พินได้หากฉันต้องการ จะซับซ้อนกว่า PIC หรือ AVR ทั่วไปได้อย่างไร?
Joe Hass
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.