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)