【きむ茶工房ガレージハウスの掲示板】

FC2BBS

24977

誹謗、中傷、虚偽情報や商用目的・宣伝目的等の利用と判断した場合は削除する事があります。

名前
件名
メッセージ
メールアドレス
URL
アイコン
文字色
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

XBeeの通信開始までの時間 北の住人

2019/08/10 (Sat) 14:50:48

いつも記事を読ませていただいております。
最近、XBeeを購入してArduinoとの組み合わせで通信にチャレンジしています。

親機と子機の組み合わせで通信しています。
子機から親機に定期的に信号を送信していて、親機で受信することまで確認済です。

今困っていることとして、子機の電源を入れた際に、1度だけ信号を送りたいのですが、親機でこの電源ON時の1度だけ送られてくる信号を受信できません。
(1度送信した後は、定期的な信号を送信→受信できています。)

電源をONしてからしばらく時間が経過しないと、XBeeの通信はできないのでしょうか。

Re: XBeeの通信開始までの時間 - きむしげ

2019/08/15 (Thu) 16:59:48

こんにちは、北の住人さん

XBeeは電源がONしたら、ネットワークに接続を行います。
ネットワークに参加出来るまでは送信不可ですので、
時間経過が必要です。

MPLABXのMCC - リーチ

2019/08/03 (Sat) 22:27:38

いつも開発の参考にさせていただいております。
とってもわかりやすい記事をありがとうございます。

いきなりですが、MPLABXにMCCという機能が追加され、
I2Cなどもそこから利用できるらしいと知りました。
今まで、きむ茶工房さんのI2C通信の記事を参考にしていたのですが、
公式で搭載されたとのことであらゆるシリーズへの対応が簡単なのではと思いました。

そこで、MCCでのI2Cのマスタ、スレーブの使い方を是非ご教授願いたいと思い書き込みをいたしました。

設定をするところまでは多分できたのですが、送受信データの取り扱いがイマイチわかりません。
もし、よろしければよろしくお願いします。

Re: MPLABXのMCC - きむしげ

2019/08/04 (Sun) 12:54:55

リーチさん こんにちは!

MCCをを使って[Generate]させれば実行可能ファイルが生成されるのですがぁ、
生成されたファイルは細かいライブラリファイルに分割され、見通しが悪く
又、英語なので分かりにくいのでぇ、
現在私はMCCでI2Cを利用する方法は行っていません。m(_ _)m
御自分で実験等を行ってください。
どうしても必要なら、要ご相談(有料)とさせてください。

Re: MPLABXのMCC - リーチ

2019/08/04 (Sun) 13:23:00

きむしげさん
ご返信ありがとうございます。

なるほど…
もう少し粘って自分で頑張ってみます!

MCP4725 EEPROM書き換え - 大学院生

2019/07/10 (Wed) 15:46:37

はじめて投稿させてもらいます.
大学院の研究でマイコンを使っておりまして,その中でDACが必要になり,MCP4725を使っています.配線をし,出力をコントロールすることはできています.しかし,電源ON直後の半分の電圧を0にしたくて,色々調べたりしたのですが,プログラミングにあまり詳しくないというのもあり,できていません.

こちらのMCP4725についての記事で設定を変えられることを知ったのですが,具体的にEEPROMの書き換えのコードを教えていただけたらと思います.

ただ,私が使っているのはArduinoではなく,mbed(LPC1768)ですが助けていただけますでしょうか?

ちなみに私が使っているMPC4725のライブラリはこちらです.
https://os.mbed.com/teams/The-Best/code/MCP4725/

突然ですが申し訳ありません,よろしくお願いいたします。

Re: MCP4725 EEPROM書き換え - きむしげ

2019/07/11 (Thu) 13:22:40

こんにちは

ans = I2C_Start(adres,RW_0);
if (ans == 0) {
  I2C_Send(0b01100000) ;
  I2C_Send(0b00000000) ;
  I2C_Send(0b00000000) ;
}
I2C_Stop() ;
でいけると思われますが?
実験していないので何ともな所はありますが
(データシートを読みましょう)
EEPROMなので、1回実行すれば良いと思われます。

Re: MCP4725 EEPROM書き換え - 大学院生

2019/07/11 (Thu) 17:42:22

早速返事を頂きありがとうございます.

以下のようなプログラムでしようと思ったのですが,コンパイルできません.間違っているところを教えていただけたらと思います.

#include "mbed.h"

I2C i2c(p28, p27);
Serial pc(USBTX, USBRX);

int main()
{
int ans;
const int adres=(0x60<<1);
unsigned short RW_0;

ans = I2C_Start(adres,RW_0);
if (ans == 0) {
  I2C_Send(0b01100000) ;
  I2C_Send(0b00000000) ;
  I2C_Send(0b00000000) ;
}
I2C_Stop() ;
}

