Zitat Zitat von Searcher Beitrag anzeigen

...
In der PCINT ISR wird dann der TIMER0 gestartet und soll damit eine Zeit von 550µs bis CTC Comparematch machen? oder wo soll man die 410kHz im Screenshot ablesen?

Die 410kHz hatte ich mal mit dieser Codesequenz und dem DSO ermittelt und den SYS-Takt dann ausgerechnet :
Code:

sbi    PINB,led.pla                ;Systemtakt ->  Gemessene Frequenz..
rjmp pc-1                           ;..mal 8  nehmen 

Jetzt nicht verzagen, der Screenshot wird ja im Detail erklärt :

https://www.edv-dompteur.de/forum/in...=4148#post4148

Ab ca. 420µs ( blauer senkrechter Strich ) geht die Aufzeichnung mit der fallenden Flanke des Monoflops los ( 1% davor wird auch noch erfasst ).


Irgendwann wird dann die INT0 Low-Level IRQ erzeugt.
Am Anfang der INT0-ISR wird der erste Impuls mit LED-Gelb erzeugt. Dieser ist 4,958µs lang und entspricht somit einer Frequenz von 403,388kHz, was eigentlich die nominalen 600kHz sind ( 4,958µs:2 wegen sbi, cbi ).

Am Ende der INT0-ISR ist der SYS-Takt ja bereits auf nominal 300kHz umgestellt und somit der 2te Impuls bei LED-Gelb 9,875µs lang, was der wahren Frequenz von 202,532kHz entspricht.

Die Pulse an LED-Orange lass ich jetzt erstmal raus damit es nicht zu umfangreich wird.


Dann kommt es an IN/Data ( PB0 bzw. PCINT0 ) zu der steigenden Flanke. Hier wird leider durch dass Schattenmessfenster der Marker für Bit 1 bei +1310µs überblendet, deshalb habe ich dies selbst beschriftet. Der Messwert zeigt 549,375µs an. Die 1,098ms sind der Abstand zu Bit 2.

Die PCI0-ISR habe ich zu Anfang und zu Ende durch zwei Impulse kenntlich gemacht.

Meine ganzen Zeitangaben beziehen sich also auf Messungen im Logic Analyser Programm.



Zitat Zitat von Searcher Beitrag anzeigen

...
Ist der Systemtakt stabil? Ist die Stromversorgung stabil und sauber?

Der µC geht zwischen den Comparematch Interrups immer wieder in den Idle Sleep. Laß ihn doch mal durchlaufen ohne Sleep. Sind die Zeiten dann konstanter?
Zitat Zitat von Searcher Beitrag anzeigen
Die Diskrepanz von 4,8Mhz zu 1,9Mhz ist arg. Vielleicht mal einen neuen µC probieren?


Ok, wird aber dauern bis ich davon berichte.

Zitat Zitat von Searcher Beitrag anzeigen
PS und das auf 0 Setzen des TCNT0 in der Comparematch ISR ist doch eigentlich nicht nötig. Der Timer ist doch auf Comparematch eingestellt. Es reicht das OCR0A beim ersten Mal auf 192 zu stellen und von mir aus jedes Mal. Rücksetzen von TCNT0 an der Stelle verkompliziert die Berechnung, da ja die Zeit von Aufruf der ISR bis Rücksetzten des Timers ja uach noch verrechnet werden muß.

Hatte ich mal gemacht, da aber das Timming wieder nicht stimmte habe ich es wieder reingenommen und die zwei Takte stören bisher auch nicht.
Und wie bereits geschrieben, rechne ich da gar nichts aus, sondern habe die Werte für das OCR0A-Register durch experimentieren gefunden, da sämtliche Rechnungen irgendwie nicht hinhauten.


Bernd_Stein