
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo Wolfgang. > Ich habe nur die Proc an den Anfang geschoben. und Sie mit UIRIrq=ON freigegeben Nun geht es prima und sehr sehr schnell Jetzt hast Du Deine Assemblerroutine direkt in das Betriebssystem integriert. Das ist natürlich sehr viel effektiver, weil die BASIC-Interruptroutine nur in den Interpreter eingebunden wird. Port-Schreibzugriffe sind in einer Assembler-Interruptroutine aber nicht so ohne weiteres zulässig. Problematisch ist das zum Beispiel, wenn im Hauptprogramm per Open-Drain auf Ports zugegriffen wird (beispielsweise für I²C): Durch Read-Modify-Write-Befehle in den Interruptroutinen wird das Portlatch unter Umständen verändert. Außerdem könnte die Interruptroutine Programmcode unterbrechen, der gerade den Zustand der Portregister ausgelesen hat und nun ein Bit modifizieren und wieder in den Port schreiben will. Das Betriebssystem enthält mehrere solcher Codebereiche beim Zugriff auf Bitports und Bitvariablen. Diese Schwierigkeiten existieren bei allen gemeinsam genutzten Ressourcen: Der Anwender muß bei der Programmentwicklung immer daran denken, daß das Hauptprogramm zu jedem beliebigen Zeitpunkt von seiner Interruptroutine unterbrochen werden kann, sofern keine entsprechenden Vorkehrungen getroffen werden. PWM, RS232 und ähnliches kommt übrigens ohne Schreibzugriffe auf Portregister aus. Dafür sind die "channel pins" vom Timer Interface Module (TIM) vorgesehen. > Sie iiar_irq genannt (weiß nicht ob das wichtig ist) Wichtig ist das nicht. Aber eine sinnvolle Bezeichnung fördert das Verständnis. Grüße Dietmar Meine Homepage: http://ccintern.dharlos.de |
| Antwort schreiben |