Zitat Zitat von wkrug
Das TCNT1 Register ist ein Zähler der im Timer1 eingebaut ist.
Also ist das einfach der Wert, den der Timer momentan hatt?!?

Zitat Zitat von wkrug
Diesem Register ist ein sogenannter Prescaler vorgeschaltet, der einen ankommenden Takt teilt und mit diesem geteilten Takt dieses TCNT1 Register hochzählt.
Das mit dem Prescaler ist mir klar..

Zitat Zitat von wkrug
Ebenfalls in diesem Timer enthalten sind 2 Comparematchunits.
Das OCR1A Register gehört zur Comparematchunit A.
Das OCR1B gehört zur Comparematchunit B.

Für Dich ist vorerst nur mal die Comparematchunit A interessant.

Mit deinen Bascom Befehlen musst Du den Timer Initialisieren und den Comparematch Interrupt A freigeben.
Als weiteres müssen natürlich die Interrups grundsätzlich freigegeben werden.
War das nicht in Bascom ENABLE Interrupts ?

Erreicht das TCNT1 Register den Wert, der im OCR1A Register abgelegt ist, wird der Comparematch A Interrupt getriggert und die dazugehörige Routine ausgeführt.
Also wird einfach eine Interrupt Routine (vom Interrupt COMPARE1A) gestartet, sobald Timer1 den Wert von OCR1A erreicht!?!

Hmm okay, soweit glaub ich ist das klar..


So, ich glaube mit den Vorraussetzungen komm ich schon etwas weiter..

Aber jetzt zurück zum eig. Summensignal.. Das hab ich noch nicht so gaz verstanden.. So im groen und ganzen weiß ich was dein Code usw. bewirken soll, aber so ganz kann ich noch nix damit anfangen..

Also mal Schritt für Schritt..

Als erstes konfiguriere ich Timer1 :

Code:
Config Timer1 = Timer , Prescale = 8
Enable Timer1
Dann konfiguriere ich den interrupt :

Code:
Enable OC1A
On OC1A Comp_ISR
So und hier liegt jetzt langsam mein Problem...

Da check ich langsam das alles nicht mehr so ganz...

Also wie gesagt so im groben ist mir klar was passieren soll :

OC1A wird ausgelöst, wenn der Summensignal Ausgang auf Low ist, wird er auf High geschaltet und dann wird OC1A = Timer1 + Pulslenge festgelegt und die ISR beendet. Sobald dann die Pulslenge erreicht ist, wird die ISR erneut gestartet, aber da der Summensignal Ausgang auf High ist, wird OC1A = Timer1 + 300 festgelegt um die 0,3ms pause festzulegen.

Und das ganze dann immer durch...

Jetzt weiß ich nur nciht so ganz genau wie ich das im Endeffekt umsetzen soll...

Und eins noch : Die Lenge des "Start-High-Pegels" muss sich ja verändern, damit die Gesammtlenge des Summensignals immer gleich bleibt, die kann man das lösen???

EDIT : Timer1 ist ja dadurch schon belegt, wie kann ich dann die Eingangsimpulse mit einer anständigen Auflösung messen??