Electoday 4.0

ขณะที่ Debug [stm32f103] มีวิธีไหน ดูจำนวน clock ที่ใช้ไปบ้างครับ

Offline TaoTao

  • ***
  • 189
    • View Profile
คือ ผมลองตั้ง TIM1 ดูบิต TIM1->CNT
และ Interrrupt TIM1
มันก็เหมือนว่า จะเชื่อไม่ได้

เพราะ ตำแหน่งเดียวกันที่ ISR ถัดไป
ค่ามันไม่เท่ากัน เฉยเลย

ARM มันมีวิธีอื่นอีกเปล่าอ่ะครับ
ขอบคุณล่วงหน้าครับ
 8)

Offline dec

ใน debug โหมด มันจะ break cpu ครับ การ break cpu ไม่ได้ทำให้ peripheral หยุดทำงานด้วยครับ พวก clock มันก็ยังทำงานอยู่

ทางที่ดีถ้าจะจับเวลาอย่าหยุด cpu ครับ เขียน code เก็บค่าเวลาตามจุดต่างๆ ในโปรแกรมที่จะวัดลงตัวแปรไว้ แล้วปล่อยให้ cpu รันจนจบโปรแกรมที่ต้องการ แล้วค่อยมา break ดูทีหลังทีเดียวครับ ค่ามันคงไม่เท่ากันเป๊ะๆ ทุกรอบ แต่ก็น่าจะใกล้เคียงกัน

Offline az

  • ***
  • 156
    • View Profile
หา j-link ไว้สักอัน แล้วโลกของ ARM มันจะง่ายขึ้น
เพราะแสวงหา..  มิใช่เพราะรอคอย
เพราะเชี่ยวชาญ..  มิใช่เพราะโอกาส
เพราะสามารถ..  มิใช่เพราะโชคช่วย
ดังนี้แล้ว "ลิขิตฟ้า  หรือจะสู้มานะตน..."

Offline TaoTao

  • ***
  • 189
    • View Profile
ใน debug โหมด มันจะ break cpu ครับ การ break cpu ไม่ได้ทำให้ peripheral หยุดทำงานด้วยครับ พวก clock มันก็ยังทำงานอยู่

ทางที่ดีถ้าจะจับเวลาอย่าหยุด cpu ครับ เขียน code เก็บค่าเวลาตามจุดต่างๆ ในโปรแกรมที่จะวัดลงตัวแปรไว้ แล้วปล่อยให้ cpu รันจนจบโปรแกรมที่ต้องการ แล้วค่อยมา break ดูทีหลังทีเดียวครับ ค่ามันคงไม่เท่ากันเป๊ะๆ ทุกรอบ แต่ก็น่าจะใกล้เคียงกัน

อ่อ ได้ ไอเดียละ
เดี๋ยวจัด arr สัก 100 สมาชิกเลย อิอิ

ขอบคุณมากมายครับ
 ^_^!
_/\_

Offline TaoTao

  • ***
  • 189
    • View Profile
หา j-link ไว้สักอัน แล้วโลกของ ARM มันจะง่ายขึ้น

ง่ะ ปัจจุบันก็ใช้อยู่ครับ v9.4
แต่ก็ ใช้อย่างฉาบฉวย ดีบักอย่างเดียว
มันมีอะไรหว่า เดี๋ยวลองดูเพิ่มสักหน่อย
หายไปนานครับ ลืมไปหมด เพิ่งมาจับอีกรอบ อิอิ
 8)

Offline wlasoi

  • *****
  • 739
    • View Profile
ดูได้จาก program counter อย่างเดียว .. แล้วเอาไปคูณกับคำสั่งแต่ล่ะคำสั่ง .. คงต้อง asembly มั้ง

Offline az

  • ***
  • 156
    • View Profile
หา j-link ไว้สักอัน แล้วโลกของ ARM มันจะง่ายขึ้น

ง่ะ ปัจจุบันก็ใช้อยู่ครับ v9.4
แต่ก็ ใช้อย่างฉาบฉวย ดีบักอย่างเดียว
มันมีอะไรหว่า เดี๋ยวลองดูเพิ่มสักหน่อย
หายไปนานครับ ลืมไปหมด เพิ่งมาจับอีกรอบ อิอิ
 8)

https://www.segger.com/j-link-j-scope.html

ลองศึกษาดูนะครับ
ผมว่าหลายๆคน ไม่คุ้นการใช้งาน j-scope  เพราะส่วนใหญ่จะใช้ j-link เพื่อprogram และ debug แบบ break point (อ้างอิงตามความคิดเห็นที่ 1 )

Code: [Select]

unsigned cnt1;
unsigned cnt2;

ISR1 tim1_ovf {
 cnt1 = timer_counter1_reg;
 ..
 ...
 ....
}

ISR2 tim2_ovf {
 cnt2 = timer_counter2_reg;
 ..
 ...
 ....
}


หลังจากนั้นก็ลองใช้ J-Scope อ่านค่า cnt1,cnt2
เพราะแสวงหา..  มิใช่เพราะรอคอย
เพราะเชี่ยวชาญ..  มิใช่เพราะโอกาส
เพราะสามารถ..  มิใช่เพราะโชคช่วย
ดังนี้แล้ว "ลิขิตฟ้า  หรือจะสู้มานะตน..."

Offline TaoTao

  • ***
  • 189
    • View Profile
Quote

https://www.segger.com/j-link-j-scope.html

ลองศึกษาดูนะครับ
ผมว่าหลายๆคน ไม่คุ้นการใช้งาน j-scope  เพราะส่วนใหญ่จะใช้ j-link เพื่อprogram และ debug แบบ break point (อ้างอิงตามความคิดเห็นที่ 1 )

Code: [Select]

unsigned cnt1;
unsigned cnt2;

ISR1 tim1_ovf {
 cnt1 = timer_counter1_reg;
 ..
 ...
 ....
}

ISR2 tim2_ovf {
 cnt2 = timer_counter2_reg;
 ..
 ...
 ....
}


หลังจากนั้นก็ลองใช้ J-Scope อ่านค่า cnt1,cnt2

หุๆ ลองมั่วดูแว้ววว
อย่างกะ สโคปเลย
 :o

อ่อ แล้วใช้ อาเรย์
เก็บค่า CNT แหล่มแมวเลยครับ

ขอบคุณมากมาย คร๊าบบบ
 8)
_/\_