Zitat Zitat von Sauerbruch
Danke , damit hast du mir sehr geholfen, hab das Problem zwar noch nicht behoben, weiß aber jetzt , warum ich eines hatte.
Na - dann sollte dieser zweite Schritt doch auch möglich sein, oder

Du solltest einfach mal den "CTC"-Modus ausprobieren. CTC heißt "Clear Timer on Compare" - und das bringt die Sache auf den Punkt:

Die zentrale Rolle spielt hier das "Output Compare"-Register, in das Du einen Wert zwischen 0 und 255 schreibst. Der Timer zählt nun so lange hoch, bis er den Wert dieses Registers erreicht hat. Ist "Gleichstand" erreicht, wird der Timer auf 0 gesetzt, ein Ausgang getoggelt (!) und das Spiel beginnt von vorne.

Heißt also im Klartext: Je kleiner der Wert im Output-Compare-Register, umso höher die Ausgangsfrequenz.

Beim Mega32 ist der zugehörige Ausgang B.3, und das Register heißt "OCR0" (weil´s ja für den Timer0 gilt).

Im Gegensatz zu den Interrupt-basierten Methoden passieren hier die wesentlichen Dinge (Rücksetzen des Timers und Toggeln des Ausganges) auf Hardware-Basis, und das hat zwei große Vorteile:

Erstens hält das ganze den Controller nicht von anderen Dingen ab. Er kann sich um ganz andere Sachen kümmern (z.B. Potis abfragen, LCD-Anzeigen bedienen etc., etc) - das Rechteck-Signal am OC-Ausgang wird sozusagen "von selbst" generiert.

Zweitens geschehen das Rücksetzen des Timers und das Toggeln des Ausganges tatsächlich in einem einzigen Taktzyklus - d.h. das Spiel fängt sofort wieder von vorne an. Wenn Du z.B. in das Output-Compare-Register den Wert 5 schreibst (ganz direkt, also mit der Zeile OCR0 = 5), wird der Ausgang alle 5 Takte getoggelt - uns schon bist Du bei 100 KHz! Das, was Dich bei der Interrupt-Variante ausgebremst hat, nämlich die langwierige Register-Schieberei über mehr als 120 Zyklen, entfällt im CTC-Modus.

Und mit Bascom kann man den CTC-Modus auch direkt wählen (wie ich auch erst durch diesen Thread gelernt habe)... for_ro hatte ein paar Beitrge vorher gepostet, wie man das macht.

Viel Spaß beim Ausprobieren, und halt´ uns auf dem Laufenden!

Daniel
Danke,das ist eine wunderbare Erklärung.Hab jetzt im CTC-Modus ausprobiert,und es klappt wunderbar,komme jetzt bei 1Mhz Takt auf 500Khz Ausgangsfrequenz,um jetzt einen möglichst großen Frequnzbereich abzudecken,muss ich den Vorteiler Software mäßig ändern ,dafür hatte ich jetzt aber noch nicht die Zeit.(Geschenke auspacken usw).
Dann versuche ich noch die Frequenz zu messen um sie dann auf dem Display darzustellen.

Wünsche erst einmal Schöne Weihnacht.