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 Torsten, > > > > > > das Programm bringt im Prinzip nichts. Ich will ja nicht nur 2 Strings timerverzögert > > > ausgeben, sondern eine Vielzahl von Ausgaben in mehreren Funktionen machen. > > > > > > Wie es scheint muss die Ausgabe eines Strings erst beendet sein, bevor der nächste > > > ausgegeben wird. Dazu müsste ich wissen, wann die Ausgabe abgeschlossen ist. > > > Mich würd auch interessieren, ob während der seriellen Ausgabe das Hauptprogramm weiter > > > abgearbeitet wird oder in der Zeit still steht. Im Manual steht dazu herzlich wenig. > > > > > > > > Hallo Hannes, > > > > im sogenannten "Interruptbetrieb" läuft das Hauptprogramm parallel > > zur seriellen Ausgabe weiter. Die Funktion "Serial_WriteText(0, gac_text_2);" > > kehrt sofort wieder zurück. Du musst deine Aufrufe synchronisieren. > > Eine Lösung für die Umsetzung sollte das obige Programm zeigen. > > > > Gruß Torsten > > > > Du hast recht, während der Datenausgabe (alle 10ms in RTC) läuft das Hauptprogramm > (Port_ToggleBit(30))ungestört weiter. Sowas könnte man ins Manual schreiben ! > > > > // Testprogramm > > #define LED1_Ein Port_WriteBit(30,1) // Port D.6 > #define LED1_Aus Port_WriteBit(30,0) > > byte buffer[SERIAL_BUF(20,30)]; > byte Stunde,Minute,Sekunde,cnt1_10ms,cnt2_10ms,n; > word counter; > char text1[30]; > > void main(void) > { > text1= "Hallo Welt 012345 "; > > Port_DataDirBit(30,1); // Port D.6 auf Ausgang = LED1 > > Serial_Init_IRQ(0,buffer,20,30,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD38400); > > Irq_SetVect(INT_TIM2COMP,INT_10ms); // ISR RTC > > > while(1) > { > > Port_ToggleBit(30); // LED1 EIN-AUS > > } > > } > > > > //--------------------------------- Interrupt alle 10ms ---------------------------------- > // > void INT_10ms(void) > { > int irqcnt; > RTC(); // Funktionsaufrauf: RTC > irqcnt=Irq_GetCount(INT_TIM2COMP); // Interrupt Request Counter > } > > //-------------------------------------- Real-Time-Clock --------------------------------- > // > void RTC(void) // Aufruf alle 10ms > { > > > Serial_WriteText(0,text1); // String seriell ausgeben; Dauer ca. 5ms > > cnt1_10ms++; cnt2_10ms++; > > if (cnt1_10ms==100) // jede Sekunde > { > > Sekunde++; > if (Sekunde==60) // jede Minute > { > Sekunde=0; > Minute++; > if (Minute==60) // jede Stunde > { > Minute=0; > Stunde++; > if (Stunde==24) Stunde=0; > } > } > cnt1_10ms=0; > > } > } > >