PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage Schleife in Sub-Funktion



Picht
20.11.2006, 21:37
Hallo,
ich will aus dem Hauptprogramm springen und eine Sekunde
ein Ton erzeugen und dann ins Hauptprogramm zurückspringen.
Etwa so:
'attiny2313.dat

Do
.....
Warnton 'Tonausgabe
......
Loop

Sub Warnton
Waitms 1
Portd.5 = Not Portd.5 ' Das soll 100 Schleifen passieren.
End Sub

Irgendwie müsste in der Sub eine Schleife sein, aus der ich nach 100
Durchläufe wieder zurückspringe.
Oder sollte man einen Interrupt nehmen.Da habe ich aber null Ahnung.

Die Timer sind alle belegt.


W.

linux_80
20.11.2006, 23:31
Hallo,

Du kannst Dir in der Bascom-Hilfe mal folgende Befehle näher ansehen:
Toggle, um einen Bitwert umzukehren,
For ... Next, eine Schleife mit definierten Anfangs- und Endwerten.
Do .. Loop Until a = 100, auch eine Schleife, hochzählen muss man selber

Dann gibts da noch Sound, da kreischts dann mit den angegebenen Werten wenn ein Buzzer oder ähnliches am Port angeschlossen ist.

Picht
21.11.2006, 11:28
Hallo,
dank für die Info. Mit Sound, ist mir hinterher auch eingefallen.
Es piept eine Sek. und dann läuf die Schleife weiter.Wenn ich den
Schleifendurchlauf mit wait auf eine Sek.verzögere, hab ich
meine Pause.Damit könnte ich leben.
Es lässt mir aber keine Ruhe, warum ich die andere Variante nicht
hin kriege.
Die For..To..Next Schleifenzählung funktioniert in der Sub nicht.
Mein Fehler, oder generell nicht?
Die anderen Befehle muss ich erst testen.

W.

PicNick
21.11.2006, 12:18
Die For..To..Next Schleifenzählung funktioniert in der Sub nicht.

Das wäre recht erstaunlich.



Dim a as byte
Sub Warnton
for a = 1 to 100
Waitms 1
Portd.5 = Not Portd.5
next
End Sub

Wenn er das nicht tut, müssen wir deinen Bascom umtauschen :-)

Picht
21.11.2006, 15:43
Hallo Männer,
jetzt schäme ich mich.Unbegreiflich wo ich wieder gepennt habe.
Der Code geht.Wieder was dazu gelernt.
Ubrigens der Sinn der Übung war ein Warnsignal zB. bei einer
Temperuturüberwachung, ab einer bestimmten Temperatur ein
pulsierenden Warnton zu erzeugen.Um sich die Finger nicht zu
verbrennen oder so.Der Warnton hat nur einen Zweck, nämlich zu nerven.
Entweder ich mach den Ton mit der Sub oder mit Sound
und lass in der Pausenzeit die Schleife weiter laufen.Mal sehen
welchen Speicherbedarf ich brauche.Ist zwar vielleicht nicht
Professionell aber es geht.
Bei schnelleren Ereignismessungen wäre es wohl besser ein Timer zu
nutzen um den Messzyklus nicht zu verzögern.Also der Timer erzeugt
den Ton und mit Toggle schalte ich um.
Sehe ich das richtig?

W.

linux_80
21.11.2006, 18:06
Wenns nur um Temperatur messen geht, denke ich, reicht es schon wenn es alle paar Sekunden gemessen wird, das ist dann schon oft genug.
Oder was hast du für eine Hitzequelle, eine die schneller heiss wird als die Messintervalle das messen ?
So schnell werden dann aber die Sensoren nicht sein !

Was ich meine, es wird nichts ausmachen, wenn wegen den Warnton mal 2 Sekunden nix gemessen wird.