Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Externe Interrupts Kategorie: Verschiedenes (von jo - 23.11.2010 12:57)
Als Antwort auf Re: Externe Interrupts von Joerg - 23.11.2010 7:32

> > > Hallo,
> > >
> > > ich habe auf meine MEGA128 Projectboard das unten aufgeführte Programm gestartet,
> > > um den externen Interrupt 7 zu testen.
> > > PE7 habe ich über eine 20cm lange Leitung mit einem 4,7KOhm  an +VCC angeschlossen.
> > >
> > > Wenn ich nun meinen Lötkolben oder eine Halogenlampe mit Trafo ein und ausschalte,  
> > > erhalte ich ständig Interrupts. Selbst das Reduzieren des Widerstands auf 1KOhm bracht keine �nderung.
> > > Mit der Leitung  ohne Widerstand an VCC gab es keine Interrupts.
> > >
> > > Ich habe dann die Spannungsversorgung von einem Schaltnetzteil auf ein Labornetzteil gewechselt.
> > > Aber selbst mit dem Labornetzteil habe ich 2,7KOhm benötigt, damit keine Interrupts mehr kommen.
> > >
> > > Ist diese Verhalten normal?
> > > Gibt es geeignete SchaltungsmaÃ?nahme um die Interrupts zu verhindern?
> > >
> > > Für Hilfe währe ich sehr dankbar.
> > >
> > > Hier noch ein Frage an André Helbig:
> > >
> > > Wenn man bei Deiner PCF-Ports-HS I²C-Porterweiterung die Interruptleitung mit dem Projektboard
> > > verbinden würde, hätte man dann den gleichen Effekt?
> > >
> > >
> > > Grü�e Joerg
> > >
> > >
> > >
> > > #define LF        0x0A
> > > #define CR        0x0D
> > > // ExtInt Quelle definieren
> > > #define EXTINT INT_7
> > >
> > > // 0: ein low Pegel löst einen Interrupt aus
> > > // 1: jeder Flankenwechsel löst einen Interrupt aus
> > > // 2: eine fallende Flanke löst einen Interrupt aus
> > > // 3: eine steigende Flanke löst einen Interrupt aus
> > >
> > > #define INTMODE 2
> > >
> > > unsigned int count;
> > >
> > > void Ext_ISR(void)
> > > {
> > >     byte i;
> > >     int irqcnt;
> > >
> > >     Msg_WriteText("Ext IRQ  ");
> > >     Msg_WriteInt(count);
> > >     Msg_WriteChar(CR);
> > >
> > >     count++;
> > >
> > >     irqcnt=Irq_GetCount(EXTINT);         // Interrupt Request Counter
> > >  }
> > > //------------------------------------------------------------------------------
> > > // Hauptprogramm
> > > //
> > > void main(void)
> > > {
> > >     Msg_WriteText("Ext IRQ Test ");
> > >     Msg_WriteInt(EXTINT);
> > >     Msg_WriteChar(CR);
> > >
> > >     count=0;
> > >
> > >     Irq_SetVect(EXTINT,Ext_ISR);         // Interrupt Service Routine definieren
> > >     Ext_IntEnable(7,INTMODE);           // Interrupt aktivieren
> > >
> > >
> > >
> > >     while (1)
> > >     {
> > >     }
> > >
> > > }
> >
> > Hallo Jörg,
> > das Verhalten ist völlig normal, Eingänge sollten immer über einen Tiefpass geschalten werden
> > siehe http://de.wikipedia.org/wiki/Tiefpass
> > z.B. R=10K, c = 100nF. Bei längeren Leitungen (z.B. < 10 m) verwende ich zum Schutz noch
> > Transildioden (http://de.wikipedia.org/wiki/Transildiode)
> >
> > Viele Grü�e
> > Jo
>
> Hallo Jo,
>
> vielen Dank für die Info.
>
> Der Tiefpass funktioniert aber leider nur direkt am Pfostenstecker auf dem Projektboard.
> Verbinde ich den Pfostenstecker mit einer 10cm Langen Leitung zum Lochrasterfeld,
> dann verbessert sich der Effekt, ist aber trotzdem noch vorhanden.
>
> Das RC Glied am Pfostenstecker ist doch schon eine ganz schön wilde Verdrahtung�
>
> Grü�e Joerg
>
>
Hi Jörg, du kannst an beiden Enden einen Tiefpass einsetzten. Du kannst auch mit den Werten von R
und C experimentieren. Ein Oszi würde auch nützlich sein.
Viele Grü�e
Jo


    Antwort schreiben


Antworten:

Re: Externe Interrupts (von Joerg - 23.11.2010 15:02)
    Re: Externe Interrupts (von jo - 23.11.2010 15:45)