der µc ist pic18f1320
das programm soll einen bipolaren schrittmotor beschleunigen, hier ist
das ganze programm:
#include "C:\Dokumente und
Einstellungen\praktikant\Desktop\array\main.h"
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)
void main()
{
float32 p1=223606.0;
float32 p;
float32 r=1E-11;
int32 l;
int32 i;
set_tris_b(0b11110000);
while(true)
{
p=p1*(1-r*p1*p1);
p1=p;
l=(int32)p1;
output_b(0b0101);
for(i=1;i<l;i++){
delay_us(1);
}
p=p1*(1-r*p1*p1);
p1=p;
l=(int32)p1;
output_b(0b0110);
for(i=1;i<l;i++){
delay_us(1);
}
p=p1*(1-r*p1*p1);
p1=p;
l=(int32)p1;
output_b(0b1010);
for(i=1;i<l;i++){
delay_us(1);
}
p=p1*(1-r*p1*p1);
p1=p;
l=(int32)p1;
output_b(0b1001);
for(i=1;i<l;i++){
delay_us(1);
}
}
}
ich weiss, dass dort noch eine abbruchbedinung in die while() schleife
muss, aber mich interessiert zuerst, warum das mit der zeitfunktion
(delay_us()) nicht funktioniert. ich habe mit einem pic simulator das
programm ohne for schleife und ohne delay_us() laufen lassen und
festgestellt, dass für die berechnung für p braucht der µc ca. 200µs.
Also damit wäre mein frequenz zwischen jedem schritt 5khz. aber das mit
der delay funktion verstehe ich nicht. danke für schnelle antwort