忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

USART通信の3回目です。

1回目ではEWARMのプロジェクト作り
2回目ではLチカをやってみました。

3回めからはUSART通信を進めていきます。

まず、USART通信の基本的な動作をさせましょう。

マイコン起動時に通信テストを兼ねて
マイコンからパソコンに「A」と1文字だけ送ってみましょう。
(複数文字は次回やります)

まずUSARTについてですが
データシートを見ると
PA2 USART2_TX
PA3 USART2_RX
となっています。

とりあえずココを使いましょう。

USARTを使うにしてもまずはRCCとGPIOの設定は必須です。

データシートP.12のブロック図をみると
USART2はAPB1のバスにつながっています。

よってクロックの供給は
stm32L1xx_rcc.cの1145行目の
RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState)
を使います。
実際にはこの前のRCCを設定した関数
void RCC_configuration(void)のなかに
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
という記述を足します。

そして次にGPIOの設定です。

USARTで使う場合には
データシートを見ますと
USART機能は「Alternate Functions」(AF)に分類されます。
また、stm32l1xx_usart.cの冒頭に手順が書いてあります。
簡単に書きますと
1.USART2の場合はRCC_APB1PeriphClockCmd(RCC_APB1Periph_USARTx, ENABLE)でクロックを供給しなさい
2.GPIOの設定はRCC_AHBPeriphClockCmd()の関数を使いなさい
3.AFのコンフィグはGPIO_PinAFConfig()の関数を使いなさい。そしてGPIOのモードはAFを選びなさい。OTypeや速度を設定しなさい。初期化はGPIO_Init()関数を使いなさい。
4.ボーレート、ワード長、ストップビット、~各種シリアルの設定をしなさい。
(今回は関係ないので中略)
7.USARTの開始はUSART_Cmd()関数を使いなさい。

ということでコレに従っていきます。

ちなみに・・・(読み飛ばし推奨)
GPIO_PinAFConfig()はほかのSTM32のチップではあまり使っていない関数です。他だとmain_function/Alternate Function/Remapというふうに分けているので、AF機能を選ぶだけで自動的に機能が決まるようになっています。しかし、このSTM32LのチップはRemapがなくて本来であればRemapに配置されるものをAFに入れています。つまり、AFの中に複数の機能が入っています。よって、単にAF機能を選ぶだけでは使いたい機能が選択されません。よってGPIO_PinAFConfig()でAFの中からさらに使いたい機能を選択する必要があります。要はRemapと同じことなんですけどね・・・。コレに気づかずに「AF選んでるのになんで動かネーんだよ!!」と3日位もがきました。ほかのチップを参考にしたのが逆に固定観念作って仇となったカタチですね。低消費電力モードがあるL系列のチップだからだそうです。L系のチップはただでさえ癖のあるARMのなかでもとりわけクセが強いそうです。そんなもの選ぶんじゃなかったと若干後悔中ですよ。テストボード自体はディスプレイもタッチパネルもあって面白いんですけどね・・・。
(ここまで)

なのでまずAFの選択を先にします。


GPIO_PinAFConfig()を見に行くと

void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)

というのが出てきます。
GPIO_TypeDef* GPIOx は今回はGPIOAです。
uint16_t GPIO_PinSource はstm32l1xx_gpio.hの195行目あたりに書いてあります。今回はこれの2と3を選びます。
uint8_t GPIO_AF はこの関数のすぐ上(stm32l1xx_gpio.c477行目あたり)に書いてあります。これのUSART2を選びます。
というわけで、
GPIOのconfigの関数の冒頭に

GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USART2);

という記述を入れます。

このあとにGPIOの設定を前回と同様に入れていきます。(GPIOの設定後にPinAFconfigをやるとノイズが出るので間違えないように)

Txでは、

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_Init(GPIOA, &GPIO_InitStructure);

と記述し、

Rxでは、

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOA, &GPIO_InitStructure);

と記述します。

実際は共通する場所は繰り返す必要はないので、
前回のLチカの続きに書くならば
 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOA, &GPIO_InitStructure);

