Tôi đang cố gắng tìm ra một cách hiệu quả để tính toán nghịch đảo trên một AVR (hoặc xấp xỉ nó).
Tôi đang cố gắng tính toán chu kỳ xung cho động cơ bước để tôi có thể thay đổi tốc độ tuyến tính. Khoảng thời gian tỷ lệ thuận với tốc độ nghịch đảo của tốc độ ( p = K/v
), nhưng tôi không thể nghĩ ra một cách tốt để tính toán điều này một cách nhanh chóng.
Công thức của tôi là
p = 202/v + 298; // p in us; v varies from 1->100
Thử nghiệm trên Arduino, bộ phận dường như bị bỏ qua hoàn toàn p
cố định tại 298
(mặc dù có lẽ điều này sẽ khác trong avr-gcc). Tôi cũng đã thử tính tổng v
trong một vòng lặp cho đến khi vượt quá 202
và đếm các vòng lặp, nhưng điều này khá chậm.
Tôi có thể tạo một bảng tra cứu và lưu trữ trong flash, nhưng tôi tự hỏi liệu có cách nào khác không.
Chỉnh sửa : Có thể tiêu đề phải là "phân chia hiệu quả" ...
Cập nhật : Khi pingswept chỉ ra, công thức của tôi để ánh xạ khoảng thời gian thành vận tốc là không chính xác. Nhưng vấn đề chính là hoạt động phân chia.
Chỉnh sửa 2 : Khi điều tra thêm, phân chia đang làm việc trên arduino, vấn đề là do cả công thức không chính xác ở trên và tràn int ở nơi khác.