www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom Befehlszeit


Autor: Marvin K. (Firma: hab keine) (multi_bouncer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag!
Ich bin mal wieder am Werk ;). Kann man in Bascom sozusagen ne IF->Then 
clause bilden bei der die Condition=1 ist wenn die geforderte Condition 
eine bestimmte Zeit erreicht hat?

Also so irgendwie?
->
If Pina.7 =1 for 100ms
Then
...
End If

Ich hoffe ihr könnt mir helfen ;).


Gruß Marvin

Autor: Peter H. (hardwaredoc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ;

vieleicht hilft für deine Anwendung auch der

Befehl debounce !

Gruß Peter

Autor: Marvin K. (Firma: hab keine) (multi_bouncer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aujaaaaa!
Endlich funktioniert's mit dem Taster ;).
Danke! Jezt ist mir aber noch was aufgefallen.
Kann ich Portd.5 nicht als output und anschliesen als PWM-Port benutzen?
Weil mein kleines Programm soll die LED für ca. 2 sec anhalten und dann 
langsam runterdimmen..
wills aber nicht.
Könnt/est ihr/du mir da vielleicht (nochmal) helfen?? ;)

Gruß Marvin

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marvin, wie isst man einen Elefanten?

...

Autor: Marvin K. (Firma: hab keine) (multi_bouncer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja^^ Klein machen und kochen =P

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux schrieb:
> Marvin, wie isst man einen Elefanten?
>
> ...

Falschrum durch ein Fernglas gucken und dann runter damit.

Autor: Marvin K. (Firma: hab keine) (multi_bouncer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was soll mir das jetzt sagen??:?

Gruß Marvin

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marvin K. schrieb:
> Naja^^ Klein machen und kochen =P

Richtig, in kleinen Stücken...

Also zerlege Dein Problem in kleine Stücke, die Du dann separat 
"kochst".

LED für eine bestimmte Zeit an und dabei dimmen erfordert mehrere 
Schritte.

- PWM für LED einrichten
- PWM langsam hochfahren (darin LED gemäß Tastgrad ein/aus schalten)
- Einschaltdauer einhalten (Zeitverzögerung)
- PWM langsam auf 0 herunterfahren (darin LED wieder gemäß Tastgrad
  ein/aus schalten)

Wenn der MC in der Zwischenzeit nix Anderes tun soll, dann kann man die 
einzelnen Schritte gemütlich nacheinander ausführen, der MC ist dabei 
über 98% seiner Rechenzeit damit beschäftigt, CPU-Takte zu zählen...

Sollte der Controller nebenher auch noch Tasten abfragen oder andere 
Dinge erledigen müssen, dann wird es Zeit für einen Timer-Interrupt, der 
als Zeitgeber die einzelnen (quasi nebeneinander ablaufenden) Jobs 
aufruft, von denen jeder Job immer nur einen Schritt macht und sich 
seinen Fortschritt in Zustandsvariablen merkt (Zustandsautomat, 
state-machine).

...

Autor: Marvin K. (Firma: hab keine) (multi_bouncer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!!!!
Ich habs geschafft!!

Damit ihr mal seht wie umständlich ich es mache;
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000

Dim Hochdimmen As Byte
Dim Runterdimmen As Byte
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1
Hochdimmen = 0
Runterdimmen = 255

'TASTER1 an PA7
Taster1 Alias Pina.7
Config Taster1 = Input
Porta.7 = 1                                                 'PullUp-Widerstand einschalten


Do
   Debounce Taster1 , 0 , On_taster1 , Sub
Loop

End


On_taster1:
Do
Incr Hochdimmen
Compare1a = Hochdimmen
Waitms 2
Loop Until Hochdimmen = 255
Waitms 1000
Do
Decr Runterdimmen
Compare1a = Runterdimmen
Waitms 10
Loop Until Runterdimmen = 0


Return


Danke euch!!

Gruß Marvin

Autor: Hannes Lux (hannes)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Nur mal so als Beispiel zum Analysieren... ;-P

...

Autor: Marvin K. (Firma: hab keine) (multi_bouncer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm schöner Code ;) werd ich mir mal genauer ansehen und vielleicht ein 
paar sachen ausbauen ;D.
Wenn ich jetzt einen Motor ansteuern will gerade z.B. einen 12 Voplt 
Lüfter der bei 12V 0,33A zieht was bräuchte ich da fürn transistor? 
Würde da n BC337 gehen?

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Lüfter der bei 12V 0,33A zieht was bräuchte ich da fürn transistor?
>Würde da n BC337 gehen?

Der sollte gehen.

Gruss Helmi

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marvin K. schrieb:
> Wenn ich jetzt einen Motor ansteuern will gerade z.B. einen 12 Voplt
> Lüfter der bei 12V 0,33A zieht was bräuchte ich da fürn transistor?
> Würde da n BC337 gehen?

Für einen echten DC-Motor mit 330mA würde der schon etwas knapp werden, 
da der Motor beim Anlaufen höheren Strom ziehen kann. Da sollte ein 
LL-HexFET (z.B. IRLU024N) die bessere Lösung sein.

Stichwort Lüfter: PC-Lüfter sind keine klassischen DC-Motoren sondern 
BLDC-Motoren mit integrierter Elektronik. Sie sind daher für 
Drehzahlsteuerung per PWM (fast) ungeeignet.

...

Autor: Marvin K. (Firma: hab keine) (multi_bouncer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jop ich hab da shcon n paar sachen gelesen mit den Lüftern..
Wie wärs mit so nem kleinen Modellmotor der immer z.B. in so kleinen 
Windrädchen drin ist, geht da der BC337? Dann hab ich noch n Großer 
120mm Lüfter. Der braucht bei 12V 1,3A ist aber pwm-steuerbar.
Kann man Schrittmotoren eigendlich acuh pwm steuern oder macht man das 
in der Loop in der Jede Spule an/aus geschaltet wird mit den 
zwischenzeiten?
Viele Worte.. :D

Gruß Marvin

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wie wärs mit so nem kleinen Modellmotor der immer z.B. in so kleinen
>Windrädchen drin ist, geht da der BC337?

Miss doch mal die Stromaufnahme sonst kann man dazu nichts sagen.
Die Luefter mit Elektronikmotor haben auch einen Blockierschutz von 
daher duerfte die Stromaufnahme nicht allzu sehr steigen. Bei einem 
normalen Kollektormotor steigt der Strom im Blockierfall.


>Kann man Schrittmotoren eigendlich acuh pwm steuern oder macht man das
>in der Loop in der Jede Spule an/aus geschaltet wird mit den
>zwischenzeiten?

Ja kann man. Nennt sich dann Feinschrittbetrieb. So kannst du auch 
Zwischenpositionen erreichen durch unterschiedliche Stroeme in den 
Wicklungen.


Gruss Helmi

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.