Kann mir mal jemand auf die Sprünge helfen? Ich find's im Datenblatt nicht! Wie schnell ist der Komparator (z.B. im ATTiny85) überhaupt? Kann ich noch mit einem 8MHz-Signal das ACI-Flag Triggern?
Stand da nicht irgendetwas von propagation delay im Datenblatt?
Bezieht sich das mit dem Propagation Delay nicht auf die 1..2 Zyklen im AC0-Flag (State)? Das brauche ich nicht! Ich will auswerten, wann die Welle anliegt und wann nicht, daher würde ich als Loop das ACI-Flag (also das Interrupt-Flag) zurücksetzen und direkt wieder einlesen wollen.
@ Horst S. (hdc) >Wie schnell ist der Komparator (z.B. im ATTiny85) überhaupt? >Kann ich noch mit einem 8MHz-Signal das ACI-Flag Triggern? Glaub ich nicht. Beim ATmega88 sind es 500-750ns Verzögerungszeit.
Falk B. schrieb: > Glaub ich nicht. > > Beim ATmega88 sind es 500-750ns Verzögerungszeit. Bis der Interrupt ausgelöst wird? Oder ist das die Zeit, die der Komparator kippen muss, damit überhaupt ein Interrupt ausgelöst wird?
Steht nicht näher beschrieben im Datenblatt. Ich vermute, das ist die Zeit für den reinen Durchlauf durch den Komparator vom Eingang bis zum Ausgang. Danach kommt der Digitalteil.
Horst S. schrieb: > Kann mir mal jemand auf die Sprünge helfen? Ich find's im Datenblatt > nicht! > > Wie schnell ist der Komparator (z.B. im ATTiny85) überhaupt? Der Komparator selber ist ziemlich schnell, nützt aber nix, weil sein Ausgang synchronisiert wird. D.h.: im allerbesten Fall kannst du knapp 1/2 Systemtakt noch korrekt korrekt erfassen. Allerdings: Du wirst diese theoretisch mögliche Samplefrequenz nicht wirklich nutzen können. Das gibt die Verarbeitungsgeschwindigkeit nicht her. Nur Einzelpulse, von denen du vorher schon recht genau weisst, wann sie eingehen werden, kannst du mit 1/3 Systemtakt erfassen, weil halt ein "in" und ein "st" zusammen drei Takte dauern. Für alles andere wird es noch langsamer... > Kann ich noch mit einem 8MHz-Signal das ACI-Flag Triggern? Wenn das Teil mit mehr als 16MHz läuft: ja. Aber wie schon gesagt: der praktische Nutzen geht gegen Null.
Falk B. schrieb: > Steht nicht näher beschrieben im Datenblatt. Ich vermute, das ist die > Zeit für den reinen Durchlauf durch den Komparator vom Eingang bis zum > Ausgang. Danach kommt der Digitalteil. Denke ich auch. 500 bis 750ns Zeiten stehen als "Analog Comparator Propagation Delay" abhängig von Vcc im Datenblatt. An anderer Stelle steht, daß das ACO-Bit nach ein bis zwei Zyklen Synchronisationzeit gesetzt wird. Die Zeit wird also noch addiert und ist auch noch taktabhängig. Gleiches dürfte auf das Interruptbit ACI zutreffen. (ATmega88a)
c-hater schrieb: > Der Komparator selber ist ziemlich schnell, nützt aber nix, weil sein > Ausgang synchronisiert wird. D.h.: im allerbesten Fall kannst du knapp > 1/2 Systemtakt noch korrekt korrekt erfassen. > > Allerdings: Du wirst diese theoretisch mögliche Samplefrequenz nicht > wirklich nutzen können. Das gibt die Verarbeitungsgeschwindigkeit nicht > her. > > Nur Einzelpulse, von denen du vorher schon recht genau weisst, wann sie > eingehen werden, kannst du mit 1/3 Systemtakt erfassen, weil halt ein > "in" und ein "st" zusammen drei Takte dauern. > > Für alles andere wird es noch langsamer... > >> Kann ich noch mit einem 8MHz-Signal das ACI-Flag Triggern? > > Wenn das Teil mit mehr als 16MHz läuft: ja. Aber wie schon gesagt: der > praktische Nutzen geht gegen Null. Neeneeneeneeee, Die 8 MHz sind nur der Träger. Das eigentliche Nutzsignal ist ein 19,2kBaud amplitudenmodulierter UART-Stream. Insofern will ich eigentlich genau das machen, was die UART auch macht: Im 4-, 8- oder 16-fachen der Baudrate den Pegel (hier das Auftreten des ACI-Interruptes) untersuchen und daraus bestimmen, ob eine 1 oder eine 0 gesendet wird. Was mir allerdings aus den Angaben des Datenblattes nicht klar ist: a) Wie ist die Bandbreite des Komparators und b) wird der ACI bei kurzen Impulsen < fOsz überhaupt ausgelöst? Daher interessieren mich die Latenzen < 1us eher weniger. Ich könnte mir auch einen Komparator (zur Verstärkung) nebst Monoflop (um die negative Halbwelle zu überbrücken) extern dranbauen und das so gleichgerichtete Signal an einen Port (im besten Fall dann wohl RxD) führen. Das wollte ich mir sparen.
Es geht. Ein 100 ns-Impuls wird von einem ATtiny85 mit internem Takt von 8 MHz detektiert. (In der Hoffnung, dass mir die Sonne nicht das Hirn verbrannt hat)
S. Landolt schrieb: > Es geht. Ein 100 ns-Impuls wird von einem ATtiny85 mit internem Takt von > 8 MHz detektiert. > (In der Hoffnung, dass mir die Sonne nicht das Hirn verbrannt hat) Das ist mal 'ne Aussage. Hast Du das jetzt extra ausprobiert? Oder hattest Du das schon vorher am Start? Mit welcher Eingangsspannungsdifferenz hast Du den Impuls am Komparator eingefüttert?
Eben ausprobiert. Volle Spannung, d.h. Ausgang auf Eingang. Zur Erläuterung: auf einem ATmega48 (vorher 20.000, jetzt auch 22.118 MHz) läuft:
1 | loop: |
2 | sbi PORTB,puls |
3 | cbi PORTB,puls |
4 | rcall wait5s |
5 | rjmp loop |
auf dem ATtiny85 (mit intern 8 MHz):
1 | loop: |
2 | sbis ACSR,ACI |
3 | rjmp loop |
4 | sbi ACSR,ACI |
5 | sbi PORT_LED,LED |
6 | rcall wait1s |
7 | cbi PORT_LED,LED |
8 | rjmp loop |
Die LED blinkt im 5 s-Rhythmus.
Hast Du noch zwei Widerstände zur Hand, die als Spannungsteiler die Amplitude des Impulses am Komparator auf 0,5V senken? Ach lass, Du hast mich so schon glücklich gemacht! Ich danke Dir!
Was soll dann als Referenz genommen werden? Im Augenblick ist Bandgap eingeschaltet.
Am besten ein Poti am negativen Eingang des Komparators, damit man messen kann, ob die angegebene Toleranz der Differenzspannung (ich glaube, das waren um die 50mV) auch bei dieser Impulslänge noch eingehalten werden. ABER LASS ES, ES IST SCHON SPÄT!
Es ist ein Steckbrettaufbau, Sie müssen also alle Angaben unbedingt verifizieren! Folgendes sehe ich hier: PB1 == AIN0: Spannungsteiler Vcc 10 k -B1- 1 k GND PB0 == AIN1: Spannungsteiler m48 6k8 -B0- 1 k GND Ersetze ich die 6k8 durch 8k2 blinkt die LED nicht mehr. Ersetze ich nun am m48 die 22.118 durch 16.0 MHz (also 125 statt 90 ns), dann blinkt sie wieder.
> Ich könnte mir auch einen Komparator (zur Verstärkung) nebst Monoflop > (um die negative Halbwelle zu überbrücken) extern dranbauen und das so > gleichgerichtete Signal an einen Port (im besten Fall dann wohl RxD) > führen. Das wollte ich mir sparen. Schon mal überlegt, ob ein einfacher Hüllkurvendemodulator bestehend aus Diode, Kondensator und Widerstand nicht reicht?
Das ist jetzt schlecht: betreibe ich den ATtiny85 mit 1 MHz, blinkt die LED nur noch sporadisch. Also wird das AC-Flipflop wohl doch synchron mit dem Systemtakt gesetzt.
S. Landolt schrieb: > Das ist jetzt schlecht: betreibe ich den ATtiny85 mit 1 MHz, blinkt die > LED nur noch sporadisch. Also wird das AC-Flipflop wohl doch synchron > mit dem Systemtakt gesetzt. Das schrieb ich bereits weiter oben im Thread und noch lange vor mir hat das jemand freundlicherweise in das Datenblatt des Tiny85 geschrieben...
Im Datenblatt des ATtiny85 konnte ich das nicht finden, für eine genaue Quellenangabe wäre ich dankbar. Ich hatte mir durchaus vorstellen können, dass ein Flipflop unmittelbar am Komparatorausgang asynchron gesetzt wird und erst die weitere Verarbeitung synchron erfolgt, eben um solche kurzen Ereignisse detektieren zu können.
S. Landolt schrieb: > Im Datenblatt des ATtiny85 konnte ich das nicht finden, für eine genaue > Quellenangabe wäre ich dankbar. Die Sychronisationszeit entnehme ich aus Atiny Datenblatt ATtiny25/V / ATtiny45/V / ATtiny85/V doc2586 16.2.2 ACSR – Analog Comparator Control and Status Register Bit 5 – ACO: Analog Comparator Output
Danke, chosee. Ich hätte mir zwar auch unter dieser Formulierung noch anderes vorstellen können, auch stört mich dieses unbestimmte 'delay of 1 - 2 clock cycles', aber okay, so ist es nun mal.
S. Landolt schrieb: > Ich hätte mir zwar auch unter dieser Formulierung noch anderes > vorstellen können, auch stört mich dieses unbestimmte 'delay of 1 - 2 > clock cycles', aber okay, so ist es nun mal. Die Unbestimmtheit resultiert aus der Abtastung. Je nach Phasenver- schiebung zwischen IO-Takt und der Signalflanke wird sie nur um einen Takt oder um 2 Takte verzögert. Die Schaltung des Sychronisierers findet sich an verschiedenen Stellen im Datenblatt. Bspw. in "10.2 Ports as General Digital I/O"
asdfasd schrieb: > Schon mal überlegt, ob ein einfacher Hüllkurvendemodulator bestehend aus > Diode, Kondensator und Widerstand nicht reicht? War auch mein erster Gedanke, allerdings: Bei einer Signalamplitude von 0,3 ... 0,5 V eher nicht. Da müsste ich erst noch nen Gleichanteil draufaddieren, dazu vorher die Impedanz des Signals anpassen, etc, also doch wieder 'nen Bauteilgrab. S. Landolt schrieb: > Danke, chosee. > Ich hätte mir zwar auch unter dieser Formulierung noch anderes > vorstellen können, auch stört mich dieses unbestimmte 'delay of 1 - 2 > clock cycles', aber okay, so ist es nun mal. Und ich muss ehrlich sagen: Ich hab's immer noch nicht. Das allerdings mag daran liegen, dass in Fig. 18-1 überhaupt keine Takte eingezeichnet sind und für mein grundlegendes Verständnis externe Interrupts immer asynchron zum Systemtakt angetriggert werden (wenn nix anderes dabeisteht). Dass das AC0-Flag synchronisiert mit Delay weitergereicht wird, ist dokumentiert. Dass die Signalwege von AC0 und ACI hinter dem Komparator gesplittet sind, ist aus dem Blockschaltbild in Fig. 18-1 ersichtlich. Bleibt ja nur noch die Möglichkeit, dass das Ausgangssignal vom Komparator vor dem Split für beide Flags getaktet abgefragt wird. Dann aber müsstest Du bei Deinem ersten Test mit dem 100ns-Puls schon unglaubliches Glück gehabt haben, um ein regelmäßiges Muster zu bekommen. Passt Dein Programm auf dem Empfänger automatisch die Anweisung "wait1s" auf die 1MHz an?
Ja, die waits stimmen. Mein Fehler gestern war der langsame Rhythmus von 5 s. Ich hatte mich zwar entspannt zurückgelehnt und zugeschaut, aber sicher nicht länger als eine Minute, und das waren dann eben nur zwölf Ereignisse - eine dürftige statistische Basis (wie sich dann ja auch heute morgen zeigte).
Könnten Sie einen Quarz mit 20 MHz anschließen? Oder die internen 16 MHz per OSCCAL etwas hochziehen, dann sollte es doch für die zu detektierenden 8 MHz reichen?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.