Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > > Peter > > > > > > Ein Nachtrag. Da ich keinen USB Anschluß habe, kann ich Msg_WriteText nicht > > > benutzen. Ich habe aber eine Warteschleife in dem Interrupt Programm eingebaut: > > > Do > > > k = k + 1 > > > Loop While k > > > > > > so daß erst nach dem Zählen aller Integer Zahlen die Schleife verlassen > > > wird und dann im Hauptprogramm den Interrupt Zähler ausgegeben. > > > > > > Es wurde immer 1 ausgegeben. Ich verstehe das so, daß während der Wartezeit > > > kein weiterer Interrupt angekommen ist. > > > > > > Klaus > > > > Hallo Klaus, Hallo Peter, > > > > ich habe das folgende Testprogramm auf meinem MEGA128 mit IDE 2.12.02 getestet, > > und es funktioniert ohne Probleme. Nach 10s kommen keine Interupts mehr durch. > > Den IRQ Eingang habe ich mit einem Taster belegt. > > > > > > Das Testprogramm ist im wesentlichen ein Kopie des Beispiels EXT_INT1.cc. > > Was mir bei dem Beispiel aufgefallen ist, ist das der IRQ Eingang nicht mit > > Port_DataDirBit als Eingang definiert wurde. > > > > Diese Frage geht an Peter. Ist dies bei Ext_IntEnable nicht nötig? > > > > Grüße Jörg > > > > > > > > #define LF 0x0A > > #define CR 0x0D > > // ExtInt Quelle definieren > > #define EXTINT INT_2 > > // IntMode: 0= Interrupt bei 0 Pegel; 2=fallende Flanke; 3=steigende Flanke > > #define INTMODE 2 > > > > > > > > void Ext_ISR(void) > > { > > byte i; > > int irqcnt; > > > > Msg_WriteText("Ext IRQ "); > > Msg_WriteChar(CR); > > > > irqcnt=Irq_GetCount(EXTINT); // Interrupt Request Counter > > } > > //------------------------------------------------------------------------------ > > // Hauptprogramm > > // > > void main(void) > > { > > Msg_WriteText("Ext IRQ Test"); > > Msg_WriteChar(CR); > > > > Irq_SetVect(EXTINT,Ext_ISR); // Interrupt Service Routine definieren > > > > > > Ext_IntEnable(EXTINT,INTMODE); // Interrupt aktivieren > > > > Thread_Delay(1000); > > > > Msg_WriteText("Disable"); > > Msg_WriteChar(CR); > > Ext_IntDisable(EXTINT); > > > > while (1) > > { > > } > > > > } > > > > > > In meinen Tests funktioniert Ext_IntDisable() auch, da kann ich keine Probleme erkennen. Wenn > die externen Interrupts eingeschaltet werden, dann können die Pins als Eingang oder Ausgang > geschaltet worden sein, danach arbeiten Sie als Interrupt Eingänge. > > Gruss Peter