で、設定ができます。

ちなみに、USARTで使うときは設定をこうしなさい(AFのPPや入力のフローティング)というのがリファレンスマニュアルに書いてあるはずなのですが・・・今回のリファレンスでは見つかりませんでした・・・。まぁ一般的なSTM32のチップなら大体決まった設定なのでそれでいきます。

これで、基本の設定が終わりました。
PR
エッグハント終わる前にシーズナルイベントを終わらせなければということで。。。
FF14の1シーンとしてブログに残しておきます。

エッグハントスタート

エグッ・・・エグッ・・・



係員「はーい、いまから二人組を作ってください」

syuzo「おいやめろ」

今考えるとよく体育のあのシステムを乗り越えられたもんだと思います。

ペアで卵を、妨害を避けながら指定の場所に運ぶだけのクエスト

追尾モードで楽ちん



最後は4人組とか・・・。
コミュ力が・・・・試されている!!!!
(※FCで手伝ってもらいました)


ソウダッタノカー(棒)

クリアするとチョコボ装甲もらえるみたいでした。
あ、SS撮り忘れた・・・。


つかこのイベント要る?w
いやイースターやるのはいいんだけどこんな内容ならまだやらない方がマシだたんでないのっていうくらいのイベントだったような・・・。卵からアイテムもらえるのがよかったくらい?そしてなんかTERAの卵わってランダムにアイテム飛び出すアレ思い出すよね。

でもイースターホリデーって結構大きなお休みだそうですね。海外の取引先がふつうに仕事止まってました。
※まだ未クリアなので本記事は参考程度でお願いします。
※すべてが正しい情報と鵜呑みにしないでください。

DPSのことばっかりが事前に話題に上がってましたが、
いざやってみると盾1難しいよー
ってことでギミックをおさらいして何か妙案はないかなと考えなおしてみます



3層のギミックをおさらい
東西南北に塔があり、一定時間後(前半60秒後半80秒))に特定のギミックが発動。人が塔に触る(一定距離に入るだけ)と被ダメアップ?(このデバフを持った状態で塔を触るとというものらしいので、要は消えないうちに塔のデバフは触れネーよってこと)のデバフがつくがギミックの発動までの進行度(時間)を短縮できる。ギミック発動までの進行度が2つ以上被っているとボスに強化バフがつくのでデバフをもらってでも進行度をずらす必要がある。
北(入口側):ドレッドノート召喚
東:地雷設置
西:範囲AOE
南:範囲AOE
phase1(60秒):北(ドレッド)&西(範囲AOE)
phase2(60秒):東(地雷設置)&南(範囲AOE)
phase3(60秒):phase1と同じ
phase4(60秒):phase2と同じ
phase5(60秒):北(ドレッド)&東(地雷設置)
-----------HP45%をトリガ?------------------
phase6(80秒):東(地雷)&南(範囲AOE)&西(範囲AOE)
phase7(80秒):東(地雷)&北(ドレッド)&西(範囲AOE)
phase8(80秒):南(範囲AOE)&東(地雷)&西(範囲AOE)
フェーズ間(前半15後半20?)も含んで約11分後に即死攻撃。
前半は奇数回にドレッド偶数回に地雷と覚えておくと良いです。

phase2~5終了時にバインド(バリスティックミサイル)攻撃
phase3~5は10秒と50秒にブレインジャック
HP45%からはギミックに連動してアラガンフィールド


盾2枚でやるならー
phase1:北2タッチ(ST/DPS1)or西1タッチ (ドレッド→範囲)
phase2:東2タッチ(DPS2/DPS3) (地雷→範囲)
phase3:北2タッチ(ST/DPS1) (ドレッド→範囲)
phase4:東2タッチ(DPS2/DPS3) (地雷→範囲)
phase5:東2タッチ(ST/DPS1)or北2タッチ (地雷→ドレッド)
-------------------------------------------
phase6:東2タッチ(DPS2/DPS3)、南1タッチ(MT) (地雷→範囲→範囲)
phase7:西2タッチ(HEAL1/DPS1)、東1タッチ(ST) (範囲→地雷→ドレッド)
phase8:東1タッチであとは無視して押し切る。もしくは東2タッチ南1タッチ
※AF次第で入れ替えあり

