ã¿ã¯ãã¹ã¤ããã使ã
温度è¨ã«ã¢ã¼ãåãæ¿ãï¼æé«æ¸©åº¦ãæä½æ¸©åº¦ï¼ãä»ãããã£ãã®ã§ãã¿ã¯ãã¹ã¤ããã®ä½¿ãæ¹ã調ã¹ããã¨ã«ããã
ã¾ãã¯ããã¤ã³ã³ã使ããã«ã¿ã¯ãã¹ã¤ããã使ã£ã¦ãLEDãç¹ç¯ã»æ¶ç¯ãããã
ããªãè¦æ¦ããã®ã ãã©ããããããªäººã«æãã¦ããã£ã¦ä½ã¨ãå®æããããã¨ãã§ããã
ã¿ã¯ãã¹ã¤ããã®æ§é
ã¿ã¯ãã¹ã¤ããã¯æ¼ãã¨ã«ããã¨æå¿ãã®ããæ¼ããã¿ã³ã ãæ¼ãã¦ããéã ãé»æµãæµãããããã
足ã¯4æ¬ä»ãã¦ãã¦ãæ¼ããã¨ã§2æ¬ã®è¶³ãæ¥ç¶ããé»æµãæµããã¨ãããåç´ãªä»çµã¿ã®ããã ã
ä¸è¨ã®ãã¼ã¸ãåèã«ããã¦ããã£ãã
arduino使い方:スイッチの入/切でLEDを点灯
ã¿ã¯ãã¹ã¤ããã使ã£ã¦LEDãæä½
æ¼ãã¦ããéã ãLEDãç¹ç¯ãããåè·¯ãä½ã£ã¦ã¿ããã¨ã«ããã
åè·¯ã¯ä¸è¨ã®ãã¼ã¸ãåèã«çµãã§ã¿ãã
ãã¤ã³ã³ã使ã£ã¦ã¿ã¯ãã¹ã¤ãããæä½
ç¶ãã¦ããã¤ã³ã³ã使ã£ã¦LEDãç¹ç¯ããã¦ã¿ããã¨ã«ããã
PD3ã«LEDãæ¥ç¶ãPD4ã«ã¿ã¯ãã¹ã¤ããã®ã¢ãã¼ããæ¥ç¶ããã
PD4ã¯å
¥åã«ãªããããDDRDã¬ã¸ã¹ã¿ã§ããã4ã0ã«ããPD3ã¯åºåã§ä½¿ããããããã3ã1ã«ããã
ã¾ããå
é¨ãã«ã¢ãããæå¹ã«ããããã«ãPORTDã¬ã¸ã¹ã¿ã®ããã3ã1ã«ããå¿
è¦ãããã
ããã¯ãã¹ã¤ãããã©ãã«ãæ¥ç¶ããã¦ããªãå ´åãé»å§ãä¸å®å®ã«ãªã0ãªã®ã1ãªã®ãåãããªããªã£ã¦ãã¾ãããã ã
ãããé²ãããã«ã¹ã¤ããã¨ã®éã«æµæãã¯ããå¿
è¦ããããããããã«ã¢ããæµæã¨ããã
AVRã®å ´åããã«ã¢ããæµæãå
èµãã¦ããã®ã§ãä¸è¨ã®ããã«PORTDã¬ã¸ã¹ã¿ã®ããããç«ã¦ãã¨ãå
é¨ãã«ã¢ããæµæãæå¹ã«ãªãã
ãã¨ã¯ãbit_is_clearé¢æ°ã§PD4ã0ã«ãªã£ã¦ããããã§ãã¯ããLEDã®ç¹ç¯ãããã ãã ã
bit_is_clearé¢æ°ã¯ã第ä¸å¼æ°ã«ãã§ãã¯ããã¬ã¸ã¹ã¿ï¼PORTBãPORTDï¼ã第äºå¼æ°ã«ãã§ãã¯ãããããçªå·ãæå®ããã
0ã«ãªã£ã¦ããã¨trueãè¿ã£ã¦ãããåæ§ã«bit_is_seté¢æ°ã¯ã1ã«ãªã£ã¦ããã¨trueãè¿ã£ã¦ããããã ã
ãã®é¢æ°ã使ãã°ãç°¡æ½ã«è¨è¿°ãããã¨ãã§ããã
ãã®åè·¯ã¯ãã®ãã®ãºããªã®ãã®ããä¸è¨ãã¼ã¸ã«æ¸ãã¦ãã£ãã®ã§åèã«ããã¦ããã£ãã
LED点灯 ( IO入出力 )
top
é·æ¼ããå¤å®ãã
ã¹ã¤ããã®ãªã³ã»ãªãã®ä»ã«ãé·æ¼ããå®è£
ãã¦ã¿ããã¨ã«ããã
ã¢ã¼ãåãæ¿ãã¯ã¹ã¤ããã®çæ¼ãã使ã£ã¦ãæé«æ¸©åº¦ãæä½æ¸©åº¦ã¯é·æ¼ãã§ãªã»ããåºæ¥ãããã«ããããã ã
é·æ¼ããå¤å®ããããã«ã¿ã¤ãå²ãè¾¼ã¿ã使ããã¨ã«ãããããããã¨ã¦ããããããé·ãéã®ãã¨ãªã£ãâ¦ã
çæ¼ãã¨ãé·æ¼ããå¤æããã®ããããªã«ãããããã¨ã¯æããªãã£ãã
æ®æ®µä½æ°ãªã使ããã¨ãå¤ãã®ã ãã©ãåç´ãªä»çµã¿ã§ãä¸ããä½ãã¨ãªãã¨ãããããããã ã
åè·¯å³ã¯ä¸è¨ã®ããã«ãªã£ãã
ã¿ã¤ãå²ãè¾¼ã¿ã使ã
ã¿ã¤ãå²ãè¾¼ã¿ã«ã¤ãã¦ã¯èª¬æãã¦ãããµã¤ããããããããã®ã§å²æããã
ä¸è¨ã®ãµã¤ãã詳ãã説æããã¦ãã¦åèã«ãªã£ãã
http://d.hatena.ne.jp/hijouguchi/20100620/1276997802
ç°¡åã«èª¬æããã¨ãã«ã¦ã³ã¿ç¨ã¬ã¸ã¹ã¿ï¼TCNT0ï¼ããã£ã¦ãä¸å®å¨ææ¯ã«ãã®ã¬ã¸ã¹ã¿ã®å¤ãã«ã¦ã³ãã¢ããããã¦ããã
ã¬ã¸ã¹ã¿ããªã¼ãã¼ããã¼ããããè¨å®ããå¤ã«å°éããã¨å²ãè¾¼ã¿ãã³ãã©ãå¼ã³åºãããã¨ãããã®ã ã
大äºãªã®ã¯ãã¯ããã¯æ°ã¨åå¨æ¯ããä½ç§ãã¨ã«å²ãè¾¼ã¿ãã³ãã©ãå¼ã³åºãããã®ããèãããã¨ã ã¨æãã
ä»åã¯ãATTINY2313ã8MHzã§åããã¦ãã¦ãåå¨æ¯ã1024ã«è¨å®ãããï¼ä»ã«ã256ã8ãªã©è¨å®ã§ããï¼
åå¨æ¯ã¯ããTCCR0Bãã¬ã¸ã¹ã¿ã§è¨å®ãããåå¨æ¯1024ãªã®ã§ã0b00000101ã¨ãªã£ãã
8000000(8MHz) / 1024(åå¨æ¯) = 7812.5Hz
ã¨ãªãã®ã§ã1ç§éã«7812ååä½ããã¨ããã¨ã ã
1(ç§) / 7812(Hz) = ç´0.000128ç§ = 0.128msï¼ããªç§ï¼
0.128msæ¯ã«ã«ã¦ã³ãã¢ããããã¦ãããã¨ã«ãªãã
ä»åã¯ã«ã¦ã³ã¿ç¨ã¬ã¸ã¹ã¿ããªã¼ãã¼ããã¼ããã¨ãã«å²ãè¾¼ã¿ãã³ãã©ãå¼ã³åºãããã«ããã
ã«ã¦ã³ã¿ç¨ã¬ã¸ã¹ã¿ã¯8ããããªã®ã§ã256ã«ãªãã¨ãªã¼ãã¼ããã¼ãããã¨ã«ãªãã
0.128(ms) * 256 = 32.768ms
ç´32msæ¯ã«å²ãè¾¼ã¿ãã³ãã©ãå¼ã³åºãããããã ã
ã¿ã¤ãå²ãè¾¼ã¿ã®å®è¡
ã¿ã¤ãå²ãè¾¼ã¿ã使ãããã«ã¯ããinterrupt.hããã¤ã³ã¯ã«ã¼ãããã
TCCR0Bã¬ã¸ã¹ã¿ãTIMSKã¬ã¸ã¹ã¿ãè¨å®ããå¾ãseié¢æ°ãå¼ã³åºããã¨ã§å®è¡ãããã
seié¢æ°ã¯ãå
¨å²ãè¾¼ã¿ãæå¹ã«ãããé¢æ°ã ãéã«ceié¢æ°ã¯ãå
¨å²ãè¾¼ã¿ãç¡å¹ã«ãããé¢æ°ã«ãªãã
å²ãè¾¼ã¿ãã³ãã©ã¯ãISRãã¯ãã使ã£ã¦è¨å®ããã
æåISRã¯é¢æ°ã ã¨æã£ãã®ã ãã©ãããããè¦ã¦ã¿ãã¨ãã¯ãã«ãªã£ã¦ããã
第ä¸å¼æ°ã«ä½¿ããã³ãã©åãå
¥ããã
ä»åã¯ãTIMER0ã®ãªã¼ãã¼ããã¼ã¨ãããã¨ã§ä»¥ä¸ã®ããã«ãªã£ãã
ISR(TIMER0_OVF_vect) { }
é·æ¼ããã©ã®ããã«å¤æããã
çæ¼ãã¨é·æ¼ããåºå¥ãããã®ã«è¦å´ããã
32msæ¯ã«ã¹ã¤ãããæ¼ããã¦ãããå¤æãã3ç§ä»¥ä¸æ¼ããã¦ãå ´åã«ãé·æ¼ãã¨å¤æããããã¨ã«ããã
3ç§æªæºã§ã¹ã¤ãããé¢ããå ´åã¯ãçæ¼ãã¨ãªãããã«ããã
æ¼ããå ´åã«å¤å®ããã¦ãã¾ãã¨ãçæ¼ãã¨é·æ¼ãã®ã¤ãã³ããåæã«èµ·ãã¦ãã¾ããåä½ããããããªã£ã¦ãã¾ãã
ãªã®ã§ãé·æ¼ãã¨åºå¥ãããããã«ãçæ¼ãã®å ´åããªãªã¼ã¹æï¼ã¹ã¤ãããé¢ããæï¼ã«å¤å®ããããã¨ã§ä¸æããã£ãã
ã¾ããé·æ¼ãããã¦ããæéã調ã¹ãããã«å¤æ°ã«ãã³ãã©å¼ã³åºãããåæ°ãä¿åãããã¨ã«ããã®ã ãã©ããã£ã¨é·æ¼ããã¦ããã¨ã«ã¦ã³ã¿å¤æ°ããªã¼ãã¼ããã¼ãã¦ãã¾ã誤åä½ããã¨ãããã¨ããã£ãã
ã«ã¦ã³ã¿å¤æ°ã大ãããã®ãã¦ä¸æãã®ããããã¨ãåºæ¥ãã®ã ãã©ãä»åã¯ãé·æ¼ãå¤å®æéã®3ç§ãè¶ããå ´åãã«ã¦ã³ãã¢ãããããªãããã¨ã§å¯¾å¿ããã
ä»åã®ã³ã¼ããGitHubã«ã¢ããããã
pontago/avr-TactSwitchTest · GitHub
åèãµã¤ã
[AVRexample] Timer0 オーバーフロー | 花夢電科雑多猫
無機物の週末 超☆ゆとり的電子工作 その2!
http://d.hatena.ne.jp/hijouguchi/20100620/1276997802
http://www.hokutodenshi.co.jp/PUPPYSupportPage/ensyu/timer/timer2.html
AVR timer(1) | stastaka's Blog
タイマ/カウンタ1を使う
[example] 外部割り込み - 花夢電科雑多猫 マニュアル&メモ
つくろぐ 技術系