|
MP6602 Stepper Motor Driver Carrier |
|
12V, 100mA Isolated Step-Up/Step-Down Voltage Regulator S21Z1F12 |
|
TB67S579FTG Stepper Motor Driver Compact Carrier |
|
MP6603 Stepper Motor Driver Carrier |
|
Glideforce GF01-121005-1-66 Micro Linear Actuator with Limit Switches: 12V, 4.3kgf, 17.6mm/s, 50mm Stroke |
|
Glideforce GF01-121003-2-66 Micro Linear Actuator with Feedback Potentiometer: 12V, 4.3kgf, 17.6mm/s, 30mm Stroke |
|
ACS37030LMYATR-025B3 Current Sensor Compact Carrier -25A to +25A, 3.3V |
|
MPQ6612A Single Brushed DC Motor Driver Carrier (Soldered Connectors) |
|
ACS37100LMATR-050B3 TMR Current Sensor Large Carrier -50A to +50A, 3.3V |
|
QTRX-MD-01A-S Reflectance Sensor: 1-Channel, 8mm Wide, Analog Output, Low Current, Side-Entry Connector |
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....