| Frieder Ferlemann 01/19/10 05:00 Read: 248 times Old Europe |
#172592 - absolutely-locating xdata at 256 byte boundary Responding to: Andy Neil's previous message |
Andy Neil said:
Frieder Ferlemann said:
unsigned char __xdata __at(0x0000) table_P2_over_time[200 + 1]; I guess that's SDCC syntax? Yes it's SDCC syntax. Keil would be somewhat different. What is the point in absolutely-locating it? Seems unnecessary to me... The point is to tell the compiler that it's located at a 256 byte boundary. So it does not need a full 16 bit addition of array base address and index but instead can directly load dpl with the high byte of the address and dpl with the index. So you the 8bit indexed xdata array access is only: 0006 85*00 82 383 mov dpl,_ms_tenth_countdown 0009 75 83 00 384 mov dph,#(_table_P2_over_time >> 8) 000C E0 385 movx a,@dptr instead of: 000B E5*00 386 mov a,_ms_tenth_countdown 000D 24r00 387 add a,#_table_P2_over_time 000F F5 82 388 mov dpl,a 0011 E4 389 clr a 0012 34s00 390 addc a,#(_table_P2_over_time >> 8) 0014 F5 83 391 mov dph,a 0016 E0 392 movx a,@dptr AFAIK you'd tell Keil the absolute location of the variable at the linking stage (which is to late for code generation so the 16 bit addition has been generated). So out of the box Keil probably cannot do it. void Timer0_ISR (void) interrupt 1 { For Keil, consider adding a using option to specify a Register Bank - this can significantly reduce the overhead on entering & leaving the ISR... For SDCC you can consider using using as well. But as SDCC doesn't use R0..R7 in the proposed code snippet there is no overhead to reduce:^) |
| 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 |



