Was ist jetzt richtig? Kategorie: Progr. Assembler, TaskingTools, OS (von Cris - 4.04.2002 20:31) | |
Als Antwort auf Zeitverhalten des AD-Wandlers von Cris - 3.04.2002 20:28
| |
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: Re: Was ist jetzt richtig? (von Markus - 15.06.2007 15:25) |