Forum: Mikrocontroller und Digitale Elektronik AVR sehr kurzer PCINT


von DerDaniel (Gast)


Lesenswert?

Hallo,

eine kurze Frage, da ich es selber Testbedingungen nicht zuverlässig 
reproduzieren kann:

Für Levelinterrupts steht im Datenblatt der MEGA164 Serie, dass der 
Pegel eine gewisse Zeit anliegen muss, um den Interrupt Vektor zu 
aktivieren.
Wie sieht es bei PinChange Interrupts aus? Ich möchte, dass ein 
Vibrationssensor den AVR weckt, jedoch kann es bauartbedingt bei den 
Sensoren (SW-18020) zu sehr kurzen Spikes kommen, die ich jedoch auch 
gerne zuverlässig abarbeiten würde...
Findet man irgendwo Daten wie lange der Pegelwechsel mindestens andauern 
muss?


Danke für Informationen
--Daniel

von Thomas E. (thomase)


Lesenswert?

DerDaniel schrieb:
> Findet man irgendwo Daten wie lange der Pegelwechsel mindestens andauern
> muss?

Im Datenblatt unter

External Interrupts
- Pin Change Interrupt Timing

mfg.

von DerDaniel (Gast)


Lesenswert?

Hallo,

sorry, ich habe gerade Tomaten auf den Augen und finde es nicht. X-(
Könntest du mir die Seite.zahl im Datenblatt geben?


Danke

von Thomas E. (thomase)


Angehängte Dateien:

Lesenswert?

DerDaniel schrieb:
> sorry, ich habe gerade Tomaten auf den Augen und finde es nicht. X-(
> Könntest du mir die Seite.zahl im Datenblatt geben?

Ja, ich sehe gerade, dass du da lange suchen kannst. Das ist im 
Datenblatt vom 164 & Co. zumindest an der Stelle gar nicht drin.

Guck mal ins Datenblatt vom 48..328. Da steht das an oben angegebener 
Stelle. Das Timing ist für alle AVR gleich.

mfg.

: Bearbeitet durch User
von Sebastian S. (amateur)


Lesenswert?

Zu den rein Hardwarebedingten Zeiten kommen noch ein Push (akt. Adresse) 
und ein Sprung-Sprung (in die Sprungtabelle) hinzu.

Manchmal sind noch Register zu sichern, praktisch immer das Status-Flag.

Am Ende der Routine müssen die Register geputzt werden.

Ein iret kann auch nicht schaden.

Und das alles ohne Deine Sequenzen.

von Samuel C. (dragonsam)


Lesenswert?

Das interessiert jedoch alles nicht, da der Interrupt zu diesen Zeiten 
schon ausgelöst wurde ;)

von asdfasd (Gast)


Lesenswert?

> zu sehr kurzen Spikes kommen, die ich jedoch auch
> gerne zuverlässig abarbeiten würde

Mittels eines externen Latches aufgebaut aus einem schnellen Transistor 
könntest du in den Bereich von 1-2 Picosekunden kommen.  Wenn's noch 
kürzer sein soll, wird es langsam aufwendig.  Wie kurz darf's denn sein?

von Wolfgang (Gast)


Lesenswert?

asdfasd schrieb:
> Wie kurz darf's denn sein?

"sehr", steht doch gleich im Eröffnungspost.

DerDaniel schrieb:
> ... sehr kurzen Spikes ...

von Peter D. (peda)


Lesenswert?

DerDaniel schrieb:
> jedoch kann es bauartbedingt bei den
> Sensoren (SW-18020) zu sehr kurzen Spikes kommen, die ich jedoch auch
> gerne zuverlässig abarbeiten würde...

Unter Spikes versteht man in der Regel Störungen, die man unterdrücken 
möchte (Entprellung).
Wenn es aber Nutzsignale sind, nenne sie besser kurze Impulse. Und noch 
besser, sage wie kurz sie minimal sein dürfen, z.B. >=10µs.

von Thomas F. (igel)


Lesenswert?

Thomas Eckmann schrieb:
> Guck mal ins Datenblatt vom 48..328.
http://www.mikrocontroller.net/attachment/251828/timing.png

Für mich als Laie;-)
Muss das Signal nun 4 Takte bis PCIF=1 anliegen oder reicht 1 Takt bis 
pci_sync?

von Peter D. (peda)


Lesenswert?

Thomas Forster schrieb:
> Muss das Signal nun 4 Takte bis PCIF=1 anliegen oder reicht 1 Takt bis
> pci_sync?

1 Takt.
Allerdings wirds beim Power-Down komplizierter. Da muß man erst warten, 
bis der Taktgenerator wieder angeschwungen ist, und bei einem Quarz kann 
das gerne mal 10ms dauern oder mehr. Ein 32kHz Quarz kann sogar mehrere 
Sekunden benötigten.

Ob der Takt bei kürzeren Impulsen wieder stoppt oder nur der Interrupt 
nicht kommt, konnte ich nicht im Datenblatt finden.

: Bearbeitet durch User
von DerDaniel (Gast)


Lesenswert?

Danke für die bisherigen Antworten!

Es handelt sich um einen Vibrationssensor, bei dem um ein stehenden 
Kontakt eine Feder aufgebaut ist, die bei Erschütterung oder Schwingung 
gegen den stehenden Kontakt kommt und einen Kurzschluss erzeugt.
Bei sehr leichten Berührungen hatte ich es bereits mehrmals, dass das 
Oszi ausgelöst hat und ich gerade so noch einen Low Pegel auf dem Schirm 
erkennen konnte. (10us/DIV)

Der Graphik entnehme ich zwar nicht ab wo der uC wieder geweckt wird, 
aber nach der Schaltung muss der Pegelwechsel mindestens bis zum ersten 
Takt nach dem aufwachen anhalten, damit das D-FF bei pcint_syn den 
Pegelwechsel übernimmt (so es denn ein D-FF ist). Also ist die Startzeit 
der Taktquelle der Flaschenhals.


>Mittels eines externen Latches aufgebaut aus einem schnellen Transistor
>könntest du in den Bereich von 1-2 Picosekunden kommen.
Ein externes Latches wollte ich eigentlich umgehen, ist wieder ein 
Bauteil mehr.

>Für mich als Laie;-)
>Muss das Signal nun 4 Takte bis PCIF=1 anliegen oder reicht 1 Takt bis
>pci_sync?
Nach einem Takt bekommt das erste FF den neuen Pegel und das XOR wird L. 
Daher gibt es garnicht mehr als einen Takt den ein PC andauern kann. 
Siehst du auch bei /pcint_in_(0)/.
Ab da ist ist der PCINT erfasst, muss jedoch noch paar mal durchgereicht 
werden um endgültig anzuschlagen.

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
Noch kein Account? Hier anmelden.