盾2でやる場合のポイントはドレッドとバインド攻撃のタイミングをずらすことです。
というのもバインド攻撃はヘイト1位以外を狙います。STも狙われるために、ドレッド担当のSTがバインドに捕まると、解除のために人が入るとドレッドに攻撃されるし、入らなければ即死になります。というわけで特にphase3ですが、北を先に起動させてます。phase5に関してはphase移行がうまく行けばバインド攻撃が来ない?ためにドレッドを後回しにしてますが、バインド来ることもあるそうなのでドレッドを先にしても良いそうです。phase1もドレッドのときはバインド無いのでドレッド後回しでもOK




さて、問題はphase6からです。

アラガンフィールドはMT以外ランダムです。コレをもらううとカウント0までにもらったダメージに応じてカウンターAOEが発動します。ホーミング役についた場合は交代しないといけません。役割を乱させるこのギミックがかなりエグいわけです。


【phase6】
アラガンフィールド(AF)のことも考えると
00sec|AF状態(移行時につくAF)
20sec|AF爆破
30sec|AF付与
40sec|地雷
60sec|AF爆破/範囲AOE(たぶん判定間に合う?)
70sec|AF付与
80sec|範囲AOE
100sec|AF爆破(phase7開始)
で、3回めAFは持ったまま範囲AOEを超える必要があります。極力軽減して反動ダメージを抑えること。

もしくは・・・・タッチのタイミングをずらすことでAF爆破とAOEを被らないように出来ます。

00sec|AF状態(移行時につくAF)東1タッチと西2タッチで時間をずらす
20sec|AF爆破→AF保持者が西にタッチ3で即範囲AOE
30sec|AF付与
60sec|AF爆破/地雷→南1タッチでAF付く前に範囲AOE誘発
70sec|AF付与
80sec|phase6終了
100sec|AF爆破(phase7開始)

要は範囲AFが来る前に先に範囲AOEを発動させるってやり方ですね。


【phase7】
10sec|AF付与
40sec|AF爆破/範囲AOE(爆破のほうが先)
50sec|AF付与
60sec|地雷
80sec|ドレッド/AF爆破
同じく範囲AOEをAF持ったまま超えなければならない。

もしくはAFを回避するなら
00sec|東1タッチ西2タッチで時間をずらす。
10sec|AF付与
40sec|AF爆破/範囲AOE(AFのほうが先)→AF保持者が東に1タッチでAF前に地雷誘発
50sec|AF付与
80sec|ドレッド/AF爆破


phase8
30秒と70秒にAF付与。ただし無視するならギミックは気にしなくてイイので範囲AOEなどは考えなくてイイ。無視なら東だけさわって60秒に地雷がくるだけ。phase7のドレッドはSTがとったら抱えたままにして放置。


さて!
前回はまず土台を作りました。

今回からシリアル通信を作っていきますが、

とりあえず基本のLEDチカチカをやってみましょうか。

大丈夫。すぐです。

ちなみに本シリーズはすでにpart5まで書き終わってるので、あとはアップを待つばかりです。誰得な記事ですが頑張って行きたいですね。

あ、文字化けあったらすみません。プログラム系は文字化けしやすいのですよね。

discoveryの回路図や取説読みますと
PB7が緑
PB6が青
となっているようです。


と、その前に

stm32f10x.hに飛びたいのですが
とりあえずmain.cの1行目に
#include "stm32l1xx.h"
と書いておきましょう。
いずれ必要になるので。

これで、この文字の上で右クリックすると
"stm32l1xx.h"を開くというメニューが出てきます。
これでEWARM上から簡単に移動ができるようになります。

基本的にはこのstm32l1xx.hがベースになります。
いわゆる用語集でこのルールに基づいて記述しないと動きません。
(直接値放り込めば動きますがまさかそれはしないと思いますので)

