Problem mit Duo-LED Ansteuerung

    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!

    • Nadine schrieb:

      Ja, die LEDs leuchten.
      Damit ist allerdings das Problem

      Nadine schrieb:

      jedoch bekomme ich in Bascom immer folgenden Fehler angezeigt:
      nicht wirklich gelöst.

      Hast du den Tiny13 auch über die Einstellungen von Bascom
      Bascom-Chip.jpg
      ausgewählt?

      Wenn ja, wähle dort mal einen anderen aus und probiere es nochmal.

      Ich habe es gerade mal mit meiner Bascom-Version 2.0.8.1 getestet und es kam keine Fehlermeldung.
      Auch wenn ich den Tiny13a ausgewählt habe.
      Welche Version von Bascom hast du denn?
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • stefanhamburg schrieb:

      Oder doch:
      Jetzt kommt die nächste Herausforderung:

      3 Sekunden ganz dunkel
      3 Sekunden rot
      3 Sekunden grün
      3 Sekunden rot und grün so schnell abwechselnd, dass man eine Mischfarbe sieht!
      Bedenke bitte, die Duo-LED ist intern antiparallel geschaltet.
      Durch die Angabe im Listening "Duo_k" und "Duo_a" wird die Polarität der Duo-LED gewechselt.
      Es kann immer nur eine Farbe leuchten, nie beide Farben gleichzeitig. (Mischfarbe)
    • djmsc schrieb:

      Nadine schrieb:

      Ja, die LEDs leuchten.
      Damit ist allerdings das Problem

      Nadine schrieb:

      jedoch bekomme ich in Bascom immer folgenden Fehler angezeigt:
      nicht wirklich gelöst.
      Hast du den Tiny13 auch über die Einstellungen von Bascom
      Bascom-Chip.jpg
      ausgewählt?

      Wenn ja, wähle dort mal einen anderen aus und probiere es nochmal.

      Ich habe es gerade mal mit meiner Bascom-Version 2.0.8.1 getestet und es kam keine Fehlermeldung.
      Auch wenn ich den Tiny13a ausgewählt habe.
      Welche Version von Bascom hast du denn?
      Auch ich verwende die Bascom-Version 2.0.8.1.

      Nach dem Compilieren bin ich auf Syntax-Prüfen und Ergebnisse anzeigen gegangen.
      In dem darauf erscheinenden Fenster ist einmal der Reiter "Report" und der Reiter "Errors" zu sehen.
      Im Reiter Report steht dann an letzter Stelle "High Baud rate error in line 33", der Reiter "Errors" ist völlig leer.

      Ich habe es sowohl mit der Einstellung für den Tiny13 als auch für den Tiny13A ausprobiert, komme aber auch hier immer wieder zum selben Ergebnis.

      Meine Vermutung ist, dass irgendetwas mit der Quarzfrequenz und der Einstellung Baudrate nicht stimmt oder sich gegenseitig im Wege steht.
    • Nadine schrieb:

      stefanhamburg schrieb:

      Oder doch:
      Jetzt kommt die nächste Herausforderung:

      3 Sekunden ganz dunkel
      3 Sekunden rot
      3 Sekunden grün
      3 Sekunden rot und grün so schnell abwechselnd, dass man eine Mischfarbe sieht!
      Bedenke bitte, die Duo-LED ist intern antiparallel geschaltet.Durch die Angabe im Listening "Duo_k" und "Duo_a" wird die Polarität der Duo-LED gewechselt.
      Es kann immer nur eine Farbe leuchten, nie beide Farben gleichzeitig. (Mischfarbe)
      Hi Nadine,
      Doch das geht. Bei den alten Röhrenfernsehern hast du ja auch ein Bild gehabt, obwohl es nur ein einziger Strahl (Punkt) war.
      Der Trick ist, den Farbwechsel zu schnell für unser Auge zu machen. Mit 50 Hz liegst du gut.
      Code first, think later - Natural programmer :D
    • six1 schrieb:

      Nadine schrieb:

      stefanhamburg schrieb:

      Oder doch:
      Jetzt kommt die nächste Herausforderung:

      3 Sekunden ganz dunkel
      3 Sekunden rot
      3 Sekunden grün
      3 Sekunden rot und grün so schnell abwechselnd, dass man eine Mischfarbe sieht!
      Bedenke bitte, die Duo-LED ist intern antiparallel geschaltet.Durch die Angabe im Listening "Duo_k" und "Duo_a" wird die Polarität der Duo-LED gewechselt.Es kann immer nur eine Farbe leuchten, nie beide Farben gleichzeitig. (Mischfarbe)
      Hi Nadine,Doch das geht. Bei den alten Röhrenfernsehern hast du ja auch ein Bild gehabt, obwohl es nur ein einziger Strahl (Punkt) war.
      Der Trick ist, den Farbwechsel zu schnell für unser Auge zu machen. Mit 50 Hz liegst du gut.
      Hallo six1,

      Beim Röhrenfernseher ist das durchaus so.

      In der gezeigten Schaltung und mit dem beschriebenen Listening stellt ein Port
      die Katode und ein Port die Anode dar. Dieser Zustand bleibt 3 Sekunden so,
      danach wechselt die Polarität und die Duo-LED wechselt dementsprechend die Farbe.
      Auch dieser Zustand bleibt wieder 3 Sekunden so erhalten,
      danach folgt der Sprung zu Do und das Spiel beginnt von vorn.

      Um eine Mischfarbe zu erhalten, müsste meiner Meinung nach die Wait erheblich kürzer sein.
    • Vielleicht ist jetzt der Sprung zu weit, aber schau dir mal Beispiele mit Pwm an. Der attiny hat 2 Pwm-Ausgänge. Jeder kann einzeln gesteuert eine Pwm ausgeben. Das ist ein Signal zwischen low und high, wobei der zeitliche Anteil eben wählbar ist. Wenn man die beiden pins der Led an diesen Ausgängen anschließt, dann kann man die Helligkeit der einzelnen Farben damit einstellen und eben auch mischen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • djmsc schrieb:

      nicht wirklich gelöst.

      Hast du den Tiny13 auch über die Einstellungen von Bascom
      Die Einstellung wird durch die Angabe im Quelltext überschrieben, ist daher nicht relevant.

      djmsc schrieb:

      Ich habe es gerade mal mit meiner Bascom-Version 2.0.8.1 getestet und es kam keine Fehlermeldung.
      Es ist ja auch keine Fehlermeldung, es ist eine Warnung.

      tschoeatsch schrieb:

      Wenn man die beiden pins der Led an diesen Ausgängen anschließt, dann kann man die Helligkeit der einzelnen Farben damit einstellen und eben auch mischen.
      Ich weiß nicht, ob das an dieser Stelle Zielführend ist.
      Da beide PWMs von einem Timer kommen, werden sie auch gleichzeitig starten.
      So wird nur die Differenz der PWMs angezeigt, da die beiden LEDs ja antiparallel geschaltet sind.
      Für einen Anfänger ist die Berechnung vielleicht etwas, was man später auch noch lernen kann.
      Vorher sollte imho der ganze andere Kram mit dem Timer verstanden sein ;)
    • @Michael hab' ich ja geschrieben, könnte jetzt noch zu früh sein. Aber ich denke, das wird ganz gut gehen. Beide pwm =0 oder pwm =255 ergibt Led ist aus, nur eine pwm mit dem gegen gesetzten Wert der anderen, Led zeigt eine Farbe, Mischfarben und Helligkeitsstufen ergeben sich durch Zwischenwerte der pwm.

      Edit: ich ruder bisschen zurück, für meine Überlegungen bräuchte ich eine soft-pwm.

      Edit-2: obwohl, es sollte auch per hard-pwm gehen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von tschoeatsch ()

    • Nadine schrieb:

      n der gezeigten Schaltung und mit dem beschriebenen Listening stellt ein Port
      die Katode und ein Port die Anode dar. Dieser Zustand bleibt 3 Sekunden so,
      danach wechselt die Polarität und die Duo-LED wechselt dementsprechend die Farbe.
      Auch dieser Zustand bleibt wieder 3 Sekunden so erhalten,
      danach folgt der Sprung zu Do und das Spiel beginnt von vorn.

      Um eine Mischfarbe zu erhalten, müsste meiner Meinung nach die Wait erheblich kürzer sein.
      genau. Wie six1 schreibt, kann man ungefähr 50 Wechsel in der Sekunde anpeilen, dann kann das Auge die Wechsel nicht mehr unterscheiden, sondern sieht eine Mischfarbe.


      Ansatz:
      3 Sekunden ganz dunkel: Beide Pins auf 0 dann WAIT 3
      3 Sekunden rot: ein Pin auf 1 und der andere auf 0 dann WAIT 3
      3 Sekunden grün: ein Pin auf 0 und der andere auf 1 dann WAIT 3
      3 Sekunden rot und grün so schnell abwechselnd, dass man eine Mischfarbe sieht! -> Eine FOR NEXT Schleife, in der so wie bei Dir zwischen den beiden Farben hin und her geschaltet wird. Die WAITs aber sehr viel kürzer als 3 Sekunden. Vielleicht so ca. 20 Millisekunden (WAITMS 20) und durch die Variable der FOR-NEXT SChleife die Dauer bestimmen ....

      Das Ganze wie gehabt in einer Endlosschleife mit DO..LOOP
    • Hallo Nadine,
      es ist Freitag, da ist ein Moment Zeit. Ich habe mal die Attiny13- Platine und eine Duo- LED rausgekramt. Bevor ich was poste, probiere ich das ganz gerne mal aus, auch wenn es recht einfache Dinge sind.

      Für die gegenläufige Ansteuerung der Duo- LED eignet sich hervorragend der NOT- Befehl. Damit kann man die LED ganz normal toggeln.

      BASCOM-Quellcode

      1. '************************************************************
      2. ' Kleiner Mikrocontroller Einsteigerkurs
      3. ' (c) 2013/2014 ceperiga
      4. '------------------------------------------------------------
      5. ' Projektinfos: www.bascomforum.de
      6. '------------------------------------------------------------
      7. ' Stufe 1: Attiny 13
      8. '------------------------------------------------------------
      9. 'Informationen zur CC-Lizensierung:http://creativecommons.org
      10. '============================================================
      11. ' Name:
      12. ' Unit: 1.0
      13. '------------------------------------------------------------
      14. 'Beschreibung: Erste Schritte -Duo LED an PortB.0 und PortB.1
      15. '************************************************************
      16. $regfile = "attiny13.dat" 'verwendeter Controller
      17. $crystal = 1200000 'Taktfrequenz
      18. $hwstack = 6 'Stackwerte und Framesize zuweisen
      19. $swstack = 6
      20. $framesize = 28
      21. Config Portb.0 = Output
      22. Config Portb.1 = Output
      23. Led Alias Portb.0
      24. '==============================================================================
      25. 'Hauptprogramm
      26. '------------------------------------------------------------------------------
      27. Do
      28. Toggle Led
      29. Portb.1 = Not Portb.0
      30. Wait 3
      31. Loop 'Zurück zu Do (Schleifenanfang)
      32. '==============================================================================
      33. End 'end program
      Alles anzeigen

      Wie Stefan schon geschrieben hat, ist es anders als Du glaubst auch möglich die LED auszuschalten, indem beide Ausgänge das gleiche Potential haben. Da geht dann Toggle verständlicher Weise nicht mehr:

      BASCOM-Quellcode

      1. '************************************************************
      2. ' Kleiner Mikrocontroller Einsteigerkurs
      3. ' (c) 2013/2014 ceperiga
      4. '------------------------------------------------------------
      5. ' Projektinfos: www.bascomforum.de
      6. '------------------------------------------------------------
      7. ' Stufe 1: Attiny 13
      8. '------------------------------------------------------------
      9. 'Informationen zur CC-Lizensierung:http://creativecommons.org
      10. '============================================================
      11. ' Name:
      12. ' Unit: 1.0
      13. '------------------------------------------------------------
      14. 'Beschreibung: Erste Schritte -Duo LED an PortB.0 und PortB.1
      15. '************************************************************
      16. $regfile = "attiny13.dat" 'verwendeter Controller
      17. $crystal = 1200000 'Taktfrequenz
      18. $hwstack = 6 'Stackwerte und Framesize zuweisen
      19. $swstack = 6
      20. $framesize = 28
      21. Config Portb.0 = Output
      22. Config Portb.1 = Output
      23. Led_a Alias Portb.0
      24. Led_k Alias Portb.1
      25. '==============================================================================
      26. 'Hauptprogramm
      27. '------------------------------------------------------------------------------
      28. Do
      29. Led_a = 1 : Led_k = 0
      30. Wait 1
      31. Led_a = 1 : Led_k = 1
      32. Wait 1
      33. Led_a = 0 : Led_k = 1
      34. Wait 1
      35. Led_a = 0 : Led_k = 0
      36. Wait 1
      37. Loop 'Zurück zu Do (Schleifenanfang)
      38. '==============================================================================
      39. End 'end program
      Alles anzeigen
      Kannst Dir ja mal die beiden Beispiele ansehen, ob Du das so verstehst. Die ergänzende Aufgabe von Stefan mit der Mischfarbe bleibt Dir dann erhalten.

      Ich hätte übrigens nicht gedacht, dass man "Output" durch "1" ersetzen kann, aber es funktioniert. Ich selber bleibe aber bei "Output", das finde ich übersichtlicher.

      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • ceperiga schrieb:

      Ich hätte übrigens nicht gedacht, dass man "Output" durch "1" ersetzen kann, aber es funktioniert.


      CONFIG PORT
      Action
      Sets the port or a port pin to the right data direction.
      Syntax
      CONFIG PORTx = state
      CONFIG PINx.y = state
      Remarks
      state
      A numeric constant that can be INPUT or OUTPUT.
      INPUT will set the data direction register to input for port X.
      OUTPUT will set the data direction to output for port X.
      You can also use a number for state. &B00001111, will set the upper nibble to input and the lower nibble to output.
      You can also set a single port pin with the CONFIG PIN = state, statement.
      Again, you can use INPUT, OUTPUT or a number. In this case the number can be only zero or one.
      x
      A valid port letter such as A,B,C etc.
      Example : CONFIG PORTB = Output
      y
      A valid pin number in the range of 0-7.
      Example : CONFIG PINB.0=INPUT

      The best way to set the data direction for more than 1 pin, is to use the CONFIG PORT, statement and not multiple lines with CONFIG PIN statements.
    • @all

      In dem genannten Projekt möchte ich keine Steuerung über PWM und auch keine Mischfarbe.
      Nur Rot an, 3 Sekunden aktiviert bleiben und auf Grün wechseln, 3 Sekunden warten und wieder Rot.
      Ich finde, dieses über eine PWM zu machen ist mir wohl noch nicht möglich.

      Es ging lediglich darum, die Warnung:

      High Baud rate error in line 33

      wegzubekommen.

      Wenn es nicht geht, dann muss ich halt damit leben und die Warnung ignorieren.
      Die Funktion ist jedoch gegeben, nur die 3 Sekunden kommen mir etwas lang vor, aber das hat wohl mit der Quarzfrequenz zu tun, nehme ich an.
    • tschoeatsch schrieb:

      Mischfarben und Helligkeitsstufen ergeben sich durch Zwischenwerte der pwm.
      so einfach ist es eben nicht, da die LEDs nicht getrennt sind.
      Wenn die PWMs gleichzeitig starten, ergeben sich keine Mischfarben, da nur die Differenz wirksam ist.


      Nadine schrieb:

      In dem genannten Projekt möchte ich keine Steuerung über PWM und auch keine Mischfarbe.
      Nur Rot an, 3 Sekunden aktiviert bleiben und auf Grün wechseln, 3 Sekunden warten und wieder Rot.
      Ich liebe Projekte mit klar definiertem Ziel und wenn sie dann auch fertig sind ;)

      Nadine schrieb:

      Wenn es nicht geht, dann muss ich halt damit leben und die Warnung ignorieren
      Du musst in jeder Programmiersprache damit leben, es ist nur eine Warnung.
      Bascom zeigt dir deutlich, wenn du einen Fehler produzierst, schreib mal einen Befehl falsch, dann siehst du es.