... und weiter
Hier sieht man den Anfang der Kommunikation mit der I2C-Adressierung mit Write, dann die Adressierung des RTC-Registers, danach der Repeated-Start und dann die I2C-Adressierung mit Read ...
Die Flanken des SDA-Signals erzeugen jeweils einen sehr kurzen Peak am Pin 3 des EXORs 7486. Das wird über das RC-Verzögerungsglied in dem einen Zweig des EXOR-Eingangs erzeugt. Mit 24MSamples/s ist der Logik-Analysator bei diesen Pulsen jedoch schon nahe am Ende der Möglichkeiten. 24MSamples/s heißt etwa 40ns Zeit zwischen den Samples. Wenn man sich das einmal im Detail ansieht ...
... dann liegen die Puls-Zeiten hier schon bei 125ns (laut Logikanalysator bereits mit 34% Zeitfehler in der Anzeige). Die Pulse dauern also etwa 2-3 Samplezeiten. Wenn man noch kürzere Pulse mitbekommen will dann wird es wohl eher ein Glücksspiel. Auf Pin 11 des NAND 7400 sieht man nun die gefilterten Flankenpulse. Dort kommen nur noch Pulse an die bei Start- oder Stopbedingungen auf dem I2C-Bus erzeugt werden. So wie es aussieht läuft die Hardware also fehlerfrei.
Hier nun die Stop-Sequenz. ...
Im Detail sieht man die Pulse wieder etwas besser. Hier liegt die Pulsbreite bei lediglich 83ns +/-50% Anzeigefehler ...
Die Pulse werden also mit lediglich 2 Samples erfaßt. Sie könnten also in ihrer Dauer zwischen etwa 45ns (etwas mehr als 1 Samplezeit) und etwa 120ns (knappe 3 Samples) schwanken ohne das man diese Änderung in der Anzeige sehen würde. Aus diesem Grund versuche ich Meßgeräte mit möglichst hoher Samplerate zu besitzen. Das Hameg HMO724 von mir hat zwar "nur" 70MHz Grenzfrequenz aber trotzdem 2GSamples/s. Das ist ein erheblicher Unterschied zu den günstigeren UNI-T Geräten mit zB 100MHz Grenzfrequenz aber lediglich 500MSamples/s. Man besitzt trotz niedrigerer Grenzfrequenz eine 4fach höhere Auflösung in der Zeitachse und dadurch genauere Anzeigemöglichkeit.
Aber nun das Fazit ... die Hardwarebeschleunigung funktioniert. Nun muß ich lediglich diese kurzen Pulse mit einem Interrupt des Mega168 sauber weiterverarbeiten. Also ist die weitere Arbeit und Fehlersuche hauptsächlich Programmierung.
Nun eine entscheidende Frage : Wie kurz darf ein Puls am INT-Eingang sein damit er bei 20MHz Takt noch als Interrupt erkannt wird und nicht als "Schmutz" weggefiltert wird ? Ich hab mir mal die Sync-Schaltung für den PCINT angesehen und da ist ja schon einiges an Technik drin. Eventuell müßte ich also den Systemtakt von 20MHz noch auf 25MHz in den Overclocking-Bereich erhöhen. Dann werde ich aber wohl mit nem externen Oszillator arbeiten.
Gruß
Dino
Hier sieht man den Anfang der Kommunikation mit der I2C-Adressierung mit Write, dann die Adressierung des RTC-Registers, danach der Repeated-Start und dann die I2C-Adressierung mit Read ...
Die Flanken des SDA-Signals erzeugen jeweils einen sehr kurzen Peak am Pin 3 des EXORs 7486. Das wird über das RC-Verzögerungsglied in dem einen Zweig des EXOR-Eingangs erzeugt. Mit 24MSamples/s ist der Logik-Analysator bei diesen Pulsen jedoch schon nahe am Ende der Möglichkeiten. 24MSamples/s heißt etwa 40ns Zeit zwischen den Samples. Wenn man sich das einmal im Detail ansieht ...
... dann liegen die Puls-Zeiten hier schon bei 125ns (laut Logikanalysator bereits mit 34% Zeitfehler in der Anzeige). Die Pulse dauern also etwa 2-3 Samplezeiten. Wenn man noch kürzere Pulse mitbekommen will dann wird es wohl eher ein Glücksspiel. Auf Pin 11 des NAND 7400 sieht man nun die gefilterten Flankenpulse. Dort kommen nur noch Pulse an die bei Start- oder Stopbedingungen auf dem I2C-Bus erzeugt werden. So wie es aussieht läuft die Hardware also fehlerfrei.
Hier nun die Stop-Sequenz. ...
Im Detail sieht man die Pulse wieder etwas besser. Hier liegt die Pulsbreite bei lediglich 83ns +/-50% Anzeigefehler ...
Die Pulse werden also mit lediglich 2 Samples erfaßt. Sie könnten also in ihrer Dauer zwischen etwa 45ns (etwas mehr als 1 Samplezeit) und etwa 120ns (knappe 3 Samples) schwanken ohne das man diese Änderung in der Anzeige sehen würde. Aus diesem Grund versuche ich Meßgeräte mit möglichst hoher Samplerate zu besitzen. Das Hameg HMO724 von mir hat zwar "nur" 70MHz Grenzfrequenz aber trotzdem 2GSamples/s. Das ist ein erheblicher Unterschied zu den günstigeren UNI-T Geräten mit zB 100MHz Grenzfrequenz aber lediglich 500MSamples/s. Man besitzt trotz niedrigerer Grenzfrequenz eine 4fach höhere Auflösung in der Zeitachse und dadurch genauere Anzeigemöglichkeit.
Aber nun das Fazit ... die Hardwarebeschleunigung funktioniert. Nun muß ich lediglich diese kurzen Pulse mit einem Interrupt des Mega168 sauber weiterverarbeiten. Also ist die weitere Arbeit und Fehlersuche hauptsächlich Programmierung.
Nun eine entscheidende Frage : Wie kurz darf ein Puls am INT-Eingang sein damit er bei 20MHz Takt noch als Interrupt erkannt wird und nicht als "Schmutz" weggefiltert wird ? Ich hab mir mal die Sync-Schaltung für den PCINT angesehen und da ist ja schon einiges an Technik drin. Eventuell müßte ich also den Systemtakt von 20MHz noch auf 25MHz in den Overclocking-Bereich erhöhen. Dann werde ich aber wohl mit nem externen Oszillator arbeiten.
Gruß
Dino