by burkhard kainka » Thu Jan 08, 2009 12:00 am
Bisher habe ich es nur in Assembler gemacht:
AD:cli
cbiACSR,ACD;Komparator einschalten
cbiDDRB,0 ;PORT B0 Hi Z
ldiA,0
ldi Count,255
ldiTemp,0;timeout-Messung
sbiPORTD,ADRC;Ein
Loop1:sbicACSR,ACO
rjmpLoop2
decTemp
brneLoop1;max 256 Durchläufe
Loop2:sbicACSR,ACO;1 /2
rjmpON;2
nop;1
sbiPORTD,ADRC; 2
rjmpNext; 2
ON:cbiPORTD,ADRC;2
incA;1
nop; 1
Next:decCount; 1
brneLoop2; 2 ,10*256, ca. 300us
cbiPORTD,ADRC
sbiDDRB,0 ;PORT B0 Low
comA
movPA,A
sbiACSR,ACD;Komparator abschalten
sei
ret
Man könnte vielleicht versuchen, etwas ASM-Text in Bascom zu nehmen. Das Problem ist nämlich, dass die Zeiten genau stimmen müssen, damit das Verfahren linear wird. Vielleicht könnte man es auch in Bascom ganz anders machen und einen Timer dafür nehmen. Die Chance besteht darin, auch mehr als 8 oder 10 Bits aufzulösen.