Rechtecksignale

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Rechtecksignale

      Hallo geschätztes Forum,

      ich habe mich heute hier angemeldet, bin also der Neue.

      Ich versuch seit 2 Tagen, mich in die Materie Bascom / Microkontroller einzulesen.

      Was das Internet so hergibt. Ein Buch habe ich noch nicht.

      Meinen ersten Code hänge ich hier mal ran.

      Ich habe da ein Problem mit dem ich nicht weiter komme, wie ich es auch drehe und wende.

      An Portb.0 und Portb.4 kommt ein Rechtecksignal raus.

      So soll es auch sein.

      An Pin.1 liegt ein Signal mit 5ms Längean, dass an Portb.3 mit 500ms Länge ausgegeben werden soll.

      So der Plan.

      Kein Signal an Pinb.1 macht an Portb.0 und Portb.4 ein Rechtecksignal.

      Ein Signal an Pinb.1 macht an Portb.4 ein Rechtecksignal und Portb.0 wird gegen GND gezogen.

      Was mache ich falsch, bzw. wie kann ich es anders oder besser machen?

      Vorab schon mal danke für die Hilfe.

      MfG Shetland


      BASCOM-Quellcode

      1. $regfile = "attiny13.dat"
      2. $crystal = 1200000
      3. $hwstack = 16
      4. $swstack = 5
      5. $framesize = 16
      6. Config Portb.0 = Output '5 Ausgang Rechteck invertiert
      7. Config Portb.4 = Output '3 Ausgang Rechteck nichtinvertiert
      8. Config Pinb.1 = Input '6 Eingang Dataausgang von LM358 Pin1
      9. Pinb.1 = 0
      10. Config Portb.3 = Output '2 Ausgang zur U Wandler
      11. Config Pinb.2 = Input '7 Eingang =To
      12. Pinb.2 = 0
      13. Do
      14. Gosub Rechteck
      15. Gosub Sekunde
      16. Loop
      17. End
      18. Sekunde:
      19. If Pinb.1 > 0 Then
      20. Toggle Portb.3
      21. Waitms 500
      22. Else
      23. Portb.3 = 0
      24. End If
      25. Rechteck:
      26. If Portb.4 > 0 Then
      27. Portb.0 = 0
      28. Else
      29. Portb.0 = 1
      30. End If
      31. Toggle Portb.4
      32. Toggle Portb.0
      33. Waitus 140
      34. Return
      Alles anzeigen
    • Hallo shetland,

      willkommen im Forum. Auf die Schnelle würde ich sagen, dass Du in beiden Subroutinen Waitbefehle verwendest, die sich gegenseitig blockieren.
      Besser wäre es, alles in der Hauptschleife zu erledigen und als Waitzeit einen gemeinsamen Nenner zu finden. Heißt, die Schleife wird mit der kürzeren Waitzeit durchlaufen und zählt währenddessen die Impulse, worauf nach Erreichen der zweiten gewünschten Waitzeit die andere Funktion ausgeführt wird und der Zähler zurückgesetzt wird. Dann beginnt alles wieder von neuem.

      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Hallo,
      wie bereits geschrieben, kannst du nicht die Ausführung des Prozessors durch "wait" anhalten und gleichzeitig andere Dinge vollziehen.

      dann dies hier:

      BASCOM-Quellcode

      1. Rechteck:
      2. If Portb.4 > 0 Then
      3. Portb.0 = 0
      4. Else
      5. Portb.0 = 1
      6. End If
      7. Toggle Portb.4
      8. Toggle Portb.0
      9. Waitus 140
      10. Return

      erst setzt du Portb.4, danach toggelst du ihn nochmal..

      einfacher wäre:

      Quellcode

      1. Rechteck:
      2. Toggle Portb.4
      3. Portb.0 = not Portb.4
      4. Waitus 140
      5. Return

      Um dein Zeitproblem im Zusammenhang mit der Ausgabe zweier unterschiedlicher Frequenzen zu lösen, sehe ich zwei Möglichkeiten:
      a) Interrupt
      b) EINE feste Zeit über "wait" und zwei Zählvariablen


      Was ich noch nicht ganz verstehe ich dieser Satz:

      shetland schrieb:

      An Pin.1 liegt ein Signal mit 5ms Längean, dass an Portb.3 mit 500ms Länge ausgegeben werden soll.

      Meinst du damit, dass ein Triggersiganl an dem Eingang PINB.1 ein 500ms Signal am Ausgang des Tiny auslösen soll? ...eine einmalige Geschichte? ...Monoflop?
      Code first, think later - Natural programmer :D