Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > 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