Trích:
Nguyên văn bởi nvtri
Cảm ơn anh Nam, em đã hiểu cách gửi dữ liệu của đoạn code trên rồi, nhưng em còn thắc mắc một số vấn đề sau:
+)Thứ nhất: SPEEDMULT=60*(Fcy/256); // sẽ bằng 2343750 với Fcy=10 Mhz
k=SPEEDMULT/timer3avg;
Thì sao k có vận tốc là (vòng/phút), mong anh giải thích, cái này em xem trong code của microchip về điều khiển động cơ BLDC. (lúc nãy em post lộn SPEEDMULT=4).
+)Thứ nhì: Số 0x30 là bắt đầu của vùng nhớ nào?
|
Thứ nhất: Tôi cũng không rõ vì sao k tính bằng vòng/phút, vì bạn không cho biết người ta tính timer3avg ra sao. Do đó, tôi chỉ giả sử rằng k tính bằng vòng/phút, dựa vào cách tổ chức thông điệp trong bộ đệm OutData[] (có cụm từ "rpm").
Thứ hai: 0x30 là mã ASCII của ký tự '0'. Nếu bạn tính ra giá trị của chữ số thập phân là x, thì x + 0x30 sẽ chuyển nó thành ký tự tương ứng với giá trị của x. Ví dụ, x = 5 thì x + 0x30 sẽ cho bạn ký tự '5', có thể hiển thị được trên các màn hình sử dụng mã ASCII.
Thân,