|
Pololu Isolated USB-to-I²C Adapter with Isolated Power |
|
TB67S581FNG Stepper Motor Driver Carrier (Soldered Header Pins) |
|
ACS37041KLHBLT-010B3 Current Sensor Micro Carrier -10A to +10A, 3.3V |
|
Pololu Power ORing Ideal Diode Pair, 4-60V, 6A |
|
Pololu Digital Distance Sensor, 25cm, Side-Entry Connector |
|
Pololu RC Switch with Isolated Solid State Relay/Switch, SPST, 30V, 10A |
|
Pololu Digital Distance Sensor with Pulse Width Output, 300cm Max, Side-Entry Connector |
|
Pololu Ideal Diode Reverse Voltage Protector, 4-60V, 20A |
|
CT433-HSWF70MR TMR Current Sensor Large Carrier -70A to +70A, 3.3V |
|
TB67H453FNG Single Brushed DC Motor Driver Carrier |
Advanced hobby servo control using only a timer and interrupts
- 9 December 2013Thanks Jan. Yes, no point to let the MCU sitting around
-Katlv
Advanced hobby servo control using only a timer and interrupts
- 5 December 2013Thanks for the reply Jan.
Apologies for my bad English. Guess I was listening too much Japanese Songs XD. Yes, all the servo control pulses are done in an interrupt loop. So consider that a typical servo control pulse is in range from 0.5ms to 2.5ms. So the longest interrupt loop for controlling those servos is about 2.5ms. But u can reduce the idle time by at least 0.5ms becuase the only thing the MCU doing is set some pins high at the stating 0.5ms period. Therefore, what i did in my code is:
a) Start a new 20ms period, do the sorting and set all the needed pins.
b) put the minimal value into a Timer Counter waiting for the overflow and leave the interrupt.
c) Once the minimal pulse reach to its end, come back to the interrupt and start to reset everybody
Hope that helps. And thx again for your tutorial!
Advanced hobby servo control using only a timer and interrupts
- 4 December 2013Very nice tutorial! Thank you so much!!
Just one thought that you probably already implemented in your product. Since you have sorted all your pulse and know the minimal required time, u can release that time period to do other things. So here is how i implement it. 1) sort the pulse time. 2) write that minimum pulse (minus) some of that to variable. 3) put that variable into a Timer for overflow interrupt....