loetstelle.net
Lötstelle Userforum
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Mehrere Schleifen parrallel laufen lassen

 
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> BASCOM
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: Fr 05.März 2010 19:09:24    Titel: Mehrere Schleifen parrallel laufen lassen Bauteile finden Antworten mit Zitat

Hallo,

ich habe eine Platine gemacht wo ich mit einem Atmega 8 verschiedene Funktionen auf meiner Anlage ausführen möchte. Es handelt sich bei diesen Funktionen in erster Linie um Schweißlicht-Imitationen. Nun sollen nicht alles Schweiß-LEDs zu gleich blinken bzw. pausieren.

Nun zur Frage:
Wie kann Ich mehrere Schleifen (Do.... [Programm].... Loop) in ein Programm packen die dann parallel laufen?

Ich hoffe Ihr wisst was ich meine. Rolling Eyes

LG Felix[/code]

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sam



Anmeldungsdatum: 13.10.2008
Beiträge: 401

BeitragVerfasst am: Fr 05.März 2010 20:42:58    Titel: Bauteile finden Antworten mit Zitat

Das geht nicht. Aber du könntest doch eine Schleife schreiben,die alle 0,1 Sekunden durchlaufen wird und für jede LED einen Zufallsgenerator auswertet und sie dementsprechend an oder aus macht.
_________________
„Zwei Dinge sind unendlich, das Universum und
die menschliche Dummheit, aber bei dem
Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
BellaD



Anmeldungsdatum: 03.12.2006
Beiträge: 1708
Wohnort: Klinik der misshandelten Kuscheltiere

BeitragVerfasst am: Fr 05.März 2010 21:32:15    Titel: Bauteile finden Antworten mit Zitat

moin

das läuft dann auf 12 Kanal Software PWM hinaus - aber egal, es soll ja flackern Smile

mfg

_________________
Eine Weiterverbreitung ohne ausdrückliche Genehmigung ist untersagt. Für Schäden, lehnen wir jegliche Haftung ab.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: So 07.März 2010 19:21:12    Titel: Bauteile finden Antworten mit Zitat

Hallo,

wie sieht denn so ein Zufallsgenerator im Programm aus?

LG Felix

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sam



Anmeldungsdatum: 13.10.2008
Beiträge: 401

BeitragVerfasst am: So 07.März 2010 20:00:03    Titel: Bauteile finden Antworten mit Zitat

PORTwasauchimmer.welcherauchimmer = RND(2)-1
_________________
„Zwei Dinge sind unendlich, das Universum und
die menschliche Dummheit, aber bei dem
Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: So 07.März 2010 20:28:12    Titel: Bauteile finden Antworten mit Zitat

Hallo,

das verstehe ich nicht. Die Ausgangspins sind erstmal PortD.0 und PortD.1. Wie binde ich den Zufallsgenerator in die Schleife mit ein?
Code:

Do
PORTD.0 = 1
Waitms 50
PORTD.0 = 0
Waitms 50
LOOP
END


LG Felix

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sam



Anmeldungsdatum: 13.10.2008
Beiträge: 401

BeitragVerfasst am: So 07.März 2010 20:44:35    Titel: Bauteile finden Antworten mit Zitat

Code:
Do
PORTD.0 = RND(2)-1
PORTD.1 = RND(2)-1
Waitms 100
LOOP
END


Ich habs aber nicht getestet. Einfach mal ausprobieren

MfG Sam

_________________
„Zwei Dinge sind unendlich, das Universum und
die menschliche Dummheit, aber bei dem
Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: Mo 08.März 2010 18:23:43    Titel: Bauteile finden Antworten mit Zitat

Hallo,

der Code funktioniert nicht.

LG Felix

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sam



Anmeldungsdatum: 13.10.2008
Beiträge: 401

BeitragVerfasst am: Mo 08.März 2010 18:37:36    Titel: Bauteile finden Antworten mit Zitat

Was passiert denn?
_________________
„Zwei Dinge sind unendlich, das Universum und
die menschliche Dummheit, aber bei dem
Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: Mo 08.März 2010 19:27:22    Titel: Bauteile finden Antworten mit Zitat

Hallo,

Bascom-AVR meldet ein Fehler. Ich habe mal ein "Foto" gemacht.

LG Felix

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
BellaD



Anmeldungsdatum: 03.12.2006
Beiträge: 1708
Wohnort: Klinik der misshandelten Kuscheltiere

BeitragVerfasst am: Mo 08.März 2010 21:22:56    Titel: Bauteile finden Antworten mit Zitat

moin

siehe Bascom-Hilfe unter "Rnd()"

vielleicht in ()
oder eine Var definieren und dann a= RND()
Datentyp = Byte

mfg

_________________
Eine Weiterverbreitung ohne ausdrückliche Genehmigung ist untersagt. Für Schäden, lehnen wir jegliche Haftung ab.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektron



Anmeldungsdatum: 16.03.2008
Beiträge: 1049

BeitragVerfasst am: Di 09.März 2010 10:34:08    Titel: Bauteile finden Antworten mit Zitat

Nochmal zu der Eingangsfrage: "Echte" Parallelität kannst du natürlich nicht erreichen. Man kann das aber durch eine Nachrichtenschleife simulieren. Das Grundprinzip ist einfach: Du hältst einen Nachrichtenstack im Speicher. Jetzt denkt man sich jeden Prozess voneinander unabhängig. Die Hauptschleife tut nichts anderes, als die neuesten Nachrichten vom Nachrichtenstack zu nehmen und an die adressierten Prozesse weiterzuleiten. Die Prozesse ihrerseits haben die Möglichkeit Nachrichten zu versenden, die wiederrum auf dem Nachrichtenstack landen. Also eine Art "rundes Kofferlaufband". Alles stehen drumherum und warten, ob ein "Koffer" für sie dabei ist, genauso kann jeder einen Koffer für einen anderen daraufwerfen. Das Band läuft ständig durch und hat keine andere Aufgabe, als Koffer anzunehmen und zu verteilen.

Könnte ein bisschen kritisch werden in BASCOM, kann aber auch daran liegen, dass ich mir BASCOM nie wirklich angeschaut habe. Zumindest würden mir aber die Zeiger bei der Implementierung fehlen, da ich ja z.B. nichtmal einen Zeiger auf die Instanz der versendenden Prozessklasse habe. In C könnte ich mir gut vorstellen, dass ich das so gemacht hätte. Klingt im Ansatz kompliziert, aber ist im Endergebnis superleicht erweiterbar und vor allem übersichtlich, Motto: am Anfang etwas mehr programmieren, im Nachhinein schnell erweitern können Smile

edit:
Gerade ist mir noch ein gutes Beispiel eingefallen: Stell dir vor, du hast eine Firma mit Telefonzentrale. In der Telefonzentrale sitzt eine Sekretärin S mit nur einem Telefon, daher kann sie nur zu einem bestimmten Zeitpunkt telefonieren - und dann auch nur mit einer Person. In der Firma gibt es 3 Mitarbeiter: M1, M2 und M3 und den Chef M4 (der ja ebenfalls ein Mitarbeiter ist). Der Chef soll die Arbeit koordinieren, und zwar ob die Mitarbeiter schweißen sollen oder nicht. Alle können nur über die Telefonzentrale miteinander kommunizieren. Am Telefon kann nur einer gleichzeitig sprechen.

Der Ablauf der Arbeit gestaltet sich so:
1.) Die Sekretärin ruft nacheinandner bei allen registrierten Mitarbeitern an und erfragt, ob die eine Nachricht an jemanden anderen zu versenden haben. Natürlich muss jeder Mitarbeiter angeben an wen die Nachricht geht und wie sie lautet. Dies notiert sich die Sekretärin (Stack!).

Beispiel:
M1: hat keine
M2: hat keine
M3: hat keine
M4: M1 soll anfangen
M4: M2 soll anfangen

Liste der Sekretärin:
an M1: anfangen
an M2: anfangen

2.) Dann durchläuft die Sekretärin die Mitarbeiterliste und durchläuft für jeden MItarbeiter, ob eine Nachricht für ihn dabei ist. Ist dem so, dann ruft sie diesen Mitarbeiter an und teilt ihm dies mit. Dieser notiert sich alle erhaltenen Anweisungen (Stack). Dafür streicht sich die Sekretärin die Nachricht aus der Liste. Ist die Mitarbeiterliste durchlaufen worden, so sollte auch das Blatt der Sekretäring keine Informationen mehr enthalten.

Beispiel:
Anruf bei M1: anfangen
Anruf bei M2: anfangen

3.) Nachdem alle Nachrichten verteilt wurden, ruft die Sekrätin wieder jeden Mitarbeiter an und teilt ihm mit, er solle seine Nachrichten abarbeiten und - wenn vorhanden wieder neue Nachrichten abliefern.

Beispiel:
Anruf bei M1: M1 fängt an (Licht leuchtet)
Anruf bei M2: M2 fängt an (Licht leuchtet)
Anruf bei M3: nichts ändert sich
Anruf bei M4: nichts ändert sich

Anruf bei M1: hat keine Nachrichten
Anruf bei M2: hat keine Nachrichten
Anruf bei M3: hat keine Nachrichten
Anruf bei M4: M1 soll aufhören

List der Sekretärin:
an M1: aufhören

Dann befinden wir uns wieder bei Schritt 1. Obwohl immer nur ein MItarbeiter zur gleichen Zeit arbeitet, läuft das alles "Quasiparallel". Natürlich würden im echten Leben alle gleichzeitig arbeiten, und das hier wäre schrecklich. Aber die Anrufe sind beim Programmieren eben sehr schnell (Funktionsaufrufe).
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: Di 09.März 2010 18:47:36    Titel: Bauteile finden Antworten mit Zitat

Hallo Elektron,

das hört sich natürlich genau danach an, wonach ich suchte. Aber ich denke dass das für mich, als Blutiger Anfänger, nicht realisierbar ist.

LG Felix

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
modellfreund



Anmeldungsdatum: 01.03.2008
Beiträge: 410
Wohnort: Aken

BeitragVerfasst am: Sa 27.März 2010 15:51:40    Titel: Bauteile finden Antworten mit Zitat

Hallo,

also ich bin immer noch nicht so richtig weiter. Wenn noch jemand eine Idee hat, wäre ich darüber sehr dankbar.

LG Felix

_________________
www.lang-gartenbahn.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
MajOo



Anmeldungsdatum: 18.01.2011
Beiträge: 1

BeitragVerfasst am: Di 18.Jan 2011 14:31:53    Titel: mhh.. Bauteile finden Antworten mit Zitat

hallo ich bin zwar auch noch recht neu auf dem gebiet aber wenn du nur einfach sagen wir mal 6 zufällige leds oder was auch immer schalten möchtest wie du für die schweislichter dann müsste das eigentlich so funtionieren ohne probleme... kannst natürlich noch viel mehr schalten je nach dem wieviel ports du hergeben willst dafür... kannst das ja mal testen und bescheid geben.

Code:
'### ATmega8 ###

$regfile = "m8def.dat"
$crystal = 1000000
$hwstack = 100
$swstack = 100
$framesize = 100

'### Config Port D aös output für LED ###

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

'### Variabeln ###

      Dim Led1 As Integer
      Dim Led2 As Integer
      Dim Led3 As Integer
      Dim Led4 As Integer
      Dim Led5 As Integer
      Dim Led6 As Integer

Do

'### Zufallsgenerator LED an oder aus ###

         Led1 = Rnd(3)
         Waitms 10
         Led2 = Rnd(3)
         Waitms 10
         Led3 = Rnd(3)
         Waitms 10
         Led4 = Rnd(3)
         Waitms 10
         Led5 = Rnd(3)
         Waitms 10
         Led6 = Rnd(3)
         Waitms 10

'### LEDs werden nun an oder aus geschalten wie es der zufall will ###


  Portd.0 = Led1
  Portd.1 = Led2
  Portd.2 = Led3
  Portd.3 = Led4
  Portd.5 = Led5
  Portd.6 = Led6

'### LED leuchtdauer nach dem schalten ###

   Wait 1                                                   '### sekunden angabe, millisekunden mit waitms

Loop

End


lg
MajOo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Anzeige






Verfasst am: Heute 06:22:30    Titel: Bauteile finden

Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> BASCOM Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen


Powered by phpBB 2.x © 2001, 2002 phpBB Group

Sie sind Besucher Nr. 1201060
©opyright by Markus Vohburger 2005 All Rights reserved