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 Joerg - 23.11.2010 15:02)
Als Antwort auf Re: Externe Interrupts von jo - 23.11.2010 12:57
Ich nutze:
C-Control Pro Mega128
> > > > 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

Hallo Jo,

ich habe bereits einiges ausprobiert und mit dem Oszi gemessen...
Aber nur die Variante mit dem Pfostenstecker hilft wirklich.

Grü�e Joerg


    Antwort schreiben


Antworten:

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