PICで時間待ちをしたい場合
delay_ms(n);やdelay_us(n);といった関数で(ほぼ)正確な時間待ちができますが
ARMにはそう言った関数が用意されていません
(たぶん)
正確な1秒であればRTCでも作れるので
1日に1回 というレベルの時間待ちならそれで十分ですが
マイクロ秒単位での時間待ちだと使えません
と言うことで
タイマ2を使用して(ほぼ)正確なウエイト処理を書いてみました
検証環境はSTBeeに例のごとくストリナの開発環境です
2012年4月30日月曜日
2012年4月26日木曜日
コンセント
何回目だっていうネタですが
やっぱり気になるので コンセントの使用数のカウントです
ざっと思いつくくらいでもこれくらい使ってる
こえーよ(´;ω;`)
とりあえず
自分で部屋を設計するとしたら
上記×2位くらいの容量に耐えられる配線が欲しいなぁ
しっかし この部屋の全体の電気代とかどれくらいになるんでしょ(´・ω・`)
やっぱり気になるので コンセントの使用数のカウントです
- デスクトップ(Win7マシン)
- デスクトップ(WinXPテストマシン)
- MacBook Pro
- プリンタ
- 無線LANAP
- LANハブ
- 画面(24)
- 画面(19)
- ケトル
- ライト
- 5V電源(電子回路用)
- 15V電源(or12V電源)
- 卓上ドリル
- オシロスコープ
- スピーカー
- PocketWi-Fi
- USB電源(布団でiPhoneとか充電用)
- ハンダゴテ
ざっと思いつくくらいでもこれくらい使ってる
こえーよ(´;ω;`)
とりあえず
自分で部屋を設計するとしたら
上記×2位くらいの容量に耐えられる配線が欲しいなぁ
しっかし この部屋の全体の電気代とかどれくらいになるんでしょ(´・ω・`)
2012年4月22日日曜日
秒から年月日時分秒に
C語で秒から年月日時分秒に変換するコードです
標準関数?
それが無いんだなぁ
(探し方が悪いんだろうけど 自分で作ったほうが早かった というか printfですら無いんだからtimeとか探す気にも(ry)
標準関数?
それが無いんだなぁ
(探し方が悪いんだろうけど 自分で作ったほうが早かった というか printfですら無いんだからtimeとか探す気にも(ry)
2012年4月20日金曜日
STBeeMiniでタイマ割り込み
STBeeMiniでタイマ割り込みを実装してみました
とりあえず動いたので報告だけ
ソースは綺麗にしてからうpします
1mS毎に割り込みをかけてLEDをチカチカさせます
まぁ500Hzだと点滅なんぞわかりませんが
正確に500Hzじゃないのは
水晶の精度か定数の設定か
計算上クロック1個分少ないと500.006945Hzになるので
多分定数のミスです
とりあえず ミリ秒単位で割り込みが出来れば1000カウントとunsigned longで起動時間管理が楽になるので いろいろ面白いことができると思う
タイマ割り込みと USART実装して あとADCが出来れば
データロガーとして使えるので 面白くなりそう
あとはprintfが使えれば文句ないんだけどなぁ…w
2012年4月8日日曜日
STBeeでUSART
やっと!STBeeで1バイト送信ができるようになった
なんで動かなかったかというと
USART_Cmd(USART1, ENABLE);を忘れていた
というか知らなかった という…
ってことで GPIOを初期設定後にASCII'A'を送信しつつLチカするコード↓
開発環境はストリナに書いてある方法です
アレ楽でいいね!!
なんか
Visual Studio→Word→Bloggerオンラインエディタ
で張り付けると
文字の色が保持されるかわりに タブが恐ろしいことになるんだよね
なんでだろう?
'\t'の扱いがVCでは半角スペース4文字だけどBloggerエディタだと違う とかかな?
追々直しますヾ(゚Д゚ )ォィォィ
↑修正しました 一部アレだけど まぁ 我慢してください
で、なぜprintfが使えないか
個人的に 正解率1割以下の勘を信じると
おそらくstdoutが無いんじゃないかと
だって シリアル出力だけで5系統あるわけじゃないですか(多分
んで それ以外にも ユーザーが作った出力があるかもしれない
となると stdoutを決めておくより
あとで定義したほうが自由度が高い
ってことじゃないかと
まぁエラーメッセージ的にはまったく違う理由っぽいですが
とりあえず そんな感じです
うー めんどくさいなぁ OS使いたいなぁ(((
なんで動かなかったかというと
USART_Cmd(USART1, ENABLE);を忘れていた
というか知らなかった という…
ってことで GPIOを初期設定後にASCII'A'を送信しつつLチカするコード↓
開発環境はストリナに書いてある方法です
アレ楽でいいね!!
#include "stm32f10x_conf.h"
#include <stdio.h>
#define GPDON(PIN) { GPIOD -> BSRR = _BV(PIN); }
#define GPDOF(PIN) { GPIOD -> BRR = _BV(PIN); }
#define GPDSET(PIN, bit) { if(bit){
GPDON(PIN); }else{ GPDOF(PIN); } }
void Delay(volatile
unsigned long
delay)
{ while(delay) delay--; }
int main(void) {
int
flag;
GPIO_InitTypeDef
GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
// システムを初期化します(外部水晶をONにし72MHz動作に切り替えます)
SystemInit();
//
GPIO Dポートのクロックを有効にします
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,
ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,
ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
//
PD.4ポートを出力にします。PD.4=赤LED Lowで点灯
GPIO_InitStructure.GPIO_Pin =
_BV(4);
GPIO_InitStructure.GPIO_Mode
= GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed
= GPIO_Speed_50MHz;
GPIO_Init(GPIOD,
&GPIO_InitStructure); // 初期化関数を読み出します。
// PA.9 Output
GPIO_InitStructure.GPIO_Pin =
_BV(9);
GPIO_InitStructure.GPIO_Mode =
GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,
&GPIO_InitStructure);
//
PA.0ポートを入力に
GPIO_InitStructure.GPIO_Pin =
_BV(0);
GPIO_InitStructure.GPIO_Mode
= GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,
&GPIO_InitStructure);
// USART init
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength =
USART_WordLength_8b;
USART_InitStructure.USART_StopBits =
USART_StopBits_1;
USART_InitStructure.USART_Parity =
USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode =
USART_Mode_Tx; /* | USART_Mode_Rx */ // ←受信機能を有効にするにはコメントアウトを解除
USART_Init(USART1,
&USART_InitStructure);
USART_Cmd(USART1, ENABLE);
for
( ; ; ) {
USART_SendData(USART1, 'A');
flag = !flag;
GPDSET(4,
flag);
Delay(GPIO_ReadInputDataBit(GPIOA,
1) ? 2000000 : 1000000);
}
}
なんか
Visual Studio→Word→Bloggerオンラインエディタ
で張り付けると
文字の色が保持されるかわりに タブが恐ろしいことになるんだよね
なんでだろう?
'\t'の扱いがVCでは半角スペース4文字だけどBloggerエディタだと違う とかかな?
追々直しますヾ(゚Д゚ )ォィォィ
↑修正しました 一部アレだけど まぁ 我慢してください
で、なぜprintfが使えないか
個人的に 正解率1割以下の勘を信じると
おそらくstdoutが無いんじゃないかと
だって シリアル出力だけで5系統あるわけじゃないですか(多分
んで それ以外にも ユーザーが作った出力があるかもしれない
となると stdoutを決めておくより
あとで定義したほうが自由度が高い
ってことじゃないかと
まぁエラーメッセージ的にはまったく違う理由っぽいですが
とりあえず そんな感じです
うー めんどくさいなぁ OS使いたいなぁ(((
2012年4月7日土曜日
STBeeでLチカ
今さらながらに
STBeeでLチカやってみました
ポートの入力/出力です
↓
STBeeでLチカやってみました
ポートの入力/出力です
↓
#include "stm32f10x_conf.h"
#define GPDON(PIN) { GPIOD -> BSRR = _BV(PIN); }
#define GPDOF(PIN) { GPIOD -> BRR = _BV(PIN); }
#define GPDSET(PIN, bit) { if(bit){
GPDON(PIN); }else{ GPDOF(PIN); } }
void Delay(volatile
unsigned long
delay)
{ while(delay) delay--; }
int main(void) {
int
flag;
GPIO_InitTypeDef
GPIO_InitStructure;
// システムを初期化します(外部水晶をONにし72MHz動作に切り替えます)
SystemInit();
//
GPIO A/Dポートのクロックを有効にします
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,
ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,
ENABLE);
//
PD.4ポートを出力にします。PD.4=赤LED Lowで点灯
GPIO_InitStructure.GPIO_Pin =
_BV(4);
GPIO_InitStructure.GPIO_Mode
= GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed
= GPIO_Speed_50MHz;
GPIO_Init(GPIOD,
&GPIO_InitStructure); // 初期化関数を読み出します。
//
PA.0ポートを入力に
GPIO_InitStructure.GPIO_Pin =
_BV(0);
GPIO_InitStructure.GPIO_Mode
= GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,
&GPIO_InitStructure);
for
( ; ; ) {
flag =
!flag;
GPDSET(4,
flag);
Delay(GPIO_ReadInputDataBit(GPIOA,
1) ? 1000000 : 2000000);
}
}
↑
開発環境はストリナで配布されてるモノ
ユーザースイッチが押されているか押されていないかで点滅周期が変わるプログラム
とりあえず入出力ができるようになったので
あとは割り込みとシリアル通信が出来れば
かなり色々と遊べる
タイマ割り込み/シリアル通信/ADCが出来れば 最低限の缶サットは作れるしなぁ
割り込みはめんどくさそうだし
とりあえずUSARTとADCを目指して
PIC飛ばす前にSTBee飛ぶかも?(缶サット
開発環境はストリナで配布されてるモノ
ユーザースイッチが押されているか押されていないかで点滅周期が変わるプログラム
とりあえず入出力ができるようになったので
あとは割り込みとシリアル通信が出来れば
かなり色々と遊べる
タイマ割り込み/シリアル通信/ADCが出来れば 最低限の缶サットは作れるしなぁ
割り込みはめんどくさそうだし
とりあえずUSARTとADCを目指して
PIC飛ばす前にSTBee飛ぶかも?(缶サット
登録:
投稿 (Atom)