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 > 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>