ついでに前回やらかしてくれたconf.hも見に行きましょうか。
5099行目にありますね。
同じく右クリックから開くで飛べます。

~conf.hは一括でincludeの管理をしてます。
とりあえず今回は~gpio.h、rcc.h、usart.h、misc.hしか使わないので
これ以外はコメントアウトしちゃいましょう。
軽量化!!


さて、マイコンの初期化をこれからしますが、
必要なことは
必要な機能にクロックの供給をはじめにします。

マイコンの中には様々な機能が盛り込まれていますが、
これを動かすにはなにはともあれクロックを各機能に供給してあげないといけません。
というかこれがARMの特徴でもあります。
機能毎に供給を止めたり与えたりできるので、
不要な機能には供給しないことで省電力化がしやすくなっているチップです。
これを管理しているのがRCCです。

main.cにはつらつらと書いていってもいいのですが
RCC_configuration()という関数を作って区切りをつけたいと思います。

メイン関数の中にこれを記述します。



#include "stm32l1xx.h"
int main(void){
RCC_configuration();
}

void RCC_configuration(void){
//ここにクロック供給を書く
}



こんなかんじですね。
2008年1/31に忍者ブログにお引っ越ししてから6年が経ったのですね。

当初は適当にやってましたが、いつしか1日1記事を目標にして、
なんだかんだで昨日の記事で1000記事となりました。
(インフォメーション除くとこれが1000件目となりますね)

今回は懐古厨ですがお許し下さい。


2008年 111記事
2009年 32記事
2010年 82記事
2011年 169記事
2012年 251記事
2013年 265記事

2009年のやる気の無さがやばいですね。
なに書いてたんだろw

とりあえず振り返ってみます。

2008年
あーまだ前半は仕事してない頃の話ですね。
アルバイトで馬鹿やってた頃の記事が多いようです。
(サンプル)
こんなの有りましたね。
逆に年度が変わると仕事のリズムに慣れてないというか、0時には寝て朝は早く起きるみたいな感じで書いてるヒマが無かったみたいですね。

月に3記事程度でそのまま年末まで突入

この記事更新速度が2010年まで続きます。

いちおうROはやってたはずですよ。

2009年
ヘッドホンアンプとか作ってたみたいですねー
ものづくりにはまっててROのサポートツール(WARGs)とかも作ってたみたいですよ。
WARGsのはなしとイベントの話だけですね。
サンプル

2010年
ラノベの評価を始めました。
生体3とかやってました
ROではR化あったみたいですね。なつかしい!!
後半からは記事更新が徐々に増えていきます。
R化でネタが出来たのもあるでしょう
RD狩りで光ったりしてましたね。タナトスマンセー
サンプル

2011年
スカラバガーデンの登場です。
ROで同盟狩りの必要がでてきて色々ネタが増えたみたいです。
スカラバガーデンの計算機なんてのも作ってましたね。
夏にはTERAのβとオープンが有りました。βだけテストプレイしてました。
このときはまだ数年後ROをやめてTERAを始めるなんて思っても居なかったですね。
GvG関連の記事も増えてきました。
同盟単位での活動の必要性が上がって狩りからGVGからいろいろ書いてるみたいです。
サンプル
※年間とおしてスクショもねー記事ばっかりなのでサンプルでいいのがなかなかなかった・・・

2012年
2011年の末日から新年に掛けてnavigation_Pixy_yuiの開発に着手しました。
過去色々作ってきましたが、最大級の労力と時間を割いています。
お陰でかなり満足の行く出来上がりになっています。
バージョンアップも繰り返して記事も結構書きました。
そしてきたる5月(頃)・・・RRとほぼ同時に同盟の解散と相成りました。
個人傭兵でしたので1ヶ月ほど傭兵活動してましたが、やはり限界があり、思い切ってROの世界から引退することを決意。 統合してそれに着いて行くエネルギーが出なかったのですよね。同盟もたくさん増えて、蹂躙もされやすくなったりで。もうゲームやってるのにストレスが溜まっていくような環境になり。それが楽しいと思えるような年代も過ぎてしまったのです。
フェンリルのオープン前直前にIrisで始めて、フェンリルオープンと同時に移り。課金開始から10年。アニバーサリーイヤーでした。
後半はTERA関係の記事が殆ど占めることになります。

