Hallo
leider ob OCR2 auf 10 oder 100 ist macht keinen Unterschied. Immer bin ich im Bereich von 16 - 78 servo pos.
lg
Hallo
leider ob OCR2 auf 10 oder 100 ist macht keinen Unterschied. Immer bin ich im Bereich von 16 - 78 servo pos.
lg
Weches Verhalten hat meine Programmversion wenn du dort OCR2 änderst? Wie sieht denn dein aktuelles Programm aus? Fehler beim Kompilieren/Übertragen ausgeschlossen? Verify?
Noch was ist mir aufgefallen: In delay.h steht folgendes:
Keine Ahnung was das genau bedeutet, aber meine Version läuft ohne delay.h!/** \defgroup util_delay <util/delay.h>: Busy-wait delay loops
\code
//#define F_CPU 1000000UL // 1 MHz
//#define F_CPU 14.7456E6
#define F_CPU 8000000UL // 8 MHz
#include <util/delay.h>
\endcode
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Welche Takte verwendet werden könnte auch durch das Auslesen der Fusebits festgestellt werden. Näheres dazu hier: http://www.mikrocontroller.net/artic...se_Einstellung
Damit delay.h ordentlich funktioniert, muss die Taktrate mit #define F_CPU definiert werden. Bei 1Mhz ist die max Verzögerung was man mit _delay_ms() erreichen kann 255ms, bei höheren Frequenzen entsprechend weniger, da immer der gleiche Zähler verwendet wird.
Also für kritische delays lieber Timer nehmen, oder selber eine Rutine schreiben...
Hallo
Ich benutze auch keine Delay funktionen, nur die Header-Dateien sind eingebunden haben damit aber überhaupt nichts zutun.
Den Quellcode den ich verwende findet ihr ganz oben.
lg manhunt
Hallo
Ich habe jetzt den Quarz ausgetauscht und einen 16mhz verbaut. Nun hat der Interrupt genug Zeit um abgearbeitet zu werden. Jetzt stimmen auch die Timerzeiten und die daraus resultierenden, servopos werte.
Danke an alle für die Hilfe.
lg manhunt
Lesezeichen