{"id":1061,"date":"2016-01-23T16:39:10","date_gmt":"2016-01-23T15:39:10","guid":{"rendered":"http:\/\/www.admindu.de\/wordpress\/?p=1061"},"modified":"2017-09-02T18:18:37","modified_gmt":"2017-09-02T17:18:37","slug":"freertos-auf-dem-atmega328","status":"publish","type":"post","link":"https:\/\/www.admindu.de\/wordpress\/?p=1061","title":{"rendered":"FreeRTOS Atmega328"},"content":{"rendered":"<p>Auf meiner TODO-Liste gab es schon l\u00e4nger den Punkt, sich mal mit <a href=\"http:\/\/www.freertos.org\/\" target=\"_blank\" rel=\"noopener\">FreeRTOS<\/a> auseinander zu setzen. Da ich noch einen ganzen Stall Atmegas habe, und mir diese Plattform weiterhin am Besten gef\u00e4llt, wollte ich nat\u00fcrlich ein FreeRTOS auf einem Atmega haben. Et voil\u00e0. Es ist mir gelungen die <a href=\"http:\/\/www.freertos.org\/a00098.html\" target=\"_blank\" rel=\"noopener\">FreeRTOS Demo<\/a> f\u00fcr den Atmega 323 auf einen Atmega328(p) zu portieren:<\/p>\n<div style=\"width: 525px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-1061-1\" width=\"525\" height=\"295\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2016\/01\/rtos.mp4?_=1\" \/><a href=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2016\/01\/rtos.mp4\">http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2016\/01\/rtos.mp4<\/a><\/video><\/div>\n<p><!--more--><\/p>\n<p>Die 3 gelben LEDs werden von einzelnen Threads und einer zugeh\u00f6rigen <a href=\"https:\/\/en.wikipedia.org\/wiki\/Coroutine\" target=\"_blank\" rel=\"noopener\">Coroutine<\/a> gesteuert. Die gr\u00fcnen LEDs geh\u00f6ren zu Threads die serielle IO \u00fcber einen Loopback (organgenes Kabel) durchf\u00fchren. Die rote LED ist ein Heartbeat. Solange diese blinkt ist alles in Ordnung. Die Demo beinhaltet noch weitere Threads, die im Hintergrund Ressourcen verbraten. Details finde sich <a href=\"http:\/\/www.freertos.org\/a00098.html\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/p>\n<p>Der Demo-Code ist ca. 12KB gro\u00df. Es bleiben also noch ca. 20 Kilobyte Flash \u00fcbrig. Die Heap-Size ist 1500 Byte. Auch diese l\u00e4sst sich vermutlich noch weiter an die 2KB RAM des Atmega328 ann\u00e4hren. Der Code funktioniert auch auf einem Arduino UNO, Nano, Mini etc. solange dieses einen Atmega328 hat. Auf einem Atmega168 reichen die Ressourcen nicht. Mit 1 KB RAM ist es wirklich an allen Ecken zu eng, sodass ich keinen Sinn darin gesehen habe die Demo immer weiter einzudampfen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Auf meiner TODO-Liste gab es schon l\u00e4nger den Punkt, sich mal mit FreeRTOS auseinander zu setzen. Da ich noch einen ganzen Stall Atmegas habe, und mir diese Plattform weiterhin am Besten gef\u00e4llt, wollte ich nat\u00fcrlich ein FreeRTOS auf einem Atmega haben. Et voil\u00e0. Es ist mir gelungen die FreeRTOS Demo f\u00fcr den Atmega 323 auf &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.admindu.de\/wordpress\/?p=1061\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;FreeRTOS Atmega328&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44,92],"tags":[70,106],"class_list":["post-1061","post","type-post","status-publish","format-standard","hentry","category-atmega-bastelei","category-elektronik","tag-atmega","tag-freertos"],"_links":{"self":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1061","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1061"}],"version-history":[{"count":7,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1061\/revisions"}],"predecessor-version":[{"id":1156,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1061\/revisions\/1156"}],"wp:attachment":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1061"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1061"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}