Für dieses Forum muß Javascript im Browser aktiviert werden!
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> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Harald, > > > Zunächst mal, hab ich das richtig verstanden? > > Ich binde mit "hook" eine C-Routine an den Timerinterrupt. > > Richtig. Allerdings würde ich eher direkt in ASM schreiben. ;-) > In C komen hin un wieder seltsame Konstrukte heraus. > > > Mit dem zu dekrementierenden Zähler ist vermutlich keine Variable, sondern ein Zählerregister im > > Prozessor gemeint, das dekrementiert wird. > > Nein, ein Register im eigentlichen Sinn ist nicht gemeint. > Jedoch brauchst Du einen festen Bereich für Deinen Zähler im RAM. > Dazu ist es besser, im internen RAM ein Integer zu reservieren. > Es gab ursprünglich zwei normal nicht benutzte Bereiche im internen RAM. > Einmal 100Byte von 0xF8B4 bis 0xF917 und im Bitadressierbaren Bereich ab 0xFD00h. > Der erste Bereich mit 100Byte kann bedingt dür Daten benutzt werden. > Bedingt, da dieser für das Modul flash.c2 benötigt wird, um Schreib- und Löschzugriffe > auf den Flash zu ermöglichen. > Im bitadressierbaren Bereich wird das Byte 0xFD00 vom OS benutzt. > die Bytes 0xFDFE und 0DFF werden vom Modul cap.c2 für die erweiterten Captures benutzt. > Alles dazwischen sollte man frei verwenden können.(252 Byte) > > > Der Aktuelle Wert, der die Zeit für den Impuls festlegt, muß jetzt vor dem ersten Aufruf der C-Routine > > in dieses Register geschrieben werden. > > Geht das irgendwie vom Betriebssystem aus und ... > > Auf die RAM-Bereiche des internen RAMs kann man sehr einfach mit inlines zugreifen: > Du benutzt z.B. das Speicher-Word an 0xFDFC als "Register". > Dann kannst Du mit > <code>function setMyCounter(int value) > { > inline vmcodes.VM_STORE_ABSOLUTE_INT; > inline 0xFDFC; > }</code> > eine beliebigen Wert darin speichern. > Bei Programmstart eben den Wert 0, bevor Du die Routie an den interrupt hängst. > > > ... vor allem, wie verhindere ich, daß dieses Register irgendwie vom Betriebssystem > > wieder überschrieben wird? Schließlich weiß ich nicht so genau, was das OS eigentlich macht... > > Indem man eben, wie oben geschrieben, einen Speicherbereich des internen RAM benutzt, > der nicht vom OS benutzt wird. > > MfG André H.