Re: Probleme mit Timer_T0Time bei Mega32 Kategorie: Programmierung Basic (von Andreas - 19.03.2008 14:34) | ||
Als Antwort auf Re: Probleme mit Timer_T0Time bei Mega32 von PeterS - 19.03.2008 13:58 | ||
| ||
Danke für die schnelle Antwort Im Interrupt soll nur ein Zähler laufen. Mein Ziel war alle 1ms ein ADC-Wert in eine Variable zu speichern. Welche Möglichkeit gibt es sonst um 1ms-Pausen zu zu relisieren. Den ' Timer_T0Time ' kann man bei der Mega32 anscheinend nicht gebrauchen, da die 8bit-Parameter keinen Einflu� auf die Zählerstände nach eine Sekunde haben. Wozu gibt es den Befehl, wenn er anscheinend nicht funktioniert. Gru� Andreas > > 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 Sebastian - 19.03.2008 16:58) Re: Probleme mit Timer_T0Time bei Mega32 (von HW - 19.03.2008 17:01) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum