--=-pwVCU2LK8/knOziCFhGA Content-Type: text/plain Content-Transfer-Encoding: 7bit On Sun, 2004-08-22 at 16:59, Herbert Graf wrote: > On Sat, 2004-08-21 at 02:54, Bob Barr wrote: > > You don't need to execute very many multi-cycle instructions to burn > > 200 clock cycles. > > > > Figuring timing budgets on a Z80 can be a real eye-opener. > > It would appear so. Thanks to all for the help. I have condensed my > results so perhaps somebody here will be able to tell me with certainty > if this is the best I can expect. > > I have the following code: > > while (1) > { > PC_DR |= (char)0x80; // MCLK high > > PC_DR &= (char)0x7f; // MCLK low > } > > Which compiles to this: > > 53 while (1) > 0000A9 A 134 L_12: > A 135 ; 54 { > A 136 ; 55 PC_DR |= (char)0x80; // > MCLK high > 0000A9 ED389E A 137 IN0 A,(158) > 0000AC CBFF A 138 SET 7,A > 0000AE ED399E A 139 OUT0 (158),A > > 61 PC_DR &= (char)0x7f; // MCLK low > 0000B1 ED389E A 146 IN0 A,(158) > 0000B4 CBBF A 147 RES 7,A > 0000B6 ED399E A 148 OUT0 (158),A > > 0000B9 C3 A9 00 00 A 154 JMP L_12 > > Which looks reasonable to me, yet when I put a scope on the pin I get a > 50kHz signal (please see attached image). Woops, small mistake on my part, was referencing the wrong image, I'm actually seeing 500kHz coming out, NOT 50kHz, please see the image attached to THIS message an ignore the earlier one... > Does this seem at all reasonable to anyone? > > I see nothing in the assembly that would take ANYWHERE near as long as > that, could the IO accesses REALLY be burning that many clock cycles? I > don't know how many cycles the JMP L_12 takes, but I can't imagine it's > in the hundreds. > > FWIW the dev kit is SUPPOSED to run at 50MHz, so I'm seeing 1000 clock > cycles needed to execute the above code. This should read: FWIW the dev kit is SUPPOSED to run at 50MHz, so I'm seeing 100 clocks cycles needed to execute the above code. > I REALLY hope I'm doing something wrong, otherwise this contest entry > will be academic at best, I'll probably enter with a piss poor slow > thing, and then rewrite everything for a PIC or AVR with a support CPLD > to make things easier on me... > > Thanks again to all for your help. TTYL Sorry about my previous post. Still, 100 clock cycles to toggle a pin?? ----------------------------- Herbert's PIC Stuff: http://repatch.dyndns.org:8383/pic_stuff/ -- http://www.piclist.com#nomail Going offline? Don't AutoReply us! email listserv@mitvma.mit.edu with SET PICList DIGEST in the body --=-pwVCU2LK8/knOziCFhGA Content-Disposition: attachment; filename=aclaim.jpg Content-Type: image/jpeg; name=aclaim.jpg Content-Transfer-Encoding: base64 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 /wCLYXwrF8Kz/iI/4lRfC1QviKH/AB8YviMaF8VjP+XjP+ZiP+ZiP+biR/z8R/Qxi8HGj+njR/Vo f18Z+HGj8dEdaDrQig+g3RDtQd6Heha1ajy1HkqK9WJpmWEvIG+tvJ92JzVkb2s5V5T2OSqEhVFW R1Y8dmf17sXi5GV8LKxfH5WL4rKynxOUXxGRi+EuyvwTRX4QXwlRfB4xfC4hfD4UL4rChfGYUL4/ EheFiQvExo/r0R+CgsVTpU6o6ohEIhabEkkknY7EkkjsdiSSSSR2hXyOXdlby+iMiVTIkldJVqW6 klZZlumNOOjaQrb5XJnMih+Qk1g9oiHZ4vGtYx/G2uU+HK/EJFfiqor8ZQXxuNC8DGLw8aF41Efg ohYqnRI6ohGxtrJJJJJJJJJa6qJzpP35J0nVsbGyz2vtZbtLdYoM/DSsskda5NrUrFlBj9Jajbdf Sk43hSy5nRlMu9fHewucNVPjVRiSFZEnY7HY7HYk7Ekkk6T9hfReGqxAyfonSSSSSdZ0kkb0bJJJ GzK4v2KvfO9m2y1v9bs2Jy/xoyXku5rVemJVX6VYXpLszmUtvTx3ojxrS/HKcY36k9JJ1n7Uk/RJ JJJdJqsJfROs/ROsk6NkkkjZJOjM/vEx5atXyVa7bN6NsgltUs0rZGyWiGWbZbjOjKc1wPcXPi8+ OU4xv1V+idJJ+uSfrknS6VlSEpJJJJJJ0kbJgkkkbJJGySSSdGSMviVn+Gp+KqPxo/Gjoh0R1R1Q qnUgaGiBouZjIpKmLax/PirfxivGPmr1n6J1RJOkkkkkkkkkkkmarRgrP02uqk6Tr5TiuHPLnSST Jldb1urD0kkbJ1bJGSN6N/RJI2MkbLcZeMguauLo/nx+fHZTjHyidZJJGyuSXOkklrqorurTnVmX J0VLqykkkkz+3DdpySSSeS4ePKxOSRsbMt1lMa6ZJ0kk8l+rxHs2SMs9qZ+rVuykkYyRsb0ZOkjY 2SNjY2WMplP5e1lwufG5wFHti5qySSfobHZq1HK0kzGZ+nE5qhPS/wDtOv4ljv3WuR2dlV0smTpJ n3PI9uN+mRsbKv8A22cZZJJLWhOMy8Vw5JGNmR+rE5rOjejJ0b0kkb0ZJI2NjZkMo+clt6Pb+fGe +BlXtie6ZI79nTJDnSRvaiTtjs+6ZIjOzLvXE4rJI3tjc2zr0+O/TJJlu61S7Kzs7J7SSWcLx7Se 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 iwzA/XS29LCe2NiFoiREieqZJOnaDsSSSTo2STrazlMkkbJJJJJJJGxEkkjesj0ZJOr0knRudGMY 2SSSNjY2WLFhmH3Ue+Nie2NiZOskiZJJOkkkkkkki0kkkRJJa8CZJI2SSSSSSSSSSSJ6zpJJI2SI Yx3Q8iPyIeVH5kfmHlPyjyn5GPIzs2OzO7HZjZO1iwzH7qc4xPagnpJJP0LWSSSSSRMkknSSdG4H kRW86NkjZJI2SSSTo2SJ6yN6t6rS72bGyZGyStS/NOGVGpbcCUigYxcWLDKe6nNBcYxEkkkiZJIi YJJJJJJJJJJJJJ0nRpIqiRskkbJGySSSSdUSTpOkkk6NklmW5GPStjJyrF+J2RHYSgiXG7W/BYsM rzV742J7Y2J6IkWk6ySSTo9JEySSdZJJLQxbEj0n6J1kkkkkROjJGyfoZYty2SSSVe+TmSrkb3mF V6fy3De5MliwyvNeaCe1GJiYmSIbEySSSSdJ0n6JE9JGySS25UksSIbJJJJJ1nRMWjJ0ekkkjY2W e7JGNicF7Tom0NscsUobZDGjqRAywxcrmjE9sb3TJEyRPSSSSSSdJJ0kQ3pJJJJJJbcq9pGyRskb JJJJJOxI2LVskkkkTJG9GOkn4zojqh0Q0jqOqIII0Y9WWLDFynvQRR7rRMkTJEySdJJJ0bJJEydJ J1kbHZzWzJJHsSdidJJJJJJEyujY2SSNk6SSNkkkjE92y3KZI3A7oVpGx2ExsbejLDFyuai4pymS IkTEySSSSSSSSSSRMkkkkkkkks4VHJJI9x7ayST9NVpIxvSdZJ0ej1sjtBVDcHZjcpRo3stxvd7k kjGMXK5oxMq90xMTJJJJJJJJJJJJJJJJJEyR2EyRMs4K2k7aSWUj20knWdKrWRskkkkkkkkkkbJJ 0tyPSwkJQWJge43A3oxjFz/NWIq90yRMTEySSSSSSSSSSSSSSSRskTJJLFYE9ESPcdSHrDOrFXSd GxuSSSSdWyRskknWyFqxKNGNCQ1JGjYxi5nerKleUyRMTnRDZJJJJJJJJJJJJJI2JkwSSWciaRIr EymydYRGkk6JjY39idJ0ZJJP0z9D0ejGWGLn+asQnuhCYidJJJJJJGySSSSRaSTpImSWTZ1E9FYT nWYOxJI3q2N6STrJJJOkkkkkkjek6N6Mkf0sYxc/zVlWJC0TEySSSSSSSSSSSRaySSJkiZJOjJ0m BXFaSdW0Sdh2JH9MkjejJJHrJJOkkk6N6P6IZDHRn4mx4T+aiEySRMkkkkkkkkkkn6JJJJJJJJEy SSdJJ0k7Hc7MdiZ1b0nSSSSSSRk/RDNyBVZ1Z1Op0Oh0Oh0R1R1OqOqOp1RCEt3zUqJkkkkkkkkk kkkkkkkkkjYmSSSSJkwdiSSdJ+tax9EEEEEEDRBBBBBGkfoFy6Oa0YqsVWdWQyGQzqdWdWdWdWdW dWdDqxUOp1Op1Op1Op1IOokQQQQR9EfYn9iXLop6o6kEEEEaQRpBH/wS5fP6tfua5cTsbGxsbGxs bGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGw4NjY2NjY2 NjY2NjY2NjY2NjY2NjYUH//aAAgBAgIGPwCqzXV+fs1+csrKysrK2AnhDAIiqeYhQa8uSl5bOykW cF/pidEC312cg8oaS8i6DFe2J7Laxf6U6tDZqeHDlpRBYot7W5tq9tC2sZ7r6b2ttX8fKqX+l5Yo tKh9zBFtvhBgEWjVQoojhFy/mryiwRDbUfDBEFttEIoURUWCClShUFno0PtWakIeGCjRpDSppzqN IUKVLAqQhkgp0QWTBoKH8bOnNy08GCopjDb9QxhM4POEQ+eOX/HP/9oACAEDAgY/AOmbq/Qh/aV/ /9oACAEBAQY/AOfLNmWYaZhGPU1/xyYlH+ifZmWzZsw2bdmyJJkgzTdN1mSXTJFMPg3XZs2Qb5Mc eWbRhmEY/E+hs/0R7M/an3PoZfJumKZumkEcOUa4s0zdkghW7Nm0ZaMMxTdd1wZMEM0SzBJHBHhz Zo0aNGjRo0aNGjCNGjRo0aNUzfs2bMu7NJVmCSUZMUiuEaMI0aNGjRo0at3Td+jRo0aNGjRo0ueL Juzfo0aNGjRmmTZlmXTRo0aNGkaNGjRryXk2xJs3SUSjOrZJuTuyZs0aNGjRo14GSV5bojYjJB6v RimTFPsSYsT+A/sY8t0QmjNUbI+lMGaQZ4M+bkx52SFdBEGqxY735UMhcefAl00aNc7vflP8pF+U 25vX42x0Y+Bvhi6fy0TZNzEptTP2tf4LZFqHa/ZkrzXw4tVFY/xPZE2eq0KbVAhWMVkk/QatYvNd YPW1kWKisY7JR7di9rXNFarGNDVmRwiHvhi6bIfE+GbVcx2MhITashjmirJ79itaHahW4N1VGPwX zYIPWxjsZNHVUdjEJ2u9PhRkhUgkapPPJJmqudztdHA6qjs9OyGIVcHt9T2WyXV0XCrJRkZJFJ8h 3exAvxXdXRwOqo7kKxDviuLoJJMGTBkl80XZpNjuVFZDMDsQ7FTBHdYWyGMdfX6mDJKJd8EWZ810 kxarM0ixUdVc6uSaK7JJgzx48CPBVs35qrnZHVFY6QevVqvfAueKLhQqKmdcSqnw4Iq6Se1kozbN ZIuXlKqpB7dGKepkxSKIUEsk/UiiJJPaKOn2MGCOzPHisXrhm2LZshkCJpKpolGjBjZ9zIzJ7IkV IIMH3EJozZP1PaybItkiskk3q+bc2YpFk0kUGTB6sVjHJN0Loh2exL8V2RXPBi6DJisk8HtbKP2p HwB2QOk+Jgz4n3+BTXHwuflDf8Arz8fEV8oL5HjhXyLgniXyJBF02r5Fn+a4tyY+esf0gX9ke69n Z2d07t7p3Xs74ezuzuvfJ3TuvdO7O6d07p2dnZ3TuvdO6d1//9k= --=-pwVCU2LK8/knOziCFhGA--