Gast
#11764
Hallo an alle ich hab jetzt schon zum dritten mal versucht, den adc in einem 4433 vernünftig zum laufen zu bewegen, aber der will einfach nicht. erstmal kurz den quellcode den ich nutze: .include "d:\avr\4433def.inc" .def temp=r16 .def temp1=r17 .def delay1=r18 .def delay2=r19 ldi temp, high(ramend) out SP, temp ldi temp,low(ramend) out spl, temp ldi temp,0b10100110 out ADCSR,temp ldi temp,0x01 out ADMUX,temp ;Eingang AD0 sbi ADCSR,ADSC ;StartADC im free run ser temp out ddrd, temp ldi temp, 0b00000011 out ddrb, temp loop_adc: in temp,ADCL ; ADC lo in temp1,ADCH ; ADC hi rcall delay100 out portd, temp out portb, temp1 rjmp loop_adc ; delay100: inc delay1 brne delay100ms inc delay2 brne delay100ms ret wie man sieht eigentlich nix besonderes. der chip läuft mit 4 MHz und der prescaler steht auf 64, müsste eigentlich passen. das low-byte und das high-byte werden mit leds an den ports b und d ausgegeben. Jedoch bekomme ich nur bit-geflimmer an port-d und port-b wenn ich am poti (spannungsteiler zwischen Vcc und Gnd) rumdrehe. und das auch nicht konstant. zum beispiel erscheinen die unteren vier bit des low-bytes erst ab ca 2,4 Volt (darunter alles null) und kurz bevor 5V an dem analogeingang anliegt fangen die restlichen bits an zu flackern (vorher sind die alle aus). kann sich irgendwie jemand erklären, was da los ist, ich nämlich leider nicht mehr. an verschiedenen stellen sind auch kondensatoren (100nF) zum glätten angebracht. die scheinen aber auch nix zu nützen. ja wie gesagt, dies ist nun schon mein dritter versuch dem 4433 das ad-wandeln beizubringen, aber ich bin genauso weit wie beim ersten versuch. wahrscheinlich ist der chip, den ich hier habe, zu doof dafür, oder ich. wenn jemand noch eine antwort weis, dann wäre ich dafür sehr dankbar. ich wünsche alle noch einen schönen abend und gute nacht. euer felix