auch bei einem sortware pwm würde ich die zetiliche steuerung mit einem timer machen, denn alles andere wird zu ungenau. das mit dem timer ist dann indirekt schon eine abfrage des quarzes.
klar, mit sleep habe ich auch schon gemacht, aber halt zu ungenau. kann man eig den quarz-eingang auch abfragen, also z.b. if(quarzeingang==high)? dann könnte man einen genaueren pwm machen!
...and always remember...
...AVR RULES...
auch bei einem sortware pwm würde ich die zetiliche steuerung mit einem timer machen, denn alles andere wird zu ungenau. das mit dem timer ist dann indirekt schon eine abfrage des quarzes.
Mein Hexapod im Detail auf www.vreal.de
Zu ungenau mit Sleep? Naja, kommt drauf an was du machen willst. Denn Sleep ist an sich schon genau weil es, wie bereits erwähnt, den Takt vom Quarz bekommt.
Für was brauchst du denn das PWM Signal?
Grüße,
Harri
in erster regel möchte ich ein servo genao ansteuern. mit sleep hat der aber gerade mal 10 positionen.
...and always remember...
...AVR RULES...
@roboman deine frage "wo bekomm ich den takt" hab ich nicht ganz verstanden, ich hab gesagt du schreibst eine interrupt routine, diese wird immer ausgeführt wenn der entsprechende interrupt ausgelöst wird ... ausgelöst wird der interrupt von einem timer, der du darauf einstellen musst ...n oder wie oder was meinst du jetzt ? PS bitte lad dir das datenblatt runter und liess dir die beschreibung zu den timern und den steuerregistern wenigstnes kurz durch, damit wir nciht aneinander vorbeireden ^^
EDIT der timer macht GENAU DAS was du möchtest, er zählt immer ein register höher wenn der quarz eine flanke bringt, erreicht das register dann einen bestimmten wert oder läuft über undf wird wieder 0 löst der timer einen interrupt aus
EDIT2: wen cih mich nicht irre, (leider kann ichs grad net austesten) hab ich bei meinem servo-experiment auch nur eine auflösung von 1/10tel millisekunde, aber das reicht eigentlich vollkommen aus ... oder wars doch 1/100tel ... hauptvorteil der interruptlösung, du brauchst nichtmal ne main() damit das funktioniert, ich hab nur ein poti an den ADC gehangen, am anfang der main den ADC auf dauerhaftes messen gestellt und bei jedem ADC complete interrupt den wert in eine variable kopiert die ich im timer-interrupt für die steuerung des Servos verwende ... die main kreiselt in einer leeren while(1); schleife rum, da ist also reichlich platz für mehr code
Lesezeichen