PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AT90S8535 + GetADC



Kay
02.03.2004, 11:39
Hallo,

habe an meinem AVR ein 10k Schiebepoti angeschlossen. Diese ist an PortA.0 ! an PortB hängen 8 Led´s. mit dem poti regle ich 5V ( oberste Stellung ) und 0V ( unterste Stellung ). wie kann ich es realisieren, das bei 0V keine LED an ist und bei 5V alle Led´s leuchten. also je höher ich das Poti schiebe, umso mehr led´s gehen an. ich hab das mal probiert, aber die led´s wollen nicht so wie ich will. das mit GetADC klappt nur die led´s net.

mfg Kay

02.03.2004, 11:45
Poste doch mal deinen Programmcode!

Kay
02.03.2004, 12:41
Also vorab der Programmcode. mir wurde gesagt, man könnte das ganz einfach mit einer Lookup Tabelle machen oder so. aber ich bekomms einfach net hin



$regfile = "8535def.dat"
$crystal = 4000000
Ddrb = 3 : Portb = 3
Const An = 0
Const Aus = 1
Led0 Alias Portb.0
Led1 Alias Portb.1
Led2 Alias Portb.2
Led3 Alias Portb.3
Led4 Alias Portb.4
Led5 Alias Portb.5
Led6 Alias Portb.6
Led7 Alias Portb.7

Dim W As Word
Dim Volt As Single
Const Ref = 5 / 1023
Config Adc = Single , Prescaler = Auto
Start Adc
Do
W = Getadc(0)
Volt = W * Ref

If Volt = 1 Then Led0 = An
If Volt = 2 Then Led1 = An
If Volt = 3 Then Led2 = An
If Volt = 4 Then Led3 = An



Loop

02.03.2004, 12:51
Vermutlicxh liegt es nur daran das du nur volle Spannungen in den IF-Abfragen angibst. Bei Bascom Single-Werten können ja auch krumme Werte raus kommen und dann würde sich bei deinem Programm nix tun.

Probier es doch mal mit geänderten IF-Abfragen, also so


$regfile = "8535def.dat"
$crystal = 4000000
Ddrb = 3 : Portb = 3
Const An = 0
Const Aus = 1
Led0 Alias Portb.0
Led1 Alias Portb.1
Led2 Alias Portb.2
Led3 Alias Portb.3
Led4 Alias Portb.4
Led5 Alias Portb.5
Led6 Alias Portb.6
Led7 Alias Portb.7

Dim W As Word
Dim Volt As Single
Const Ref = 5 / 1023
Config Adc = Single , Prescaler = Auto
Start Adc
Do
W = Getadc(0)
Volt = W * Ref

If Volt > 1 Then Led0 = An
If Volt > 2 Then Led1 = An
If Volt > 3 Then Led2 = An
If Volt > 4 Then Led3 = An

Loop

God
02.03.2004, 18:44
Ja,
daran wird das liegen. Aber mit dem anderen Code funktionierts.
Warum benutzt du nicht gleich den Adc-Wert? Also:

...
if Volt > 120 then Led0 = an
if Volt > 240 then Led1 = an
...

mfg God