Fader Snapshot

Hallo..

Derzeit läuft eine fertige MB64e bei mir und ich möchte eine erweitung einbauen die mir z.b alle 5 sec. die Faderwerte erneut sendet. Die Werteausgabe erfolgt als SysEx.

Mios 1.7 ist noch drauf glaube ich.

Wie kann ich das realisieren ?

lg, markus

Hallo Markus,

man kann das z.B mit einem Timer realisieren, der alle 5 Sekunden ein Flag setzt (einfach ein Bit in einem freien Register) - Dieser Request sollte dann in USER_Tick() abgefragt werden, ist er gesetzt, loescht man ihn wieder, und sendet den Snapshot. Von der Timer Routine aus sollte man nichts senden, da es sich hierbei um eine Interrupt Routine handelt.

Am einfachsten waere es, wenn Du als Timer den Hook USER_SR_Service_Prepare hernimmst, der wird bereits jede Millisekunde aufgerufen. Hier muesstest Du einen Zaehler einbauen, der bei 5000 anfaengt, und mit jedem Aufruf dekrementiert. Ist der Wert 0 erreicht, wird auf 5000 zurueckgesetzt, und das Request Flag gesetzt.

Beispiel (blind programmiert, nicht ausprobiert):

app_defines.h:
MY_CTR_L	EQU	0x070
MY_CTR_H	EQU	0x071
MY_REQUEST_FLAG	EQU	0x072

main.asm:
USER_SR_Service_Prepare

;; decrement counter
decf	MY_CTR_L, F
skpc
decf	MY_CTR_H, F

;; ...until it reaches zero
movf	MY_CTR_L, W
iorwf	MY_CTR_H, W
bnz	USER_SR_Service_Prepare_NoReload
USER_SR_Service_Prepare_Reload
        ;; reload counter and request snapshot
movlw	LOW(5000)
movwf	MY_CTR_L
movlw	HIGH(5000)
movwf	MY_CTR_H
bsf	MY_REQUEST_FLAG, 0
USER_SR_Service_Prepare_NoReload

        ;; old code...

;; branch to the Rx/Tx LED handler

goto	MIDI_RXTX_Handler

[/code]









Gruss,



        Thorsten.

Hallo Thorsten..

Danke, wede ich die Nacht mal ausprobieren und dann berichten.

lg, markus

So habe es mal eingetragen.

Wurde ohne Fehler compiliert aber es tut sich nix. Es werden keine Snapshots gesendet.

lg, markus

Dieser Request sollte dann in USER_Tick() abgefragt werden, ist er gesetzt, loescht man ihn wieder, und sendet den Snapshot. Von der Timer Routine aus sollte man nichts senden, da es sich hierbei um eine Interrupt Routine handelt.

Gruss,

        Thorsten,