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 > > Hi, > > ich sehe hier zumindest nichts grundlegend falsches. Man muß aber nicht den eigenen Interrupt sperren, > sondern kann ihn weiterlaufen lassen. Was passiert denn genau? Kommt immer nur derselbe Interrupt, > oder kommt nur einmal ein Interrupt und dann nie wieder? Hast Du mal Breakpoints gesetzt um das zu > verifizieren? > > Gruss Peter > > > Hallo Zusammen, > > > > ich habe an einem C-Control Mega 32 drei Drehimpulsgeber angeschlossen. Jeweils A der drei Geber gehen auf die > > drei Interrupt Eingänge des C-Control. > > Jetzt ist es so, dass nach dem Einschalten alle drei funktionieren (so scheint es jedenfalls). Sobald ich einen der > > drei Drehe (richtung scheint egal zu sein) dann geht ein anderer nicht mehr. > > Also der Interrupt wird nicht ausgelöst. Ich bin relativ am Anfang der programmierung. Kann sein, dass ich ein > > Denkfehler habe. Ich habe die aktuelle Beta als auch die letzte Release der IDE getestet. > > Macht keinen Unterschied. Hier ist mein Testcode: > > > > <basic> > > 'Drehgeber Test > > '2009_04_14 > > > > 'LED an PC4 > > #define LED1_Ein Port_WriteBit(15,True) > > #define LED1_Aus Port_WriteBit(15,False) > > > > 'Schalter Eingang > > #define SW1 Port_ReadBit(8) > > > > #define SW1_A Port_ReadBit(26) > > #define SW1_B Port_ReadBit(28) > > > > #define SW2_A Port_ReadBit(27) > > #define SW2_B Port_ReadBit(29) > > > > #define SW3_A Port_ReadBit(10) > > #define SW3_B Port_ReadBit(30) > > > > Dim zaehler1, zaehler2, zaehler3 As Integer > > > > Sub main() > > > > zaehler1 = 10 > > zaehler2 = 20 > > zaehler3 = 30 > > > > Port_DataDirBit(8,PORT_IN) > > > > Port_DataDirBit(26,PORT_IN) 'SW_A Schalter auf Eingang > > Port_DataDirBit(28,PORT_IN) 'SW_B Schalter auf Eingang > > > > Port_DataDirBit(27,PORT_IN) 'SW_A Schalter auf Eingang > > Port_DataDirBit(29,PORT_IN) 'SW_B Schalter auf Eingang > > > > Port_DataDirBit(10,PORT_IN) 'SW_A Schalter auf Eingang > > Port_DataDirBit(30,PORT_IN) 'SW_B Schalter auf Eingang > > > > Port_DataDirBit(15,PORT_OUT) 'LED auf Ausgang > > > > Irq_SetVect(INT_0, Dreh1) > > Ext_IntEnable(INT_0,1) > > > > Irq_SetVect(INT_1, Dreh2) > > Ext_IntEnable(INT_1,1) > > > > Irq_SetVect(INT_2, Dreh3) > > Ext_IntEnable(INT_2,1) > > > > Serial_Init(0,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD9600) > > > > Do While True > > /* > > '1. Schaltertest > > If SW1 Then > > LED1_Aus > > Else > > LED1_Ein > > End If > > */ > > End While > > > > End Sub > > > > Sub Dreh1() > > Dim irqcnt1 As Integer > > Ext_IntDisable(INT_0) 'INT2 sperren > > 'Thread_Delay(10) > > If SW1_B <> SW1_A Then > > zaehler1 = zaehler1 + 1 > > Else > > zaehler1 = zaehler1 - 1 > > End If > > Serial_Write(0,zaehler1) > > Ext_IntEnable(INT_0,1) '// INT1 freigeben > > irqcnt1=Irq_GetCount(INT_0) > > End Sub > > > > Sub Dreh2() > > Dim irqcnt2 As Integer > > Ext_IntDisable(INT_1) 'INT2 sperren > > 'Thread_Delay(10) > > If SW2_B <> SW2_A Then > > zaehler2 = zaehler2 + 1 > > Else > > zaehler2 = zaehler2 - 1 > > End If > > Serial_Write(0,zaehler2) > > Ext_IntEnable(INT_1,1) '// INT1 freigeben > > irqcnt2=Irq_GetCount(INT_1) > > End Sub > > > > Sub Dreh3() > > Dim irqcnt3 As Integer > > Ext_IntDisable(INT_2) 'INT2 sperren > > 'Thread_Delay(10) > > If SW3_B <> SW3_A Then > > zaehler3 = zaehler3 + 1 > > Else > > zaehler3 = zaehler3 - 1 > > End If > > Serial_Write(0,zaehler3) > > Ext_IntEnable(INT_2,1) '// INT1 freigeben > > irqcnt3=Irq_GetCount(INT_2) > > End Sub > > </basic>