simpler Quellcode, wo ist der Denkfehler?

  • Manchmal sieht man den Wald vor lauter Bäumen nicht. Ich nehme an, bei meinem Corde ist es ähnlich. Also: beim Quellcode für einen RGBW-Controller möchte ich den über die Fernbedienung ausschalten (Helligkeit=0) und über die gleiche Taste wieder einschalten. Im zweiten Versuch habe ich dazu noch eine extra Variable eingeführt, welche sich den Zustand merken soll. Weiterhin wird der Wert der Helligkeit einfach gespeichert.



    Wenn ich jetzt die Fernbedienung kurz drücke, geht die LED aus und gleich wieder an. Ich dachte, ein Delay kann das verbessern, da es zu schnell abläuft, aber da fühlt es sich an wie Delay - Aus - An. Wenn ich etwas länger drücke, ist so nach etwa 2x blinken (Aus-An-Aus-An-Aus) der gewünschte Zustand erreicht. Beim Einschalten genau so. Habe ich da einen denkfehler drin?

  • Könnte es vielleicht daran liegen, dass was bei dir auch immer den Case 12 auslöst, zu lange aktiv ist und die Schleife mehrmals auslöst. Ich glaube die 12 ist doch der Powerknopf bei der RC5-Fernbedienung oder? Setze mal den Übertragenen Code im Case auf 0, sodass die Schleife da nicht mehr aufgerufen werden kann. Ich hatte das Problem auch mal weiß aber gerade nichtmehr wie ichs gelöst hab. Aber vielleicht hilft ja schon dieser simple Trick :rolleyes:


    Gruß vom Matze


    [edit]
    hab grad nachgeschaut und kann das jetzt bestätigen... Ich habs auch so gelöst...
    [/edit]

  • Gute Idee, aber das war es auch nicht... Vielleicht habe ich doch noch irgendwo einen richtigen Fehler drin. Selbst wenn ich code=0 setze, ist das gleiche Verhalten. Ich habe oben mal den Code noch etwas erweitert. Richtig, es ist der RC5-Code für Aus. Muss nochmal überlegen. Falls Du Lust hast, schau mal in den Quellcode rein, ist übrigens von meinem neuen RGBW-Controller der erste Entwurf.


    Danke
    Nino


    4K-RC5-PWMv10.txt

  • Puh.... Habs mir gerade mal angeschaut und weiß da gerade auf die schnelle nicht weiter. Setz das mit code = 0 mal ganz an den Anfang von case 12. Obwohl ich ehrlichgesagt nicht glaube, dass das die Lösung des Problems ist...
    Hast du denn nen Debugger? Dann könntest dus dir ja genau anschauen was passiert. Habe leider gerade auch keinen da, sonst würd ichs für dich mal debuggen, aber geht leider nicht. Wenn ich noch ne Idee hab, dann meld ich mich...
    Bin übrigens auch an nem 4-Kanal Controller mit dem Atmega168 dran. Ist fast fertig, komm bloß nie zum proggen.... ;(

  • Debugger habe ich leider nicht und Simulation mit AVRStudio ist sinnlos ... Aber das wäre wirklich hier mal wichtig. Muss ich mich mal schlau machen.
    Einen Fehler habe ich noch gefunden, der es hätte sein können: falsch gesetzte Klammern. Aber war es auch noch nicht. Ich bleibe dran...


    Eins habe ich gerade noch an einer anderen Stelle bemerkt: bei jedem Tastendruck wird die case-Schleife offensichtlich 2x durchlaufen. warum nur ...


    Mein Controller ist für den Mega88 etc. gedacht, also kompatibel zum 168. Da müsster der Quellcode ja fast bei Dir funktionieren. Ich habe momentan Prototypen-Status.


    Danke schon mal. Wenn ich den Fehler habe, sag ich Bescheid.

  • Hi,


    hmmmmm, ich hätte da eventuell noch einen Tipp.......aber RGBW Controller......ist ja Konkurrenz.......ne Spaß :D Also ich hatte so ein ähnliches Problem, nur mit meinem Fading, da habe ich eine Taste die das Fading stoppt und dann wieder anlaufen lässt. Wie war das nochmal?


    Es lag irgendwie daran das die FB den Code meist bzw. immer 2x sendet und ich per Programm das aber nur einmal verarbeiten durfte. Jep, haben eben nochmals nachgeschaut. Bei mir das aber ganz einfach abgefangen, zum einen dadurch das ich das "got_rc5" eh in einer INT setze und somit der RC5 Code eh schon kaputt ist dadurch das der INT dazwischenfunkt und ich dann erst später in der Mainloop den RC5 Code auslese und den "got_rc5" wieder zurück setze.
    So war es bei Bascom, keine Ahnung wie es bei C ist......


    Gruß, Benny.

  • Ja, Benny. Könntest Recht haben. Entweder der Code wird wirklich zweimal gesendet oder der Controller arbeitet zu schnell :P (was bei Bascom bestimmt nicht passiert :D ).
    Ich habe es jetzt mehr oder weniger gelöst, in dem ich beim Ausschalten eine halbe Sekunde warte und damit den 2. Code verschlucke. Das funktioniert.


    Das mit dem 2x Senden würde auch erklären, warum ich der der absolut sehr groben Helligkeitsregelung bei meiner Stehlampe (8 Stufen) immer das gefühl habe, bei einmal Drücken 2 Stufen zu springen.


    Kann das jeman bestätigen oder vielleicht mal über einen Oszi auslesen?

  • Kann das jeman bestätigen oder vielleicht mal über einen Oszi auslesen?

    Jup kann ich bestätigen. Aber jetzt ist mein Oszi einfach zu müde... Aber bei wars auch immer so.... Muss ich mal genauer recherchieren....


    Gute nacht