Re: Interrupt 2, INT_2 Kategorie: Programmierung Basic (von PeterS - 20.09.2010 22:59) | |
Als Antwort auf Interrupt 2, INT_2 von Klaus - 20.09.2010 21:56
| |
> Hallo > > Ich verwende die Mega32 für eine eigene Anwendung mit dem > Project Board und IDE1.71. (Nur auf einem Rechner läuft > überhaupt noch WindowsME, das nicht mt den neueren IDE Versionen > zusammen arbeiten will.) > > Die Tastatur(en) sind über PCF8574 angeschlossen. Durch > einen Tastendruck wird zunächst ein Interrupt ausgelöst, der das > Programm zum Erkennen der betätigten Taste startet. > > Damit über den I2C Bus andere Anwendungen ungestört bearbeitet > werden können, möchte ich den Interrupt unterbinden, wenn der Bus > belegt ist. Dazu wollte ich das Kommando Ext_IntDisable(2) benutzen. > Das scheint aber nicht zu funktionieren, wie das unten stehende > Programm zeigt. Ist der Interrupt 2 einmal aktiviert, kann er nicht > mehr abgeschaltet werden. > > Ist das Verhalten mit den neuen IDE Versionen anders? > Liegt ein Fehler vor? > > Klaus > > > Dim Text(30) As Char > Dim irqcnt As Byte > > Sub Zeiten() > Text ="doch anders" > irqcnt = Irq_GetCount(2) > > End Sub > > Sub main() > ' Definition Interrupt Eingang > Port_DataDirBit(10,0) 'Interrupt Eingang > Port_WriteBit(10,1) 'interner Pullup eingeschaltet > > I2C_Init(I2C_100kHz) > Serial_Init(0,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD19200) > AbsDelay (50) > > ' Interrupt definieren > Irq_SetVect(2,Zeiten) > Ext_IntEnable(2,0) 'Interrupt 2, fallende Flanke > > ' PCF8574 vorbereiten für externen Interrupt > ' Tastendruck erzeugt Interrupt > I2C_Start() > I2C_Write(70) 'eingestellte Adresse > I2C_Write(&H0F) 'setzen für fallende Flanke = Interrupt > I2C_Stop() > > Text ="Text soll gleich bleiben" > ' externer Interrupt wird abgeschaltet > Ext_IntDisable(2) > > Do > Serial_WriteText(0,Text) > Serial_Write(0,&H0D) > Serial_Write(0,&H0A) > Loop While True > End Sub > /* > Ergebnis vor Druck auf Taste des Tastatur > > Text soll gleich bleiben > Text soll gleich bleiben > Text soll gleich bleiben > Text soll gleich bleiben > Text soll gleich bleiben > Text soll gleich bleiben > Text soll gleich bleiben > Text soll gleich bleiben > doch anders > doch anders > doch anders > doch anders > > Ext_IntDisable verhindert nicht, da� der Sprung ins Interrupt > Programm "Zeiten" stattfindet. > > */ > Gib doch bitte mit Msg_WriteText() einen String in Zeiten aus, ob die Interruptroutine mehrfach getriggert wird, oder ob es ein einmaliger glitch sein könnte, das der Interrupt aufgerufen wird. Gruss Peter | |
Antwort schreiben Antworten: Re: Interrupt 2, INT_2 (von Klaus - 21.09.2010 17:46) Re: Interrupt 2, INT_2 (von Klaus - 21.09.2010 22:30) Re: Interrupt 2, INT_2 (von Joerg - 22.09.2010 8:08) Re: Interrupt 2, INT_2 (von Klaus - 23.09.2010 20:23) Re: Interrupt 2, INT_2 (von PeterS - 22.09.2010 12:04) Re: Interrupt 2, INT_2 (von Torsten - 22.09.2010 18:33) Re: Interrupt 2, INT_2 (von PeterS - 22.09.2010 19:40) Re: Interrupt 2, INT_2 (von Jörg - 22.09.2010 21:42) Re: Interrupt 2, INT_2 (von PeterS - 23.09.2010 9:38) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum