リサーチ115

リサーチ115 > USART

USARTの基礎知識

USART関連商品

多数のネットショップからUSART関連の商品を探して一覧表示しています。

ARM7TDMI/LPC2148+Ethernet(ENC28J60)モジュール
ARM7TDMI-Sコアを採用したNXP社のLPC2148(周波数60MHz,512KB FlashROM, 42KB SRAM, 2×SPI, 2×I2C, USB2.0デバイス, PWM, 2×10ビットADC 14ch,10ビットDA×1, 2×USART,2×32ビット・タイム, RTC) 、Ethernet(ENC28J60) を搭載...
ARM7TDMI/LPC2148モジュール
ARM7TDMI-Sコアを採用したNXP社のLPC2148(周波数60MHz,512KB FlashROM, 42KB SRAM, 2×SPI, 2×I2C, USB2.0デバイス, PWM, 2×10ビットADC 14ch,10ビットDA×1, 2×USART,2×32ビット・タイム, RTC)モジュールです。...
ARM7TDMI/LPC2103モジュール
ARM7TDMI-Sコアを採用したNXP社のLPC2103(周波数70MHz,32KB FlashROM, 8KB SRAM, 2×SPI, 2×I2C, PWM, 10ビットADC 8ch,2×USART,2×32ビット・タイム, RTC)モジュールです。...
ARM7TDMI/LPC2148モジュール
●ARM7TDMI-Sコアを採用したNXP社のLPC2148(周波数60MHz,512KB FlashROM, 42KB SRAM, 2×SPI, 2×I2C, USB2.0デバイス, PWM, 2×10ビットADC 14ch,10ビットDA×1, 2×USART,2×32ビット・タイム, RTC) ●I/Oポートは5Vトレラントのため、5V系ロジックを直結できます ●3.3Vレギュレータ内蔵 ●...
ARM7TDMI/LPC2148+Ethernet(ENC28J60)モジュール
●ARM7TDMI-Sコアを採用したNXP社のLPC2148(周波数60MHz,512KB FlashROM, 42KB SRAM, 2×SPI, 2×I2C, USB2.0デバイス, PWM, 2×10ビットADC 14ch,10ビットDA×1, 2×USART,2×32ビット・タイム, RTC) ●I/Oポートは5Vトレラントのため、5V系ロジックを直結できます ●3.3Vレギュレータ内蔵 ●...
ARM7TDMI/LPC2103モジュール
●ARM7TDMI-Sコアを採用したNXP社のLPC2103(周波数70MHz,32KB FlashROM, 8KB SRAM, 2×SPI, 2×I2C, PWM, 10ビットADC 8ch, 2×USART,2×32ビット・タイム, RTC) ●I/Oポートは5Vトレラントのため、5V系ロジックを直結できます ●3.3Vレギュレータ内蔵 ●サブクリスタル付(32.768kHz) ●JTAG ●...
ARM7TDMI/LPC2148モジュール+OpenLinkセット
ARM7TDMI-Sコアを採用したNXP社のLPC2148(周波数60MHz,512KB FlashROM, 42KB SRAM, 2×SPI, 2×I2C, USB2.0デバイス, PWM, 2×10ビットADC 14ch,10ビットDA×1, 2×USART,2×32ビット・タイム, RTC)モジュールです。...
ARM Cortex-M3/STM32F107開発キット(3.2”TFT液晶タッチパネル付き)
ST社製のARM Cortex-M3コア内蔵マイコンSTM32F107VC 72MHz,256KB Flash, 64KB SRAMを搭載したCPUボードです。タイマー、12BitAD、12BitDA、I2C、USART、SPI、IIS、USB OTG、CAN2.0B、10/100M Ethernet、3.2インチTFT液晶等、多様な機能を搭載しているため、幅広い分野に対応が可能です。...
ARM Cortex-M3/STM32F107開発ボード
ST社製のARM Cortex-M3コア内蔵マイコンSTM32F107VC 72MHz,256KB Flash, 64KB SRAMを搭載したCPUボードです。タイマー、12BitAD、12BitDA、I2C、USART、SPI、IIS、USB OTG、CAN2.0B、10/100M Ethernet等、多様な機能を搭載しているため、幅広い分野に対応が可能です。...
ARM Cortex-M3/STM32F107開発セット(3.2”TFT液晶タッチパネル+OpenLink)
ST社製のARM Cortex-M3コア内蔵マイコンSTM32F107VC 72MHz,256KB Flash, 64KB SRAMを搭載したCPUボードです。タイマー、12BitAD、12BitDA、I2C、USART、SPI、IIS、USB OTG、CAN2.0B、10/100M Ethernet、3.2インチTFT液晶等、多様な機能を搭載しているため、幅広い分野に対応が可能です、高速USB2...
ARM Cortex-M3/STM32F107開発キット(2.8”TFT液晶タッチパネル付き)
ST社製のARM Cortex-M3コア内蔵マイコンSTM32F107VC 72MHz,256KB Flash, 64KB SRAMを搭載したCPUボードです。タイマー、12BitAD、12BitDA、I2C、USART、SPI、IIS、USB OTG、CAN2.0B、10/100M Ethernet、2.8インチTFT液晶等、多様な機能を搭載しているため、幅広い分野に対応が可能です。...
ARM Cortex-M3/STM32F107開発セット(2.8”TFT液晶タッチパネル+OpenLink)
ST社製のARM Cortex-M3コア内蔵マイコンSTM32F107VC 72MHz,256KB Flash, 64KB SRAMを搭載したCPUボードです。タイマー、12BitAD、12BitDA、I2C、USART、SPI、IIS、USB OTG、CAN2.0B、10/100M Ethernet、2.8インチTFT液晶等、多様な機能を搭載しているため、幅広い分野に対応が可能です、高速USB2...
ARM Cortex-M3/STM32F103-MP3機能搭載開発キット(3.2”TFT液晶タッチパネル付き)
ST社製のARM Cortex-M3コア内蔵マイコンSTM32F103VC 72MHz,256KB Flash, 48KB SRAMを搭載したCPUボードです。128MB Nand Flash、VC1003B(高性能MP3デコード)、USB Host(CH376)、12BitAD、12BitDA、I2C、USART、SPI、IIS、CAN2.0B、10M Ethernet、3.2インチTFT液晶、...
ARM Cortex-M3/STM32F103-MP3機能搭載開発キット(3.2”TFT液晶タッチパネル+OpenLink)
ST社製のARM Cortex-M3コア内蔵マイコンSTM32F103VC 72MHz,256KB Flash, 48KB SRAMを搭載したCPUボードです。128MB Nand Flash、VC1003B(高性能MP3デコード)、USB Host(CH376)、12BitAD、12BitDA、I2C、USART、SPI、IIS、CAN2.0B、10M Ethernet、3.2インチTFT液晶、...
ARM Cortex-M3/STM32F103-MP3機能搭載開発キット
ST社製のARM Cortex-M3コア内蔵マイコンSTM32F103VC 72MHz,256KB Flash, 48KB SRAMを搭載したCPUボードです。128MB Nand Flash、VC1003B(高性能MP3デコード)、USB Host(CH376)、12BitAD、12BitDA、I2C、USART、SPI、IIS、CAN2.0B、10M Ethernet、ジョイスティック等、多様...
ARM Cortex-M3/STM32F103ZE開発キット(3.2”TFT液晶タッチパネル付き)
ST社製のARM Cortex-M3コア内蔵マイコンSTM32F103ZE LQFP144,512KB Flash, 64KB SRAMを搭載したCPUボードです。128MB Nand Flash、512KB SRAM、2MB NOR Flash、USB device、12BitAD、12BitDA、PWM、I2C、USART、SPI、IIS、CAN2.0B、3.2インチTFT液晶等、多様な機能を...
ARM Cortex-M3/STM32F103ZE開発キット(3.2”TFT液晶タッチパネル付き)+OpenLink
ST社製のARM Cortex-M3コア内蔵マイコンSTM32F103ZE LQFP144,512KB Flash, 64KB SRAMを搭載したCPUボードです。128MB Nand Flash、512KB SRAM、2MB NOR Flash、USB device、12BitAD、12BitDA、PWM、I2C、USART、SPI、IIS、CAN2.0B、3.2インチTFT液晶等、多様な機能を...
ARM Cortex-M3/STM32F103ZE開発キット
ST社製のARM Cortex-M3コア内蔵マイコンSTM32F103ZE LQFP144,512KB Flash, 64KB SRAMを搭載したCPUボードです。128MB Nand Flash、512KB SRAM、2MB NOR Flash、USB device、12BitAD、12BitDA、PWM、I2C、USART、SPI、IIS、CAN2.0B等、多様な機能を搭載しているため、幅広い...
ARM Cortex-M3/STM32F103ZE多機能通信開発キット(3.2”TFT液晶タッチパネル付き)
ST社製のARM Cortex-M3コア内蔵マイコンSTM32F103ZE LQFP144,512KB Flash, 64KB SRAMを搭載したCPUボードです。1G bit Nand Flash、4M bit SRAM、16M bit NOR Flash、Ethernet、2.4G無線インタフェース、Tuner、SDカード、USB device、AD、DA、PWM、I2C、USART、SPI、...
ARM Cortex-M3/STM32F103ZE多機能通信開発キット(3.2”TFT液晶タッチパネル付き)+OpenLink
ST社製のARM Cortex-M3コア内蔵マイコンSTM32F103ZE LQFP144,512KB Flash, 64KB SRAMを搭載したCPUボードです。1G bit Nand Flash、4M bit SRAM、16M bit NOR Flash、Ethernet、2.4G無線インタフェース、Tuner、SDカード、USB device、AD、DA、PWM、I2C、USART、SPI、...

疑問・質問・口コミ

ヤフー知恵袋から「USART」に関する疑問・質問・口コミ情報をピックアップ。プチ情報があるかも!?

質問
PIC-PIC間の通信をUSART通信で文字列の受信をするとLEDが反応するようなプログラムを書きたいのですが、うまくいきません。送信側は、puts(”WIDE")を送信しているようなのですが、受信側プログラムがうまくいっていないようです。PIC、C言語共に、やり始めたところでどこが悪いか全くわかりません。受信側プログラムの間違えているところを教えていただけると助かるのですが…ご教授よろしくお願いいたします。受信プログラム↓#include<16f886.h>#use delay(CLOCK = 10000000)#use rs232(BAUD=9600,XMIT = PIN_C6,RCV = PIN_C7)#fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP,MCLR,NOIESO,NOFCMEN,NODEBUG,BORV40#include<string.h>char buf[5];int i,t;char ab[6];#int_rdavoid isr_rcv(){char data;data = getc();if(data != '\r' && data != '\¥n') {buf[i] = data;i++;if(i > 3){ab[t] = buf[i];i=0;} }else{buf[t] = 0;}}void main(){char ji[5] = "WIDE";setup_comparator(nc_nc_nc_nc);enable_interrupts(INT_RDA);enable_interrupts(GLOBAL);while(1){{output_low(PIN_B7); }{if(strcmp(ab[t],ji)){output_low(PIN_B5);ab[t] = 0;}elseoutput_high(PIN_B5);}}} .

ベストアンサー
外野ですみませんが、変数tは何がしたいのでしょうか?初期化もしていないし、値の操作も一切ないですよね。if(strcmp(ab[t],ji))これも文法としておかしいです。abは一次元配列ですから、ab[t]はchar型データとなるため、strcmp関数の第一引数の型と一致しませんから、ワーニングが出ているのではないかと思うのですが。なんかいろいろおかしいですね。やり方としては、受信割り込み処理側ではデリミタ(CR+LFなど)を受信するまで受信キャラクタを順次バッファに格納して、デリミタを検出したら外部変数でフラグを立て、main関数側ではそのフラグが立ったときに文字列比較をするような設計にしてみるとうまくいくと思いますが。もちろん、意図しない文字列を受信したときにバッファを破棄するなど、例外処理も必要ですが。追記まず、外部変数iとtについて、初期値を入れている箇所がどこにもありません。これはまずいです。C言語の仕様として、外部変数は勝手に初期化はしてくれません。一般に、マイコンに内蔵されたRAMや、外部に接続されたRAMの中身は、電源投入時は不定値になっています。当然外部変数はRAMのある領域が割り当てられますから、不定値のままプログラムを動かしてしまったら、どんな結果になるかわからないのです。マイコン用のコンパイラの場合は、ご丁寧にそれらの領域をゼロクリアしてくれるものも存在しますが、そういう手段に頼るのは他のコンパイラを使ったときにミスに繋がりますので、あまり良くないでしょう。今回使われているCCS Cコンパイラの場合はどう処理されていたか失念してしまいましたが、仮に前述したように不定値だったとしたら、buf[i] = dataとしたときに一体どこのアドレスにdataの値が代入されるのかわからないのです。そのようなことにならないように、main関数の冒頭でi = 0、t = 0といった初期値の設定をするべきです。次に、デリミタを検出したらab[t] = buf[i]によって文字列をabという配列にコピーしているつもりなのではないかと思うのですが、これではコピーしたことになりません。これはちょっとここで説明するのはやっかいだなあ・・・。配列変数とはどういうものなのか、文字列は配列変数にどのように格納されているのかということを、C言語の入門本や入門サイトで少し学習された方が良いのではないかと思います。

質問
PIC-PIC間の通信をUSART通信で文字列の受信をするとLEDが反応するようなプログラムを書きたいのですが、うまくいきません。送信側は、puts(”WIDE")を送信しているようなのですが、受信側プログラムがうまくいっていないようです。PIC、C言語共に、やり始めたところでどこが悪いか全くわかりません。受信側プログラムの間違えているところを教えていただけると助かるのですが…ご教授よろしくお願いいたします。受信プログラム↓#include<16f886.h>#use delay(CLOCK = 10000000)#use rs232(BAUD=9600,XMIT = PIN_C6,RCV = PIN_C7)#fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP,MCLR,NOIESO,NOFCMEN,NODEBUG,BORV40#include<string.h> char buf[5]; int i,t; char ab[6]; #int_rda void isr_rcv(){ char data; data = getc(); if(data != '\r' && data != '\¥n') { buf[i] = data; i++; if(i > 3) { ab[t] = buf[i]; i=0;} }else{buf[t] = 0;} } void main(){char ji[5] = "WIDE";setup_comparator(nc_nc_nc_nc);enable_interrupts(INT_RDA);enable_interrupts(GLOBAL); while(1){{ output_low(PIN_B7); }{ if(strcmp(ab[t],ji)) { output_low(PIN_B5); ab[t] = 0; } else output_high(PIN_B5);}}}

ベストアンサー
見た感じ、少なくとも文字列の扱い方 (得に t と ab[] 】の扱いがおかしい気がします。PIC の使い方というより C プログラムに問題があります。まずはこのプログラムを PC に移植し、そこの C で望みとおり動くか試してみるのがいいと思います。

質問
PICで音声通信したいです。具体的には、音声をA/D変換してデジタルに変えてUSARTを使い他のPICで受信し、D/A変換してまた音声に戻すというものです。これは実現すると思いますか?もし実現するなら、ボーレートはどのぐらいになるでしょうか?身勝手な質問ですが、親切な方 回答お願いします。

ベストアンサー
例えば、8bitのADコンバータを3kHzで動かせば、それなりの音声になりそうです。てーと、情報量は24kbps。USARTとADCを同期させるなら、同期モードで24kbps、非同期(UART)モードで30kbps以上の伝送速度があれば良さそうです。・・・あれ、意外と低いな(^^;音質にこだわれば、もっと高レートが必要になります。

質問
AVR Atmega88P AD変換結果をシリアル通信で送信し、10進数で表示させたい。//データを送信するvoid USART_Tx(char tx_data){ while(!(UCSR0A & (1<<UDRE0))) ; UDR0 = tx_data;}//データの文字列をUSART_Txに送る関数void STRING_OUT(char *msg_string){ unsigned char i; i = 0; while(msg_string[i] !=0x00) { USART_Tx(msg_string[i]); i++; }}void ADcon(void){ unsigned char AD; .....................AD変換処理AD = ADCH;//8ビットAD変換結果PORTD = AD;;}AD変換結果をLEDで表示することは出来ていますが、このAD変換結果を10進数でパソコンの画面に表示させたいのです。参考書、ネットを見ると、USART_Tx、STRING_OUT関数は関数名は違っても基本的に書くことは決まっていることが分かりました。STRING_OUT("1");とすれば、シリアル通信で1が送信され、パソコンの画面に表示されることは分かるのですが、AD変換結果を同じように10進数で表示させるにはどうしたら良いのでしょうか?

ベストアンサー
ライブラリ関数itoaもしくはsprintfを使うのがいいでしょう。---#include <stdlib.h>(略)char str[16];itoa(AD, str, 10);---itoaの第三引数が基数で、変数ADの内容を十進数文字列に変換してstrに設定されます。---#include <stdio.h> (略)char str[16];snprintf(str, sizeof(str), "%d", AD);---snprintfは文字列バッファサイズ指定機能付きのsprintfで、第二引数でバッファサイズを指定します。バッファが溢れてメモリが壊される心配がありません。第三引数がフォーマット文字列で、「%d」で、その次の引数を10進数文字列に変換することを指定しています。以上、どちらのやりかたでも、文字列変数 strには、数値ADを10進文字列にしたものが設定されます。sprintfはC言語の標準ライブラリ関数ですし、itoaは非標準ですがたいていのC言語環境にある関数ですので、詳しい使い方はC言語のリファレンスなどを調べてください。itoaは数値の文字列変換しかできませんが、プログラムサイズはコンパクトです。sprintfの方はプログラムサイズは大きくなりますが、高機能ですのでメッセージの作成とかには便利です。たとえば、snprintf(str, sizeof(str), "A/D read value=%d\r\¥n", AD);とかすれば、「A/D read value=15<改行>」という文字列が作れます。どちらを使うかは適材適所で。ただし、WinAVRの場合、何も設定しない場合はprintfで浮動小数点数値は扱えません。(浮動小数点数処理に対応するためにプログラムが肥大化するため)浮動小数点数を使いたい場合は、使用するライブラリを切り替える必要があります。http://www.henteko.org/fswiki/wiki.cgi?page=WinAVR%A4%CEprintf%A4%C7%C9%E2%C6%B0%BE%AE%BF%F4%C5%C0%A4%CE%BD%D0%CE%CF追記:補足について> この、10進数に変換した値を、STRING_OUT関数に渡していくということでしょうか?はい、それで記述は問題ないかと思います。

質問
picのプログラムについて質問授業でPICの16f84aをほんの少しだけですが学び、PICに興味が出たためラジコンカーなどを作れたらと思い作成をしてみたのですが、参考に見ていたホームページのPICは16f628aでプログラムの仕様?が異なっているせいか苦戦しています。管理人の方に問い合わせしましたが放置されているのか連絡はありませんでした。 学校にある参考書や色々なホームページを見ましたが未だにわからない状態です。藁にもすがる思いで知恵袋のアンサーの皆様のお力をお借りできたらと考え書き込みしました。質問内容は以下の受信側のプログラムを動かすためにはvoid mainの前に何を書けばいいのか(#includeなど)わからなかったので教えていただきたいです。何卒お願いします/** * 無線データ受信、車動作 * * PIC 16F628A * 発信器:内臓4MHz * 電源:乾電池4本(6.0V) * 右モータ: RB0, RB3 左モータ: RB4, RB5 * LED: RB6 * * Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON _WDT_OFF * _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT * * 言語 MikroC v2.1 */ void main(){ //メインプログラム unsigned short int data; PORTB = 0b00000000; //PORTBの中身をきれいにする TRISB = 0b00000010; //PORTB RB1:入力、他7ヶは出力設定 //稼働確認 1秒前進 PORTB = 0b00100001; //左前進、右前進 Delay_ms(1000); //1秒待つ PORTB = 0b00000000; //ストップ(OFF) Usart_Init(2400); //通信速度を2400 band rateに設定 do { //doとwhileの間を繰り返す if(Usart_Data_Ready()){ //受信状態の確認 data = Usart_read(); //データの受信 switch(data){ //受信データの内容でA-Hの動作 case 'A': PORTB = 0b00100001; //左前進、右前進 break; case 'B': PORTB = 0b00010001; //左後進、右前進 break; case 'C': PORTB = 0b00000001; //右前進 break; case 'D': PORTB = 0b00101000; //左前進、右後進 break; case 'E': PORTB = 0b00100000; //左前進 break; case 'F': PORTB = 0b00011000; //左後進、右後進 break; case 'G': PORTB = 0b00001000; //右後進 break; case 'H': PORTB = 0b00010000; //左後進 break; default : PORTB = 0b00000000; //ストップ(OFF) break; } } PORTB.F6 = ~PORTB.F0; } while(1); //doとwhileの間を繰り返す } //メインプログラム終わり

ベストアンサー
>* 言語 MikroC v2.1 とあるのだから、まずはMikroCのマニュアルを見るべきと思いますが。http://www.mikroe.com/pdf/mikroc/mikroc_manual.pdfあと、628AのDataSheetかな。ConfigBitの設定は、書かれてるとうりに記述すればいいと思うよ。>* Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON _WDT_OFF>* _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT Mikroの書き方を知らないので・・・includeするヘッダファイルを参照して。I/O Port設定には、先立って CMCON あたりの設定が要るみたい。usart使うなら、Mikroでなんかを取り込まねばならんのでないかな。

このページはWebサービスを利用して作成されています。詳しくは以下のページをご覧ください。

リサーチ115とは?


since 2010/05/13 Copyright (C) 115. All Rights Reserved