Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: C Conrol unit tunen ( schneller machen) wie? Kategorie: Programmierung Basic (von Kay - 3.07.2005 20:47)
 Als Antwort auf Re: C Conrol unit tunen ( schneller machen) wie? von Christoph berninger - 3.07.2005 19:59
Kay nutzt:  CC1-Unit V1.1, CC1-Station V1.1
> Danke war nur ne Frage habe das Multitasking versucht und keine einschränkungen beim reinen messen von Frequenzen bemerkt (mit Multitasking in betrieb ) vielleicht ist DCF ja ein Puffer ( bytes nötig )

für die DCF-funktionalität werden gleich eine ganze reihe bytes verwendet,
da die uhrzeit ja während des einlesens ständig gepuffert und auf korrektheit
geprüft werden muss, weil die systemuhr ja solange unbeeinflusst bleibt,
bis klar is, dass die dekodierten daten richtig sind.

es ist aber so, das der DCF-eingang bei pegelwechseln ständig interrupts auslöst,
die wiederum systemroutinen anstossen, welche die inhalte all dieser register
verändern. dies wirft natürlich die funktion von routinen, welche diese register
"miss"brauchen, übern haufen.
das dualtasking ist überdies auch ein kleiner schwindel, denn laufen beide tasks
voll, dann läuft jeder nur mit halber kraft dessen, was basic an sich könnte.
das KANN auch zum problem werden - muss jeder in seiner anwendung selbst
sehen.

pause-befehle fallen allerdings in einem reglenden programm aus!
hier musst du künftig zeitmessungen mit dem 20-ms-timer vornhemen.
du bekommst an dieser stelle noch mal von mir eine S19.
diese beinhaltet die FREQ/5-routine und Dietmars BASIC-beschleuniger:

S1220101A608B7523FDC810D1305CD0EE94F81CD0E70B668BA6927143CDCB6DCA10A268D
S12301200EB685B77CB686B77D3F853F863FDC4F819CCD0E04A1542306CD0917CC0969484F
S112014097D61DF6B7BED61DF7B7BFBDBD20E3DA
S5030003F9

der quelli dazu: (der ordnung halber)

;Fuenftelt den Wert FREQ fuer BASIC und ermoeglicht so
;so eine Abfrage und Verarbeitung dessen alle 200 ms
;written by deahde927, 01.07.2005

 org $101
 
           lda #$08
           sta $52
           clr $dc
           rts
     
           brclr 6,$13,_handleST
           jsr $ee9
           clra
           rts
     
_handleST  jsr $e70
           lda $68
           ora $69
           beq _delb60

           inc $dc
           lda $dc
           cmp #10
           bne _exit
           lda $85
           sta $7c
           lda $86
           sta $7d
           clr $85
           clr $86
_delb60    clr $dc
           
_exit      clra
           rts

; Hochoptimierte Routine zum Ausfuehren von BASIC-Programmen
; (c) Dietmar Harlos ADPC, 24. Januar 2002

           rsp
           
_loop:     jsr $0e04
           cmp #84
           bls _noend

           jsr $0917
           jmp $0969

_noend:    lsla
           tax
           lda $1df6,x
           sta $be
           lda $1df7,x
           sta $bf
           jsr $bd

           bra _loop


Freq/5  wird wie üblich mit sys &h101 gestartet,
der beschleuniger nimmt seinen dienst per sys &h131 auf.
wichtig ist, dass die aufrufe in dieser reihenfolge erfolgen und
im weiteren programmverlauf keine weiteren sys-befehle mehr folgen.
dies würde den beschleuniger beenden.
das sollte reichen, und das reicht auch... der rest ist deine programmierkunst,
die du dann nu wirklich selber machen musst.

 Antwort schreiben

Bisherige Antworten: