Re: Externe Interrupts Kategorie: Verschiedenes (von jo - 22.11.2010 13:42) | |
Als Antwort auf Externe Interrupts von Joerg - 22.11.2010 13:33
| |
> 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 | |
Antwort schreiben Antworten: Re: Externe Interrupts (von Joerg - 23.11.2010 7:32) Re: Externe Interrupts (von jo - 23.11.2010 12:57) Re: Externe Interrupts (von Joerg - 23.11.2010 15:02) Re: Externe Interrupts (von jo - 23.11.2010 15:45) Re: Externe Interrupts (von jo - 22.11.2010 14:13) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum