mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mehrere Programmteile kombinieren


Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HAllo,

ich  will mir ein Thermometer bauen, der ab einer bestimmten Temperatur
ein Relais ansteuert, desweiteren soll das Programm noch über einen
Füllstandsanzeiger verfügen. Wie kann ich nun das Programm des
Termometers und gleichzeitig den Füllstandsmesser ausführen??
Sodass die Bargraphanzeige etwas anzeigt und gleichzeitig auch das
Relais arbeitet.

Autor: Matthias Reiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Timo,

das sind vermutlich alles keine zeitkritischen Aufgaben. Du schreibst
einfach Unterroutinen für jede Aufgabe und rufst sie nacheinander in
der Endlosschleife des Hauptprogramms auf.

Grüße Matthias

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Matthias,

ja zeitkritisch sind die nicht. kannst du mir ein kurzes Beispiel oder
Stichworte zu den Routinen geben.
Die müssen ja dann so aufgerufen werden, dass man das optisch nicht
merkt. Nicht das da eine Sekunde lang die Temperatur auf den
7Segmentanzeigen angezeigt wird und dann erst wird der Bargraph
aktiviert und die TempAnzeige ist aus.
Das muss irgendwie gleichzeitig "leuchten"

Autor: Chief Brady (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also überwiegend arbeiten meine "einfachen" Programme nach dem
EVA-Prinzip (Eingabe-Verarbeitung-Ausgabe):

MainLoop
   call eingabe        ; Einlesen aller Sensoren, Taster, usw.
   call verarbeitung   ; Verarbeiten aller Daten
   call ausgabe        ; Ausgaben auf LDC, LED, Beeper...
   goto MainLoop       ; und wieder von vorne

Diese Schleife wird dann ständig durchlaufen (i.d.R. >100 mal je
Sekunde). Du kannst auch z. B. über einen Timer dafür sorgen, das die
Schleife in festen Intervallen abgearbeitet wird. Vieleicht ist das ein
Ansatz für dich.

Autor: Ithamar Garbe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das dürfte kein Problem sein... sobald du einen Port beschrieben
hast bleibt das gespeichert, solange du nix neues reinschreibst und die
Spannungsversorgung erhalten bleibt ;)
Also könntest du theoretisch ohne Endlosschleife arbeiten - einmal was
reinschreiben und das bleibt trotzdem drin...

Und ein Unterprogramm abzuarbeiten dauert normal nur ein paar ms, also
nicht ewig - da müsste es schon verdammt viel Programmcode sein...

Kannst ja spasshalber in ner Endlosschleife eine LED an nem Port
abwechselnd ein-/ausschalten, dann wird die LED zwar nur halb so hell
leuchten, aber ein Flimmern wirst du nicht wahrnehmen können. Und so
hast du übrigens nebenbei schon mit der Pulsweitenmodulation gearbeitet
;)

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Tipps!

Kann ich eigentlich vom Portd auch nur Pin 1,2,3 als Input und die
anderen als Output verwenden?

Gruß und nochmals danke

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

klar! Das sollte das kleinste Problem sein ;)

Gruß,
Christian

Autor: Chief Brady (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, nun muss ich sie wohl doch rausholen, die Kristallkugel!

Welchen µC verwendet er den wohl?

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mhhh die Kristallkugel sagt.........2   ich sehe eine 3  , eine 1 oh
eine 3.
Ich kombiniere einen 2313

Autor: Chief Brady (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2313???

Da muss wohl ein PIC-hasser weiterhelfen... ;-))

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

so, etz müssten wir der Glaskugel nur noch entlocken welche Sprache
denn zur Programmierung verwendet wird, dann könnte dir schon geholfen
werden ;-)

Autor: Chief Brady (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso, kann man µC noch anders als in Assembler programmieren? ;-)

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVR's schon ;-)

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry hab ich ganz vergessen (;
Ich verwende Bascom. Ich habe die Lösung vielleicht scon rausgefunden.
Zumindest funktioniert es so:
Ich habe geschrieben: Config Portd= &B00011111.

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, funzt auch.
Du kannst's aber auch mit DDRD = &B00011111 machen, wobei eine 1 einen
Ausgang und eine 0 einen Eingang darstellt (aber das weißt du ja
schon...).

Viel Erfolg noch!

Gruß,
Christian

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.