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

Re: ISR_10ms Kategorie: Programmierung Basic (von PeterS - 8.03.2010 13:43)
Als Antwort auf ISR_10ms von Thomas - 8.03.2010 11:42

> Hallo,
> ich habe ein kleines Problem. Ich starte bei meiner cc128 den 10ms Interrupt von Timer2.
> Darüber möchte ich die Tastatur abfragen und mir die DCF-Zeit holen.
> Wenn ich aber jetzt im Sub_main() in der DO...Loop Schleife auch noch Code ausführe dann
> verlangsamt sich die Interrupt-Routiene extrem. Teilweise dauert ein Interrupt-Durchlauf 30ms
> und mehr.... Unten habe ich mal ein bisschen vom Code eingestellt.......
>
>
> '------------------------------------------------------------------------------
> ' 10ms Interruptroutiene
> '
> Sub INT_10ms()
>     Dim irqcnt As Integer
>     DCF_PULS()                              ' DCF_MODE=1 Puls suchen
>     DCF_SYNC()                              ' DCF_MODE=2 Synchronisation
>     DCF_FRAME()                           ' DCF_MODE=3 Datenaufnahme
>     Key_Input()                                ' Funktionsaufrauf: Tastaturabfrage
>     irqcnt=Irq_GetCount(INT_TIM2COMP)       ' Interrupt Request Counter
> End Sub
>
>
> '------------------------------------------------------------------------------
> ' Hauptprogramm
> '
> Sub main()
>
>     Serial_Disable(1)                       ' 2. RS232 abschalten
>     SPI_Disable()                           ' SPI abschalten
>     LCD_Init()                                ' Display initialisieren
>     LCD_ClearLCD()                       ' Display löschen
>     LCD_CursorOff()                       ' Display Cursor ausschalten
>     Key_Init()                                 ' Keyboard initialisieren
>     I2C_Init(I2C_100kHz)                ' I2C-Bus mit 100kHz Initialisieren
>     DCF_INIT()                               ' Initialisierung des DCF Modes
>
>     Irq_SetVect(INT_TIM2COMP,INT_10ms)      ' Interrupt Service Routine definieren für Key & DCF
>                                                                     ' Timer2 erzeugt einen 10ms interrupt
>     DCF_START()                          ' Starten des DCF Modes
>
>
>     Do While 1                              ' Endlosschleife
>                                                   ' Hier wird eigener code ausgeführt
>     End While
>
>
>
> Nun meine Frage: Tastatur, LCD, DCF und ein Paar Ports schalten ist doch nicht zuviel
> verlangt? Oder habe ich einfach nur einen Denkfehler?
>
> Danke schon jetzt für die Antworten.
>
> GruÃ?
> Thomas

Kommt doch immer darauf an, was Du da machst. Gib doch was aus, wenn irq_cnt > 1 ist, dann hast
Du ja einen Interrupt verpasst. Dann in der Hauptschleife sukzessive Anweisungen auskommentieren
bis man weniger als 10ms braucht. Dann hast Du Deine Antwort, was die Zeit frisst.

Gruss Peter


    Antwort schreiben


Antworten:

Re: ISR_10ms (von Thomas - 8.03.2010 18:47)
    Re: ISR_10ms (von PeterS - 9.03.2010 9:50)
        Re: ISR_10ms (von Tron - 11.04.2010 17:34)