deine formatierung ist etwas unkonventionell, die geschweiften klammern um das 2te if herum sind iwie nutzlos .... EGAL
einen rat, erhöhe auf jeden fall die frequenz, damit du eine bessere auflösung für deinen servo hast, so 20kHz mind. statt 2kHz ...
und prüfe die bedingung
if (ms >= 40)
oben im interrupt, statt in der main(), so wird bei JEDER inkrementierung auch der wert überprüft und zu verpasst keinen interrupt ... ausserdem hast du die main() für andere aufgaben (die steuerung zum beispiel) frei
dasselbe machst du auch mit der
if(ms >= 43)
ab in die ISR damit
jetzt passt du den prescaler an (20kHz) und natürlich die werte bei denen du den pin schaltest, legst dir noch ein paar variablen für das tastverhalten an, also statt
if (ms >= 400)
if (ms >= PortC3ONval) PortC3_AN();
und
if (ms >= PortC3OFFval) PortC3_AUS();
du könntest jetzt statt dem reset bei der 2ten bedingung zu machen auchnoch was anderes versuchen,
du legst dir ne variable an, die deine wiederholrate festlegt (20ms in deinem fall, natürlich umgerechnet auf deinen counter) und jetzt kannst du für mehrere ports mehrere variablen anlegen, die jeweils einen offset bilden von 0 (so dass alle 3ms ein anderer port angesteuert wird) bis 20ms und eine variable die die pulslänge für jeden port bestimmt, wenn dein counter dann denr resetwert errreicht, wird er zurückgesetzt ... damit kannst du "beliebig" viele pins für Servos benutzen .... zumal das ja sicher dein ziel war .... ich hoffe ich habe dir jetzt nicht zu viel vorweggenommen
EDIT: das erklärt jetzt nicht unbedingt die "schwachen" flanken, ich hatte ein leicht ähnliches verhalten, wenn ich bei mir die impulslänge inkrementiere, hatte ich durch den spannungseinbruch durch den verbrauch des servomotor einen minimalen nachlaufeffekt .... kaum wahrnehmbar aber existent ... versuche mal ein paar pufferkondensatoren an die versorgungsspannung deines µC anzuschliessen und eventuell einen transistor zwischen µC und impulsleitung des servo hängen, die haben die angewohnheit ihren strom aus der impulsleitung zu ziehen, wenn mal der versorgungspin "abrutschen" sollte und das mag dein µC sicher nicht
Lesezeichen