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