{"id":76,"date":"2009-03-23T20:05:18","date_gmt":"2009-03-24T00:05:18","guid":{"rendered":"http:\/\/www.mediumrecords.com\/random\/2009\/03\/23\/svga-800x600-test-pattern-with-a-pic16f84a-microcontroller\/"},"modified":"2013-06-23T21:32:53","modified_gmt":"2013-06-24T01:32:53","slug":"svga-800x600-test-pattern-with-a-pic16f84a-microcontroller","status":"publish","type":"post","link":"https:\/\/www.mediumrecords.com\/random\/2009\/03\/23\/svga-800x600-test-pattern-with-a-pic16f84a-microcontroller\/","title":{"rendered":"SVGA 800&#215;600 test pattern with a PIC16f84A microcontroller"},"content":{"rendered":"<p>here&#8217;s my first assembly language project in the works:<\/p>\n<p><a href=\"http:\/\/www.mediumrecords.com\/random\/wp-content\/uploads\/2009\/03\/800x600a.jpg\"><img loading=\"lazy\" src=\"http:\/\/www.mediumrecords.com\/random\/wp-content\/uploads\/2009\/03\/800x600a-300x275.jpg\" alt=\"\" title=\"800x600a\" width=\"300\" height=\"275\" class=\"alignleft size-medium wp-image-87\" srcset=\"https:\/\/www.mediumrecords.com\/random\/wp-content\/uploads\/2009\/03\/800x600a-300x275.jpg 300w, https:\/\/www.mediumrecords.com\/random\/wp-content\/uploads\/2009\/03\/800x600a.jpg 999w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>i started with the program from here: &#8220;http:\/\/yusoft.kulichki.com\/english\/pic\/my_proj.htm&#8221;:http:\/\/yusoft.kulichki.com\/english\/pic\/my_proj.htm<\/p>\n<p>it didn&#8217;t work until i added the 555 part of &#8220;this circuit&#8221;:http:\/\/yusoft.kulichki.com\/english\/pic\/my_proj.htm in order to get the V-synch pulse-width right.<\/p>\n<p>this spurred a rewrite of the program. this synched without the extra PWM stuff&#8230;<br \/>\ni added an extra output to function as a gate to control a 4066 switch for proper RGB blanking.<\/p>\n<p>everything worked fine in the middle of the screen,<br \/>\nbut the top of the image was skewed:<\/p>\n<p>rather than try to fix this,<br \/>\ni moved on to making an SVGA 800&#215;600 @ 60Hz program based on the timing info found here: &#8220;http:\/\/tinyvga.com\/vga-timing\/800&#215;600@60Hz&#8221;:http:\/\/tinyvga.com\/vga-timing\/800&#215;600@60Hz (and some other details elsewhere)<br \/>\nthis runs on a 20MHz crystal which, if you do the math = exactly 100 instructions \/ visible line and nice round numbers for all the sync and blanking periods.<\/p>\n<p>for fun i followed up with a 1024&#215;768 @ 60Hz version:<\/p>\n<p><a href=\"http:\/\/www.mediumrecords.com\/random\/wp-content\/uploads\/2009\/03\/1024x768.jpg\"><img loading=\"lazy\" src=\"http:\/\/www.mediumrecords.com\/random\/wp-content\/uploads\/2009\/03\/1024x768-292x300.jpg\" alt=\"\" title=\"1024x768\" width=\"292\" height=\"300\" class=\"alignnone size-medium wp-image-90\" srcset=\"https:\/\/www.mediumrecords.com\/random\/wp-content\/uploads\/2009\/03\/1024x768-292x300.jpg 292w, https:\/\/www.mediumrecords.com\/random\/wp-content\/uploads\/2009\/03\/1024x768.jpg 973w\" sizes=\"(max-width: 292px) 100vw, 292px\" \/><\/a><\/p>\n<p>happily this program actually worked first try, however, the skewed image thing returned.<br \/>\nwith a lot of tuning to the Vsync areas i minimized the skew to just a small bump at the top, but i&#8217;m not sure how portable this thing would be with less forgiving monitors.<br \/>\nfor this version i also added 75ohm terminating resisters to the RGB outputs.<\/p>\n<p>i&#8217;m thinking that the ratios between vertical and horizontal sync times have a lot to do with the skewing thing. so far, this last version looks just the same whether the the processor clock is running at 18, 20, or 17.7344 MHz.<br \/>\nthe 800&#215;600 version has at least all the correct ratios. so next step is to use this as the core of a new AV synth.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>here&#8217;s my first assembly language project in the works: i started with the program from here: &#8220;http:\/\/yusoft.kulichki.com\/english\/pic\/my_proj.htm&#8221;:http:\/\/yusoft.kulichki.com\/english\/pic\/my_proj.htm it didn&#8217;t work until i added the 555 part of &#8220;this circuit&#8221;:http:\/\/yusoft.kulichki.com\/english\/pic\/my_proj.htm in order to get the V-synch pulse-width right. this spurred a rewrite of the program. this synched without the extra PWM stuff&#8230; i added an extra &hellip; <a href=\"https:\/\/www.mediumrecords.com\/random\/2009\/03\/23\/svga-800x600-test-pattern-with-a-pic16f84a-microcontroller\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">SVGA 800&#215;600 test pattern with a PIC16f84A microcontroller<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16],"tags":[],"_links":{"self":[{"href":"https:\/\/www.mediumrecords.com\/random\/wp-json\/wp\/v2\/posts\/76"}],"collection":[{"href":"https:\/\/www.mediumrecords.com\/random\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mediumrecords.com\/random\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mediumrecords.com\/random\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mediumrecords.com\/random\/wp-json\/wp\/v2\/comments?post=76"}],"version-history":[{"count":3,"href":"https:\/\/www.mediumrecords.com\/random\/wp-json\/wp\/v2\/posts\/76\/revisions"}],"predecessor-version":[{"id":223,"href":"https:\/\/www.mediumrecords.com\/random\/wp-json\/wp\/v2\/posts\/76\/revisions\/223"}],"wp:attachment":[{"href":"https:\/\/www.mediumrecords.com\/random\/wp-json\/wp\/v2\/media?parent=76"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mediumrecords.com\/random\/wp-json\/wp\/v2\/categories?post=76"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mediumrecords.com\/random\/wp-json\/wp\/v2\/tags?post=76"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}