Lampe blinken lassen für eine Steuerung in Bascom (ATMega8)

Gast #1242159
Lesenswert?

Hi,

Ich weiß, dieses Thema gibt es schon in X verschiedenen Varianten und es 
wird auch erklärt wie man es programmiert, allerdings hab ich eine 
spezifisches Problem.

Ich bin dabei eine Steuerung für eine Werkstatt aufzubauen, mit der man 
über Möller-Schaltgeräte den Arbeitsstrom ein und ausschalten kann, das 
ganze soll vom Mega8 gesteuert werden, außerdem sollen noch mehrere 
Rauchmelder angeschlossen werden, die, wenn sie auslösen den Strom 
abschalten. Diese Melder soll man aber über einen Taster unscharf 
schalten können.

Außerdem ist noch ein Eingang für den Not-Aus gedacht, (das Schütz wird 
manuell getrennt, es geht nur noch ein 2. Signalkontakt zum µC).
Wird dieser ausgelöst soll die Kontrolleuchte (Gelb) blinken anstatt 
leuchten.

Auch soll die Kontrolleuchte für die Rauchmelder (Rot) blinken sobald 
diese deaktiviert werden.

Die Grundfunktion des ganzen funktioniert soweit prima, jetzt kommt mein 
Problem ins Spiel, ich möchte die 2 Lampen wie beschrieben blinken 
lassen, geht also nicht mit der ganz einfachen Variante mit waitms.
Ich habe mehrere Beiträge gelesen, wo beschrieben wird wie das mit dem 
Timer geht.

Allerdings funktioniert das bei mir so nicht, es wird immer nur 
beschrieben wie die LED bzw. Lampe von Haus aus schon blinkt. Ich habe 
schon versucht den Aufruf vom Timer (oder das was ich dafür gehalten 
hab) in mein unterprogramm einzubinden, das funktioniert allerdings 
nicht.

Ich bin eigentlich Anfänger in sachen AVR, die grundlegenden Dinge hab 
ich mir soweit angeeignet, aber vom Timer hab ich noch wenig bis gar 
keine Ahnung.

Hier der Code in Bascom:
1
$regfile = "m8def.dat"
2

3
$crystal = 8000000
4

5

6
Config Portc.1 = Input
7
Config Portc.2 = Input
8
Config Portc.3 = Input
9
Config Portc.4 = Input
10
Config Portc.5 = Input
11

12

13
Config Portd.0 = Output
14
Config Portd.1 = Output
15
Config Portd.2 = Output
16
Config Portd.3 = Output
17

18

19
Set Portc.1
20
Set Portc.2
21
Set Portc.3
22
Set Portc.4
23
Set Portc.5
24

25

26
Config Debounce = 30
27

28

29
Const An = 1
30
Const Aus = 0
31

32

33
Einschalten Alias Pinc.1
34
Ausschalten Alias Pinc.2
35
Rauchmelder Alias Pinc.3
36
Notaus Alias Pinc.4
37
Feuer Alias Pinc.5
38

39

40
Schuetz Alias Portd.0
41
Gelb Alias Portd.1
42
Rot Alias Portd.2
43
Alarm Alias Portd.3
44

45
Dim F As Bit
46

47

48
Goto Main
49

50
Main:
51

52
'Rauchmelder unscharf schalten
53

54
Debounce Rauchmelder , 0 , Rmtoggle , Sub
55

56

57
'Sch¸tz An/Aus
58
If Einschalten = 0 Then Goto Setzen
59
If Ausschalten = 0 Then Goto Rsetzen
60

61

62
'Not-Aus
63
If Notaus = 0 And B = 1 Then
64
Gelb = 0
65
Gelb = A
66
End If
67

68

69
'Rauchmelder-Ausgelˆst
70
If Feuer = 0 And F = 0 Then
71
Alarm = An
72
Goto Rsetzen
73
Else
74
Alarm = Aus
75

76
End If
77

78
Goto Main                                                   'loop
79

80

81
'Flip-Flop setzen
82
Setzen:
83
Schuetz = An
84
Gelb = An
85
Goto Main
86

87
'Flip-Flop zur¸cksetzen
88
Rsetzen:
89
Schuetz = Aus
90
Gelb = Aus
91
Goto Main
92

93

94
Rmtoggle:
95
Toggle F
96
Toggle Rot
97

98
Return
99
End

Im Code werden die Lampen jetzt einfach nur eingeschaltet, weil ich eben 
nicht weiß wie ich das anstellen soll.

Wär echt nett wenn mir jemand helfen könnte :)

Danke im Vorraus und sorry für den vielen Text :D.

Gruß, Kai

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren