Hi,
pack das "Analogwert_0 = Getadc(0)" in die Do ... Loop schleife und lösch das "Stop ADC" aus der Schleife. Dann funktioniert es. Aber jetzt mal ganz ehrlich. In der Hilfe von Bascom steht das alles so schon drin.
Gruß Blaue Led
Hallo! Nun habe ich das programm etwas verändert und es geht immer noch nicht.
ich kann das poti drehen wie ich will aber die led zeigt nichts an, bei compilieren ist auch kein erreo aufgetreten, es müsste doch eigentlich gehenCode:$framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Portc.0 = Output Dim Analogwert_0 As Byte Analogwert_0 = Getadc(0) Start Adc Do If Analogwert_0 > 125 Then Portc.0 = 1 Else Portc.0 = 0 End If Loop Stop Adc End
Hi,
pack das "Analogwert_0 = Getadc(0)" in die Do ... Loop schleife und lösch das "Stop ADC" aus der Schleife. Dann funktioniert es. Aber jetzt mal ganz ehrlich. In der Hilfe von Bascom steht das alles so schon drin.
Gruß Blaue Led
Nur so zum Verständnis:
Der Befehl "Analogwert_0=Getadc(0)" führt zu einer einzigen AD-Wandlung! Wenn sich danach die Spannung am Eingang ändert, bleibt die Variable Analogwert_0 so lange unverändert, bis der Controller das nächste mal den Getadc-Befehl ausführt.
Und genau deshalb muss dieser Befehl in die Do-Loop-Schleife, wie Blaue LED ja schon geschrieben hat.
Jetzt klarer?
OK. So weit habe ich nicht gedacht, ist im nachhinein ganz logisch, das der
Befehl in die Schleife muss. Jetzt gehts. DANKE
Wenn ich die Variable Analogwert_0 nicht als "Word" sondern als "Byte" deklariere passiert etwas komisches: wenn ich das poti drehe egal in welche richtung geht die LED mal AN mal AUS wieder AN und wieder AUS (beim drehen)
Vielen Dank!
Du liest einen Wert ein, der von 0 - 1023 geht. Das passt halt nicht mehr in ein Byte ( 0 - 255 ). Wenn Du nur 255 Werte haben willst, dann musst Du den Analog Wert explizit mit nur 8 Bit einlesen. Standardmäßig ist der 10 Bit.
Gruß Blaue Led
Lesezeichen