このプログラムだと,"I2C_Start"is undefinedとエラーメッセージが来てしまいました.

Re: MCP4725 EEPROM書き換え - きむしげ

2019/07/11 (Thu) 19:23:23

当たり前です。
例のプログラムはPIC用のSKI2Clib.cを利用した場合の
例です、mbed(LPC1768)では有りません。
mbed(LPC1768)用に書き換えて下さい、
例ではどんなデータを送ればよいかを示しているだけです。
私はmbed(LPC1768)については解りません
御自分で変換を行ってください。

Re: MCP4725 EEPROM書き換え - 大学院生

2019/07/12 (Fri) 13:34:38

そういうことだったんですね,わかりました.
後は自分でやってみます,ありがとうございました.

Re: MCP4725 EEPROM書き換え - 大学院生

2019/07/12 (Fri) 16:44:42

書いてくださったプログラムを基にして,うまくいきました.ありがとうございました.

XBee 1対N通信 通信素人

2019/07/01 (Mon) 14:49:27

"XBee無線通信の実験"を見させていただいております。
PICマイコンを使用してAPI通信を実現されていますが、
私も同じようなことにチャレンジしています。

[今のシステム]
XBee (Cordinator) - (API) - XBee (Router) - (USART) -PICマイコン

Router+PICマイコンを子機として、複数の子機と親機との間で通信を行うシステムに挑戦しています。

1対N通信が初めてのため、次のことが実現できるのか不安に感じています。アドバイス等いただけると助かります。

[実現したいこと]
PICマイコンに2つのセンサがついています。
センサAは、単純なON/OFF
センサBは、アナログ出力(PIC内部で10bitに変換)

