การสร้างเครื่องทดสอบเซลล์แสงอาทิตย์ด้วย Mecrisp-Stellaris Forth

December 17, 2022 0 By cngf

ในบทความสองบทความสุดท้ายที่ออกมาฉันคุยโวเกี่ยวกับวิธีที่มันน่าทึ่ง แต่แปลกจากนั้นคุณจะตั้งค่าบนระบบพื้นฐานและกะพริบไฟ LED และในขณะที่ฉันได้ชี้คุณที่มัลติทาสเซอร์เรายังไม่ได้ใช้งานจริงมากนัก การเริ่มต้นใช้งานในระบบที่สี่เช่นนี้คือการต่อสู้ประมาณครึ่งหนึ่ง การทำงานภายในไมโครคอนโทรลเลอร์นั้นแตกต่างจากการรวบรวมไมโครคอนโทรลเลอร์และหาเวิร์กโฟลว์วิธีการแก้ปัญหาเทคนิคและที่ซึ่งทรัพยากรที่เป็นประโยชน์ไม่จำเป็นต้องชัดเจน นอกจากนี้ยังมีคุณสมบัติที่ยอดเยี่ยมของ Mecrisp-Stellaris ออกมาว่าคุณอาจไม่สังเกตเห็นจนกว่าคุณจะแฮ็คบนระบบในขณะที่

เป็นการดีที่คุณจะมองไปที่การพกพาของคนที่ทำสิ่งนั้นและคุณจะเห็นว่าพวกเขาทำงานอย่างไร นั่นเป็นเป้าหมายของชิ้นนี้ หากคุณกระพริบใน Mecrisp-Stellaris-Plus-Embello รุ่นของเราแล้วคุณก็พร้อมที่จะติดตาม ถ้าไม่กลับไปทำการบ้านของคุณอย่างรวดเร็ว เราจะยังอยู่ที่นี่เมื่อคุณทำเสร็จแล้ว โพสต์นี้จำนวนมากจะมีความมั่นใจมากกับรสชาติของ Mecrisp-Stellaris ออกมา แต่เนื่องจากมันไหลบนชิปแขนตันที่นั่นนี่ไม่ใช่สถานที่ที่ไม่ดีที่จะเป็น

รับ indrimatized

สิ่งแรกที่คุณจะต้องคุ้นเคยกับการสแต็ก คุณรู้ไหมว่าเกาลัดเก่าเกี่ยวกับผู้คนเท่านั้นที่สามารถรักษาห้า (เจ็ด?) สิ่งที่อยู่ในใจของพวกเขาในครั้งเดียว? ออกมาให้กับการทดสอบ

ครั้งสุดท้ายที่ฉันชี้ไปที่คำสั่ง .s (“พิมพ์สแต็ก”) สั้น ๆ ในรุ่น Hackaday ฉันได้กำหนด Mecrisp แบบดั้งเดิมอีกครั้งว่าจะเป็น verbose น้อยลงเล็กน้อยและต่อดวงตาของฉันสามารถอ่านได้มากขึ้น หากคุณพบว่าตัวเองกดปุ่มมากและคุณจะฉันจะเขียนฟังก์ชั่นที่ (ชั่วคราว) เขียนทับ “ตกลง” พรอมต์โดยการผนวกการพิมพ์สแต็กไปที่มันเมื่อใดก็ตามที่คุณกด Enter พิมพ์พิมพ์แพ็คแล้วกดป้อนอีกครั้งเพื่อดูว่ามันทำงานอย่างไร การกดปุ่มรีเซ็ตหรือการรีเซ็ตการพิมพ์จะเช็ดทุกอย่างใน RAM และนั่นรวมถึงพรอมต์การพิมพ์สแต็กดังนั้นคุณจะกลับไปที่กระดานชนวนที่สะอาด

ตอนนี้อาจเป็นช่วงเวลาที่ดีในการเล่นกับผู้ให้บริการสแต็ก คุณอ่านอภิธานศัพท์ Mecrisp หรือไม่? ตรวจสอบรายการของการดำเนินงานของสแต็กการเล่นกลที่นั่น เปิด Print.stack และเล่นรอบจนกว่าพวกเขาจะสมเหตุสมผล

