Mikrosekundengenaue Portansteuerung

Gast #56036
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.
Angehängte Dateien:
Gast
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
Angehängte Dateien:
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.