Длительность импульса и период

  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(sid) AS count FROM sessions WHERE timestamp >= 1786186552 AND uid = 0 in /var/www/fendercustomsh/data/www/avrlab.com/includes/session.inc on line 119.
  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT DISTINCT u.uid, u.name, s.timestamp FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.timestamp >= 1786186552 AND s.uid > 0 ORDER BY s.timestamp DESC in /var/www/fendercustomsh/data/www/avrlab.com/modules/user/user.module on line 764.

Я совсем новичок в программировании контролеров. Прошу помощи у знающих людей. Нужно сформировать последовательность импульсов длительностью 1мс с периодом 20мс для управления сервоприводом. Вот программа:

  1. #include <avr/io.h>
  2. #include <avr/io.h>
  3. #include <util/delay.h>
  4.  
  5. int main(void)
  6. {
  7. DDRC = 0xFF;
  8. unsigned char i;
  9. while(1)
  10. {
  11. _delay_ms(1000);
  12. for (i=0;i<255;i++)
  13. {
  14. PORTC = 0b111111;
  15. _delay_ms(1);
  16. PORTC = 0b000000;
  17. _delay_ms(19);
  18. }
  19. }
  20. }

но почему с помощью задержек длительность импульса получается всегда больше?(по данному коду получается 5мс, даже если поставить ее 1мкс получаем 2мс). Подскажите в чем ошибка? Спасибо

Я бы не использовал бы для

Я бы не использовал бы для формирования задержек такой алгоритм. На много надежнее использовать таймеры.
Проверь кстати от чего у тебя тактируется микроконтроллер может дело именно в этом.