คุณเรียกใช้คำพูดหรือยัง มันจะแยกรายการที่เชื่อมโยงของทุกคำที่รู้พร้อมกับที่ตั้งหน่วยความจำที่พวกเขาอาศัยอยู่และรายละเอียดเพิ่มเติมบางอย่าง – รายละเอียดมากเกินไปเว้นแต่ว่าคุณกำลังดีบั๊กระบบ มีคำพิเศษที่ไม่เป็นมาตรฐานใน Mecrisp ที่เพิ่งพิมพ์ชื่อฟังก์ชั่น: รายการ ให้การยิงตอนนี้ หากคุณยังไม่ได้กำหนดคำสองสามคำให้ทำเช่นนั้น

: HW “สวัสดีโลก!” cr;
เป็นสิ่งที่ดีที่จะมีในมือ

เลเยอร์ในหน่วยความจำ

หน่วยความจำของ Mecrisp-Stellaris แบ่งออกเป็นสองสถานที่: RAM และแฟลช คำทั้งหมดที่ให้ไว้ก่อนที่เครื่องหมาย “- mecrisp-stellaris-core -” อยู่ใน RAM และจะหายไปในการรีเซ็ตหรือปิดเครื่อง ฟังก์ชั่น RAM ใหม่จะถูกผนวกเข้ากับด้านหน้าของรายการ

หลังจาก “- Mecrisp-Stellaris Core -” มาร์คมาฟังก์ชั่นในแฟลช ในช่วงต้นของแฟลชก่อน “- พจนานุกรมแฟลช -” เป็นแกนกลางธรรมดา จากที่นั่นจนกระทั่ง “<>” เป็นคำที่นำมาจากการกระจาย Mecrisp ที่มีประโยชน์ปกติรวมถึงฟังก์ชั่นการดีบักบางอย่างและมัลติทาสกิ้ง ก่อนหน้านี้ “<>” เป็นผลงานจากไลบรารี Embello รวมถึงคำจำกัดความของ GPIO จำนวนมากและสิ่งเหล่านั้นก่อน “<>” ถูกเพิ่มเข้ามาสำหรับโพสต์ชุดนี้

สิ่งที่ไม่ชัดเจนคือเครื่องหมายเหล่านี้ทั้งหมดที่มีวงเล็บรอบตัวพวกเขาเป็นของแข็ง สิ่งเหล่านี้ช่วยให้คุณล้างแฟลชจนกระทั่งตำแหน่งหน่วยความจำนั้น ดังนั้นหากคุณเพิ่มฟังก์ชั่นพิเศษให้เป็นแฟลชและต้องการล้างกลับสู่สถานะเริ่มต้นของ Hackaday Edition คุณสามารถพิมพ์ << Hackaday-extras >> ฟังก์ชั่นพิเศษจะถูกลบและรีเซ็ตชิป (โปรดทราบว่าสิ่งนี้สูญเสียอะไรก็ตามที่อยู่ใน RAM!) คำสั่ง eraseflash จะช่วยให้คุณกลับไปที่ “- พจนานุกรมแฟลช -”

เขียนทับประวัติศาสตร์

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

: ฟู “ฟู!” ;
: บาร์ฟู “บาร์!” ;
บาร์ฟู! บาร์! ตกลง.
: Foo “Bizzle!” ; redefine foo ตกลง.
Foo Bizzle! ตกลง.
บาร์ฟู! บาร์! ตกลง.

