| Frieder Ferlemann 01/19/10 02:39 Read: 234 times Old Europe |
#172586 - table lookup Responding to: Yash Chitalia's previous message |
The lookup table together with the IRQ routine allows you to set Port1 with its 8 output pin (P1_0, P1_1, P1_2, ... P1_7) to any value with a time resolution of 0.1ms and a cyclic repetition of the pattern every 18 ms.
Maybe it helps to think of it as a kind of a (arbitrary) binary function generator with 8 outputs, fixed 0.1ms resolution and fixed pattern length of 180 entries. Taking servo(12,10,15,14); of your posted code as example. You'd want to setup the table so it gives you 0x0f, /* 0.0 ms: pin0=1, pin1=1, pin2=1, pin3=1, pin4..7= 0 */ 0x0f, /* 0.1 ms: same */ 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, /* 1.0 ms: pin0=1, pin1=1, pin2=0, pin3=1, pin4..7= 0 */ 0x0b, 0x03, /* 1.2 ms: pin0=1, pin1=1, pin2=0, pin3=0, pin4..7= 0 */ 0x03, 0x02, /* 1.4 ms: pin0=0, pin1=1, pin2=0, pin3=0, pin4..7= 0 */ 0x00, /* 1.5 ms: pin0=0, pin1=0, pin2=0, pin3=0, pin4..7= 0 */ 0x00, 0x00, ... /* another 162 zero's following here */ when the table contents are read and fed to P1 with: P1 = table_P1_over_time [ ms_tenth_countdown ]; (Note, I used a countdown to index the table so the compiler could later make use of the compact djnz instruction) |
| Topic | Author | Date |
| Controlling multiple servo motors | Yash Chitalia | 01/17/10 14:47 |
| executing code takes time | Erik Malund | 01/17/10 15:27 |
| PWM code | Steve M. Taylor | 01/17/10 15:35 |
| Thanks...now, about the PCA timer.. | Yash Chitalia | 01/17/10 16:06 |
| If SDCC Then Keil | Michael Karas | 01/17/10 16:15 |
| PWM IRQ code in C, bitops, 45 byte | Frieder Ferlemann | 01/18/10 05:19 |
| Optimization having no effect. | Yash Chitalia | 01/18/10 11:36 |
| PWM IRQ code in C, lookup table, 32 byte | Frieder Ferlemann | 01/18/10 05:29 |
| I haven't understood the table lookup concept very well... | Yash Chitalia | 01/19/10 00:55 |
| table lookup | Frieder Ferlemann | 01/19/10 02:39 |
| PWM IRQ code in C, lookup table, 30 byte | Frieder Ferlemann | 01/19/10 03:07 |
| Compiler specifics | Andy Neil | 01/19/10 04:35 |
| absolutely-locating xdata at 256 byte boundary | Frieder Ferlemann | 01/19/10 05:00 |
| I see. | Andy Neil | 01/19/10 06:34 |
| An example code.. | Yash Chitalia | 01/20/10 02:20 |
| Keil: Specifics and non-specifics | Andy Neil | 01/20/10 02:50 |
| Not really working... | Yash Chitalia | 01/20/10 03:55 |
| Enough power? | Per Westermark | 01/20/10 09:45 |
| RE: running 32 servo motors | Andy Neil | 01/20/10 10:34 |
| The chip sounds perfect... | Yash Chitalia | 01/18/10 11:47 |
| not worth it | Erik Malund | 01/18/10 12:10 |
| Servo control will become difficult then... | Yash Chitalia | 01/18/10 12:42 |
| output | Andy Peters | 01/18/10 12:52 |
| HCT chips have ... | Erik Malund | 01/18/10 14:12 |
| Eval a concept with a single PCA and 3:8 HCT multiplexer? | Frieder Ferlemann | 01/18/10 14:36 |
| Check their website | Andy Neil | 01/18/10 14:44 |
| Here is the code... | Yash Chitalia | 01/18/10 15:28 |
| "sbit MTRS=P2^0;" is not OK here | Frieder Ferlemann | 01/18/10 16:11 |
| Keil syntax? | Andy Neil | 01/18/10 17:36 |
| "#define" not working.."sbit" works | Yash Chitalia | 01/18/10 23:32 |
| Yes, you were correct originally! | Andy Neil | 01/19/10 01:22 |
| Seconded | Andy Neil | 01/18/10 12:45 |
| Servo_0.1.zip | Murray R. Van Luyn | 01/18/10 15:02 |
links | James Hinnant | 02/18/10 21:10 |
| Eventually feed the guys at http://servomaster.sf.net ? | Frieder Ferlemann | 01/18/10 15:12 |
| servomaster.sf.net FLOSS | James Hinnant | 02/04/10 11:48 |
| Maybe of some use... | James Bowmaster | 02/10/10 14:40 |
| Whoops... found a bug | James Bowmaster | 02/10/10 16:35 |
| What bug? | Andy Neil | 02/10/10 16:41 |
| Bug | James Bowmaster | 02/10/10 18:47 |
| Improved version uploaded | James Bowmaster | 02/12/10 21:26 |