①センサAが、ONになったら直ちに、親機に信号("A)を送る。
②センサBの値が、ある値以下になったら、親機に信号("B")を送る。

①、②ともに、判定はPICマイコンが行っています。
ホームページの"実験パート5"の内容は、
『RA1に接続されているタクトSWを押すと、親機にデータ送信する』とありますが、

PICマイコン-(USART)-子機(API Router設定)
⇔親機(API Cordinator設定)

この接続で、PICマイコンからデータ(例えば、フレーム10で"test")をPICから子機に送ると、親機が"test"と受信できるのでしょうか?


今までは、1対1の通信しか試したことがなかったので、教えていただけると助かります。

Re: XBee 1対N通信 - きむしげ

2019/07/02 (Tue) 10:24:32

こんにちは、通信素人さん。

XBeeの私の記事も1対1のみの実験ですがぁ
1対Nも同じような操作でいけると思いますが...
X-CTUで親にぶら下がっている子機の表示が出来ていれば
通信可能なはずです。
現在XBee3が出ているので手に入れたら1対N等の実験を
試したいとは思っていました。

Re: XBee 1対N通信 - きむしげ

2019/07/02 (Tue) 20:15:37

こんばんは、通信素人さん。

私のと同じ様なPICやXBee等で先ずは実験をそれから弄ってくださいと言いたい所なのですがぁ
なかなかそうはいかないものですかね
PICKit等でデバッグを行いプログラムが思った通りに
動作しているのかをステップバイステップで確認しましょう。
その方が何処までチャンと動作しているのかはわかるはずです。

PS. - きむしげ

2019/07/03 (Wed) 09:13:03

プログラムメモリ容量のギリギリの場合はプログラムが
正常に動作しない場合があります。
3割位は余裕ないとって感じはありますが,,,

Re: XBee 1対N通信 - きむしげ

2019/07/05 (Fri) 11:33:01

こんにちは、通信素人さん。

XBee3が届いたので、パート5の記事を行いました。
結果は送信できています。
親機:S2C
子機:S2,PIC16F18326
XBeeの設定をもう一度みなおしてください。
両機がAPIモードになっていること、
時に"Serial Interfacing"の"AP"が"1"であること。
後、x = XBee_SendPacket10(dt,i,1) ;の
x値が何を返しているのかを調べましょう。

Re: XBee 1対N通信 - きむしげ

2019/07/11 (Thu) 13:14:32

こんにちは

親機がATモードであれば送信されたデータを何であれ受信するはずです。
子機がフレーム10を送ったならフレーム10を表示するでしょう。
APIモードならフレーム10で送っても親機はフレーム90で"test"を受け取ります。
この変の話はパート4を読み直しましょう。

親機・子機共にPAN IDは番号を同じ(0以外)にしていますか?
同じ番号のグループでネットワークが形成されます。
子機のDH/DLは親機のアドレスを設定したほうが良いかもね。
親機はDH=0/DL=0xFFFFでよいでしょう。

集中豪雨 - カンジタ

2019/07/05 (Fri) 09:00:02

お久しぶりです。
事後になってしまいますが、
益城町、きむしげさんのところ大丈夫でしたか?

Re: 集中豪雨 - きむしげ

2019/07/05 (Fri) 11:40:58

こんにちは。
市内から下の方はかなり降ったようです。
私の所は市内から上で、植木町です。
もともとこの土地は雨が降りにくい感じですので
今回は強くは降りましたがさほどひどくは在りませんでした。
ご心配ありがとうございました。

外部EEPROMからのPCM再生 - ネコ

2019/04/30 (Tue) 14:19:54

お世話になっています。
長文失礼します。

PIC16F1933と24FC1025で外部EEPから音声データを読み込んでPWMでスピーカーで再生させるおしゃべり時計の試作をしていますが、

下記ソースのところの↓記載のab+cdをしないと音声が出力されません。

また、EEPからの読み出しが追いつかない模様でシーケンシャル読み込みをしたのですが、まだ、追いつかない模様です。
配列に一旦貯めて、順次再生。バッファが空いてきたら更に貯める
というようなコードを思いつく限りトライアルアンドエラーしてみましたがうまくいきませんでしたので、
お忙しいと存じますが、2点アドバイスいただけますでしょうか。
よろしくお願いします。

「ab = I2C_Receive(ACK); // 1バイト目を受信する
cd = I2C_Receive(ACK); // 2バイト目を受信する
ef = (ab+cd);」




下記ソース
------------------------------------------------
#include <xc.h>
#include "skI2Clib.h"
#include "skMC24xxx.h"

#define _XTAL_FREQ 32000000 // delay用に必要(クロック32MHzを指定)

//char ab[128] = {0};
char ab;
char cd;
int ef;
long addres = 0x04;
char ans = 0;

char eeprom_buff[128] = {0};


int addresaddres =0x00;
char ab_addres[8] = 0;

bit end = 0;



int slave_adrs_1;

long eep_adrs = 0;
char eep_x = 0;

bit flg = 0;

void interrupt InterTimer( void ){
InterI2C(); // I2Cの関連割り込み処理



if(TMR4IF){ // 16KHzでぶん回す
TMR4IF = 0;
flg ^= 1;

//CCPR5L = I2C_Receive(ACK);// 指定個数分読み出す(受信する)

//CCPR5L=vdata; //PWM set
// 連続してデータを読み出すi2c_stopするまで
//CCPR5L
/*
dad= voice[aabb];
*/
}
}
void main(void) {
OSCCON = 0b01110100; // 内部クロックは8MHzとするPLLx4=32MHz
ANSELA = 0b00000000; // AN0-AN4は使用しない全てデジタルI/Oとする
ANSELB = 0b00000000; // AN0-AN4は使用しない全てデジタルI/Oとする
TRISA = 0b00000000; // ピン(RA)は全て出力に割当てる
//TRISB = 0b11111111; //
TRISB = 0b00000000; // ピン(RB)は全て出力に割当てる
// TRISC = 0b00011011; // ピン(RC)は全て出力に割当てる
TRISC = 0b00011000; // ピン(RC)は全て出力に割当てる
PORTA = 0b00000000; // RA出力ピンの初期化(全てLOWにする)
PORTB = 0b00000000; // RA出力ピンの初期化(全てLOWにする)
PORTC = 0b00000000; // RA出力ピンの初期化(全てLOWにする)

CCPTMRS1 = 0b00000000;
CCP5CON = 0b00001100;


T2CON = 0x7C; //ポストスケーラ16倍、プリスケーラー1倍 PWM周波数う20KHz

CCPR5L = 0;
CCPR5H = 0;
TMR2 = 0;
PR2 = 24; // PWM周波数20KHz
TMR2ON = 1;


T4CON = 0x05; // 32MHz時 16KHzで回す
PR4 = 124; // 32MHz時 16KHzで回す
TMR4 = 0;
TMR4IE = 1;
TMR4IF = 0;
TMR4ON = 1;

GIE = 1;
PEIE = 1;

// I2Cの初期化処理(通信速度400KHz))
InitI2C_Master(1);
MEM_Init(0,0,0); // 外部EEPROMを選択 (A0,A1,A2)

while(1){

eep_adrs = 0x00;

slave_adrs_1 = 0b01010000 | (0<<2) | (0<<1) | 0;
ans = I2C_Start(slave_adrs_1,RW_1) ; // スタートコンディションを発行する
if(ans == 0){
eep_x = (char)(eep_adrs >> 8);
I2C_Send(eep_x) ; // メモリのHigh側アドレスを指定する

eep_x = (char)(eep_adrs & 0x00ff);
I2C_Send(eep_x) ; // メモリのLow 側アドレスを指定する

I2C_rStart(slave_adrs_1,RW_1); // リピート・スタートコンディションを発行する

for(int iii = 0; iii <= 760; iii++){
ab = I2C_Receive(ACK); // 1バイト目を受信する
cd = I2C_Receive(ACK); // 2バイト目を受信する
ef = (ab+cd);

if(ab == 0x00 || cd == 0x00){
end = 1;
break;
}
CCPR5L =ef;
//CCPR5L =ab;
while(flg == 1);
}
end = 0;
I2C_Receive(NOACK);
I2C_Stop();
}else{
I2C_Stop();
end = 0;
}

}
}

Re: 外部EEPROMからのPCM再生 - きむしげ

2019/05/12 (Sun) 13:47:51

こんにちは、ネコさん。

ここの所少し忙しかったり、おじさんが亡くなったりで
バタバタしていましたので返事が遅れました。

お尋ねの件、
私も、自際に動かして見ないとぉチョットぉ解りません。
ごめんなさい。m(__ )m
ですがぁ、速度が欲しいのなら
SPI接続のEEPROMをお勧めしますがぁ。

Re: 外部EEPROMからのPCM再生 - ネコ

2019/05/22 (Wed) 04:05:32

きむしげさん
こんばんは
お悔やみ申し上げます。

本題ですが、SPI接続の1Mbitが入手出来ないので、
SDカードから読み込むサンプルコードを試してみます。
また、壁に当たったらまたお付き合い願います。

無題 - 朝倉 宏仁

2019/04/22 (Mon) 12:54:57

きむしげさん、こんにちは。

今、PCとPICのUSART通信を試していますが、事情があってADM3202ANを介してPIC16F1827とPC間の通信をしようとしています。
PCはWindows7にUSBーRS232C変換ケーブルを接続、上記構成の自作モジュールにteratermで信号を送り、まずコールバックするかの確認をします。

ソフトはこちらのサイトの「パソコン(PC)と接続するパート1
(FT232RL/234X使用によりUSBをシリアル変換してマイコンと繋ぎます)」のFT232.zipを使用しようとしているのですが、そのままで動作するでしょうか?ヒントなどいただくと大変助かります。

Re: 無題 朝倉宏仁

2019/04/28 (Sun) 00:18:58

問い合わせしていた件、何とかわかりました。
先に事例通りPIC12F1822で動作確認をしうまくいったので、16F1827向けに修正します。

メルアド しーちゃんパパ

2019/04/19 (Fri) 12:50:54

お久しぶりです。
ごめんなさい、アドレス間違ってしまいましたか?

てっきり植木でスイカ作っているものと。ミカンですね。
流石c言語の私の師匠。

いつもお世話になっています。64MHzで1ミリ秒を数える - ネコ

2019/04/13 (Sat) 09:33:40

PIC18F26K80にチャレンジしています。
外部クロック16MHz 4倍PLLで64HMzを供給して、
タイマー2で1ミリ秒ジャストを計算したのですが合っていますでしょうか。
よろしくお願いします。

((1/64)*4*16*100*1 = 100
プリスケーラー:16倍 ポストスケーラー:1倍
T2CON = 0b00000110; // プリスケ:16倍 ポススケ1倍
PR2 = 100-1 = 99

if(TMR2IF == 1){
TMR2IF = 0;
count ++;
if(count >= 10){count = 0;}

}

Re: いつもお世話になっています。64MHzで1ミリ秒を数える - きむしげ

2019/04/13 (Sat) 22:02:03

こんばんは。

プリスケーラーを16倍にするなら
ポストスケーラーを1:8にしPR2=0x7Cにすれば
丁度1msになるはずです、countの必要なし。
MPLAB X IDE の MCC機能を使えば解りますよ。


skSPIlib のダウンロード - mmmm

2019/03/17 (Sun) 20:04:28

mmmmです。

skSPIlib がダウンロード出来ません。
(リンク切れ)

よろしくお願いします。

Re: skSPIlib のダウンロード - きむしげ

2019/03/17 (Sun) 22:27:15

mmmmさん、こんばんは!

ごめんなさい
どのページのskSPIlibでしょうか?

Re: skSPIlib のダウンロード - きむしげ

2019/03/17 (Sun) 22:45:58

もしかして
トップページの16ビット版のなら
リンク切れしてました、
ご迷惑おかけしました、m(_ _)m
ごめんなさい。修正しました。

Re: skSPIlib のダウンロード - mmmm

2019/03/31 (Sun) 13:30:32

きむしげさん
無事ダウンロード出来ました。

修正ありがとうございました。


Copyright © 1999- FC2, inc All Rights Reserved.