Loetkolben Posted September 5, 2013 at 01:24 PM Share Posted September 5, 2013 at 01:24 PM Edit: Originalbetreff: "Wer kann Firmware fuer _neue_ Bricklets compilieren?" Hallo zusammen, wie an einigen Stellen zu lesen ist, wird es (bald) neue Bricklets geben. Es scheint aber so, dass die Firmware wohl schon im Betastadium verfuegbar ist. Leider habe ich es noch nicht geschafft mir eine Compilerumgebung aufzusetzen und wuerde mich freuen, wenn jemand fuer mich diese Firmware mal uebersetzten koennte: Dual Button Bricklet Danke. Der Loetkolben Quote Link to comment Share on other sites More sharing options...
borg Posted September 5, 2013 at 05:08 PM Share Posted September 5, 2013 at 05:08 PM Siehe Anhang.dual-button-bricklet.bin Quote Link to comment Share on other sites More sharing options...
Loetkolben Posted September 5, 2013 at 07:50 PM Author Share Posted September 5, 2013 at 07:50 PM Hallo borg, vielen Dank! Es funktioniert wie erwartet. Toll. Wie schonmal geschrieben moechte ich eine LED per Tastendruck "lokal" anmachen, diesen Zustand dann ohne Callback abfragen und die LED dann loeschen. Beim io4 Bricklet kann ich den (Tasten-)Zaehler >1 abfragen und auch loeschen, aber es wird lokal keine LED angemacht. Bei Dual-Button Bricklet macht der Taster eine LED an. Den Zustand kann ich auch abfragen aber die LED nicht einzeln loeschen. Ich muesste den Status der 2. LED abfragen und dann mitsetzen. Warum gibt es keine Bitmaske? Weiterhin waere ein Modus schoen der die LED setzt egal wie oft gedrueckt wird. Wie der "Flankenzaehler" Auf jeden Fall finde ich das ein sehr sinnvolles Bricklet! Sind dort auch Loetpads fuer externe LED/Taster drauf? Mein Fazit: Koennte man nicht "eine" Firmware machen die die Moeglichkeiten beider Bricklets vereint (Weniger Wartungsaufwand und mehr Moeglichkeiten)? Als "einzigen" Unterschied koennte man den Namen aendern und den Init anders setzen (io4: 4*input) (Dual-Button:Toggle, 2*in + 2*out) Der Loetkolben Quote Link to comment Share on other sites More sharing options...
Loetkolben Posted October 17, 2013 at 02:51 PM Author Share Posted October 17, 2013 at 02:51 PM Hallo zusammen, da darf ich nochmals einhaken, da nun die Schematics verfuegbar sind.. Warum werden die LED gegen VCC geschaltet und nicht gegen GND? Was hat das fuer einen Vorteil, bzw. was ist der Sinn dahinter? Schont das die Portausgaenge oder kann auf diesem Weg ein hoeherer Strom fliessen? Nach einem HW Reset muessten die LED an sein. Die Buttons werden (typischerweise) gegen GND getastet. Danke. Der Loetkolben Quote Link to comment Share on other sites More sharing options...
batti Posted October 17, 2013 at 03:08 PM Share Posted October 17, 2013 at 03:08 PM Hallo Lötkolben, Warum werden die LED gegen VCC geschaltet und nicht gegen GND? Was hat das fuer einen Vorteil, bzw. was ist der Sinn dahinter? Schont das die Portausgaenge oder kann auf diesem Weg ein hoeherer Strom fliessen? Damit die LED leuchtet muss der Port gegen GND geschalten werden. Somit ist sichergestellt, dass die LED nicht leuchtet auch wenn der Prozessorpin auf Input Pullup steht (Default, auch wenn der Pullup meist sehr hochohmig ist). Man schaltet LEDs meist aber auch gegen GND weil viele Treiber mehr Strom nach GND abführen können als gegen VCC. Grüße, Bastian Quote Link to comment Share on other sites More sharing options...
Loetkolben Posted October 17, 2013 at 03:28 PM Author Share Posted October 17, 2013 at 03:28 PM Hallo batti, vielen Dank fuer die schnelle Antwort. Das macht ja wirklich Sinn und passt ja zu meinen Vermutungen. Dann haette ich aber noch eine Bitte: Wenn ich das richtig verstehe, dann ist der IO Pin nach dem HW Reset (Power off/on) auf Input gestellt. Waehrend des Initialisierens der Bricklet FW wird er dann auf Output gestellt. Koenntet ihr bitte die FW so anpassen, dass nach dem HW Reset und nach der Bricklet Initialisierungsphase die LEDs am Anfang AUS sind. Aus meiner Sicht verwirrt es, wenn nach dem Einschalten der Hardware erstmal alles LED an sind. (Oder habe ich hier eine alte FW?) Nachtrag: Von mir aus koennen die LED zum Funktionstest gerne 500ms angehen oder blinken, aber sie sollten nach der Initialisierungphase defaultmaessig AUS sein. Danke. Der Loetkolben Quote Link to comment Share on other sites More sharing options...
photron Posted October 17, 2013 at 03:34 PM Share Posted October 17, 2013 at 03:34 PM Bei Dual-Button Bricklet macht der Taster eine LED an. Den Zustand kann ich auch abfragen aber die LED nicht einzeln loeschen. Ich muesste den Status der 2. LED abfragen und dann mitsetzen. Warum gibt es keine Bitmaske? Richtiger Hinweis, ist vermerkt Sind dort auch Loetpads fuer externe LED/Taster drauf? Die Taster sind bedrahtete Bauteile, du kannst also an deren Pins was anlöten. Mein Fazit: Koennte man nicht "eine" Firmware machen die die Moeglichkeiten beider Bricklets vereint (Weniger Wartungsaufwand und mehr Moeglichkeiten)? Als "einzigen" Unterschied koennte man den Namen aendern und den Init anders setzen (io4: 4*input) (Dual-Button:Toggle, 2*in + 2*out) Das wird nicht passieren, dafür sind die beiden zu verschieden. Im Endeffekt würde ein Zusammenlegen höchstwahrscheinlich mehr Arbeit machen als es sparen könnte. Wenn ich das richtig verstehe, dann ist der IO Pin nach dem HW Reset (Power off/on) auf Input gestellt. Waehrend des Initialisierens der Bricklet FW wird er dann auf Output gestellt. Koenntet ihr bitte die FW so anpassen, dass nach dem HW Reset und nach der Bricklet Initialisierungsphase die LEDs am Anfang AUS sind. Aus meiner Sicht verwirrt es, wenn nach dem Einschalten der Hardware erstmal alles LED an sind. (Oder habe ich hier eine alte FW?) Die LEDs sind nach dem Reset aus. Nach dem Reset sind alle Pins im Input Pull-Up Modus. Input heißt, dass sie nicht aktiv getrieben werden (das wäre Output). Pull-Up heißt, dass sie über einen internen (Pull-Up) Widerstand gegen VCC geschaltet sind. Dadurch sind die LEDs initial aus, weil sie an beiden Enden an VCC hängen. Quote Link to comment Share on other sites More sharing options...
Loetkolben Posted October 17, 2013 at 03:59 PM Author Share Posted October 17, 2013 at 03:59 PM Die LEDs sind nach dem Reset aus. Nach dem Reset sind alle Pins im Input Pull-Up Modus. Input heißt, dass sie nicht aktiv getrieben werden (das wäre Output). Pull-Up heißt, dass sie über einen internen (Pull-Up) Widerstand gegen VCC geschaltet sind. Dadurch sind die LEDs initial aus, weil sie an beiden Enden an VCC hängen. Hallo photron, ja das stimmt ja. Das ist der Zustand nach dem HW Reset, aber was kommt dann? Dann wird doch die Bricklet FW geladen/ausgefuehrt und die setzt die LED Ports auf Output und den Port selbst auf "Low". Und damit leuchten die LED. (Zumindest bei meiner FW. S.o.). Hier muesste die Bricklet FW den Port auf Output und "High" setzen, damit die LED, auch nach starten der Bricklet FW, aus bleiben. Oder? Der Loetkolben Quote Link to comment Share on other sites More sharing options...
photron Posted October 17, 2013 at 04:30 PM Share Posted October 17, 2013 at 04:30 PM Meine Annahme war, dass die LEDs nach dem Start aus sind. Ich hätte in den Code schauen sollen. In der Tat werden die LEDs beim Start eingeschaltet. Ich gebe dir Recht, initial aus ist nahe liegender, so ist es jetzt auch abgeändert. Quote Link to comment Share on other sites More sharing options...
Loetkolben Posted October 17, 2013 at 04:41 PM Author Share Posted October 17, 2013 at 04:41 PM Hallo photron, so ist das eben mit invertierter Logik. Port "AN", damit die Led "AUS" bleibt. Koenntest Du bitte nochmal eine compilierte FW hier anhaengen? Dann baue ich meine Hardware auch um. Danke. Der Loetkolben Quote Link to comment Share on other sites More sharing options...
photron Posted October 17, 2013 at 04:53 PM Share Posted October 17, 2013 at 04:53 PM Hier ist sie.dual-button-bricklet.bin Quote Link to comment Share on other sites More sharing options...
Loetkolben Posted October 17, 2013 at 05:55 PM Author Share Posted October 17, 2013 at 05:55 PM Hallo photron. VIELEN DANK! Mit dem "aktuellen" Brickviewer sieht das schon sehr rund aus. Ich stelle mal eine Interessensfrage, aber da bewege ich mich auf duennem Eis, da ich die Callbacks nicht so ganz verstehe: Wenn man auf dem Bricklet den Button drueckt wird ueber einen Callack (dem Brickviewer) mitgeteilt das der "Button pressed" ist und es wird der LED Status (On/Off) im Callback mitgeschickt. Soweit ok. Wenn man nun aber die LED per Brickviewerbutton oder eigener Software ein-, bzw ausschaltet, wird kein Callback ausgeloest. D.h., dass der letzte per Callback empfangene Status nicht mehr dem aktuellen Anzeigezustand der LEDs wiedergibt. Ist das so gewollt? Sollte nicht auch eine Aenderung des Schaltzustandes der LEDs auch einen Callback ausloesen damit der Status wieder stimmt? Diese Frage hat im Moment fuer mich keine Relevanz und darf gerne nach hinten gestellt werden. Der Loetkolben Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.