Forum: Mikrocontroller und Digitale Elektronik LED blinkt / gehen nicht aus? Warum?


von wiedereinsteiger (Gast)


Lesenswert?

Hallo,

mein Programm sieht so aus:
1
'1 = GND
2
'2= +5V VCC
3
'3= heizt
4
'4= bereit
5
'5= zu heiss
6
$regfile = "atTiny45.dat"
7
$crystal = 1000000
8
$hwstack = 10
9
$swstack = 10
10
$framesize = 20
11
12
13
Kalt Alias Pinb.1
14
Config Kalt = Output
15
16
Warm Alias Pinb.2
17
Config Warm = Output
18
19
Heiss Alias Pinb.4
20
Config Heiss = Output
21
Dim Wert As Word
22
23
24
25
'Konfiguriert ADC
26
'Config Adc = Single , Prescaler = Auto , Reference = Aref
27
'Start Adc
28
Kalt = 1
29
Warm = 1
30
Heiss = 1
31
Waitms 1000
32
Kalt = 0
33
Warm = 0
34
Heiss = 0
35
Waitms 1000
36
Wert = 1100
37
38
39
Do
40
Wert = 1100
41
 'Wert = Getadc(3)
42
 Waitms 100
43
    If Wert < 754 Then
44
       Kalt = 1
45
       Warm = 0
46
       Heiss = 0
47
    End If
48
    If Wert > 754 And Wert < 943 Then
49
       Kalt = 0
50
       Warm = 1
51
       Heiss = 0
52
End If
53
If Wert > 943 Then
54
Kalt = 0
55
Warm = 0
56
Heiss = 1
57
End If
58
Loop
59
60
End
Der zugehörige Aufbau auf einem Steckbrett funktioniert soweit. Nur: 
Nachdem die "Hochfahrphase alle drei LEDs (die kalt, warm und heiß 
repräsentieren) angeschaltet wurden gehen sie nicht mehr aus. Es handelt 
sich um normale Wald- und Wiesen-Lowpower-LEDs.
Und: Je nach eingestelltem Wert blinkt die richtige LED - aber sie 
blinkt. Ich hätte gerne, dass nur die LED, deren Wertebereich getroffen 
wird statisch leuchtet, sonst keine.

Ich habe mir jetzt schon eine ganze Weile den Kopf zerbrochen. Fehler in 
der Schaltung kann ich ausschließen, da z.B. ein Lauflicht auf exakt 
demselben Aufbau keine Probleme macht.

Der Fehler muss also irgendwo im Programm liegen. Nur finde ich ihn 
nicht.

Danke im Voraus.

von wiedereinsteiger (Gast)


Lesenswert?

Und ja, damit soll eine Spannung eingelesen werden. Aber solange ich den 
Fehler nicht beheben kann brauche ich mir nicht das nächste Problem 
einbrocken.

von Stefan S. (sschultewolter)


Lesenswert?

Ich hab keine Ahnung von der Programmiersprache, ist das BASCOM??

Aber ich vermute den Fehler hier drin.
1
    If Wert < 754 Then
2
       Kalt = 1
3
       Warm = 0
4
       Heiss = 0
5
    End If
6
    If Wert > 754 And Wert < 943 Then
7
       Kalt = 0
8
       Warm = 1
9
       Heiss = 0
10
End If
11
If Wert > 943 Then
12
Kalt = 0
13
Warm = 0
14
Heiss = 1
15
End If

1
If Wert < 754 Then
2
Kalt = 1
3
Warm = 0
4
Heiss = 0
5
Else If Wert > 754 AND Wert < 943
6
Kalt = 0
7
Warm = 1
8
Heiss = 0
9
Else
10
Kalt = 0
11
Warm = 0
12
Heiss = 1
13
End If
 Ich gebe auf diesen Code keine Garantie, bin mir auch nicht der Syntax 
von BASCOM bewusst. Welche LED leuchtet/blinkt denn? Muss evtl. in 
Bascom auch noch eine Klammer um Wert > 754 AND Wert < 943 wenn mehr als 
1 Vergleich stattfindet?

: Bearbeitet durch User
von wiedereinsteiger (Gast)


Lesenswert?

Danke,

ja, das ist Bascom.
Ich habe den Vorschlag mit der großen If-Schleife aufgenommen und 
eingearbeitet.
Es blinkt aber immer noch.
Aktuell blinkt die LED die warm repräsentiert.
Ändere ich den Wert zum Beispiel auf 1000 blinkt die heiße LED und bei 
500 blinkt die kalte LED. Soweit passt das ja, nur blinken sollte es 
halt nicht...

von wiedereinsteiger (Gast)


Lesenswert?

Das Blinken muss eine andere Ursache haben.
Selbst beim Minimalcode
1
do
2
warm = 1 
3
waitms 200
4
loop
blinkt die LED.

von Peter II (Gast)


Lesenswert?

wiedereinsteiger schrieb:
> Das Blinken muss eine andere Ursache haben.

Watchdog aktiviert?

von Beobachter #42 (Gast)


Lesenswert?

wiedereinsteiger schrieb:
> mit der großen If-Schleife

http://www.if-schleife.de/

g
#42

von wiedereinsteiger (Gast)


Lesenswert?

... schande über mich.
ich kann ja keine Pins als Output setzen, sondern das sind dann PORTS.
Problem gelöst.

von Werner W. (wam)


Lesenswert?

BlinkLed?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.