Last active
March 20, 2017 00:42
-
-
Save xiupos/91a1a27d1daf7a1b273f50b67093eeaf to your computer and use it in GitHub Desktop.
LPC810についていろいろメモ(3)MRT関連
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// LPC810についていろいろメモ(3)MRT関連 | |
// ha2zakura | |
// Lチカです | |
// http://ktrikms.blog.jp/archives/69744499.html | |
// 参考: | |
// http://www.nxp.com/documents/user_manual/UM10601.pdf | |
// http://d.hatena.ne.jp/mikkabo/20150401/1427890791 | |
// 省略部分はメモ(1)(2) | |
// ___ ___ | |
// PIO0_5 [1|O U |8] PIO0_0 | |
// PIO0_4 [2| |7] GND | |
// PIO0_3 [3| |6] 3.3V | |
// PIO0_2 [4|_______|5] PIO0_1 | |
#include "LPC8xx.h" | |
void MRT_IRQHandler(void) | |
// MRT割り込み | |
{ | |
if ( LPC_MRT->Channel[0].STAT & (1<<0)) | |
// MRTのステータス | |
// UM10601 11.6.4 Table 152. | |
//>0 => 1:割り込み発生 | |
// 書き込むことで処理したことを伝える | |
{ | |
LPC_MRT->Channel[0].STAT = (1<<0); | |
// 前述 | |
LPC_GPIO_PORT->NOT0 |= (1<<2); | |
// GPIO出力を反転 | |
// 省略 | |
} | |
return; | |
} | |
int main(void) { | |
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7); | |
// clock有効化の設定...? | |
// 省略 | |
LPC_SWM->PINENABLE0 = 0xffffffbfUL; | |
// 有効化するピンの設定...? | |
// 省略 | |
LPC_GPIO_PORT->DIR0 |= (1<<2); | |
// GPIOの設定 | |
// 省略 | |
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<10); | |
// clock有効化の設定...? | |
// UM10601 4.6.13 Table 30. | |
// 0:無効化 1:有効化 | |
// (略) | |
//>10 => MRT | |
// (略) | |
LPC_SYSCON->PRESETCTRL &= ~(1<<7); | |
LPC_SYSCON->PRESETCTRL |= (1<<7); | |
// MRTのリセット...? | |
// UM10601 4.6.2 Table 19. | |
// 0:リセット(?) 1:(デフォルト) | |
// 0 => SPI0 | |
// 1 => SPI1 | |
// 2 => UARTFRG | |
// 3 => UART0 | |
// 4 => UART1 | |
// 5 => UART2 | |
// 6 => I2C | |
//>7 => MRT | |
// 8 => SCT | |
// 9 => WKT | |
// 10 => GPIO | |
// 11 => FLASH | |
// 12 => ACMP | |
NVIC->ISER[0] = (0x1 << 10); | |
// 割り込みの有効化...? | |
// UM10601 3.4.1 Table 5. | |
// 0:(デフォルト) 1:有効化 | |
// 0 => SPI0 | |
// 1 => SPI1 | |
// 3 => UART0 | |
// 4 => UART1 | |
// 5 => UART2 | |
// 8 => I2C | |
// 9 => SCT | |
//>10 => MRT | |
// 11 => CMP | |
// 12 => WDT | |
// 13 => BOD | |
// 14 => FLASH | |
// 15 => WKT | |
// 24 => PININT0 | |
// 25 => PININT1 | |
// 26 => PININT2 | |
// 27 => PININT3 | |
// 28 => PININT4 | |
// 29 => PININT5 | |
// 30 => PININT6 | |
// 31 => PININT7 | |
LPC_MRT->Channel[0].CTRL = (1<<0) | (0x0<<1); | |
// MRTのモード設定 | |
// UM10601 11.6.3 Table 151. | |
//>0 => 1:タイマーの有効 | |
// 2:1 => >0x0:リピート | |
// 0x1:一回のみ | |
// 0x2:一回のみ(bus stall mode(?)) | |
// Channel[x] x=0,1,2,3 MRTは4本ある | |
LPC_MRT->Channel[0].INTVAL = 12000000; // 12MHzなのでこれでmsミリ秒分 | |
LPC_MRT->Channel[0].INTVAL |= 0x1UL<<31; | |
// 割り込みの周期の設定 | |
// UM10601 11.6.1 Table 149. | |
//>30:0 => 12Mで1秒 12kで1m秒 | |
//>31 => 強制的にreload(?) | |
// 現在のカウンタ値は | |
// LPC_MRT->Channel[0].TIMER | |
// の30:0までで読める | |
while(1){} | |
return 0 ; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment