最近LPC1114のGPIOでLEDを制御したとき、「制御できるピン」と「制御できないピン」
があることに気づき、
マニュアルで調べると一つのピンにモードがあることに気がついた。 (A/Dモード、GPIO、etc...)
よくよく見れば基板のピン横にモードが書いてあり、マニュアルを見なくても大体は検討がつくと思う。
けれど、最初は全く気にせず、
GPIOの入出力モードとデータを書き込んでいたため、LEDがぼんやり光るだけで制御出来ていなかった。
それもそのハズで、GPIOとして使っていたピンが
なんと最初からA/Dモードで初期化されていたため見当違いな事をしていたことになる。
そうなると、今まで用途が半固定されていたIOが開放されより多くのIOが制御できるようになると思う。
詳細は省くが、PIO1_0のIOCONを他のモードにするには
#include "LPC11xx.h"
int main(void){
//初期化項目
LPC_IOCON->R_PIO1_0 = 0xd1; //PIO1_0のIOCONをAD→GPIOにする。
//ポートの入出力の方向
LPC_GPIO1->DIR = 0x01; //GPIO1の0bit目を出力方向にする。
//GPIOのアドレスにデータを書き込む
LPC_GPIO->DATA = 0x01; //GPIO1の0bit目を「1(high)」書き込んだ
}
という形で、モードと方向性、DATAに書き込みができるようになった。
ピンの構成やピン名はCMSYSのLPC11xx.h->Pin Connect Block (IOCON)
の項目に記載されているので、参照して正しいピン名を指定してください。
まずはこんなところでLEDによるシフトカウンタを作ろうと思う。
(やれやれLCDまでまだ道が長そうだ...)
参考文献
Cortex-M0ボード:ハードの基礎・マニュアルの読み方
http://masato-ishikawa.blogspot.com/2011/07/cortex-m0.html
この方のHPは一読したほうが理解しながら進められると思う。
0 件のコメント:
コメントを投稿