Forum: Mikrocontroller und Digitale Elektronik AVR ATmega88 - Externer Interrupt - Buffer?


von Tim (Gast)


Lesenswert?

Hallo zusammen,

ich bin Neuling auf dem Gebiet der Mikrocontrollerprogrammierung und 
bastele gerade mit einem Lichtsensor herum. Dieser gibt mir je nach 
Lichtintensität ein Rechtecksignal mit bestimmter Frequenz heraus.

Nun zu meinem Problem, die generelle Auswertung funktioniert wie sie 
soll. Zusätzlich findet alle 10ms eine Kommunikation mit einem Funkmodul 
statt. Während dieser Zeit ist der "Externe Interrupt" ausgeschaltet. 
Beides zusammen funktioniert bis zu einer gewissen Lichtstärke bzw. 
Frequenz. Wenn ich den Sensor jedoch direkt in die Sonne halte, erhöht 
sich die Frequenz so stark dass das ganze Timing der Funkübertragung 
abbricht. Und das obwohl ich den Interrupt während der Funkgeschichte 
ausschalte.

Woran kann das liegen. Gibt es da eine Art Buffer am "externen 
Interrupt, der eine gewisse Anzahl der Ereignisse speichert?

von Peter II (Gast)


Lesenswert?

Tim schrieb:
> Woran kann das liegen. Gibt es da eine Art Buffer am "externen
> Interrupt, der eine gewisse Anzahl der Ereignisse speichert?

ja gibt es, seht auch im Datenblatt.

Es wird genau 1 event ja interrupt gepspeichert.

von Oliver J. (skriptkiddy)


Lesenswert?

Tim schrieb:
> Dieser gibt mir je nach
> Lichtintensität ein Rechtecksignal mit bestimmter Frequenz heraus.
Zum zählen der Pulse kann man einen Timer nehmen, der seinen Takt aus 
einem Inputcapture-Pin bezieht.

Gruß Oliver

von Plopp (Gast)


Lesenswert?

Und weswegen ist der externe Interupt gesperrt ?

von spess53 (Gast)


Lesenswert?

Hi

>Zum zählen der Pulse kann man einen Timer nehmen, der seinen Takt aus
>einem Inputcapture-Pin bezieht.

Fast richtig. Extern wird ein Timer über das Tx-Pin getaktet. Über den 
ICP-Pin kann die Periodendauer eines Signals ausgewertet werden.

MfG Spess

von Oliver J. (skriptkiddy)


Lesenswert?

spess53 schrieb:
> Fast richtig. Extern wird ein Timer über das Tx-Pin getaktet. Über den
> ICP-Pin kann die Periodendauer eines Signals ausgewertet werden.

Da hätte ich mal richtig ins Datenblatt schauen sollen. :)

Gruß Oliver

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Oliver J. schrieb:
> Da hätte ich mal richtig ins Datenblatt schauen sollen. :)

Zum Thema Datenblatt:

Schaut doch mal ins Kapitel "17.0.3 External clock source". Das könnte 
die Lösung für das beschriebene Problem sein.

Damit kann man die Rechteck-Impulse zählen, ohne einen Interrupt zu 
verwenden.

von spess53 (Gast)


Lesenswert?

Hi

>Damit kann man die Rechteck-Impulse zählen, ohne einen Interrupt zu
>verwenden.

Kann man schon mit Interrupt machen. Aber nicht mit Externen/ PinChange 
Interrupt.

MfG Spess

von Tom M. (tomm) Benutzerseite


Lesenswert?

Tim schrieb:
> Wenn ich den Sensor jedoch direkt in die Sonne halte, erhöht
> sich die Frequenz so stark dass das ganze Timing der Funkübertragung
> abbricht.

Was ist das denn für ein Lichtsensor? Um welche Frequenz geht es, 
rattert das Ding bei Tageslicht mit mehreren kHz?

> Und das obwohl ich den Interrupt während der Funkgeschichte
> ausschalte.

Kann nicht sein, da stimmt was nicht.

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.