pfw:togglealedwithsingletasto
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| pfw:togglealedwithsingletasto [2025-06-21 21:52] – [Pseudo code for the toggleLED implementation] mka | pfw:togglealedwithsingletasto [2025-06-22 00:20] (aktuell) – geöscht mka | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ===== Switch LED on and off in a button | ||
| - | Hier wird eine LED sauber an- und wieder aus geschaltet. | ||
| - | |||
| - | ==== Idea ==== | ||
| - | |||
| - | Als Modell diente der Taster, der auch schon in der Demo von tasto und clavis benutzt worden ist. Im Taster ist eine LED integriert. Die soll getoggle werden. | ||
| - | |||
| - | bild | ||
| - | |||
| - | |||
| - | ==== Implementation ==== | ||
| - | |||
| - | It's assumed that a program periodically checks whether the switch has been pressed and then changes the state of the LED. | ||
| - | |||
| - | The challenge is to eliminate switch bounce so that the user gets a smooth, reliable impression of the changes. The response should be fast enough to be instantaneous, | ||
| - | |||
| - | ==== Pseudo code for the toggleLED implementation ==== | ||
| - | |||
| - | //What [[en: | ||
| - | |||
| - | < | ||
| - | Function: init ( -- ) | ||
| - | do all initialisation for the intended operation | ||
| - | set variable ILED, set portpins ... | ||
| - | |||
| - | Function: toggleLED ( -- ) | ||
| - | toggle LED in a button on and off | ||
| - | IF: edge detection tells button was pressed | ||
| - | toggle LED | ||
| - | turn off edge detection | ||
| - | IF: level is stable high again, d.h. bottom has been released | ||
| - | turn on edge detection | ||
| - | </ | ||
| - | |||
| - | ==== Minimal Forth implementation of DUMP: ==== | ||
| - | |||
| - | |||
| - | You can find a [[https:// | ||
| - | |||
| - | You can use it as follows: | ||
| - | |||
| - | <code forth> | ||
| - | ok | ||
| - | Create x 100 allot ok | ||
| - | x 100 dump | ||
| - | 03D694: 05 61 6C 6C 6F 74 08 00 DF 14 00 00 C1 00 08 00 | ||
| - | 03D6A4: 1F 18 00 00 C1 00 08 00 6F 10 00 00 C1 00 08 00 | ||
| - | 03D6B4: 4F 10 00 00 C2 00 08 00 1F 13 00 00 C2 00 08 00 | ||
| - | 03D6C4: 8F 30 00 00 C2 00 08 00 DF 14 00 00 C2 00 08 00 ? | ||
| - | 03D6D4: 1F 18 00 00 C2 00 08 00 6F 10 00 00 C2 00 08 00 | ||
| - | 03D6E4: 4F 10 00 00 C3 00 08 00 8F 30 00 00 C3 00 08 00 | ||
| - | 03D6F4: 5F 13 00 00 _... ok | ||
| - | </ | ||
| - | |||
| - | As the original Minimal Forth has no output facility other than '' | ||
| - | this implementation seems to be over complicated. | ||
| - | |||
| - | We extended Minimal Forth to [[https:// | ||
| - | more useful small Forth. | ||
| - | |||
| - | A DUMP utility in **GenericForth** can be found in [[en: | ||
| - | This example is factored using the pseudo code description. The character output has been factored into the useful word PEMIT ( char -- ) too. | ||
| - | |||
| - | |||
| - | ==== Various DUMP Implementations ==== | ||
| - | |||
| - | Other DUMP implementations can be found at the end of this description. | ||
| - | |||
| - | Your system might lack right justified number output or even BASE for printing numbers in other radix systems. The sample implementation in [[pfw: | ||
| - | |||
| - | |||
| - | ==== Background information ==== | ||
| - | |||
| - | More about the DUMP utility can found at the [[https:// | ||
| - | |||
| - | Some Forth DUMP implementations display a fixed amount of bytes and leave the updated address on the stack so that | ||
| - | you can invoke DUMP repeatedly to display successive regions of memory. | ||
| - | |||
| - | ==== Possible pitfalls with DUMP ==== | ||
| - | |||
| - | Some systems have hardware memory protection that is triggered if you access memory outside the reserved area. | ||
| - | The dump utility can do so by trying to show this forbidden memory. Triggered memory protect might stop the current process and | ||
| - | terminate your session. If necessary a suitable test for the validity of used addresses might be reasonable on such systems so that | ||
| - | dump can issue a normal error message (or display dummy data) in theses cases and leave the system / session otherwise intact. | ||
| - | |||
| - | ==== Contributions ==== | ||
| - | |||
| - | < | ||
| - | |||
| - | You have another approach to DUMP? | ||
| - | |||
| - | Please add it at the end of this document. | ||
| - | |||
| - | ~~DISCUSSION~~ | ||
pfw/togglealedwithsingletasto.1750535555.txt.gz · Zuletzt geändert: 2025-06-21 21:52 von mka