{"action":"closed","number":5324,"pull_request":{"url":"https://api.github.com/repos/MarlinFirmware/Marlin/pulls/5324","id":95698826,"html_url":"https://github.com/MarlinFirmware/Marlin/pull/5324","diff_url":"https://github.com/MarlinFirmware/Marlin/pull/5324.diff","patch_url":"https://github.com/MarlinFirmware/Marlin/pull/5324.patch","issue_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/5324","number":5324,"state":"closed","locked":false,"title":"Distribute GLCD screen updates in time","user":{"login":"AnHardt","id":211931,"avatar_url":"https://avatars.githubusercontent.com/u/211931?v=3","gravatar_id":"","url":"https://api.github.com/users/AnHardt","html_url":"https://github.com/AnHardt","followers_url":"https://api.github.com/users/AnHardt/followers","following_url":"https://api.github.com/users/AnHardt/following{/other_user}","gists_url":"https://api.github.com/users/AnHardt/gists{/gist_id}","starred_url":"https://api.github.com/users/AnHardt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnHardt/subscriptions","organizations_url":"https://api.github.com/users/AnHardt/orgs","repos_url":"https://api.github.com/users/AnHardt/repos","events_url":"https://api.github.com/users/AnHardt/events{/privacy}","received_events_url":"https://api.github.com/users/AnHardt/received_events","type":"User","site_admin":false},"body":"Distribute GLCD screen updates in time\r\n\r\nCurrently we draw and send the screens for a graphical LCD all at once.\r\nWe draw in two or four parts but draw them directly behind each other.\r\nFor the tested status screen this takes 59-62ms in a single block.\r\nDuring this time nothing else (except the interrupts) can be done.\r\nWhen printing a sequence of very short moves the buffer drains - sometimes until it's empty.\r\n\r\nThis PR splits the screen update into more parts.\r\nCurrently we have 10 time slots per second. During the first one, the complete screen is drawn. (60,0,0,0,0,0,0,0,0,0,0)\r\nHere i introduce pauses for doing other things. (30,30,0,0,0,0,0,0) or (15,15,15,15,0,0,0,0,0,0)\r\nDrawing in consecutive time slots prevents from lagging too much. Even with a 4 stripe display all the drawing is done after 400ms.\r\nPrevious experiments with a even better distribution of the time slots like (30,0,0,0,0,30,0,0,0,0) and (15,0,15,0,15,0,15,0,0,0) did not feel good when using the menu, because of too much lag.\r\n\r\nBecause of the previous PRs to speed up the display updates and especially reducing the difference between drawing 2 or 4 stripes, it now makes sense for the REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER to go from 2 to 4 stripes. This costs about 1-2ms per complete screen update, but is payed back by having partial updates lasting only half of the time and two additional brakes. About ~256 byte of framebuffer are saved in RAM.\r\n\r\n13:45:59.213 : echo: #:17 >:13 s:30;   #:16 >:13 s:29;   S#:33 S>:26 S:59\r\n13:46:00.213 : echo: #:16 >:14 s:30;   #:17 >:13 s:30;   S#:33 S>:27 S:60\r\n13:46:01.215 : echo: #:17 >:13 s:30;   #:16 >:13 s:29;   S#:33 S>:26 S:59\r\n13:46:02.215 : echo: #:16 >:13 s:29;   #:16 >:14 s:30;   S#:32 S>:27 S:59\r\n13:46:03.214 : echo: #:17 >:13 s:30;   #:17 >:13 s:30;   S#:34 S>:26 S:60\r\n13:46:04.214 : echo: #:16 >:13 s:29;   #:16 >:14 s:30;   S#:32 S>:27 S:59\r\n13:46:05.212 : echo: #:16 >:14 s:30;   #:17 >:13 s:30;   S#:33 S>:27 S:60\r\n13:46:06.212 : echo: #:17 >:13 s:30;   #:16 >:13 s:29;   S#:33 S>:26 S:59\r\n\r\n\r\n03:30:36.779 : echo: #:8 >:7 s:15;   #:10 >:7 s:17;   #:8 >:6 s:14;   #:8 >:7 s:15;   S#:34 S>:27 S:61\r\n03:30:37.778 : echo: #:8 >:6 s:14;   #:10 >:7 s:17;   #:9 >:7 s:16;   #:8 >:6 s:14;   S#:35 S>:26 S:61\r\n03:30:38.778 : echo: #:8 >:6 s:14;   #:11 >:7 s:18;   #:8 >:6 s:14;   #:8 >:7 s:15;   S#:35 S>:26 S:61\r\n03:30:39.777 : echo: #:8 >:6 s:14;   #:10 >:7 s:17;   #:8 >:8 s:16;   #:8 >:6 s:14;   S#:34 S>:27 S:61\r\n03:30:40.780 : echo: #:8 >:6 s:14;   #:11 >:7 s:18;   #:8 >:6 s:14;   #:8 >:6 s:14;   S#:35 S>:25 S:60\r\n03:30:41.780 : echo: #:9 >:6 s:15;   #:10 >:7 s:17;   #:8 >:6 s:14;   #:9 >:6 s:15;   S#:36 S>:25 S:61\r\n03:30:42.779 : echo: #:8 >:6 s:14;   #:10 >:8 s:18;   #:8 >:6 s:14;   #:8 >:6 s:14;   S#:34 S>:26 S:60\r\n03:30:43.778 : echo: #:9 >:6 s:15;   #:10 >:7 s:17;   #:8 >:7 s:15;   #:9 >:6 s:15;   S#:36 S>:26 S:62\r\n\r\n#: draw a stripe\r\n\\>: transfer a stripe\r\ns: sum of of draw and transfer for one stripe\r\nS#: sum of draws for a complete screen\r\nS>: sum of transfers for a complete screen\r\nS: time to draw and transfer a complete screen\r\n\r\n \r\n \r\nCommit 1 is best suited for testing.\r\nIn the final version commit 1 and 2 will be squashed.\r\nCommit 3 is only to have a better visualization of the changes and will not be in the final PR.\r\n","created_at":"2016-11-29T14:09:19Z","updated_at":"2016-12-06T02:15:44Z","closed_at":"2016-12-06T02:15:44Z","merged_at":null,"merge_commit_sha":"9e9bae444f4ccc76c489205b99b36c374765000a","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/MarlinFirmware/Marlin/pulls/5324/commits","review_comments_url":"https://api.github.com/repos/MarlinFirmware/Marlin/pulls/5324/comments","review_comment_url":"https://api.github.com/repos/MarlinFirmware/Marlin/pulls/comments{/number}","comments_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/5324/comments","statuses_url":"https://api.github.com/repos/MarlinFirmware/Marlin/statuses/3b442c0757e2f5a4a70905803dc4a3d981d4ec68","head":{"label":"AnHardt:distribute-sreenupdates","ref":"distribute-sreenupdates","sha":"3b442c0757e2f5a4a70905803dc4a3d981d4ec68","user":{"login":"AnHardt","id":211931,"avatar_url":"https://avatars.githubusercontent.com/u/211931?v=3","gravatar_id":"","url":"https://api.github.com/users/AnHardt","html_url":"https://github.com/AnHardt","followers_url":"https://api.github.com/users/AnHardt/followers","following_url":"https://api.github.com/users/AnHardt/following{/other_user}","gists_url":"https://api.github.com/users/AnHardt/gists{/gist_id}","starred_url":"https://api.github.com/users/AnHardt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnHardt/subscriptions","organizations_url":"https://api.github.com/users/AnHardt/orgs","repos_url":"https://api.github.com/users/AnHardt/repos","events_url":"https://api.github.com/users/AnHardt/events{/privacy}","received_events_url":"https://api.github.com/users/AnHardt/received_events","type":"User","site_admin":false},"repo":{"id":43525464,"name":"Marlin","full_name":"AnHardt/Marlin","owner":{"login":"AnHardt","id":211931,"avatar_url":"https://avatars.githubusercontent.com/u/211931?v=3","gravatar_id":"","url":"https://api.github.com/users/AnHardt","html_url":"https://github.com/AnHardt","followers_url":"https://api.github.com/users/AnHardt/followers","following_url":"https://api.github.com/users/AnHardt/following{/other_user}","gists_url":"https://api.github.com/users/AnHardt/gists{/gist_id}","starred_url":"https://api.github.com/users/AnHardt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnHardt/subscriptions","organizations_url":"https://api.github.com/users/AnHardt/orgs","repos_url":"https://api.github.com/users/AnHardt/repos","events_url":"https://api.github.com/users/AnHardt/events{/privacy}","received_events_url":"https://api.github.com/users/AnHardt/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/AnHardt/Marlin","description":"Reprap FW with look ahead. SDcard and LCD support. It works on Gen6, Ultimaker, RAMPS and Sanguinololu","fork":true,"url":"https://api.github.com/repos/AnHardt/Marlin","forks_url":"https://api.github.com/repos/AnHardt/Marlin/forks","keys_url":"https://api.github.com/repos/AnHardt/Marlin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AnHardt/Marlin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AnHardt/Marlin/teams","hooks_url":"https://api.github.com/repos/AnHardt/Marlin/hooks","issue_events_url":"https://api.github.com/repos/AnHardt/Marlin/issues/events{/number}","events_url":"https://api.github.com/repos/AnHardt/Marlin/events","assignees_url":"https://api.github.com/repos/AnHardt/Marlin/assignees{/user}","branches_url":"https://api.github.com/repos/AnHardt/Marlin/branches{/branch}","tags_url":"https://api.github.com/repos/AnHardt/Marlin/tags","blobs_url":"https://api.github.com/repos/AnHardt/Marlin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AnHardt/Marlin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AnHardt/Marlin/git/refs{/sha}","trees_url":"https://api.github.com/repos/AnHardt/Marlin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AnHardt/Marlin/statuses/{sha}","languages_url":"https://api.github.com/repos/AnHardt/Marlin/languages","stargazers_url":"https://api.github.com/repos/AnHardt/Marlin/stargazers","contributors_url":"https://api.github.com/repos/AnHardt/Marlin/contributors","subscribers_url":"https://api.github.com/repos/AnHardt/Marlin/subscribers","subscription_url":"https://api.github.com/repos/AnHardt/Marlin/subscription","commits_url":"https://api.github.com/repos/AnHardt/Marlin/commits{/sha}","git_commits_url":"https://api.github.com/repos/AnHardt/Marlin/git/commits{/sha}","comments_url":"https://api.github.com/repos/AnHardt/Marlin/comments{/number}","issue_comment_url":"https://api.github.com/repos/AnHardt/Marlin/issues/comments{/number}","contents_url":"https://api.github.com/repos/AnHardt/Marlin/contents/{+path}","compare_url":"https://api.github.com/repos/AnHardt/Marlin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AnHardt/Marlin/merges","archive_url":"https://api.github.com/repos/AnHardt/Marlin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AnHardt/Marlin/downloads","issues_url":"https://api.github.com/repos/AnHardt/Marlin/issues{/number}","pulls_url":"https://api.github.com/repos/AnHardt/Marlin/pulls{/number}","milestones_url":"https://api.github.com/repos/AnHardt/Marlin/milestones{/number}","notifications_url":"https://api.github.com/repos/AnHardt/Marlin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AnHardt/Marlin/labels{/name}","releases_url":"https://api.github.com/repos/AnHardt/Marlin/releases{/id}","deployments_url":"https://api.github.com/repos/AnHardt/Marlin/deployments","created_at":"2015-10-01T22:54:37Z","updated_at":"2016-11-23T21:00:18Z","pushed_at":"2016-12-06T02:15:44Z","git_url":"git://github.com/AnHardt/Marlin.git","ssh_url":"git@github.com:AnHardt/Marlin.git","clone_url":"https://github.com/AnHardt/Marlin.git","svn_url":"https://github.com/AnHardt/Marlin","homepage":"","size":38534,"stargazers_count":1,"watchers_count":1,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":5,"forks":1,"open_issues":5,"watchers":1,"default_branch":"RCBugFix"}},"base":{"label":"MarlinFirmware:RCBugFix","ref":"RCBugFix","sha":"82a187acaeb3c7dfe5c4e0a9516f20fa04c8cb61","user":{"login":"MarlinFirmware","id":10418365,"avatar_url":"https://avatars.githubusercontent.com/u/10418365?v=3","gravatar_id":"","url":"https://api.github.com/users/MarlinFirmware","html_url":"https://github.com/MarlinFirmware","followers_url":"https://api.github.com/users/MarlinFirmware/followers","following_url":"https://api.github.com/users/MarlinFirmware/following{/other_user}","gists_url":"https://api.github.com/users/MarlinFirmware/gists{/gist_id}","starred_url":"https://api.github.com/users/MarlinFirmware/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarlinFirmware/subscriptions","organizations_url":"https://api.github.com/users/MarlinFirmware/orgs","repos_url":"https://api.github.com/users/MarlinFirmware/repos","events_url":"https://api.github.com/users/MarlinFirmware/events{/privacy}","received_events_url":"https://api.github.com/users/MarlinFirmware/received_events","type":"Organization","site_admin":false},"repo":{"id":2200856,"name":"Marlin","full_name":"MarlinFirmware/Marlin","owner":{"login":"MarlinFirmware","id":10418365,"avatar_url":"https://avatars.githubusercontent.com/u/10418365?v=3","gravatar_id":"","url":"https://api.github.com/users/MarlinFirmware","html_url":"https://github.com/MarlinFirmware","followers_url":"https://api.github.com/users/MarlinFirmware/followers","following_url":"https://api.github.com/users/MarlinFirmware/following{/other_user}","gists_url":"https://api.github.com/users/MarlinFirmware/gists{/gist_id}","starred_url":"https://api.github.com/users/MarlinFirmware/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarlinFirmware/subscriptions","organizations_url":"https://api.github.com/users/MarlinFirmware/orgs","repos_url":"https://api.github.com/users/MarlinFirmware/repos","events_url":"https://api.github.com/users/MarlinFirmware/events{/privacy}","received_events_url":"https://api.github.com/users/MarlinFirmware/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/MarlinFirmware/Marlin","description":"Optimized firmware for RepRap 3D printers based on the Arduino platform.","fork":false,"url":"https://api.github.com/repos/MarlinFirmware/Marlin","forks_url":"https://api.github.com/repos/MarlinFirmware/Marlin/forks","keys_url":"https://api.github.com/repos/MarlinFirmware/Marlin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MarlinFirmware/Marlin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MarlinFirmware/Marlin/teams","hooks_url":"https://api.github.com/repos/MarlinFirmware/Marlin/hooks","issue_events_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/events{/number}","events_url":"https://api.github.com/repos/MarlinFirmware/Marlin/events","assignees_url":"https://api.github.com/repos/MarlinFirmware/Marlin/assignees{/user}","branches_url":"https://api.github.com/repos/MarlinFirmware/Marlin/branches{/branch}","tags_url":"https://api.github.com/repos/MarlinFirmware/Marlin/tags","blobs_url":"https://api.github.com/repos/MarlinFirmware/Marlin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MarlinFirmware/Marlin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MarlinFirmware/Marlin/git/refs{/sha}","trees_url":"https://api.github.com/repos/MarlinFirmware/Marlin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MarlinFirmware/Marlin/statuses/{sha}","languages_url":"https://api.github.com/repos/MarlinFirmware/Marlin/languages","stargazers_url":"https://api.github.com/repos/MarlinFirmware/Marlin/stargazers","contributors_url":"https://api.github.com/repos/MarlinFirmware/Marlin/contributors","subscribers_url":"https://api.github.com/repos/MarlinFirmware/Marlin/subscribers","subscription_url":"https://api.github.com/repos/MarlinFirmware/Marlin/subscription","commits_url":"https://api.github.com/repos/MarlinFirmware/Marlin/commits{/sha}","git_commits_url":"https://api.github.com/repos/MarlinFirmware/Marlin/git/commits{/sha}","comments_url":"https://api.github.com/repos/MarlinFirmware/Marlin/comments{/number}","issue_comment_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/comments{/number}","contents_url":"https://api.github.com/repos/MarlinFirmware/Marlin/contents/{+path}","compare_url":"https://api.github.com/repos/MarlinFirmware/Marlin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MarlinFirmware/Marlin/merges","archive_url":"https://api.github.com/repos/MarlinFirmware/Marlin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MarlinFirmware/Marlin/downloads","issues_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues{/number}","pulls_url":"https://api.github.com/repos/MarlinFirmware/Marlin/pulls{/number}","milestones_url":"https://api.github.com/repos/MarlinFirmware/Marlin/milestones{/number}","notifications_url":"https://api.github.com/repos/MarlinFirmware/Marlin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MarlinFirmware/Marlin/labels{/name}","releases_url":"https://api.github.com/repos/MarlinFirmware/Marlin/releases{/id}","deployments_url":"https://api.github.com/repos/MarlinFirmware/Marlin/deployments","created_at":"2011-08-13T08:07:20Z","updated_at":"2016-12-05T15:47:27Z","pushed_at":"2016-12-06T02:11:30Z","git_url":"git://github.com/MarlinFirmware/Marlin.git","ssh_url":"git@github.com:MarlinFirmware/Marlin.git","clone_url":"https://github.com/MarlinFirmware/Marlin.git","svn_url":"https://github.com/MarlinFirmware/Marlin","homepage":"http://www.marlinfw.org/","size":104106,"stargazers_count":2072,"watchers_count":2072,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3514,"mirror_url":null,"open_issues_count":267,"forks":3514,"open_issues":267,"watchers":2072,"default_branch":"RC"}},"_links":{"self":{"href":"https://api.github.com/repos/MarlinFirmware/Marlin/pulls/5324"},"html":{"href":"https://github.com/MarlinFirmware/Marlin/pull/5324"},"issue":{"href":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/5324"},"comments":{"href":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/5324/comments"},"review_comments":{"href":"https://api.github.com/repos/MarlinFirmware/Marlin/pulls/5324/comments"},"review_comment":{"href":"https://api.github.com/repos/MarlinFirmware/Marlin/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/MarlinFirmware/Marlin/pulls/5324/commits"},"statuses":{"href":"https://api.github.com/repos/MarlinFirmware/Marlin/statuses/3b442c0757e2f5a4a70905803dc4a3d981d4ec68"}},"merged":false,"mergeable":false,"mergeable_state":"dirty","merged_by":null,"comments":17,"review_comments":7,"commits":1,"additions":59,"deletions":43,"changed_files":3}}
{"actor":{"display_login":"AnHardt"}}