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

Re: Probleme mit Timer_T0Time bei Mega32 Kategorie: Programmierung Basic (von PeterS - 19.03.2008 13:58)
Als Antwort auf Probleme mit Timer_T0Time bei Mega32 von Andreas - 19.03.2008 13:01

> Hallo,
> kann mir einer helfen. Ich wollte ĂĽber die ' Timer_T0Time ' Funktion ein 1Millisekunden-Interrupt erstellen.
> Wie man im unten stehenden Programm sieht liefern die Mega32 und Mega128 unterschiedliche Ergebnisse.
Also ich kann bestätigen, das der Mega32 Bytecode-Interpreter langsamer ist als der Mega128
Bytecode-Interpreter. Dies liegt daran, das sowenig Platz auf dem Mega32 ist, dort wurde der
Interpreter auf Platz optimiert, beim Mega128 auf Geschwindigkeit.

Beide Module sind aber eigentlich zu langsam, um jede Milisekunde umfangreiche Befehle auszufĂĽhren.
Ich wĂĽrde bei einem 1ms Interrupt die Interruptroutine auf ca. 10 Befehle begrenzen, damit noch
etwas Rechenleistung fĂĽr das Hauptprogramm ĂĽbrig bleibt.

Gruss Peter

> Da ich mit der Mega32 arbeite und die Mega128 nur testweise habe, bräuchte ich eine Lösung.
>
> Mache ich etwas verkehrt oder hat der Mega32-Interpreter einen Fehler.
>
> Besten Dank fĂĽr die Hilfe
>
> Andreas
>
> Hier das Programm:
>
>
>  'Definition von globalen Variablen und Adressen
> Dim cnt1 As Byte                        ' Counter fĂĽr Interrupt
> Dim cnt_10ms As Word                    ' Counter in 10ms Schritten
> Dim cnt_1ms As Word                    ' Counter in 1ms Schritten
> Dim Pause As Single'Word                       ' Pause in 10ms Schritten
> Dim Sekunde, Minute, Stunde As Byte     ' fĂĽr eventuelle Uhr / Betriebsstundenzähler?
> Dim i , y , z As Integer                ' globale Variablendeklaration
>
>
>
> Sub main()
> ' Initialisierung
>  ' !!!! ----- USB-Kommunikation abschalten    ---- !!!!!
>  SPI_Disable()
>  'Pullup-Widerstände von Port A Abschalten
>  Port_DataDir(0,0)
>  Port_Write(0,0)
>  ' -------------------------------------------------
>
> '                        MEGA32 -->'ms  --> Pause / cnt1  --> ms   / Pause ' MEGA128 --> ms   / Pause
> 'Timer_T0Time(14,PS0_1024)  '500 -->    29 /   51  --> 1000 /   57                1000 / 1018
> 'Timer_T0Time(57,PS0_256)   '500 -->   112 /   51  --> 1000 /  222                1000 / 1000
> 'Timer_T0Time(230,PS0_64)   '500 -->   449 /   51  --> 1000 /  890                1000 /  990
> Irq_SetVect(INT_TIM0COMP,INT_1ms)  ' Interrupt Service Routine definieren
> Irq_SetVect(INT_TIM2COMP,INT_10ms)  ' Interrupt Service Routine definieren
>
>
> 'Do While cnt1 <= 50
> Do While Sekunde <=0
> End While
> Msg_WriteFloat (Pause)
> Msg_WriteChar (32)
> Msg_WriteInt (cnt1)
> Msg_WriteChar (32)
> Msg_WriteInt (Sekunde)
> Msg_WriteChar (13)
>
>
> End Sub
> '---------------------------------------------
> '---| ab hier folgen Subs und Funktionen |----
> '---------------------------------------------
> ' Interupt 10ms
> Sub INT_10ms()
>     Dim irqcnt As Integer
>     RTC()                               ' Funktionsaufrauf: RTC
>     irqcnt=Irq_GetCount(INT_TIM2COMP)   ' Interrupt Request Counter
> End Sub
>
> ' Interupt 1ms
> Sub INT_1ms()
>     Dim irqcnt As Integer
>     ms_1()                               ' Funktionsaufrauf: RTC
>     irqcnt=Irq_GetCount(INT_TIM0COMP)   ' Interrupt Request Counter
> End Sub
>
> Sub ms_1 ()
>     Pause = Pause + 1
> End Sub
>
> Sub RTC()
>     cnt1 = cnt1 + 1                         ' 10ms Zähler erhöhen
>
>     If cnt1=100 Then
> '        Display_Time()                  ' Funktionsaufruf: Display_Time
>         Sekunde= Sekunde+1
>         If Sekunde=60 Then
>             Sekunde=0
>             Minute= Minute+1
>             If Minute=60 Then
>                 Minute=0
>                 Stunde= Stunde+1
>                 If Stunde=24 Then
>                     Stunde=0
>                 End If
>             End If
>         End If
>         cnt1=0
>     End If
> End Sub
>


    Antwort schreiben


Antworten:

Re: Probleme mit Timer_T0Time bei Mega32 (von Andreas - 19.03.2008 14:34)
    Re: Probleme mit Timer_T0Time bei Mega32 (von Sebastian - 19.03.2008 16:58)
        Re: Probleme mit Timer_T0Time bei Mega32 (von HW - 19.03.2008 17:01)