mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Lampe blinken lassen für eine Steuerung in Bascom (ATMega8)


Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
$regfile = "m8def.dat"

$crystal = 8000000


Config Portc.1 = Input
Config Portc.2 = Input
Config Portc.3 = Input
Config Portc.4 = Input
Config Portc.5 = Input


Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.2 = Output
Config Portd.3 = Output


Set Portc.1
Set Portc.2
Set Portc.3
Set Portc.4
Set Portc.5


Config Debounce = 30


Const An = 1
Const Aus = 0


Einschalten Alias Pinc.1
Ausschalten Alias Pinc.2
Rauchmelder Alias Pinc.3
Notaus Alias Pinc.4
Feuer Alias Pinc.5


Schuetz Alias Portd.0
Gelb Alias Portd.1
Rot Alias Portd.2
Alarm Alias Portd.3

Dim F As Bit


Goto Main

Main:

'Rauchmelder unscharf schalten

Debounce Rauchmelder , 0 , Rmtoggle , Sub


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


'Not-Aus
If Notaus = 0 And B = 1 Then
Gelb = 0
Gelb = A
End If


'Rauchmelder-Ausgelˆst
If Feuer = 0 And F = 0 Then
Alarm = An
Goto Rsetzen
Else
Alarm = Aus

End If

Goto Main                                                   'loop


'Flip-Flop setzen
Setzen:
Schuetz = An
Gelb = An
Goto Main

'Flip-Flop zur¸cksetzen
Rsetzen:
Schuetz = Aus
Gelb = Aus
Goto Main


Rmtoggle:
Toggle F
Toggle Rot

Return
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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Stichwort heißt Timer Interrupt.
Wie man das in Bascom macht weiß ich nicht.

Schönes Beispiel wie "goto" ein Programm
versauen kann ;)

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem Timer Interrupt hab ich auch schon gelesen, aber ich hab 
keine Ahnung wie ich das umsetzen soll :D.

Ja das Programm ist vielleicht nicht schön und wahrscheinlich auch zu 
umständlich aber es funktioniert und das ist schon was ;).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.