{"id":215,"date":"2017-06-17T17:57:06","date_gmt":"2017-06-17T08:57:06","guid":{"rendered":"http:\/\/tamatoyaku.com\/b\/?p=215"},"modified":"2017-06-17T17:57:06","modified_gmt":"2017-06-17T08:57:06","slug":"215","status":"publish","type":"post","link":"https:\/\/p-0.me\/b\/p\/215\/","title":{"rendered":"PIC24FJ64GB002\u3067PWM\u3092\u4f7f\u3046\u305f\u3081\u306e\u899a\u3048\u66f8\u304d"},"content":{"rendered":"<p>\u81ea\u5206\u7528\u3067\u3059\uff0e\u3053\u306e\u5185\u5bb9\u306b\u306f\u81ea\u4fe1\u304c\u306a\u3044\u306e\u3067\uff0c\u3082\u3057\u53c2\u8003\u306b\u3059\u308b\u4eba\u304c\u3044\u305f\u3089\u6700\u521d\u306b<a href=\"http:\/\/ww1.microchip.com\/downloads\/en\/DeviceDoc\/39940d.pdf\">\u30c7\u30fc\u30bf\u30b7\u30fc\u30c8<\/a>\u3092\u8aad\u3080\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\uff0e<br \/>\n&nbsp;<br \/>\n<strong>1.\u76ee\u7684<\/strong><br \/>\nLED\u30c9\u30e9\u30a4\u30d0\u306eTLC5940\u3092PIC\u3067\u5236\u5fa1\u3057\u3088\u3046\u3068\u601d\u3063\u305f\u3089\uff0c\u30af\u30ed\u30c3\u30af\u3092\u5165\u308c\u308b\u5fc5\u8981\u304c\u3042\u308b\u3089\u3057\u3044\uff0e<br \/>\n\u306a\u306e\u3067PWM\u3092\u30af\u30ed\u30c3\u30af\u306b\u3057\u305f\u3044\uff0e<br \/>\n<!--more--><br \/>\n<strong>2.\u7c21\u5358\u306a\u6d41\u308c<\/strong><br \/>\n2.1.(\u30bf\u30a4\u30de\u3092\u4f7f\u3046\u5834\u5408\u306f)\u30bf\u30a4\u30de\u306e\u5468\u671f\u3092\u8a2d\u5b9a\u3059\u308b\uff0e<br \/>\n2.2.PWM\u306e\u30d4\u30f3\u306e\u5272\u5f53\u3092\u884c\u3046<br \/>\n2.3.PWM\u306e\u5468\u671f\u3068\u30c7\u30e5\u30fc\u30c6\u30a3\u3092\u6c7a\u3081\u308b<br \/>\n2.4.\u30af\u30ed\u30c3\u30af\u306e\u30bd\u30fc\u30b9\u3092\u6c7a\u3081\u308b<br \/>\n2.5.(\u30bf\u30a4\u30de\u3092\u4f7f\u3046\u5834\u5408\u306f)\u30bf\u30a4\u30de \u30b9\u30bf\u30fc\u30c8\uff01<br \/>\n&nbsp;<br \/>\n<strong>3.\u30c7\u30fc\u30bf\u30b7\u30fc\u30c8\u306b\u6cbf\u3063\u305f\u8a73\u7d30\u306a\u6d41\u308c\u3068\u8a2d\u5b9a\u65b9\u6cd5<\/strong><br \/>\n[\u53c2\u8003]14.3 Pulse-Width Modulation (PWM) Mode<br \/>\n&nbsp;<br \/>\n<strong>3.1.OCx \u3092RPx\u30d4\u30f3\u306b\u5272\u308a\u5f53\u3066\u308b\uff0e<\/strong><br \/>\n\u4f8b\u3048\u3070RP14(PIC\u306e25\u756a\u30d4\u30f3)\u306bOC1\u3092\u5272\u308a\u5f53\u3066\u308b\u5834\u5408\uff0c\u30d4\u30f3\u3092\u51fa\u529b\u306b\u8a2d\u5b9a\u3057\u3066\uff0c\u30c7\u30b8\u30bf\u30eb\u8a2d\u5b9a\u306b\u3057\u3066\uff0cOC1\u3092\u5272\u308a\u5f53\u3066\u308b\u5fc5\u8981\u304c\u3042\u308b\uff0e<br \/>\n\u306a\u304a,3\u884c\u76ee\u306e18\u306fRP14\u306b\u5272\u308a\u5f53\u3066\u308b\u6a5f\u80fd\u3092\u8868\u3059(\u4eca\u56de\u306e\u5834\u5408\u306fOC1)\uff0e\u6a5f\u80fd\u4e00\u89a7\u306fTABLE 10-3: SELECTABLE OUTPUT SOURCES (MAPS FUNCTION TO OUTPUT)\u3092\u53c2\u7167\uff0e<\/p>\n<pre class=\"lang:c decode:true\">TRISBbits.TRISB14=0; \u00a0 \/\/RP14\u3092\u51fa\u529b\u306b\nAD1PCFG=0xffff; \u00a0 \u00a0 \u00a0 \u00a0\/\/\u5168\u90e8\u306e\u30d4\u30f3\u3092\u30c7\u30b8\u30bf\u30eb\u306b\nRPOR7bits.RP14R = 18; \u00a0\/\/RP14\u306bOC1\u3092\u5272\u308a\u5f53\u3066\u308b<\/pre>\n<p>&nbsp;<br \/>\n<strong>3.2.\u30c7\u30e5\u30fc\u30c6\u30a3(\u4ed5\u69d8\u66f8\u3067\u306fon-time)\u3092\u8a08\u7b97\u3057\uff0cOCxR \u306b\u5165\u308c\u308b\uff0e<\/strong><br \/>\n\u6700\u521d\u306bPWM\u5468\u671f\u3068\u30c7\u30e5\u30fc\u30c6\u30a3\u6bd4\u3092\u6c7a\u3081\u308b\u5fc5\u8981\u304c\u3042\u308b\uff0e<br \/>\n\u4f8b\u3048\u3070(\u5185\u8535\u30aa\u30b7\u30ec\u30fc\u30bf8[MHz]\u3092\u30d7\u30ea\u30b9\u30b1\u30fc\u30e9\u3067\u5206\u5468\u3057\u305f)32[MHz]\u3092\u30b7\u30b9\u30c6\u30e0\u30af\u30ed\u30c3\u30af\u3068\u3057\uff0cPWM\u5468\u6ce2\u6570\u304c100[kHz]\u3067\u30c7\u30e5\u30fc\u30c6\u30a3\u6bd4\u304c50[%]\u306e\u5834\u5408\uff0cEQUATION 14-1: CALCULATING THE PWM PERIOD\u3088\u308a,<br \/>\nPWM\u5468\u671f=[Value+1]*T_CY* (Prescaler Value)<br \/>\n1\/100[kHz]=[Value+1]*(2*T_OSC)* (Prescaler Value)<br \/>\n10*10^(-6)=[Value+1]*(2*(1\/32[MHz]))* (Prescaler Value)<br \/>\n10*10^(-6)=[Value+1]*(2*(31.25*10^(-9)))* (Prescaler Value)<br \/>\n10*10^(-6)=[Value+1]*(62.5*10^(-9))* (Prescaler Value)<br \/>\n[Value+1]=10*10^(-6) \u00a0 \/ \u00a0(62.5*10^(-9))* (Prescaler Value)<br \/>\n[Value+1]=160*(1\/Prescaler Value)<br \/>\n\u3068\u306a\u308b(\u306f\u305a).\u3053\u3053\u3067,Value\u306fOCxRS \u3084PR2\u306b\u5165\u308c\u308b\u5024\u3068\u306a\u308b(?).<br \/>\n\u307e\u305f,Prescaler Value\u306f\u30bf\u30a4\u30de\u306e\u30d7\u30ea\u30b9\u30b1\u30fc\u30e9\u3067\uff0c\u5468\u671f\u3092\u9577\u304f\u3059\u308b\u305f\u3081\u306b\u4f7f\u3046\uff0e\u30b7\u30b9\u30c6\u30e0\u30af\u30ed\u30c3\u30af\u3092\u4f7f\u3046\u5834\u5408\u306f1\u56fa\u5b9a\uff0e<br \/>\nValue\u306e\u5024\u304c\u6975\u7aef\u306a\u5024\u3067\u306f\u306a\u3044\u305f\u3081\uff0c\u30d7\u30ea\u30b9\u30b1\u30fc\u30e9\u306f1\u3067\u826f\u3055\u305d\u3046\uff0e\u306a\u306e\u3067Value\u306f159\u3068\u306a\u308b\uff0e<br \/>\nValue\u304c\u6c42\u307e\u308a\uff0c\u30c7\u30e5\u30fc\u30c6\u30a3\u6bd4\u309250[%]\u3068\u6c7a\u3081\u3066\u3044\u308b\u306e\u3067\uff0cOCxR\u306b\u8a2d\u5b9a\u3059\u308b\u3079\u304d\u30c7\u30e5\u30fc\u30c6\u30a3\u3092\u6c42\u3081\u308b\u4e8b\u304c\u3067\u304d\u308b\uff0e<br \/>\nOCxR =(Value+1)*50[%]<br \/>\n=80<br \/>\n\u3088\u3063\u3066\uff0cOCxRS \u3068PR2\u306b\u306f159\uff0cOCxR\u306b\u306f80\u3092\u5165\u308c\u308c\u3070\u826f\u3044\u3053\u3068\u304c\u5206\u304b\u308b\uff0e<\/p>\n<pre class=\"lang:c decode:true\">PR2 = 159;\nOC1RS = 159;\nOC1R = 80;\n<\/pre>\n<p>&nbsp;<br \/>\n<strong>3.3.PWM\u5468\u671f\u3092\u8a08\u7b97\u3057\uff0cOCxRS\u306b\u5165\u308c\u308b\uff0e<\/strong><br \/>\n3.2.\u3092\u53c2\u7167\uff0e<br \/>\n&nbsp;<br \/>\n<strong>3.4.\u540c\u671f\u30bd\u30fc\u30b9\u306e\u8a2d\u5b9a<\/strong><br \/>\n\u4ed5\u69d8\u66f8\u901a\u308a\u306b\uff0cSYNCSEL\u306b0x1F,OCTRIG\u306b0\u3092\u5165\u308c\u308b\uff0e<\/p>\n<pre class=\"lang:c decode:true \">OC1CON2bits.SYNCSEL=0x1f;\nOC1CON2bits.OCTRIG=0;\n<\/pre>\n<p>&nbsp;<br \/>\n<strong>3.5.\u30af\u30ed\u30c3\u30af\u30bd\u30fc\u30b9\u306e\u9078\u629e<\/strong><br \/>\n\u30af\u30ed\u30c3\u30af\u30bd\u30fc\u30b9\u3092\u30b7\u30b9\u30c6\u30e0\u30af\u30ed\u30c3\u30af\u3068\u3059\u308b\u304b\uff0c\u30bf\u30a4\u30de\u306b\u3059\u308b\u304b\u306a\u3069\u3092\u6c7a\u3081\u308b\uff0e<br \/>\n\u30b7\u30b9\u30c6\u30e0\u30af\u30ed\u30c3\u30af\u306b\u3059\u308b\u5834\u5408\u306fOCTSEL\u306b0b111\u3092\u5165\u308c\uff0ctimer2\u306b\u3059\u308b\u5834\u5408\u306f0b000\u3092\u5165\u308c\u308b\uff0e<br \/>\n\u30b7\u30b9\u30c6\u30e0\u30af\u30ed\u30c3\u30af\u3067\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308b\uff0e<\/p>\n<pre class=\"lang:c decode:true\">OC1CON1bits.OCTSEL=0b111;\n<\/pre>\n<p>&nbsp;<br \/>\n<strong>3.6.\u5fc5\u8981\u306a\u3089\u5272\u8fbc\u307f\u8a31\u53ef\u3059\u308b<\/strong><br \/>\n\u4eca\u56de\u306f\u5fc5\u8981\u306a\u3044\u306e\u3067\u5272\u611b<br \/>\n&nbsp;<br \/>\n<strong>3.7.PWM\u30e2\u30fc\u30c9\u3092\u6c7a\u3081\u308b\uff0e<\/strong><br \/>\nEdge-Aligned\u3068Center-Aligned\u304c\u3042\u308b\u3051\u3069\uff0c\u3053\u308c\u306fPWM\u4fe1\u53f7\u306e\u751f\u6210\u958b\u59cb\u5730\u70b9\u3092\u6c7a\u3081\u308b\u3063\u307d\u3044<br \/>\n<a href=\"http:\/\/ww1.microchip.com\/downloads\/jp\/DeviceDoc\/70645C_JP.pdf\">\u3053\u3061\u3089<\/a>\u3092\u53c2\u7167\uff0e<br \/>\n\u4eca\u56de\u306fEdge-Aligned\u306b\u3059\u308b\u306e\u3067OCM\u306b0b110\u3092\u8a2d\u5b9a<\/p>\n<pre class=\"lang:c decode:true\">OC1CON1bits.OCM=0b110;\n<\/pre>\n<p>&nbsp;<br \/>\n<strong>3.8.\u30bf\u30a4\u30de\u4f7f\u3046\u306a\u3089\u30bf\u30a4\u30de\u8d77\u52d5<\/strong><br \/>\nTON\u30921\u306b\u8a2d\u5b9a\u3059\u308b\uff0e<br \/>\ntimer2\u3092\u30aa\u30f3\u306b\u3059\u308b\u306a\u3089\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308b\uff0e<\/p>\n<pre class=\"lang:c decode:true\">T2CONbits.TON 1;<\/pre>\n<p>&nbsp;<br \/>\n<strong>4.\u307e\u3068\u3081<\/strong><br \/>\n\u4e0a\u8a18\u306e\u8a2d\u5b9a\u3092\u3059\u3079\u3066\u307e\u3068\u3081\u308b\u3068\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30b3\u30fc\u30c9\u3068\u306a\u308b\uff0e<br \/>\n\u306a\u304a\uff0cPWM\u306e\u30af\u30ed\u30c3\u30af\u30bd\u30fc\u30b9\u306e\u306b\u306f\u30b7\u30b9\u30c6\u30e0\u30af\u30ed\u30c3\u30af\u3092\u4f7f\u3044\uff0c\u30b7\u30b9\u30c6\u30e0\u30af\u30ed\u30c3\u30af\u306f32[MHz]\uff0cPWM\u5468\u6ce2\u6570\u306f100[kHz]\uff0c\u30c7\u30e5\u30fc\u30c6\u30a3\u6bd4\u306f50[%]\u3068\u3059\u308b.<\/p>\n<pre class=\"lang:c decode:true \">int main(void)\n{\n\tCLKDIVbits.RCDIV = 0b000; \/\/\u30af\u30ed\u30c3\u30af\u306e\u8a2d\u5b9a\n\tTRISBbits.TRISB14=0; \/\/RP14\u3092\u51fa\u529b\u306b\n\tAD1PCFG=0xffff; \/\/\u5168\u90e8\u306e\u30d4\u30f3\u3092\u30c7\u30b8\u30bf\u30eb\u306b\n\tRPOR7bits.RP14R = 18; \/\/RP14\u306bOC1\u3092\u5272\u308a\u5f53\u3066\u308b\n\tOC1RS = 159;  \/\/\u8a08\u7b97\u306f\u7701\u7565\n\tOC1R = 80;  \/\/\u8a08\u7b97\u306f\u7701\u7565\n\tOC1CON2bits.SYNCSEL=0x1f;  \/\/\u4ed5\u69d8\u66f8\u304b\u3089\n\tOC1CON2bits.OCTRIG=0;  \/\/\u4ed5\u69d8\u66f8\u304b\u3089\n\tOC1CON1bits.OCTSEL=0b111;   \/\/\u30af\u30ed\u30c3\u30af\u30bd\u30fc\u30b9\u306f\u30b7\u30b9\u30c6\u30e0\u30af\u30ed\u30c3\u30af\n\tOC1CON1bits.OCM=0b110;  \/\/Edge-Aligned\u3092\u4f7f\u3046\n\twhile(1); \/\/\u52d5\u4f5c\u7d42\u4e86\n}<\/pre>\n<p>&nbsp;<br \/>\n&nbsp;<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-216\" src=\"https:\/\/tamatoyaku.com\/b\/wp-content\/uploads\/2017\/06\/pwm1-1024x293.png\" alt=\"\" width=\"1024\" height=\"293\" \/><br \/>\n\u7d50\u679c\u306f\u3053\u3046\u306a\u308b\uff0ef\u306b100kHz\u3068\u66f8\u304b\u308c\u3066\u3044\u308b\u3057\u591a\u5206\u6b63\u3057\u3044\uff0e<br \/>\n&nbsp;<br \/>\n<strong>5.\u30bf\u30a4\u30de\u3092\u4f7f\u3046\u5834\u5408\u306e\u5909\u66f4\u70b9<\/strong><br \/>\n\u30bf\u30a4\u30de\u306e\u8a2d\u5b9a\u3092\u884c\u3046\uff0e<br \/>\nPWM\u306e\u30af\u30ed\u30c3\u30af\u30bd\u30fc\u30b9\u3092\u5909\u66f4\u3059\u308b\uff0e<br \/>\n\u30bf\u30a4\u30de\u30fcON\uff01<br \/>\n\u4ee5\u4e0a\u306e3\u3064\u3092\u30b3\u30fc\u30c9\u306b\u3059\u308b\u3068\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308b\uff0e<\/p>\n<pre class=\"lang:c decode:true\">T2CON = 0x0000;\nT2CONbits.TCKPS=0b11;\nOC1CON1bits.OCTSEL=0b000;\nT2CONbits.TON = 1;<\/pre>\n<p>&nbsp;<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u81ea\u5206\u7528\u3067\u3059\uff0e\u3053\u306e\u5185\u5bb9\u306b\u306f\u81ea\u4fe1\u304c\u306a\u3044\u306e\u3067\uff0c\u3082\u3057\u53c2\u8003\u306b\u3059\u308b\u4eba\u304c\u3044\u305f\u3089\u6700\u521d\u306b\u30c7\u30fc\u30bf\u30b7\u30fc\u30c8\u3092\u8aad\u3080\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\uff0e &nbsp; 1.\u76ee\u7684 LED\u30c9\u30e9\u30a4\u30d0\u306eTLC5940\u3092PIC\u3067\u5236\u5fa1\u3057\u3088\u3046\u3068\u601d\u3063\u305f\u3089\uff0c\u30af\u30ed\u30c3\u30af\u3092\u5165\u308c\u308b\u5fc5\u8981\u304c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-215","post","type-post","status-publish","format-standard","hentry","category-tech"],"_links":{"self":[{"href":"https:\/\/p-0.me\/b\/wp-json\/wp\/v2\/posts\/215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/p-0.me\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/p-0.me\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/p-0.me\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/p-0.me\/b\/wp-json\/wp\/v2\/comments?post=215"}],"version-history":[{"count":0,"href":"https:\/\/p-0.me\/b\/wp-json\/wp\/v2\/posts\/215\/revisions"}],"wp:attachment":[{"href":"https:\/\/p-0.me\/b\/wp-json\/wp\/v2\/media?parent=215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/p-0.me\/b\/wp-json\/wp\/v2\/categories?post=215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/p-0.me\/b\/wp-json\/wp\/v2\/tags?post=215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}