Hallo zusammen,
ich habe hier einen ganz simplen Code zum einlesen von zwei ADC Werten. Dabei ist der eine der Sollwert und der andere der gemessene Istwert. Die Schaltung ist ähnlich einem Schaltnetzteil mit FET`s als Schalter und einem Optokoppler als Potentialtrennung versehen. Ich verwende hier einen ATmega 8 ohne externen Quarz, also die 3,6864 MHz.
Code:
mainloop: wdr
;zum clearen von ADCH und ADCL
;AVcc-left_adjusted-channel 1 => Taster
out ADMUX,r16
out ADCSRA,r31 ;adc-enable/start_conversion/clk:32
bis_convertet1:
sbic ADCSRA,6
rjmp bis_convertet1
in r17,ADCH
nop
nop
nop
out ADMUX,r18
out ADCSRA,r31
bis_convertet2:
sbic ADCSRA,6
rjmp bis_convertet2
in r19,ADCH
cp r17,r19 ;VERGLEICH-VERGLEICH-VERGLEICH
brcc an
ldi r21,0b11111111
out PORTB,r21
rjmp mainloop
an:
ldi r21,0b00000000
out PORTB,r21
;Hier den Quellcode etztztintragen.
rjmp mainloop
Das Problem ist, dass das Program extrem langsam ist, man kann aslo die Schaltimpulse mitzählen. Woran liegt das?
Danke,
The Man
Lesezeichen