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 Mitstreiter, > > ich habe ein Problem mit Hardwareinterrupts, die scheinbar nicht richtig abgearbeitet werden. > Das Prog aus den Beispielen erstellt: > > 'Int 7 auf Port PE7 , Flanke fallend! > #define LF 0x0A > #define CR 0x0D > Dim zaehler1 As Integer > Dim zaehler2 As Integer > > Sub Ext_ISR() > 'zaehler1=zaehler1 + 1 'interrupts zählen > geht nicht > zaehler1++ '=zaehler1 + 1 'interrupts zählen >geht auch nicht > zaehler2=Irq_GetCount(INT_7) > End Sub > > Sub main() > Dim text(20) As Char > zaehler1 = 0 > zaehler2 = 0 > Serial_Init(0,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD9600) > AbsDelay(50) > Serial_Write(0,CR) ' CR und LF ausgeben > Serial_Write(0,LF) > Serial_WriteText(0,"Gestartet") > Serial_Write(0,CR) ' CR und LF ausgeben > Serial_Write(0,LF) > 'IRQ-Pin auf Eingang setzen > Port_DataDirBit(39,0) '0=Eingang > 'Pullup einschalten > Port_WriteBit(39,1) > 'ISR definieren > Irq_SetVect(INT_7,Ext_ISR) > 'Mode setzen und aktivieren > Ext_IntEnable(7,2)'Mode Flanke fallend > Serial_WriteText(0,"Int ein") > Serial_Write(0,CR) ' CR und LF ausgeben > Serial_Write(0,LF) > Thread_Delay(10000)'10 sek warten > Ext_IntDisable(7) > Serial_WriteText(0,"Fertig") > Serial_Write(0,CR) ' CR und LF ausgeben > Serial_Write(0,LF) > Serial_WriteText(0,"Zähler1=") > Str_WriteInt(zaehler1,text,0) > Serial_WriteText(0,text) > Serial_Write(0,CR) ' CR und LF ausgeben > Serial_Write(0,LF) > Serial_WriteText(0,"Zähler2=") > Str_WriteInt(zaehler2,text,0) > Serial_WriteText(0,text) > Serial_Write(0,CR) ' CR und LF ausgeben > Serial_Write(0,LF) > End Sub > > Keine Fehlermeldungen vom Compiler. > Start über die Taste Reset/Run. > Mit einem Stück Draht ein paar mal von PE7 auf GND. > Ergebnis im Terminalprog: > Gestartet > Int ein > Fertig > Zähler1=1 > Zähler2=229 > Das ich in einer so hohen Frequenz schon zittrig bin, war mir gar nicht bewußt, > aber trotzdem hätte m.E. der Zähler1 mehr als 1 anzeigen müssen. Ich habe beide Arten der > Zählererhöhung probiert. Natürlich Zähler 2 immer unterschiedlich, je nachdem wie zittrig ich > war, aber Zähler1 immer = 1. > > Kann mir hier einer helfen? > > Mfg > Erzgebirgler47