Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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)