thắc mắc về DCO

chung

Trứng gà
Mình có đoạn code khai báo DCO 1Mhz thì 1 chu kì máy là 1uS nhưng thực tế kiểm tra với __delay_cycles thì lại ko đúng như thế:
Trong video mình viết đoạn code đảo giá trị P1 sau mỗi 10000 chu kì và 100000 chu kì.
Với delay 10000 chu kì, code asm gán R15 giá trị 0xD03 tương ứng 3331, sau đó tiến hành add.w #0xFFFF,R15 mất 1 chu kì máy và 1 lệnh jc nhảy lên làm lại add.w tốn 2 chu kì máy. Tổng cộng ta có 3331*3 chu kì máy=9993 chu kì máy. Theo như tính toán thì delay sẽ tiêu tốn thời gian là gần 10mS với DCO 1Mhz tương đương tần số tạo ra trên P1 là 50Hz.
Nhưng thực tế mình đo thì delay chỉ tiêu tốn 500uS tương ứng tần số 1000Hz lớn hơn 20 lần so với tính toán ??? ai biết tại sao giải thích giúp mình với.
 

Manhdd

Cố Vấn CLB
Staff member
DCO Clock đúng là có không chính xác nhưng không đến nỗi nhanh hơn 20 lần đâu :5cool_sweat:
Có thể thông tin CALBC1_1MHZ, CALDCO_1MHZ bị sai, bạn thử kiểm tra, đổi tần số khác xem kết quả thế nào?
 

mafiaWolf

Chủ tịch Hội phụ nữ PIF
Cái Multi-Instrument Pro đó có cần phần cứng gì để chạy không vậy anh?
 

chung

Trứng gà
lúc debug mình mở view calibration data thì tất cả các giá trị lại là 0xFF, nếu thêm đoạn lệnh
Code:
    if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)
    {
      while(1);                        // If cal constants erased,
    }
thì nó bị mắc ngay while(1);
Mình cài CCS để thử lại thì các giá trị calibration data cũng bị 0xFF
Ai biết tại sao chỉ mình sửa với
Cái Multi-Instrument Pro đó có cần phần cứng gì để chạy không vậy anh?
à mình dùng trực tiếp ngỏ vào mic bạn à nên nó bị giới hạn tần số cực đại chắc chỉ đc 20kHz
 

Manhdd

Cố Vấn CLB
Staff member
Vậy là các giá trị calib trong flash bị xóa rồi (xóa thành 0xFF), bạn mở datasheet lên để xem cần ghi giá trị nào để có clock tầm 1MHz, rồi tự calib lại nhé :)
 

chung

Trứng gà
đã xong ^^, vào code examples nạp cái msp430g2xx3_dco_flashcal.c vào thế là nó lấy lại cái mớ calibration data hihihi.
 

Carue

Trứng gà
đã xong ^^, vào code examples nạp cái msp430g2xx3_dco_flashcal.c vào thế là nó lấy lại cái mớ calibration data hihihi.
Ôi mình vọc một hồi nó mất tiu hết rồi bây giờ không biết calibration như thế nào đây?:(( mình đã nạp luôn file msp430g2xx3_dco_flashcal.c rồi mà cũng không được:((
 

chung

Trứng gà
đã xong ^^, vào code examples nạp cái msp430g2xx3_dco_flashcal.c vào thế là nó lấy lại cái mớ calibration data hihihi.
Ôi mình vọc một hồi nó mất tiu hết rồi bây giờ không biết calibration như thế nào đây?:(( mình đã nạp luôn file msp430g2xx3_dco_flashcal.c rồi mà cũng không được:((
msp430g2xx3_dco_flashcal.c nó sẽ sử dụng thêm thạch anh ngoài 32kHz để calib lại DCO, nên bạn phải gắn thêm thạch anh 32kHz vào. Sau khi calib xong led P1.0 sẽ nháy
 

Carue

Trứng gà
đã xong ^^, vào code examples nạp cái msp430g2xx3_dco_flashcal.c vào thế là nó lấy lại cái mớ calibration data hihihi.
umh, thì mình cũng có hàn thạch anh vào rồi nhưng mặc định thì nó chay 1MHz còn khi them các config khác để chon tần số như
BCSCTL1 = CALBC1_1MHZ; //dinh nghia dao dong noi 1MHz
DCOCTL = CALDCO_1MHZ;

hay

BCSCTL1 = CALBC1_8MHZ; //dinh nghia dao dong noi 8MHz


DCOCTL = CALDCO_8MHZ;
thì nó chạy trật lất ah:5cool_sweat:
 

chung

Trứng gà
đây là giá trị DCO của mình, đã test rồi cũng khá chính xác. Bạn mở con 2553 của bạn ra xem calib nó có gần giống vậy ko.
 

Carue

Trứng gà
đây là giá trị DCO của mình, đã test rồi cũng khá chính xác. Bạn mở con 2553 của bạn ra xem calib nó có gần giống vậy ko.
nó cũng gần thế đấy có điều là khi không cấu hình thị nhận là 1MHz, còn khi có can thiệp vào tí là chạy sai bét hết luôn:-(
 

chung

Trứng gà
đây là giá trị DCO của mình, đã test rồi cũng khá chính xác. Bạn mở con 2553 của bạn ra xem calib nó có gần giống vậy ko.
nó cũng gần thế đấy có điều là khi không cấu hình thị nhận là 1MHz, còn khi có can thiệp vào tí là chạy sai bét hết luôn:-(
mình cũng ko hiểu ^^ nhưng sau khi mình calib lại thì nó chạy tương đối là đúng
 
Top