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

Probleme mit Timer_T0Time bei Mega32 Kategorie: Programmierung Basic (von Andreas - 19.03.2008 13:01)
Ich nutze:
C-Control Pro Mega32, C-Control Pro Mega128, eigenes Board
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.
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 PeterS - 19.03.2008 13:58)
    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)