ในทางกลับกันนี่เป็นวิธีที่ยอดเยี่ยมในการทำงานที่ใช้ประโยชน์จากคุณสมบัติหน่วยความจำต่าง ๆ เหล่านี้ RAM ได้รับการลบในการรีเซ็ตทุกครั้งให้กระดานชนวนที่สะอาด แต่โดยใช้ CornerStones, Flash ไม่ได้เปลี่ยนไม่ได้เช่นกัน แน่นอนว่าสิ่งที่ลึกลงไปในแฟลชที่คุณต้องลบคำศัพท์มากขึ้นที่คุณต้องกำหนดใหม่ในภายหลังโดยสมมติว่าบางคนมีประโยชน์ สิ่งนี้แสดงให้เห็นถึงเทคนิคชั้นในการพัฒนาด้วยคำ “หลัก” ที่สุดในสุดในแฟลช นอกจากนี้ยังเป็นธรรมชาติเพราะคำต้องมีการกำหนดที่จะถูกเรียกว่าการกำหนดพื้นฐานที่ทำให้เข้าใจก่อน

คุณสามารถรวบรวมคำศัพท์ใหม่กับ RAM (ค่าเริ่มต้น) โดยการเรียก CompileToram หรือแฟลชโดยเรียกใช้ compiletoflash ต้นแบบคำพูดของคุณใน RAM ให้บริการฟรีเพื่อเขียนทับพวกเขาเป็นจำนวนมากตามที่คุณต้องการ แต่โปรดจำไว้ว่าคุณต้องกำหนดคำเหล่านี้ใหม่ ๆ หลังจากที่คุณเปลี่ยนบางสิ่งบางอย่างต้นน้ำเพื่อให้ประวัติการโทรอยู่เหมือนเดิม เมื่อคุณทำกับชิ้นส่วนของการพัฒนาให้พิมพ์รีเซ็ตและล้าง RAM ตอนนี้กำหนดคำเหล่านี้เป็นแฟลชใหม่ ๆ หากคุณพัฒนาแอปพลิเคชันของคุณจากล่างขึ้นบนคุณจะพบว่าทั้งหมดนี้แขวนอยู่ด้วยกันอย่างดี เมื่อคุณค้นพบข้อผิดพลาดในบางสิ่งที่เขียนไปแล้วเพื่อแฟลชเรอร์สโทเนอร์สมาถึงการช่วยเหลือ

ในที่สุดลักษณะของนิยามที่ฟอร์ทเลเยอร์นี้อาจมีประโยชน์จริงๆ ตัวอย่างเช่นฟังก์ชัน init ที่กำหนดไว้ในแฟลชจะทำงานในการรีเซ็ตแต่ละครั้ง มันมีสิ่งต่าง ๆ เช่นการตั้งค่าความเร็วโปรเซสเซอร์และระบบเห็บที่คุณอาจไม่ต้องการยุ่ง เนื่องจากคุณสามารถเขียนทับ init init และการรวบรวมใด ๆ ใช้คำที่มีอยู่ในเวลาที่รวบรวมคุณสามารถเลเยอร์ฟังก์ชั่นการใช้งานของคุณเข้าสู่ init :: init init “Howdy!” cr;. “init” แรกคือชื่อของคำใหม่และที่สองคือการเรียก init ที่มีอยู่แล้วและทำการตั้งค่าทั้งหมด ส่วนที่เหลือของคำจำกัดความคือคุณที่จะเล่นด้วย ในการรีสตาร์ททุกอย่างจะถูกดำเนินการในการซื้อที่กำหนดไว้

สิ่งมีชีวิตที่สะดวกสบาย

ฉันเขียนรหัสจำนวนมากในโปรแกรมแก้ไข (VIM) แล้วส่งไปที่ชิปเพื่อเล่นกับ โดยเฉพาะอย่างยิ่งฉันเขียนสคริปต์ที่เรียกว่า forth_upload.sh ที่มีต่อไปนี้:

[[$ 1]] && เทอม = $ 1 || คำ = / dev / ttyusb0
ล่าช้า = 0.2
ในขณะที่อ่าน -r f; ทำ echo “$ f”; echo “$ f”> $ คำ; สลีป $ {ความล่าช้า} s; เสร็จแล้ว

ในการส่งไฟล์ไปยังพอร์ตอนุกรมและเป็นต้นไป FORTH_UPLOAD.SH