Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

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)