Hallo liebe Helfer, Ich habe ein Problem mit dem Bascombefehl pulseout. Ich möchte einen Impuls von 500ms erzeugen. Ich benutze einen Atega328 mit 16MHz Quarz. Portd.0 = output Laut Hilfedatei sollte der Befehl, umgerechnet auf 16MHz, folgendermassen aussehen: pulseout portd ,0, 2000000 (Zweimillion) Nun passiert folgendes: Bis zu einen Wert von 65536 wird die Impulsdauer korrekt ausgegeben. Danach wird vom Impulswert 65536 abgezogen und der Rest wird als Impulsdauer erzeugt. Dies geschieht jedesmal wenn ein vielfaches des Wertes 65536 erreicht wird. Der Impuls wir nie länger als 16,384ms = 65536 Es steht nirgens, dass es eine Einschränkung der Impulsdauer gibt. Wer kann mir das erklären? Vielen Dank Ditt
Woran erinnert dich die Zahl 65536? Falls an nichts: 2^n = 65536, was ist dann n? Wenn Pulseout größenordnungsmäßig Pulse in Mikrosekundenbereich erzeugt, ist das dann das Richtige für einen Puls von einer halben Sekudne Länge?
Hallo John, das der Wert von 65536 eine Potenz von 2 darstellt, war mir schon klar. Wenn pulseout nicht gedacht ist so lange Impulse zu erzeugen, welche Alternative gibt es denn eine Impuls genauer Länge zu erzeugen? Ditt
Ich wollte nur zum Ausdruck bringen dass da augenscheinlich eine 16 Bit Variable überläuft. Das steht in der Tat nicht in der Doku, die ist bei Bascom ja aber auch bekanntermaßen relativ schlecht. Wenn du einen Puls von ungefähr 500 ms erzeugen willst, könntest du den entspr. Pin setzen, mit dem Befehl "waitms" 500 ms warten und dann den Pin löschen. Das ist weder sehr genau, noch sehr elegant. Ansonsten halt einen Timer verwenden, genau dafür sind die ja da.
Ja, ich denke damit ist die Funktion von pulseout geklärt. Diese Einschränkung sollte schon in der Hilfe stehen. Ich werde jetzt den Impuls mit den Timern erzeugen. Vielen Dank für die Hilfe Ditt
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.