Имеется роботик на основе pic16f785, имеется программка (компилятор CCS) которая крутит колесики в разные стороны. Проблема в том что не смотря на способ кадансирования, будь то внутренний осциллятор либо внешний кварц, программа выполняется не равномерно. Плюс ко всему функция delay_ms(K) почему то не работает, т.е. значение K в мс. не соблюдается. Т.е. получается что проблемы 2.
П.с. Используется L293D, питание общее на весь базар
Заранее спасибо за помощь
CODE:
#include<16f785.h>
#include <math.h>
#use delay(clock=8Mhz)
#fuses INTRC_IO,NOWDT,NOPROTECT,NOPUT
#define EN pin_c0
#define A1 pin_c3
#define A2 pin_c6
#define A3 pin_b4
#define A4 pin_b5
#define LED pin_c2
unsigned int16 duty;
void main()
{
setup_oscillator(OSC_8MHZ);
delay_ms(3000); //Startup delay
output_low(EN);
while(1){
output_low(EN); // EN OFF
delay_ms(500);
output_high(LED); // LED on
output_high(A1);
output_low(A2);
output_high(A3);
output_low(A4);
output_high(EN); // EN ON
delay_ms(1000);
output_low(EN); // EN OFF
delay_ms(500);
output_low(LED); // LED off
output_high(A2);
output_low(A1);
output_high(A4);
output_low(A3);
output_high(EN); // EN ON
delay_ms(1000);
}
}
#include<16f785.h>
#include <math.h>
#use delay(clock=8Mhz)
#fuses INTRC_IO,NOWDT,NOPROTECT,NOPUT
#define EN pin_c0
#define A1 pin_c3
#define A2 pin_c6
#define A3 pin_b4
#define A4 pin_b5
#define LED pin_c2
unsigned int16 duty;
void main()
{
setup_oscillator(OSC_8MHZ);
delay_ms(3000); //Startup delay
output_low(EN);
while(1){
output_low(EN); // EN OFF
delay_ms(500);
output_high(LED); // LED on
output_high(A1);
output_low(A2);
output_high(A3);
output_low(A4);
output_high(EN); // EN ON
delay_ms(1000);
output_low(EN); // EN OFF
delay_ms(500);
output_low(LED); // LED off
output_high(A2);
output_low(A1);
output_high(A4);
output_low(A3);
output_high(EN); // EN ON
delay_ms(1000);
}
}