Re: Was ist jetzt richtig? Kategorie: Progr. Assembler, TaskingTools, OS (von Markus - 15.06.2007 15:25) | |
Als Antwort auf Was ist jetzt richtig? von Cris - 4.04.2002 20:31
| |
Hallo, alter Beitrag ich wei�, aber da ist doch ein 0x16be: ADDB RL6,#0x1 0x16c0: MOVBZ R12,RL6 0x16c2: CMP R12,R14 0x16c4: JMPR cc_SLT,0x16ac enthalten, dass ist für mich eine Schleife die R14,#0xa vergleicht also 10 Einzelwerte die dann wieder mit > 0x16c8: MOV MDL,R4 > 0x16cc: DIVU R14 durch die Anzahl geteilt werden. Also Mittelwert der 10 Messungen. Gru� > Hat jemand eine Antwort, vielleicht die Programmierer des OS (mafoe) oder das CTC? > > Das Handbuch der C Control 2 Unit sagt auf Seite 32 im Kapitel A/D-Ports: > > ... Das Betriebssyszem nimmt im Hintergrund ständig A/D Wandlungen vor. Zur Reduzierung von Störeinflüssen werden die > Spannungssignale durch eine gleitende Mittelwertbildung gefiltert. ... > > Das disassemblierte OS von Eric Hospel zeigt aber folgenden Code zur A/D Wandlung: > > 0x1690: MOV [-R0],R6VM_GET_ADC_PORT > 0x1692: MOV R14,#0xa > 0x1694: MOV R13,#0x0 > 0x1696: AND R12,#0x7 alles ausblenden ausser Kanalnummer > 0x1698: MOV R15,#0x1 > 0x169a: SHL R15,R12 > 0x169c: OR P5DIDIS,R15 > 0x16a0: ADD R12,#0x100 !!!! Fixed Channel Single Conversion !!!! > 0x16a4: MOV ADCON,R12 > 0x16a8: MOVB RL6,#0x0 > 0x16aa: JMPR cc_UC,0x16c0 > 0x16ac: BSET ADSTStart conversion > 0x16ae: JB ADBSY,0x16aeWait until ready > 0x16b2: MOV R12,ADDATRead a/d result > 0x16b6: AND R12,#0x3ff > 0x16ba: ADD R13,R12 > 0x16bc: BCLR ADST > 0x16be: ADDB RL6,#0x1 > 0x16c0: MOVBZ R12,RL6 > 0x16c2: CMP R12,R14 > 0x16c4: JMPR cc_SLT,0x16ac > 0x16c6: MOV R4,R13 > 0x16c8: MOV MDL,R4 > 0x16cc: DIVU R14 > 0x16ce: MOV R4,MDL > 0x16d2: MOV R6,[R0+] > 0x16d4: RETS > > Laut OS-Auszug wird also eine Einzelwandlung bei jedem Aufruf von ports.adc(channel); ausgeführt, > und das Ergebnis unmittelbar zurückgegeben. Das deckt sich auch mit meinen Beobachtungen. > > Cris > | |
Antwort schreiben Antworten: |