PSO2のαテストのはなしもあったりしましたね。結局移住しませんでしたが。

TERAを始めた当初はまったりやっていました。
初心者ギルドに入ってまったりプレイ。
しかし、9月のシャンドラ・マナイアアップデート前にマスターが行方不明ということになり、アップデートとほぼ同時に空中分解しました。その後、結構古めのアルケミストという名前のギルドに入って、ROでもう懲りたと思っていた廃人の領域へと再び入っていくのでした・・・。

年末はTERAのシャンドラやシリュカの記事が占めます。

シリュカの攻略は進んでやっていたので(というかTERAには攻略をする人があまりいなかった。ROからみたら誰かしら速攻でやってしまうので、自分でやるしかなかったという意識)、数人に(声かけていただいたのはホント数人でした)「攻略記事書いてる人」(当時グーグル検索で一番上だったそうです)ということでちょっと知られていたそうです。(少し天狗でしたね(笑))
サンプル

また、10月のハロウィンイベントが脳死連打ゲーすぎて時間つぶしにパズドラを始めます。まだ200万DLとかの時代でしたね。



2013年
年始からシャンドラでした。
また、12年の年末から実質無料状態だったTERAが2月に完全無料化ということで結構勢いに乗ってたと思います。
しかし・・・数カ月後・・・飽きてしまうことにまだ気づかない・・・。

要因は色々ありましたが、結局のところ、「エンドコンテンツがない」というのが表向きの理由です。アップデートも何度かあったのですが、遅いし。シャンドラ・マナイアが最上位という位置づけは変わらず。対人もPADプレイヤだったのでエイムがシビアなこのゲームで生きていくのはかなり辛かったのです(キーパッド買ってみたけど使いこなせませんでしたね。やっぱり一度慣れてしまうと容易には操作変えられませんでした。今までスキルを右手で使っていたのを左手にするので全然動けなかったんですよね)そういうなかで普通に「飽きて」しまったのがこの時期です。ぎりぎり1年持ったかくらいでしたね。

と同時にFF14のテスターに当選します(4次くらいだったかなぁ)。

新生じゃない根性版のときの発売当初に1ヶ月ほどやっていたので気にはなっていました。

そして今度は慣れるために最初からキーパッドを使おう(せっかく1万も出して買ったのだし)。ということでキーパッドでプレイし始めるわけです。

情報公開がOKになり、ブログでもテストの記事を書き始めます。

いよいよFF14オープン当日・・・そこには新生から始めた新しい光の戦士が立っていたのです・・・。
サンプル

そこからはFF14の記事が殆どになります。
サンプル

2014年
引き続きFF14です。
PREV ←  HOME  → NEXT
プロフィール
HN:
komyu/シュクレール/修造
性別:
非公開
自己紹介:
こうぶつはけものみみとのーびす(♀)とエリーン
主にROとTERAとラノベと雑多なkomyuの日記帳です。
新生FF14
TERA紋章しみゅ
ROサポートツール
タイムライン
RSSボットが記事更新をつぶやくのがほとんどっス…
ROキャラクター紹介


TERAキャラ紹介

シュクレール(バサ)



syuzo(エレ)



サケマス(アチャ)


その他サブ

ウリエルキゥィス(スレLv54)

Vermillion(サラLv56)

パズドラ

157,318,362
フレンド募集中
枠なきゃ増やす
最終プレイ3日以上になったら消す
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
ツリーカテゴリ
ブログ内検索
最新コメント
[04/30 のな]
[03/22 NEIN]
[03/22 NEIN]
[10/31 イロイ]
[05/02 NONAME]
Copyright (C) 2024 のーびす監察日記 All Rights Reserved.
Photo by 戦場に猫 Template Design by kaie
忍者ブログ [PR]