Trích:
Nguyên văn bởi namqn
Một trong những lý do là tần số thực thi lệnh của bạn không phải là giá trị mà tôi đã giả thiết (16 MIPS). Nói cách khác, tần số xung clock của bạn nhỏ hơn tần số giả định 32 MHz của tôi. Bạn kiểm tra lại xem.
Ngoài ra, bạn kiểm tra lại code hợp ngữ mà trình biên dịch đã tạo ra xem có phát sinh thêm lệnh thừa nào hay không.
Thân,
|
Mình đã kiểm tra, theo như config mình đã post,
Code:
_CONFIG1 (JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF &
ICS_PGx1 & FWDTEN_OFF & WINDIS_OFF & FWPSA_PR128 & WDTPS_PS1)
_CONFIG2 (IESO_OFF & PLLDIV_DIV5 & PLL_96MHZ_ON & FNOSC_PRIPLL &
FCKSM_CSDCMD & OSCIOFNC_ON & IOL1WAY_OFF & DISUVREG_OFF & POSCMOD_HS)
theo mình nghĩ thì đúng 32Mhz, ngoài ra mình có dùng REFO để đo, đúng 32Mhz.
Vì mình muốn viết function giống CCS, tức là cần delay bao nhiêu us thì truyền tham số vào.
vì vậy mình viết hàm delayus(unsigned int u2_timer), có thể chính việc gọi hàm làm thời gian delay không đúng theo lý thuyết nữa.
Để xem được code asm khi compile bằng C30, thì làm như thế nào? Mình dùng MPLAB nên khi compile xong ko có file mã asm.
Cám ơn nhiều.