Forum: Mikrocontroller und Digitale Elektronik AVR sehr kurzer PCINT


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von DerDaniel (Gast)


Bewertung
0 lesenswert
nicht 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. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (Firma: Thomas Eckmann Informationst.) (thomase)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


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

von asdfasd (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.