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

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: