Ich versuche mit einem ATMega16 (8MHZ intern)ein Programm zu entwickeln das einen Port_Pin abhänging von einer Verzögerung ansteuert.Die Verzögerung ist varriabel zwischen 66µsec und 66*99999µsec. Ein Interrupt startet den Timer1. Um die 66µsec zu realisieren habe ich den Timer1 verwendet der bis 528 zählt,er wird durch einen Interrupt gestartetWenn die Verzögerung(66*X) vergangen ist wird ein Port_Pin 1 gesetzt. Mein Problem ist: ...das es eben nicht 66 µsec. sind, sondern(im Bespiel)80µsec. und wenn ich die Timer_Zeit verändere bekomme ich 60-70-90µsec. Aber keine Zeiten dazwischen:-( Hat das etwas mit den Portzyklen zu tun? Auch ein Port benötigt 10µsec für den Wechsel 0-->1. Bin dankbar für jeden Rat.
Hallo, ich hab mal dein Programm angeschaut. Konnte jedoch nicht nachvollziehen wie du das mit den Timern machst. Ich hab mal das Programm ein bischen umgeschrieben. Es funktioniert folgendermasen: Zuerst werden die PORTs gesetzt (Eingang/Ausgang, Pllup), dann wird der Compare-Match von Timer 1 gesetzt = Anzahl der µs. Anschließend wird noch INT1 aktiviert. Nach der globalen Interruptaktivierung bleibt das Programm in einer Endlosschleife. Wenn jetzt ein ext. INT1 kommt, dann wird der Timer1 aktiviert: Vorteiler = 8, bei 8Mhz Takt gibt das 1µs. d.h. jede µs wird der Timer um eins erhöt. Wenn der Timerwert den Comparewert erreicht, wird der Timer gelöscht und der Compare-Match Interrupt aufegerufen. Dort wird dein Ausgang gesetzt. Das ganze funktioniert bis zu einem Compare-Wert von 65535 das entspricht 65536µs. Wenn du mehr Zeit brauchst, must du die Interruptroutine umschreiben. Gruß, Florian
Danke Florian für das Programm,läuft gut. ..Das mit den Timern hatte ich falsch aus dem großen Programm abgeschrieben. Aber das war nicht das eigentliche Problem: Ich war leider zu dümmlich war das Oszilloskop mit der richtigen Abtastrate zu betrieben, daher die falschen Delay_zeiten. Erst denken dann messen!;-) Danke für deine Zeit, Gruß Dennis
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.