คำถามติดแท็ก memory-usage

1
ฉันสามารถเขียนไปยังหน่วยความจำแฟลชโดยใช้ PROGMEM ได้หรือไม่
ในเอกสารของ Arduino ฉันพูด: http://playground.arduino.cc/Learning/Memory หมายเหตุ: หน่วยความจำแบบแฟลช (PROGMEM) สามารถบรรจุได้ในเวลาที่โปรแกรมเขียนเท่านั้น คุณไม่สามารถเปลี่ยน> ค่าในแฟลชหลังจากที่โปรแกรมเริ่มทำงาน และในคำอธิบาย PROGMEM: http://arduino.cc/th/Reference/PROGMEM เก็บข้อมูลในหน่วยความจำแฟลช (โปรแกรม) แทน SRAM มีคำอธิบายของหน่วยความจำประเภทต่าง ๆ ที่มีอยู่ในบอร์ด Arduino คำหลัก PROGMEM เป็นตัวดัดแปลงตัวแปรควรใช้เฉพาะกับประเภทข้อมูลที่กำหนดไว้ใน pgmspace.h มันบอกคอมไพเลอร์ "ใส่ข้อมูลนี้ในหน่วยความจำแฟลช" แทนที่จะเป็น SRAM ซึ่งมันจะไปตามปกติ ดังนั้นเราสามารถหรือไม่เรา? หรือไม่ใช่สิ่งเดียวกัน

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

5
อัลกอริทึมที่มีประสิทธิภาพ / โครงสร้างข้อมูลในการคำนวณค่าเฉลี่ยเคลื่อนที่
ขณะนี้ฉันกำลังพัฒนาระบบ LCD กราฟิกเพื่อแสดงอุณหภูมิการไหลแรงดันไฟฟ้าพลังงานและพลังงานในระบบปั๊มความร้อน การใช้กราฟิก LCD หมายความว่าครึ่งหนึ่งของ SRAM ของฉันและประมาณ 75% ของแฟลชของฉันถูกใช้จนหมดโดยบัฟเฟอร์หน้าจอและสตริง ขณะนี้ฉันกำลังแสดงตัวเลขพลังงานต่ำสุด / เฉลี่ย / เฉลี่ยเวลาเที่ยงคืนเมื่อรูปประจำวันรีเซ็ตระบบจะตรวจสอบว่าปริมาณการใช้พลังงานสำหรับวันนั้นสูงกว่าหรือต่ำกว่าค่าต่ำสุดหรือค่าต่ำสุดก่อนหน้านี้และเก็บค่าไว้ ค่าเฉลี่ยจะคำนวณโดยหารปริมาณการใช้พลังงานสะสมด้วยจำนวนวัน ฉันต้องการแสดงค่าเฉลี่ยรายวันในสัปดาห์ที่แล้วและเดือนที่แล้ว (4 สัปดาห์สำหรับความเรียบง่าย) เช่นค่าเฉลี่ยเคลื่อนที่ ขณะนี้สิ่งนี้เกี่ยวข้องกับการบำรุงรักษาอาร์เรย์ของค่าในช่วง 28 วันที่ผ่านมาและการคำนวณค่าเฉลี่ยของทั้งอาร์เรย์สำหรับรายเดือนและ 7 วันล่าสุดสำหรับรายสัปดาห์ ตอนแรกฉันทำสิ่งนี้โดยใช้อาร์เรย์ลอย (เนื่องจากพลังงานอยู่ในรูปแบบ "12.12kWh") แต่ใช้ 28 * 4 ไบต์ = 112 ไบต์ (5.4% ของ SRAM) ฉันไม่รังเกียจที่จะมีเพียงจุดทศนิยมเดียวของความละเอียดดังนั้นฉันจึงเปลี่ยนเป็นการใช้ uint16_t และคูณตัวเลขด้วย 100 ซึ่งหมายความว่า 12.12 แทนด้วย 1212 และฉันหารด้วย 100 เพื่อการแสดงผล …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.