Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the twentyfourteen domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/functions.php on line 6121 Warning: Cannot modify header information - headers already sent by (output started at /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/functions.php:6121) in /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/rest-api/class-wp-rest-server.php on line 1896 Warning: Cannot modify header information - headers already sent by (output started at /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/functions.php:6121) in /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/rest-api/class-wp-rest-server.php on line 1896 Warning: Cannot modify header information - headers already sent by (output started at /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/functions.php:6121) in /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/rest-api/class-wp-rest-server.php on line 1896 Warning: Cannot modify header information - headers already sent by (output started at /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/functions.php:6121) in /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/rest-api/class-wp-rest-server.php on line 1896 Warning: Cannot modify header information - headers already sent by (output started at /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/functions.php:6121) in /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/rest-api/class-wp-rest-server.php on line 1896 Warning: Cannot modify header information - headers already sent by (output started at /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/functions.php:6121) in /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/rest-api/class-wp-rest-server.php on line 1896 Warning: Cannot modify header information - headers already sent by (output started at /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/functions.php:6121) in /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/rest-api/class-wp-rest-server.php on line 1896 Warning: Cannot modify header information - headers already sent by (output started at /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/functions.php:6121) in /mnt/web021/d1/15/5149015/htdocs/WordPress_02/wp-includes/rest-api/class-wp-rest-server.php on line 1896 {"id":384,"date":"2016-06-23T18:31:01","date_gmt":"2016-06-23T22:31:01","guid":{"rendered":"http:\/\/alpharesearch.de\/?p=384"},"modified":"2016-06-23T22:30:13","modified_gmt":"2016-06-24T02:30:13","slug":"pishow-2-8-device-tree-example","status":"publish","type":"post","link":"https:\/\/alpharesearch.de\/?p=384","title":{"rendered":"Seeed \/ 52Pi PiShow 2.8 device tree overlay"},"content":{"rendered":"

This post is about the\u00a0PiShow 2.8″ Resistive Touch Display<\/a> from Seeedstudio. I found this little 65K colors and 320×240 pixel touch display for $20 at one of there sales.<\/p>\n

The documentation on there web page is not easy to understand and everything you need is already part of the standard operating system image.<\/p>\n

I used some existing device tree overlay and merged them and changed the pins and adopted the settings from the seeed documentation.<\/p>\n

The scree is showing the picture, the touch is working with my finger and the four buttons on the side are working too. I would call this a success.<\/p>\n

Thanks to\u00a0@notro<\/a>\u00a0for his guidance to make this example and his work in this area in general.<\/p>\n

\/*\r\n * Device Tree overlay for pishow 2.8\r\n *\r\n *\/\r\n\r\n\/dts-v1\/;\r\n\/plugin\/;\r\n\r\n\/ {\r\n    compatible = \"brcm,bcm2835\", \"brcm,bcm2708\", \"brcm,bcm2709\";\r\n\r\n    fragment@0 {\r\n    target = <&spi0>;\r\n    __overlay__ {\r\n        status = \"okay\";\r\n\r\n        spidev@0{\r\n        status = \"disabled\";\r\n        };\r\n\r\n        spidev@1{\r\n        status = \"disabled\";\r\n        };\r\n    };\r\n    };\r\n\r\n    fragment@1 {\r\n    target = <&gpio>;\r\n    __overlay__ {\r\n        pishow_display_pins: pishow_display_pins {\r\n        brcm,pins = <18 23 24 25>;\r\n        brcm,function = <1 1 1 0>; \/* out out out in *\/\r\n        brcm,pull = <0>; \/* none *\/\r\n        };\r\n            pishow_ts_pins: pishow_ts_pins {\r\n        brcm,pins = <22>;\r\n        brcm,function = <0>; \/* in *\/\r\n        };\r\n        keypad_pins: keypad_pins {\r\n        brcm,pins = <16 20 21 26>;\r\n        brcm,function = <0>; \/* in *\/\r\n        brcm,pull = <1>; \/* down *\/\r\n        };\r\n    };\r\n    };\r\n\r\n    fragment@2 {\r\n    target = <&spi0>;\r\n    __overlay__ {\r\n        \/* needed to avoid dtc warning *\/\r\n        #address-cells = <1>;\r\n        #size-cells = <0>;\r\n\r\n        pishow28: pishow28@0{\r\n        compatible = \"ilitek,ili9341\";\r\n        reg = <0>;\r\n        pinctrl-names = \"default\";\r\n        pinctrl-0 = <&pishow_display_pins>,\r\n                <&pishow_ts_pins>;\r\n\r\n        spi-max-frequency = <32000000>;\r\n        rotate = <270>;\r\n        bgr;\r\n        fps = <30>;\r\n        buswidth = <8>;\r\n        reset-gpios = <&gpio 23 0>;\r\n        dc-gpios = <&gpio 24 0>;\r\n        led-gpios = <&gpio 18 1>;\r\n        debug = <0>;\r\n        };\r\n\r\n        pishow28_ts: pishow28_ts@1 {\r\n        compatible = \"ti,ads7846\";\r\n        reg = <1>;\r\n\r\n        spi-max-frequency = <2000000>;\r\n        interrupts = <22 2>; \/* high-to-low edge triggered *\/\r\n        interrupt-parent = <&gpio>;\r\n        ti,keep-vref-on = <1>;\r\n        pendown-gpio = <&gpio 22 0>;\r\n        \/* driver defaults *\/\r\n        ti,x-min = \/bits\/ 16 <230>;\r\n        ti,y-min = \/bits\/ 16 <200>;\r\n        ti,x-max = \/bits\/ 16 <3900>;\r\n        ti,y-max = \/bits\/ 16 <3700>;\r\n        ti,pressure-min = \/bits\/ 16 <0>;\r\n        ti,pressure-max = \/bits\/ 16 <0xFFFF>;\r\n        ti,x-plate-ohms = \/bits\/ 16 <80>;\r\n        ti,swap-xy = <1>;\r\n        };\r\n    };\r\n    };\r\n    fragment@3 {\r\n    target-path = \"\/soc\";\r\n    __overlay__ {\r\n        keypad: keypad {\r\n        compatible = \"gpio-keys\";\r\n        #address-cells = <1>;\r\n        #size-cells = <0>;\r\n        pinctrl-names = \"default\";\r\n        pinctrl-0 = <&keypad_pins>;\r\n        #status = \"disabled\";\r\n        autorepeat;\r\n        button@16 {\r\n            label = \"GPIO KEY_UP\";\r\n            linux,code = <103>;\r\n            gpios = <&gpio 16 0>;\r\n        };\r\n        button@26 {\r\n            label = \"GPIO KEY_DOWN\";\r\n            linux,code = <108>;\r\n            gpios = <&gpio 26 0>;\r\n        };\r\n        button@20 {\r\n            label = \"GPIO KEY_LEFT\";\r\n            linux,code = <105>;\r\n            gpios = <&gpio 20 0>;\r\n        };\r\n        button@21 {\r\n            label = \"GPIO KEY_RIGHT\";\r\n            linux,code = <106>;\r\n            gpios = <&gpio 21 0>;\r\n        };\r\n        };\r\n    };\r\n    };\r\n    __overrides__ {\r\n    speed =   <&pishow28>,\"spi-max-frequency:0\";\r\n    rotate =  <&pishow28>,\"rotate:0\";\r\n    fps =     <&pishow28>,\"fps:0\";\r\n    debug =   <&pishow28>,\"debug:0\";\r\n    swapxy =  <&pishow28_ts>,\"ti,swap-xy;0\";\r\n    xmin =    <&pishow28_ts>,\"ti,x-min;0\";\r\n    ymin =    <&pishow28_ts>,\"ti,y-min;0\";\r\n    xmax =    <&pishow28_ts>,\"ti,x-max;0\";\r\n    ymax =    <&pishow28_ts>,\"ti,y-max;0\";\r\n    pmin =    <&pishow28_ts>,\"ti,pressure-min;0\";\r\n    pmax =    <&pishow28_ts>,\"ti,pressure-max;0\";\r\n    xohms =   <&pishow28_ts>,\"ti,x-plate-ohms;0\";\r\n    #keypad =  <&keypad>,\"status\";\r\n    };\r\n};\r\n<\/code><\/pre>\n

I used this script<\/a>\u00a0to install the device tree compiler dtc. After the compiler was installed this command creates the dtbo\u00a0file:<\/p>\n

sudo dtc -@ -I dts -O dtb -o \/boot\/overlays\/pishow28.dtbo pishow28.dts<\/code><\/pre>\n

The last step is to add\u00a0“dtoverlay=pishow28” to the end of the\u00a0“\/boot\/config.txt” file.<\/p>\n

Plus the \/etc\/X11\/xorg.conf.d\/99-ads7846-cal.conf file that swaps the X and Y axis:<\/p>\n

Section \"InputClass\"\r\n    Identifier \"Touchscreen\"\r\n    MatchProduct \"ADS7846 Touchscreen\"\r\n    Option \"InvertX\" \"1\"\r\n    Option \"InvertY\" \"1\"\r\n    Option \"SwapAxes\" \"0\"\r\n    Option \"Calibration\" \"215 3800 129 3676\"\r\nEndSection\r\n<\/code><\/pre>\n

I also added one\u00a0line in \/etc\/udev\/rules.d\/95-ads7846.rules file:<\/p>\n

SUBSYSTEM==\"input\", KERNEL==\"event[0-9]*\", ATTRS{name}==\"ADS7846*\", SYMLINK+=\"input\/touchscreen\"<\/pre>\n

As an extra I\u00a0did install the frame buffer copy tool <\/a>to copy the main frame buffer to the new touch display frame buffer.<\/p>\n","protected":false},"excerpt":{"rendered":"

This post is about the\u00a0PiShow 2.8″ Resistive Touch Display from Seeedstudio. I found this little 65K colors and 320×240 pixel touch display for $20 at one of there sales. The documentation on there web page is not easy to understand and everything you need is already part of the standard operating system image. I used … Continue reading Seeed \/ 52Pi PiShow 2.8 device tree overlay<\/span> →<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-384","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alpharesearch.de\/index.php?rest_route=\/wp\/v2\/posts\/384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alpharesearch.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alpharesearch.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alpharesearch.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alpharesearch.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=384"}],"version-history":[{"count":8,"href":"https:\/\/alpharesearch.de\/index.php?rest_route=\/wp\/v2\/posts\/384\/revisions"}],"predecessor-version":[{"id":397,"href":"https:\/\/alpharesearch.de\/index.php?rest_route=\/wp\/v2\/posts\/384\/revisions\/397"}],"wp:attachment":[{"href":"https:\/\/alpharesearch.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=384"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alpharesearch.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=384"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alpharesearch.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}