{"id":79148,"date":"2024-04-29T13:08:53","date_gmt":"2024-04-29T11:08:53","guid":{"rendered":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/"},"modified":"2026-04-08T10:58:20","modified_gmt":"2026-04-08T08:58:20","slug":"raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme","status":"publish","type":"post","link":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/","title":{"rendered":"Raspberry Pi Pico Kurs &#8211; #8 &#8211; Unterbrechungen und Alarme"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Lesezeit<\/span> <span class=\"rt-time\"> 11<\/span> <span class=\"rt-label rt-postfix\">min.<\/span><\/span>\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"79148\" class=\"elementor elementor-79148 elementor-78858\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-788e25c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"788e25c\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ad48cff\" data-id=\"ad48cff\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-caacab0 elementor-widget elementor-widget-text-editor\" data-id=\"caacab0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Vor uns liegt ein weiterer Teil des Materials \u00fcber das kleine Entwicklungskit Raspberry Pi Pico W. Beim letzten Mal haben wir uns die Code-Optimierung etwas genauer angesehen und einige eigene Funktionen geschrieben. Au\u00dferdem haben wir den im PR2040-Kern eingebauten Temperatursensor verwendet. Dieses Mal werden wir die erstaunliche Welt der Mikrocontroller-Unterbrechungen erkunden.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-19e9c1a elementor-widget elementor-widget-image\" data-id=\"19e9c1a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6ODMzMzQsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNVwvNEdvdG93eS1aZXN0YXctZG8tbmF1a2ktcHJvZ3JhbW93YW5pYS16LVJhc3BiZXJyeS1QaS1QaWNvLVcuanBnIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"109\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-1024x139.jpg\" class=\"attachment-large size-large wp-image-83334\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-1024x139.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-300x41.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-768x104.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W.jpg 1429w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-cd5aceb elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"cd5aceb\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-2edbf66\" data-id=\"2edbf66\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-dda7cd6 elementor-widget elementor-widget-image\" data-id=\"dda7cd6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/24136_3.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"24136_3\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzYxNjMsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvMjQxMzZfMy5qcGcifQ%3D%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"300\" height=\"273\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/24136_3-300x273.jpg\" class=\"attachment-medium size-medium wp-image-76163\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/24136_3-300x273.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/24136_3-1024x933.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/24136_3-768x700.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/24136_3.jpg 1080w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-5d3e162\" data-id=\"5d3e162\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-bd5bfd4 elementor-widget elementor-widget-text-editor\" data-id=\"bd5bfd4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: bolder\">Kaufen Sie ein Set, um das Programmieren mit dem Raspberry Pi Pico W zu erlernen, und nutzen Sie die Vorteile des Kurses, der im Botland Blog verf\u00fcgbar ist!<\/span><\/p>\n<p>Im Set enthalten: Raspberry Pi Pico W-Modul, Kontaktplatte, Leitungen, LEDs, Widerst\u00e4nde, Tasten, Fotowiderst\u00e4nde, digitale Licht-, Temperatur-, Feuchtigkeits- und Drucksensoren, OLED-Display und ein USB-microUSB-Kabel.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-24e140c elementor-align-center elementor-widget elementor-widget-button\" data-id=\"24e140c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/botland.de\/module-und-sets-fuer-raspberry-pi-pico\/24136-programmieren-lernen-mit-dem-raspberry-pi-pico-w-kit.html\" target=\"_blank\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">BEI BOTLAND NACHSEHEN<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-f1a214d elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"f1a214d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-06a02a0 elementor-widget elementor-widget-text-editor\" data-id=\"06a02a0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: bolder;\">Inhaltsverzeichnis:<\/span><\/p>\n<ol style=\"background-color: #ffffff;\">\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-1-einstieg\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #1<\/span> &#8211; los geht&#8217;s&nbsp;<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-2-ein-paar-worte-zur-programmierung\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #2<\/span> &#8211; ein paar Worte zur Programmierung<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-3-erstes-programm\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #3<\/span> &#8211; erstes Programm<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #4<\/span> &#8211; wir beginnen mit der Programmierung<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-5-schleifen-variablen-und-bedingte-anweisungen\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #5<\/span> &#8211; Schleifen, Variablen und bedingte Anweisungen&nbsp;<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #6<\/span> &#8211; PWM, ADC und Kommunikation mit dem Computer<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder;\">&nbsp;<\/span>&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #7<\/span> &#8211; Codekorrekturen und eigene Funktionen<span style=\"font-weight: bolder;\"><\/span>&nbsp;<\/a><\/li>\n<li><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Raspberry Pi Pico &#8211; #8<\/strong> &#8211; Unterbrechungen und Alarme<\/a><\/li>\n<li><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #9<\/span> &#8211; Indikatortheorie und Timer<\/a><\/li><li><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-10-arrays-strukturen-und-zustandsautomaten\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<strong>aspberry Pi Pico &#8211; #10<\/strong> &#8211; Arrays, Strukturen und Zustandsautomaten<\/a><\/li>\n<\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-32d85b4 elementor-widget elementor-widget-heading\" data-id=\"32d85b4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Vor dem Start sollte das Team zusammengestellt werden<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-49dcbae elementor-widget elementor-widget-image\" data-id=\"49dcbae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-scaled.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"IMG_0647\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzQ4MDAsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvSU1HXzA2NDctc2NhbGVkLmpwZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-1024x576.jpg\" class=\"attachment-large size-large wp-image-74800\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-1024x576.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-300x169.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-768x432.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-1536x864.jpg 1536w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-2048x1152.jpg 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Ein Satz von Komponenten f\u00fcr den Raspberry Pi Pico Kurs.<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-38f3c99 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"38f3c99\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/botland.de\/module-und-sets-fuer-raspberry-pi-pico\/24136-programmieren-lernen-mit-dem-raspberry-pi-pico-w-kit.html\" target=\"_blank\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">SIEHE HIER<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ca92703 elementor-widget elementor-widget-text-editor\" data-id=\"ca92703\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Wer das Programmieren anhand von realen Projekten erlernen m\u00f6chte, braucht nat\u00fcrlich die richtige Ausr\u00fcstung, aber keine Sorge &#8211; Sie m\u00fcssen jetzt nicht von einem Artikel zum n\u00e4chsten springen und eine Liste der ben\u00f6tigten elektronischen Komponenten erstellen. Im <a style=\"background-color: #ffffff\" href=\"https:\/\/botland.de\" target=\"_blank\" rel=\"noopener nofollow external noreferrer\" data-wpel-link=\"external\"><span style=\"font-weight: bolder\">Botland<\/span><\/a>-Shop ist ein <a style=\"background-color: #ffffff\" href=\"https:\/\/botland.de\/module-und-sets-fuer-raspberry-pi-pico\/24136-programmieren-lernen-mit-dem-raspberry-pi-pico-w-kit.html\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder\">fertiges Set<\/span><\/a> erh\u00e4ltlich, das alle notwendigen Komponenten enth\u00e4lt, um die in der Tutorial-Reihe beschriebenen Projekte mit dem Raspberry Pi Pico durchzuf\u00fchren. <\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e80078c elementor-widget elementor-widget-text-editor\" data-id=\"e80078c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In dem <a href=\"https:\/\/botland.de\/module-und-sets-fuer-raspberry-pi-pico\/24136-programmieren-lernen-mit-dem-raspberry-pi-pico-w-kit.html\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder\">fertigen Set<\/span><\/a> von Elementen finden Sie:<\/p>\n<ul style=\"font-size: 16px;background-color: #ffffff\">\n<li style=\"font-size: 16px\">Raspberry Pi Pico W,<\/li>\n<li style=\"font-size: 16px\">MicroUSB-Kabel,<\/li>\n<li style=\"font-size: 16px\">Kontaktplatte,<\/li>\n<li style=\"font-size: 16px\">Ein Set von Anschlusskabeln in drei Ausf\u00fchrungen,<\/li>\n<li style=\"font-size: 16px\">Ein Set von LEDs in drei Farben,<\/li>\n<li style=\"font-size: 16px\">Ein Set der in der Elektronik am h\u00e4ufigsten verwendeten Widerst\u00e4nde,<\/li>\n<li style=\"font-size: 16px\">Tact Switch-Tasten,<\/li>\n<li style=\"font-size: 16px\">Fotowiderst\u00e4nde,<\/li>\n<li style=\"font-size: 16px\">Digitaler Lichtsensor,<\/li>\n<li style=\"font-size: 16px\">Digitaler Feuchtigkeits-, Temperatur- und Drucksensor,<\/li>\n<li style=\"font-size: 16px\">OLED-Display.<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bd4ade0 elementor-widget elementor-widget-spacer\" data-id=\"bd4ade0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3dc64ac elementor-widget elementor-widget-heading\" data-id=\"3dc64ac\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Was sind Unterbrechungen und wie funktionieren sie?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d39893c elementor-widget elementor-widget-text-editor\" data-id=\"d39893c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">W\u00e4hrend Sie diesen Text lesen, ruhen Ihre H\u00e4nde wahrscheinlich auf einer Computermaus. Wenn Sie diese bewegen, \u00e4ndert der Cursor, den Sie auf dem Monitor sehen, seine Position. Das ist nicht weiter verwunderlich, denn das ist die Aufgabe des Mauszeigers. Haben Sie sich jedoch schon einmal gefragt, wie dieser Vorgang gehandhabt wird, mit anderen Worten, wie es m\u00f6glich ist, dass der Computer wei\u00df, dass Sie das Zeigeger\u00e4t genau in diesem Moment bewegt haben. Die Antwort ist einfach: Der Laser in der Maus erkennt die Bewegung, die Daten werden an den Computer gesendet, der sie verwendet, um die Position des Cursors auf dem Bildschirm zu \u00e4ndern. Die Antwort ist absolut richtig, aber woher wei\u00df der Prozessor im Computer, dass dies der Moment ist, in dem die Maus bewegt wurde und nicht in einer, zwei oder zehn Sekunden. Man k\u00f6nnte meinen, dass es ab und zu \u00fcberpr\u00fcft, ob sich die Position des Zeigeger\u00e4ts ge\u00e4ndert hat, aber diese Theorie ist etwas weit hergeholt. Schon ohne sie hat der Computer etwas zu tun: einen Browser bedienen, ein minimiertes Spotify-Fenster mit Ihrer Lieblingsmusik oder unz\u00e4hlige Systemprozesse, von deren Existenz wir nicht einmal wissen. Jede Millisekunde rauscht eine Flut von Bits durch den Prozessor, und st\u00e4ndig zu pr\u00fcfen, ob sich die Maus versehentlich bewegt hat, w\u00e4re eine au\u00dferordentliche Verschwendung von Ressourcen. Und genau hier kommen die Unterbrechungen ins Spiel.<\/p>\n<p style=\"font-weight: 400\">Wenn wir die Maus bewegen, werden die vom USB- oder Bluetooth-Controller empfangenen Daten zusammen mit einer Meldung \u00fcber eine Unterbrechung an den Prozessor gesendet. Mit anderen Worten: Der Kommunikations-Chip informiert die CPU, dass eines der externen Ger\u00e4te sofort gewartet werden muss. An diesem Punkt setzt die zentrale Recheneinheit alle ihre Ressourcen ein und unterbricht laufende Prozesse, um die Maus so schnell wie m\u00f6glich zu bedienen und den Cursor an die richtige Stelle zu lenken. Sobald diese Aufgabe abgeschlossen ist, kehrt der Prozessor zu seinem normalen Betrieb zur\u00fcck. Nat\u00fcrlich ist diese ganze Beschreibung etwas vereinfacht und die Handhabung von USB-Ger\u00e4ten sieht etwas anders aus, aber die Idee ist da. Das Ganze basiert auf Unterbrechungen, so dass der Prozessor wei\u00df, dass er die gerade laufende Aufgabe sofort unterbrechen und etwas &#8216;Wichtigeres&#8217; in der Systemhierarchie tun muss.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f79d538 elementor-widget elementor-widget-heading\" data-id=\"f79d538\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Unterbrechungen im RP2040<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-23cae6e elementor-widget elementor-widget-image\" data-id=\"23cae6e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/tabela-przerwan.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"tabela przerwan\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Nzg4NjMsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNFwvdGFiZWxhLXByemVyd2FuLnBuZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"262\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/tabela-przerwan-1024x335.png\" class=\"attachment-large size-large wp-image-78863\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/tabela-przerwan-1024x335.png 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/tabela-przerwan-300x98.png 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/tabela-przerwan-768x251.png 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/tabela-przerwan.png 1338w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">RP2040 Interrupt-Tabelle (IRQ-Register).<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aac2a1c elementor-widget elementor-widget-text-editor\" data-id=\"aac2a1c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Der RP2040-Mikrocontroller zeichnet sich, wie andere ARM-Core-Prozessoren auch, durch einen bestimmten universellen Satz von Unterbrechungen aus, die wir in mehrere Kategorien einteilen k\u00f6nnen.<\/p>\n<ul>\n<li><strong>GPIO Unterbrechungen<\/strong> &#8211; der Raspberry Pi Pico unterst\u00fctzt Unterbrechungen, die als Reaktion auf Zustands\u00e4nderungen an GPIO-Pins erzeugt werden. Diese Unterbrechungen sind konfigurierbar und k\u00f6nnen bei einer steigenden Flanke, einer fallenden Flanke oder einem bestimmten Logikpegel aktiviert werden. Mit dieser Art von Funktionalit\u00e4t kann der Mikrocontroller auf Ereignisse wie das Dr\u00fccken einer Taste, eine Zustands\u00e4nderung auf dem Bus oder die Erkennung von Ereignissen durch einfache Sensoren reagieren.<\/li>\n<li><strong>Timer Unterbrechungen<\/strong> &#8211; Der RP2040 verf\u00fcgt \u00fcber zwei Multifunktions-Timer, die auch Unterbrechungen erzeugen k\u00f6nnen. Diese Art der Verwendung von Timern erm\u00f6glicht die Ausf\u00fchrung bestimmter Aufgaben in genau festgelegten Zeitabst\u00e4nden.<\/li>\n<li><strong>UART\/SPI\/I2C\/USB Unterbrechungen<\/strong> &#8211; Die vom RPI unterst\u00fctzten Kommunikationsschnittstellen verf\u00fcgen \u00fcber einen eigenen Satz von Unterbrechungen. Sie unterst\u00fctzen die \u00dcbertragung von Daten zwischen dem Mikrocontroller und anderen Peripherieger\u00e4ten. Unterbrechungen k\u00f6nnen sowohl den Empfang als auch die \u00dcbertragung von Daten \u00fcbernehmen, was die Programme, die diese Schnittstellen verwenden, erheblich vereinfacht.<\/li>\n<li><strong>PWM Unterbrechungen<\/strong> &#8211; Wir haben bereits in einem fr\u00fcheren Tutorial ein Modul verwendet, das PWM-Modulation unterst\u00fctzt. Es ist jedoch wissenswert, dass diese Prozessorkomponente auch Unterbrechungen erzeugen kann, wenn ein PWM-Zyklus abgeschlossen ist oder wenn ein bestimmter Impulsf\u00fcllwert erreicht wird. Dies ist eine n\u00fctzliche Funktion, insbesondere bei Anwendungen, die eine pr\u00e4zise Signalsteuerung erfordern.<\/li>\n<li><strong>ADC Unterbrechungen<\/strong> &#8211; Eine weitere Komponente, die wir verwendet haben und die ebenfalls Unterbrechungen erzeugen kann, ist der eingebaute ADC. In diesem Fall wird das Signal, das die Unterbrechung aktiviert, nach Abschluss der Analog-Digital-Wandlung auftreten.<\/li>\n<li><strong>RTC Unterbrechungen<\/strong> &#8211; Die Entwickler des RP2040 haben sich daf\u00fcr entschieden, eine RTC-Echtzeituhr in den Prozessor einzubauen, die Unterbrechungen in bestimmten Zeitintervallen oder in Bezug auf bestimmte Uhrereignisse, wie das Verstreichen einer Stunde, einer Minute usw., erzeugen kann. Mit diesen Arten von Unterbrechungen ist ein pr\u00e4zises Zeitmanagement m\u00f6glich.<\/li>\n<li><strong>DMA Unterbrechungen<\/strong> &#8211; Die meisten modernen CPUs unterst\u00fctzen die \u00dcbertragung von Daten zwischen Speicher und Peripherieger\u00e4ten ohne Beteiligung der CPU. Dieser Vorgang wird von DMA-Einheiten durchgef\u00fchrt, die auch eine Unterbrechung erzeugen k\u00f6nnen, wenn der Informationsaustausch abgeschlossen ist.<\/li>\n<\/ul>\n<p style=\"font-weight: 400\">Zus\u00e4tzlich zu diesen ziemlich universellen Unterbrechungen bietet der RP2040 auch so etwas wie XIP_IRQ. Diese Abk\u00fcrzung ist nicht so eindeutig wie die anderen in der obigen Tabelle. Dies ist eine mit dem SSI-Modul verbundene Unterbrechung, die u.a. verwendet wird, wenn das vom Mikrocontroller ausgef\u00fchrte Programm in seinem internen, fl\u00fcchtigen SRAM gespeichert wird.<\/p>\n<p style=\"font-weight: 400\">Interessant ist auch die Struktur des IRQ-Registers, in dem die Unterbrechungen gespeichert werden. Wie Sie leicht erkennen k\u00f6nnen, gibt es 26 Unterbrechungen, w\u00e4hrend das Register selbst 32 Bits hat. Die verbleibenden sechs Bits sind ungenutzt und physisch nicht mit dem NVIC verbunden, der Komponente, die f\u00fcr die Bearbeitung von Unterbrechungen zust\u00e4ndig ist. Obwohl der Prozessor die \u00fcberfl\u00fcssigen Bits nicht verwendet, k\u00f6nnen sie aus dem Programm heraus gespeichert werden, obwohl dies keine physikalischen Auswirkungen hat.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ac1e66c elementor-widget elementor-widget-heading\" data-id=\"ac1e66c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u00c4nderung des Zustands einer Diode in einer Unterbrechung<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-100a302 elementor-widget elementor-widget-image\" data-id=\"100a302\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-scaled.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"IMG_1131\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Nzg4NjcsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNFwvSU1HXzExMzEtc2NhbGVkLmpwZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-1024x576.jpg\" class=\"attachment-large size-large wp-image-78867\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-1024x576.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-300x169.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-768x432.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-1536x864.jpg 1536w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-2048x1152.jpg 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">In der n\u00e4chsten Sendung werden wir die gleiche Schaltung verwenden.<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0346497 elementor-widget elementor-widget-text-editor\" data-id=\"0346497\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Um zu testen, wie Unterbrechungen funktionieren, werden wir ein einfaches Programm erstellen, das den Zustand einer LED in den entgegengesetzten Zustand \u00e4ndert, wenn eine Taste einmal gedr\u00fcckt wird. Ich habe dieses Projekt interrupt_led genannt und wir werden die zuvor vorbereitete Schaltung darin verwenden. Sobald das neue Projekt vorbereitet ist, k\u00f6nnen wir direkt mit dem Code beginnen.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4898f84 elementor-widget elementor-widget-text-editor\" data-id=\"4898f84\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<pre>#include &lt;stdio.h&gt;<br\/>#include \"pico\/stdlib.h\"<br\/><br\/>#define YELLOW_LED 1<br\/>#define BUTTON 16<br\/><br\/>bool led_status = false;<br\/><br\/>\/\/interrupt handler function<br\/>void gpio_irq_handler(uint gpio, uint32_t events)<br\/>{<br\/>    led_status = !led_status;<br\/>    gpio_put(YELLOW_LED, led_status);<br\/>}<br\/><br\/>int main() {<br\/>    stdio_init_all();<br\/><br\/>    \/\/ LED and button initialization<br\/>    gpio_init(YELLOW_LED);<br\/>    gpio_set_dir(YELLOW_LED, GPIO_OUT);<br\/>    gpio_put(YELLOW_LED, led_status);<br\/><br\/>    gpio_pull_up(BUTTON);<br\/><br\/>    \/\/interrupt initialization<br\/>    gpio_set_irq_enabled_with_callback(BUTTON,     GPIO_IRQ_EDGE_FALL, true, gpio_irq_handler);<br\/><br\/>    while(true) {<br\/>        tight_loop_contents(); \/\/ \"do nothing\" function<br\/>    }<br\/>}<\/pre>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-46edf17 elementor-widget elementor-widget-text-editor\" data-id=\"46edf17\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Das Programm, das wir dieses Mal durchf\u00fchren werden, ist recht einfach und kurz. Zun\u00e4chst binden wir wie \u00fcblich die erforderlichen Bibliotheken ein und definieren den Port, an den die LED und die Taste angeschlossen sind. Zus\u00e4tzlich dazu habe ich hier eine globale Variable led_status platziert, die den aktuellen Zustand der LED speichert. Das n\u00e4chste Element des Codes ist die mit einer Unterbrechung assoziierte Funktion, aber darauf kommen wir gleich zur\u00fcck, wenden wir uns nun der Hauptfunktion main zu. Darin wurde eine LED initialisiert, der sofort der in der Variablen status gespeicherte Zustand zugewiesen wurde. Der Standardwert ist false. Deshalb leuchtet die LED nicht auf, wenn das Programm gestartet wird. Dann wird dank der Funktion gpio_pull_up die Leitung Nummer 16, an die die Taste angeschlossen ist, zur Stromversorgung hochgezogen.<\/p>\n<p style=\"font-weight: 400\">Eine andere der Funktionen l\u00f6st eine GPIO-Unterbrechung aus. Ihre Argumente sind: der Ausgang, von dem die Unterbrechung ausgeht, event_mask &#8211; das Ereignis, das zu einem Unterbrechungs-Signal f\u00fchren soll, true &#8211; das Argument, das die Unterbrechung ausl\u00f6st und der sogenannte handler, d.h. die Funktion, in der die Unterbrechungs-Bedienung beschrieben wird. In unserem Code wird die Funktion, die die Unterbrechung ausl\u00f6st, durch die Definition BUTTON beschrieben, d.h. die Unterbrechung sollte von dem Pin mit der Nummer 16 kommen. Das Argument event_mask ist GPIO_IRQ_EDGE_FALL, d.h. die Unterbrechung wird ausgel\u00f6st, wenn eine fallende Flanke am Ausgang vorliegt. Mit anderen Worten, wenn die Taste gedr\u00fcckt wird, denn dadurch wird der RP2040-Pin gegen Masse kurzgeschlossen. Auch andere Argumente k\u00f6nnen hier angef\u00fchrt werden:<\/p>\n<ul>\n<li>GPIO_IRQ_EDGE_RISE &#8211; steigende Flanke,<\/li>\n<li>GPIO_IRQ_LEVEL_HIGH &#8211; hoher Status am Pin,<\/li>\n<li>GPIO_IRQ_LEVEL_LOW &#8211; niedriger Zustand am Pin.<\/li>\n<\/ul>\n<p style=\"font-weight: 400\">Als N\u00e4chstes l\u00f6sen wir dank true die Unterbrechung aus und geben den Namen der Funktion an, die ausgef\u00fchrt werden soll, wenn die Unterbrechung erkannt wird, d.h. gpio_irq_handler.<\/p>\n<p style=\"font-weight: 400\">Nach der Initialisierung f\u00fchrt der Prozessor eine unendliche while-Schleife aus, die nichts tut. Darin habe ich einen speziellen Befehl platziert, der genau folgendes bedeutet: nichts zu tun, und der mit dem aus dem Assembler bekannten NULL-Code verglichen werden kann.<\/p>\n<p style=\"font-weight: 400\">Wenn wir das Programm starten, beginnt der RP2040 fast sofort mit der Ausf\u00fchrung einer leeren while-Schleife. Allerdings \u00e4ndert sich alles, wenn die Taste gedr\u00fcckt wird. An diesem Punkt wird ein Unterbrechungs-Signal ausgel\u00f6st und das entsprechende Bit wird in das IRQ-Register geschrieben. An diesem Punkt wird der Prozessor auch die Unterbrechung bearbeiten. Dank der Funktion, die die Unterbrechung ausf\u00fchrt, wei\u00df sie, dass der Code, den sie ausf\u00fchren soll, in der Funktion gpio_irq_handler steht. Beachten Sie, dass sie in diesem Beispiel am Anfang des Programms steht, im Gegensatz zu den Funktionen, die wir im vorherigen Artikel vorbereitet haben. Diese L\u00f6sung ist sehr gut und sorgt daf\u00fcr, dass wir keine Funktionsprototypen an den Anfang des Codes stellen m\u00fcssen. Aus \u00e4sthetischen Gr\u00fcnden ziehe ich es jedoch vor, meine eigenen Funktionen am Ende des Codes zu platzieren. <\/p>\n<p style=\"font-weight: 400\">Der vorbereitete handler vom Typ void, d.h. der keine Informationen zur\u00fcckgibt, erwartet von uns zwei Argumente &#8211; gpio vom Typ uint und events vom Typ uint32_t. Wir brauchen uns jedoch nicht \u00fcberm\u00e4\u00dfig um diese Argumente zu k\u00fcmmern; der Prozessor wird sie automatisch verarbeiten. Allerdings werden hier, wie unschwer zu erraten ist, die GPIO-Pin-Nummer und das Ereignis, auf das die Unterbrechung reagieren soll, \u00fcbergeben.<\/p>\n<p style=\"font-weight: 400\">Innerhalb der Funktion, die die Unterbrechung verarbeitet, habe ich zwei Befehle platziert, die die LED veranlassen, ihren Zustand zu \u00e4ndern. Zun\u00e4chst wird der Variable led_status ihr umgekehrter Zustand zugewiesen. Dies wird durch den Negationsoperator &#8216;!&#8217; erm\u00f6glicht. Mit anderen Worten: Wenn false in led_status gespeichert ist, wird der Variable truth, der entgegengesetzte Zustand, zugewiesen. Eine weitere Funktion ist das bereits bekannte gpio_put zur Steuerung der LED.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c5a40ec elementor-widget elementor-widget-video\" data-id=\"c5a40ec\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/przerwanie.mov\" controls=\"\" preload=\"metadata\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a3bb8b2 elementor-widget elementor-widget-text-editor\" data-id=\"a3bb8b2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Nachdem wir das Programm ausgef\u00fchrt haben, sehen wir, dass nichts passiert. Wie bereits erw\u00e4hnt, f\u00fchrt der Prozessor dann eine leere while-Schleife aus. Es ist wahrscheinlich, dass, wie im Video, die gr\u00fcne LED ausgel\u00f6st wird, aber das ist f\u00fcr unseren Code nicht relevant. Die Frage, warum das so ist, wird sp\u00e4ter im Artikel beantwortet. Wenn die Taste gedr\u00fcckt wird, registriert der Prozessor die Unterbrechung und die Funktion, die sie behandelt, wird ausgef\u00fchrt und die gelbe LED \u00e4ndert ihren Zustand. Wie Sie im Video und im wirklichen Leben sehen k\u00f6nnen, \u00e4ndert nicht jeder Tastendruck den Zustand der LED. Dies geschieht durch die Vibration der Kontakte in der Taste und ist ein ganz gew\u00f6hnliches Ph\u00e4nomen, auf das wir gleich eingehen werden. Zu diesem Zeitpunkt kann jedoch gesagt werden, dass das Programm korrekt funktioniert und die von der Taste erzeugte Unterbrechung verarbeitet wird.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-96b5f27 elementor-widget elementor-widget-heading\" data-id=\"96b5f27\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Kontaktvibrationen und nicht festgelegte Zust\u00e4nde<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c0320c7 elementor-widget elementor-widget-text-editor\" data-id=\"c0320c7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Es ist an der Zeit zu beantworten, warum die gr\u00fcne LED aufleuchtet, wenn das oben beschriebene Beispiel ausgef\u00fchrt wird. Das liegt daran, dass die RPI-Leitung, mit der dieses Element verbunden ist, in keiner Weise definiert ist. Mit anderen Worten, das Programm verwendet diesen GPIO-Pin nicht, so dass seine Funktion undefiniert ist. In diesem Fall kann der Ausgang des Mikrocontrollers jeden beliebigen Zustand annehmen, und wir k\u00f6nnen weder vorhersagen, ob er hoch oder niedrig sein wird, noch ob er als Eingang oder Ausgang fungiert.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a4327e elementor-widget elementor-widget-image\" data-id=\"6a4327e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"debounce_bouncing\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Nzg4NzUsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNFwvZGVib3VuY2VfYm91bmNpbmcucG5nIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"280\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing-1024x359.png\" class=\"attachment-large size-large wp-image-78875\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing-1024x359.png 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing-300x105.png 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing-768x269.png 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing-1536x538.png 1536w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing-2048x718.png 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Elektrische Wellenform, wenn die Taste gedr\u00fcckt und losgelassen wird. (https:\/\/hackaday.com\/2015\/12\/09\/embed-with-elliot-debounce-your-noisy-buttons-part-i\/)<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5610551 elementor-widget elementor-widget-text-editor\" data-id=\"5610551\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Ebenfalls kurz zu erl\u00e4utern ist das Ph\u00e4nomen der sogenannten Kontaktvibration, die durch Dr\u00fccken einer an den Raspberry Pi Pico W angeschlossenen Taste beobachtet werden kann. Es kam vor, dass die LED ihren Zustand nicht \u00e4nderte, oder sie tat es, kehrte aber fast sofort in ihre vorherige Konfiguration zur\u00fcck.<\/p>\n<p style=\"font-weight: 400\">Wenn wir den Knopf dr\u00fccken, schlie\u00dfen wir seine Kontakte mit der Masse kurz, es scheint ein Null-Eins-Prozess zu sein: eine logische Eins, wenn der Knopf nicht gedr\u00fcckt wird, und eine Null, wenn er gedr\u00fcckt wird. In Wirklichkeit sieht es jedoch etwas anders aus. Wenn wir ein Oszilloskop an die Tastenkontakte anschlie\u00dfen w\u00fcrden, w\u00fcrden wir \u00e4hnliche Wellenformen wie in der obigen Grafik sehen. Wenn die Taste gedr\u00fcckt oder losgelassen wird, vibrieren die Kontakte. W\u00e4hrend dieses kurzen Moments kann sich der vom RPI gelesene Zustand sogar mehrmals \u00e4ndern, so dass die Unterbrechung auch mehrmals ausgel\u00f6st werden kann. Dadurch ist uns das nicht ganz intuitive Verhalten des Programms aufgefallen.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-5f20762 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5f20762\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-df89a1a\" data-id=\"df89a1a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0872d89 elementor-widget elementor-widget-text-editor\" data-id=\"0872d89\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Das Problem der vibrierenden Tastenkontakte kann im Wesentlichen auf zwei Arten gel\u00f6st werden &#8211; Hardware oder Software. Im ersten Konzept m\u00fcssen der Taste ein paar Elemente in Form von zwei Widerst\u00e4nden und einem Kondensator hinzugef\u00fcgt werden (eine aufw\u00e4ndigere Version mit einem zus\u00e4tzlichen Logikgatter ist ebenfalls zu finden). Zusammen bilden sie einen einfachen RC-Filter, dessen Aufgabe es ist, unkorrigierte Impulse so weit wie m\u00f6glich zu entfernen, so dass der Mikrocontroller ein Signal erh\u00e4lt, das einem idealen Rechtecksignal so nahe wie m\u00f6glich kommt.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-cfb05c6\" data-id=\"cfb05c6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3410b1f elementor-widget elementor-widget-image\" data-id=\"3410b1f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"debounce-sch\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Nzg4NzksInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNFwvZGVib3VuY2Utc2NoLnBuZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"791\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch-1024x1012.png\" class=\"attachment-large size-large wp-image-78879\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch-1024x1012.png 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch-300x296.png 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch-768x759.png 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch-1536x1518.png 1536w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch-2048x2024.png 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Eine Hardware-L\u00f6sung f\u00fcr das Problem der vibrierenden Kontakte. (https:\/\/hackaday.com\/2015\/12\/09\/embed-with-elliot-debounce-your-noisy-buttons-part-i\/)<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-e0f64f4 elementor-widget elementor-widget-text-editor\" data-id=\"e0f64f4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Die Kontaktverlegenheit kann auch programmatisch gel\u00f6st werden, indem Sie eine einfache Funktion erstellen, die erkennt, dass eine Taste gedr\u00fcckt wurde, ein paar Millisekunden wartet und den Status erneut \u00fcberpr\u00fcft. Befindet sich diese immer noch in dem Zustand, in dem sie erkannt wurde, bedeutet dies, dass der Benutzer die Taste gedr\u00fcckt hat und Sie mit der Ausf\u00fchrung des Programms fortfahren k\u00f6nnen, das sie unterst\u00fctzt. Wir werden diese Art von Code in Zukunft vorbereiten. F\u00fcr diese Art der Unterbrechungs-Behandlung ist eine Softwarel\u00f6sung jedoch nicht ganz geeignet. Denken Sie daran, dass Unterbrechungen &#8216;automatisch&#8217; gemeldet werden, wir haben wenig Einfluss darauf, wie sie erkannt werden. Wenn der entsprechende Zustand oder die entsprechende Flanke des Signals auftritt, wird ein bestimmtes Bit im Register des Mikrocontrollers gesetzt, und der Code, der ausgef\u00fchrt wird, wenn eine Unterbrechung erkannt wird, ist genau eine Reaktion auf dieses Bit und nicht auf einen physischen Tastendruck.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5a49911 elementor-widget elementor-widget-heading\" data-id=\"5a49911\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Einmaliger Code, also ein Alarm<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef5c034 elementor-widget elementor-widget-text-editor\" data-id=\"ef5c034\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Eine interessante Funktion, die der Raspberry Pi Pico unterst\u00fctzt, sind die sogenannten Alarme. Dies sind Funktionen, die nach einer bestimmten Zeit einmalig aufgerufen werden, was wir als einmalige Systemunterbrechung bezeichnen k\u00f6nnen. Dies kann vor allem dann n\u00fctzlich sein, wenn wir einen bestimmten Teil des Codes kurz nach dem Start des Mikrocontrollers, aber unabh\u00e4ngig von der Hauptprogrammschleife ausf\u00fchren m\u00fcssen.<\/p>\n<p style=\"font-weight: 400\">Um die Alarmfunktion zu testen, habe ich ein weiteres Projekt mit dem Namen Alarm vorbereitet, wobei ich weiterhin dieselbe elektronische Schaltung verwende. In dem Programm werden wir die bereits gelernte Funktion verwenden, die den Fotowiderstand bet\u00e4tigt und Informationen \u00fcber die Lichtintensit\u00e4t und den Spannungswert an den Computerbildschirm sendet. Gleichzeitig, unabh\u00e4ngig vom Hauptcode, werden 10 Sekunden nach der Aktivierung des RP2040 alle LEDs eingeschaltet. Lasst uns zum n\u00e4chsten Beispiel \u00fcbergehen.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-072fc9d elementor-widget elementor-widget-text-editor\" data-id=\"072fc9d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<pre>#include &lt;stdio.h&gt;<br\/>#include \"pico\/stdlib.h\"<br\/>#include \"hardware\/adc.h\"<br\/><br\/>\/\/definitions and prototypes of functions<br\/>#define GREEN_LED 0<br\/>#define YELLOW_LED 1<br\/>#define RED_LED 2<br\/><br\/>const float conversion_factor = 3.3\/4095;<br\/><br\/>int64_t alarm(alarm_id_t id, void *user_data);<br\/>void PhotoresRun();<br\/><br\/>int main() {<br\/>    stdio_init_all();<br\/><br\/>    gpio_init(YELLOW_LED);<br\/>    gpio_set_dir(YELLOW_LED, GPIO_OUT);<br\/>    gpio_put(YELLOW_LED, 0);<br\/>    gpio_init(GREEN_LED);<br\/>    gpio_set_dir(GREEN_LED, GPIO_OUT);<br\/>    gpio_put(GREEN_LED, 0);<br\/>    gpio_init(RED_LED);<br\/>    gpio_set_dir(RED_LED, GPIO_OUT);<br\/>    gpio_put(RED_LED, 0);<br\/><br\/>    \/\/alarm setup<br\/>    add_alarm_in_ms(10000, alarm, NULL, false);<br\/><br\/>    adc_init();<br\/>    adc_gpio_init(26);<br\/>    adc_select_input(0);<br\/><br\/>    while(true) {<br\/>        PhotoresRun();<br\/>        sleep_ms(500);<br\/>    }<br\/>}<br\/><br\/>\/\/alarm handling function<br\/>Int64_t alarm(alarm_id_t id, void *user_data){<br\/>    gpio_put(YELLOW_LED, 1);<br\/>    gpio_put(GREEN_LED, 1);<br\/>    gpio_put(RED_LED, 1);<br\/>    return 0;<br\/>}<br\/><br\/>void PhotoresRun(){<br\/>    uint16_t photores_read = adc_read();<br\/>    const float voltage_photores = photores_read * conversion_factor;<br\/>    printf(\"Photoresistor ADC: value = %d, voltage = %f V\\n\", photores_read, voltage_photores);<br\/><br\/>}<\/pre><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-069030d elementor-widget elementor-widget-text-editor\" data-id=\"069030d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Das Programm besteht gr\u00f6\u00dftenteils aus bereits bekannten Funktionen. Neben der Initialisierung der LEDs und der Funktion PhotoresRun, die sich um den an den Mikrocontroller angeschlossenen Fotowiderstand k\u00fcmmert, bemerken wir jedoch eine zus\u00e4tzliche Funktion mit ihrem Prototyp und einem Befehl zur Aktivierung des Alarms. Und es sind diese Konstruktionen, die wir in erster Linie behandeln werden.<\/p>\n<p style=\"font-weight: 400\">Vor der unendlichen while-Schleife sehen wir die Anweisung add_alarm_in_ms. Sie setzt den Alarm, dessen Merkmale in den Argumenten dieser Funktion gefunden wurden. 10000 ist die Anzahl der Millisekunden, nach denen der Alarm ausgel\u00f6st werden soll. Das n\u00e4chste Argument ist der Name der Funktion, die ausgef\u00fchrt werden soll, wenn der Alarm ausgel\u00f6st wird, in diesem Fall ist es einfach Alarm. NULL bedeutet, dass keine zus\u00e4tzlichen Daten an unsere Funktion \u00fcbergeben werden, w\u00e4hrend false angibt, dass der Countdown f\u00fcr den Funktionsaufruf nur aktiviert wird, wenn der Alarm ausgel\u00f6st wird. Im Falle eines Arguments true kann etwas wie ein R\u00fcckruf erscheinen, was bedeutet, dass der Alarm nach einer Zeit aufgerufen wurde, die gr\u00f6\u00dfer ist als die in seinem Argument angegebene.<\/p>\n<p style=\"font-weight: 400\">Sobald der Alarm eingestellt ist, geht der Code in eine Endlosschleife \u00fcber, in der der Fotowiderstand aktiviert wird und alle halbe Sekunde Informationen \u00fcber Lichtintensit\u00e4t und Spannung an den seriellen Monitor gesendet werden. Nach 10 Sekunden wird jedoch ein Alarm ausgel\u00f6st und der Mikrocontroller bedient diesen. Die Alarmfunktion wird ausgel\u00f6st, wodurch alle drei LEDs aktiviert werden. Diese Funktion gibt bei korrekter Ausf\u00fchrung Null zur\u00fcck. Wie bei den Unterbrechungen brauchen Sie sich, um die Argumente dieser Funktion nicht zu k\u00fcmmern. Sie stammen aus der RPI-Dokumentation und geben die ID des Alarms und so etwas wie einen Indikator auf Benutzerdaten an, aber wir werden uns an anderer Stelle mit Indikatoren besch\u00e4ftigen.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-11445fb elementor-widget elementor-widget-video\" data-id=\"11445fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/alarm_film.mov\" controls=\"\" preload=\"metadata\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-04c0b67 elementor-widget elementor-widget-text-editor\" data-id=\"04c0b67\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Sobald der Code kompiliert ist und l\u00e4uft, kann der serielle Monitor ge\u00f6ffnet werden und die vom Mikrocontroller flie\u00dfenden Daten k\u00f6nnen beobachtet werden. Au\u00dferdem werden, wie im Video gezeigt, nach 10 Sekunden alle drei LEDs aktiviert. Dies geschieht eigenst\u00e4ndig und hat keinen Einfluss auf die Hauptfunktion des Programms.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b15534c elementor-widget elementor-widget-heading\" data-id=\"b15534c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Ein paar Worte zum Schluss...<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9a37296 elementor-widget elementor-widget-text-editor\" data-id=\"9a37296\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">In diesem Material haben wir uns die Unterbrechungen des Mikrocontrollers genauer angesehen und auch die Alarmfunktion aktiviert. Dar\u00fcber hinaus haben wir den Standardzustand der Anschl\u00fcsse des RP2040 und das Problem der vibrierenden Kontakte in den Tasten erw\u00e4hnt. Im n\u00e4chsten Tutorial werden wir uns mit Timern besch\u00e4ftigen, und ich werde Ihnen auch mehr \u00fcber die bereits erw\u00e4hnten Indikatoren erz\u00e4hlen.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-731f84a elementor-widget elementor-widget-spacer\" data-id=\"731f84a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3818d16 elementor-widget elementor-widget-text-editor\" data-id=\"3818d16\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Quellen:<\/p>\n<ul>\n<li>https:\/\/datasheets.raspberrypi.com\/rp2040\/rp2040-datasheet.pdf<\/li>\n<li>https:\/\/datasheets.raspberrypi.com\/picow\/pico-w-datasheet.pdf<\/li>\n<li>https:\/\/www.raspberrypi.com\/products\/rp2040\/<\/li>\n<li>https:\/\/www.raspberrypi.com\/documentation\/microcontrollers\/raspberry-pi-pico.html<\/li>\n<li>https:\/\/hackaday.com\/2015\/12\/09\/embed-with-elliot-debounce-your-noisy-buttons-part-i\/)s<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Vor uns liegt ein weiterer Teil des Materials \u00fcber das kleine Entwicklungskit Raspberry Pi Pico W. Dieses Mal erkunden wir die erstaunliche Welt der Unterbrechungen des Mikrocontrollers.<\/p>\n","protected":false},"author":34,"featured_media":79111,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7,21,134],"tags":[],"class_list":["post-79148","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elektronika","category-programowanie","category-raspberry-pi"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Raspberry Pi Pico Kurs - #8 - Unterbrechungen und Alarme - Botland<\/title>\n<meta name=\"description\" content=\"Vor uns liegt ein weiterer Teil des Materials \u00fcber das kleine Entwicklungskit Raspberry Pi Pico W. Dieses Mal erkunden wir die erstaunliche Welt der Unterbrechungen des Mikrocontrollers.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Raspberry Pi Pico Kurs - #8 - Unterbrechungen und Alarme - Botland\" \/>\n<meta property=\"og:description\" content=\"Vor uns liegt ein weiterer Teil des Materials \u00fcber das kleine Entwicklungskit Raspberry Pi Pico W. Dieses Mal erkunden wir die erstaunliche Welt der Unterbrechungen des Mikrocontrollers.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/\" \/>\n<meta property=\"og:site_name\" content=\"Botland\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/Botland\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-04-29T11:08:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-08T08:58:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/1-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1510\" \/>\n\t<meta property=\"og:image:height\" content=\"755\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Rafa\u0142 Bartoszak\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rafa\u0142 Bartoszak\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"18\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\\\/\"},\"author\":{\"name\":\"Rafa\u0142 Bartoszak\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/person\\\/5a69e7f5db1f77c617f990e73bb83215\"},\"headline\":\"Raspberry Pi Pico Kurs &#8211; #8 &#8211; Unterbrechungen und Alarme\",\"datePublished\":\"2024-04-29T11:08:53+00:00\",\"dateModified\":\"2026-04-08T08:58:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\\\/\"},\"wordCount\":3288,\"publisher\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/1-3.png\",\"articleSection\":[\"Elektronika\",\"Programowanie\",\"Raspberry Pi\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\\\/\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\\\/\",\"name\":\"Raspberry Pi Pico Kurs - #8 - Unterbrechungen und Alarme - Botland\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/1-3.png\",\"datePublished\":\"2024-04-29T11:08:53+00:00\",\"dateModified\":\"2026-04-08T08:58:20+00:00\",\"description\":\"Vor uns liegt ein weiterer Teil des Materials \u00fcber das kleine Entwicklungskit Raspberry Pi Pico W. Dieses Mal erkunden wir die erstaunliche Welt der Unterbrechungen des Mikrocontrollers.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\\\/#primaryimage\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/1-3.png\",\"contentUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/1-3.png\",\"width\":1510,\"height\":755},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/botland.de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Raspberry Pi Pico Kurs &#8211; #8 &#8211; Unterbrechungen und Alarme\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/\",\"name\":\"Botland\",\"description\":\"Blog Raspberry Pi, Arduino, elektronika i robotyka - Botland\",\"publisher\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/botland.de\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\",\"name\":\"Botland\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/botland.store\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/logo_kolor_WP_2-1.png\",\"contentUrl\":\"https:\\\/\\\/botland.store\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/logo_kolor_WP_2-1.png\",\"width\":250,\"height\":57,\"caption\":\"Botland\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/facebook.com\\\/Botland\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/person\\\/5a69e7f5db1f77c617f990e73bb83215\",\"name\":\"Rafa\u0142 Bartoszak\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/IMG_21531-300x300.jpg\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/IMG_21531-300x300.jpg\",\"contentUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/IMG_21531-300x300.jpg\",\"caption\":\"Rafa\u0142 Bartoszak\"},\"description\":\"Wsp\u00f3\u0142pracuj\u0105cy z Botlandem elektronik, kt\u00f3ry dzieli si\u0119 swoj\u0105 wiedz\u0105 w internecie. Entuzjasta system\u00f3w cyfrowych, uk\u0142ad\u00f3w programowalnych i mikroelektroniki. Pasjonat historii, ze szczeg\u00f3lnym naciskiem na wiek XX.\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/author\\\/rafal-bartoszak\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Raspberry Pi Pico Kurs - #8 - Unterbrechungen und Alarme - Botland","description":"Vor uns liegt ein weiterer Teil des Materials \u00fcber das kleine Entwicklungskit Raspberry Pi Pico W. Dieses Mal erkunden wir die erstaunliche Welt der Unterbrechungen des Mikrocontrollers.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/","og_locale":"de_DE","og_type":"article","og_title":"Raspberry Pi Pico Kurs - #8 - Unterbrechungen und Alarme - Botland","og_description":"Vor uns liegt ein weiterer Teil des Materials \u00fcber das kleine Entwicklungskit Raspberry Pi Pico W. Dieses Mal erkunden wir die erstaunliche Welt der Unterbrechungen des Mikrocontrollers.","og_url":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/","og_site_name":"Botland","article_publisher":"https:\/\/facebook.com\/Botland\/","article_published_time":"2024-04-29T11:08:53+00:00","article_modified_time":"2026-04-08T08:58:20+00:00","og_image":[{"width":1510,"height":755,"url":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/1-3.png","type":"image\/png"}],"author":"Rafa\u0142 Bartoszak","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Rafa\u0142 Bartoszak","Gesch\u00e4tzte Lesezeit":"18\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/#article","isPartOf":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/"},"author":{"name":"Rafa\u0142 Bartoszak","@id":"https:\/\/botland.de\/blog\/#\/schema\/person\/5a69e7f5db1f77c617f990e73bb83215"},"headline":"Raspberry Pi Pico Kurs &#8211; #8 &#8211; Unterbrechungen und Alarme","datePublished":"2024-04-29T11:08:53+00:00","dateModified":"2026-04-08T08:58:20+00:00","mainEntityOfPage":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/"},"wordCount":3288,"publisher":{"@id":"https:\/\/botland.de\/blog\/#organization"},"image":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/1-3.png","articleSection":["Elektronika","Programowanie","Raspberry Pi"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/","url":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/","name":"Raspberry Pi Pico Kurs - #8 - Unterbrechungen und Alarme - Botland","isPartOf":{"@id":"https:\/\/botland.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/#primaryimage"},"image":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/1-3.png","datePublished":"2024-04-29T11:08:53+00:00","dateModified":"2026-04-08T08:58:20+00:00","description":"Vor uns liegt ein weiterer Teil des Materials \u00fcber das kleine Entwicklungskit Raspberry Pi Pico W. Dieses Mal erkunden wir die erstaunliche Welt der Unterbrechungen des Mikrocontrollers.","breadcrumb":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/#primaryimage","url":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/1-3.png","contentUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/04\/1-3.png","width":1510,"height":755},{"@type":"BreadcrumbList","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/botland.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Raspberry Pi Pico Kurs &#8211; #8 &#8211; Unterbrechungen und Alarme"}]},{"@type":"WebSite","@id":"https:\/\/botland.de\/blog\/#website","url":"https:\/\/botland.de\/blog\/","name":"Botland","description":"Blog Raspberry Pi, Arduino, elektronika i robotyka - Botland","publisher":{"@id":"https:\/\/botland.de\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/botland.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/botland.de\/blog\/#organization","name":"Botland","url":"https:\/\/botland.de\/blog\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/botland.de\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/botland.store\/blog\/wp-content\/uploads\/2018\/04\/logo_kolor_WP_2-1.png","contentUrl":"https:\/\/botland.store\/blog\/wp-content\/uploads\/2018\/04\/logo_kolor_WP_2-1.png","width":250,"height":57,"caption":"Botland"},"image":{"@id":"https:\/\/botland.de\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/Botland\/"]},{"@type":"Person","@id":"https:\/\/botland.de\/blog\/#\/schema\/person\/5a69e7f5db1f77c617f990e73bb83215","name":"Rafa\u0142 Bartoszak","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2023\/07\/IMG_21531-300x300.jpg","url":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2023\/07\/IMG_21531-300x300.jpg","contentUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2023\/07\/IMG_21531-300x300.jpg","caption":"Rafa\u0142 Bartoszak"},"description":"Wsp\u00f3\u0142pracuj\u0105cy z Botlandem elektronik, kt\u00f3ry dzieli si\u0119 swoj\u0105 wiedz\u0105 w internecie. Entuzjasta system\u00f3w cyfrowych, uk\u0142ad\u00f3w programowalnych i mikroelektroniki. Pasjonat historii, ze szczeg\u00f3lnym naciskiem na wiek XX.","url":"https:\/\/botland.de\/blog\/author\/rafal-bartoszak\/"}]}},"_links":{"self":[{"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/posts\/79148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/comments?post=79148"}],"version-history":[{"count":0,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/posts\/79148\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/media\/79111"}],"wp:attachment":[{"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/media?parent=79148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/categories?post=79148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/tags?post=79148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}