約 2,001,646 件
https://w.atwiki.jp/phktech_tips/pages/15.html
UARTでパソコンと通信する これができなきゃデバッグできん。 かのマイコン野郎は言いました。"タイマ割り込みとシリアル通信ができればそのマイコンは制覇したのも同然"と。 ハードウエア準備 UART1を使って通信する。 PA10がUSART1_RX/PA9がUSART1_TX。 電圧レベルを変換するためADM3202を介してUSBシリアルケーブルと接続。 割り込みを使わずに送信だけしてみる 追加プログラム //UART1にクロックを供給 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);//オルタネート出力を使う場合はここにもクロック供給の設定が必要 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 , ENABLE);//USART1クロック //PA13,15を出力ポートにする //PA9をオルタネート出力(USART1_TX)にする GPIOA- CRH = (((uint32_t)0x03) 28 ) | (((uint32_t)0x03) 20 ) | (((uint32_t)0x0B) 4); //UARTの設定 //UE(USART ENABLE ON B13)/TE(送信イネーブル B3) ON / RE(受信イネーブル B2)ON USART1- CR1 = _BV(13)|_BV(3)|_BV(2); //ボーレート設定 USART1- BRR = (468 4) | 12;//9600bps 計算式はデータシート参照 //データ送信 USART1- DR = A ; ちゃんと関数にする //一文字出力 void Serial_Write(uint8_t d){ //TXEが1になるまで待機 //TXEが1になる条件 DRの値が転送された=新たにデータを書いてもOK while((USART1- SR _BV(7)) == 0); //データライト USART1- DR = d; } //文字列出力 void Serial_Puts(char *str){ while(*str){ Serial_Write(*str); str++; } } Serial_Puts("Hello STM32 World!\n"); //ターミナルに文字列表示 こんな感じ。 メモ USARTのボーレートの計算にはCPUクロックの周波数が必要。USART1は72MHzが供給できるが、他のUSARTには36MHzまでしか供給できない。 ボーレートの設定値には小数も使用できる。 プログラムZIP 割り込み無しシリアル送信 FIFO付き送信(割り込み使用)
https://w.atwiki.jp/stm32uc4crs/pages/14.html
UART通信とは Universal Asynchronous Receiver Transmitterの略で,所謂"シリアル通信"です. マイクロコントローラに搭載される通信規格のうち最も一般的なものの一つです. I2CやCANとは違い,全二重通信です.他にはSPIなども全二重通信です. STM32では,ブロッキング通信と,割り込みまたはDMA (Direct Memory Access) を用いたノンブロッキング通信が利用可能です. GPIOピンの設定 STM32CubeMXが勝手に書いてくれます.やったね. ブロッキング通信 HAL_UART_Transmit(...)を呼び出して送信.送信完了まで次の命令は実行されない. 受信も同様. 割り込みベースのノンブロッキング通信 書きかけ. DMAベースのノンブロッキング通信 勉強中です.
https://w.atwiki.jp/stm32uc4crs/pages/27.html
前回と前々回でGPIOの扱い方を検討しました. 今回はUART通信の扱い方を検討します. 所謂"シリアル通信". ここではハードウェアフロー制御もクロック線も使用しない. 全二重UART通信 初期化して通信する.簡単だね! GPIOを初期化する.PA9とPA10をUARTに接続. UARTを初期化する.ビットレートなどを設定. クロックの供給を忘れずに. STM32F103C8T6は,3系統のUSARTペリフェラルをもち,それぞれを同時に,独立に使用することができます. (比較的)安価なAVRマイコン(例えばAtMega328P,AtMega88V,AtTiny2313などなど)は,一般的にUSARTを1つしか持ちません.そのようなデバイスでは,USARTを用いて複数のデバイスと通信するのは大変困難です. まぁ何よりもまずは使ってみましょう. 以下に,GPIOとUSARTペリフェラルをUART通信のために初期化(設定)するコードの例を示します. RCC, GPIO まずは復習っぽいところから. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE); 忘れると動きません.きをつけて.もしかすると引数にはRCC_APB2Periph_AFIOも必要かもしれません. GPIO_InitTypeDef gpioInit; /* GPIOA PIN9 alternative function Tx */ gpioInit.GPIO_Pin = GPIO_Pin_9; gpioInit.GPIO_Speed = GPIO_Speed_50MHz; gpioInit.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, gpioInit); まずは前回のようにGPIOの初期化をします.ModeにGPIO_Mode_AF_PPを指定することで,PAをUSARTの送信(Tx)ピンとして設定できます. /* GPIOA PIN10 alternative function Rx */ gpioInit.GPIO_Pin = GPIO_Pin_10; gpioInit.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, gpioInit); 同様に,ModeにGPIO_Mode_IN_FLOATINGを指定してPA10を受信(Rx)ピンとして設定します.GPIO_Mode_AF_PPのAFはAlternate Functionを,PPはPush Pullをそれぞれ表します. いよいよUSARTを初期化します.とはいえこれの読者はU(S)ARTをまだよく知らないでしょうから,今は理解しようとしなくてもいいです.(もちろん理解しようという意欲があればより好ましいのですが,この段階で色々と無理やり理解しようとして挫折されるのは,筆者としては何としても避けねばなりません P) USART_InitTypeDef usartInit; usartInit.USART_BaudRate = 115200; usartInit.USART_HardwareFlowControl = USART_HardwareFlowControl_None; usartInit.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; usartInit.USART_Parity = USART_Parity_No; usartInit.USART_StopBits = USART_StopBits_1; usartInit.USART_WordLength = USART_WordLength_8b; USART_Init(USART1, usartInit); 設定項目は多いですが,やることはGPIOのときと同じです:(a)初期化の操作に必要な構造体(XXX_InitTypeDef)を作り,(b)各フィールドに適切な値を指定して,(c)初期化の関数(XXX_Init())を呼び出せば,初期化は完了です.STM32では基本的に全てこのパターンでペリフェラルを初期化してゆきます. 最後に大事な操作です.USARTを含む幾つかのペリフェラルは,初期化した後に有効化をしないと使うことができません.そこで,最後に USART_Cmd(USART1, ENABLE); という記述を加えてやります.これでUSARTを使う準備が整いました. ☆(読み飛ばしてよい・ここから) 後述する割り込みを使用する場合にはUSART_ITConfigを呼び出して,USARTペリフェラルが割り込みフラグを設定できるようにします. USART_ITConfig(USART1, USART_IT_TXE, ENABLE); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); ☆(読み飛ばしてよい・ここまで) 今回はGPIOを設定したのちにUSARTの設定をしましたが,必ずしもこの順番に沿う必要はありません.USARTの設定をしてからGPIOの設定をしても同様に動作することが期待されます.
https://w.atwiki.jp/kisarazu_maicon/pages/55.html
UART 通信規格の一つで、主にパソコンとの通信に使われることが多い。 RS-232Cシリアルポートはこの規格で通信している。 Universal Asynchronous Receiver Transmitterの略 特徴 UARTは一般的な通信規格であり、その信号も単純。 信号はグランド(GND)、送信(TXD)、受信(RXD)の3本。送信と受信はクロスさせる。 よって送受信が同時に(かつ個別に)可能である。 ただし、速度は速いとは言えず、ノイズにも耐性は高くない。 ちなみにUARTには上位の仲間としてUSARTなども存在する。 どんな信号? UARTの信号は単純で、次の4つに分けられる。 スタートビット データビット (パリティビット) ストップビット さらにデータ無転送時のhigh状態がある。 そして、UARTのA、非同期式である最大の問題が、通信速度の設定である。 単純なパルスの送信であるが、そのパルス幅は両方の機器で設定する必要がある。 これに誤差があると通信ミスなどの問題が起こる。速度を早めるとこれは顕著に現れる。 まあ、失敗したらゆっくりに設定しなおせばいいんだけど。 では、解説していこう。 まず無転送な状態では、TXDからはhighの状態の電圧が出力される。 もしRXDがGND電圧であり続けると、エラーとして処理される。 エラー処理に関しては、機器によって違うのでなんともいえない。 送信側が信号を送る状態になると、まずTXDからスタートビットが出力される。 これは1ビット分のlow出力で、受信側はこの立ち下がりを検出することでデータを受信するタイミングの同期を行う。 そこからはデータの送受信を行う。 両者が設定した通信速度でデータの送信、受信を行い、8ビットまたは7ビットのデータ転送を行う。 疲れたのでまずはここまで。 dsPICの仕様書のUARTの一部を日本語訳したもの dsPIC_UART.doc
https://w.atwiki.jp/kisarazu_maicon/pages/115.html
STM32-UARTの使い方 STM32VLDISCOVERYにはUARTが3つ搭載されています。 このうちUART3は他の機能が載っておらず5Vトレラントなのでデバッグ、XBeeとの通信用に最適です。 UART ピン番号 UART1-RX 10,PA(10) PWMと排他,5Vトレラント UART1-TX 9,PA(9) PWMと排他,5Vトレラント UART2-RX 3,PA(3) PWMと排他,非5Vトレラント UART2-TX 2,PA(2) PWMと排他,非5Vトレラント UART3-RX 27,PB(11) 5Vトレラント UART3-TX 26,PB(10) 5Vトレラント Arduinoであれば基板上にUART-USB変換ICが載っているので、何も接続せずにUARTのテストが出来るのですが、STM32VLDISCOVERYには載っていないの自分でUSB-UART変換基板に接続する必要があります。 今回はXBeeエクスプローラUSB基板をSTM32VLDISCOVERYと接続してテストしました。 写真のようにUART3とXBeeエクスプローラUSB基板をジャンパ線で接続します。 次に以下のようなスケッチを書きます。 簡単なループバックテストプログラムになっています。 スケッチが終わったら、プログラムをアップロードしたあと、UART-USB基板のcomポートを選択します。 最後にメニューからSerialMonitorを選んでtestを送信して帰ってくるか確認します。 XBeeとの接続
https://w.atwiki.jp/project_c3/pages/60.html
Project C3 Wiki USBUART PSoCのUserModuleにUSBUARTというものがあり、これは以下のような概要です。 ・このモジュールで生成したファームを組み込んで実行した場合、PCへ登録するinfファイルはlibフォルダに入っている ・PCからは、PSoCのUSBがCOMポートとして認識され、ポート番号が割りあてられる。 ・PSoC側では、生成されたAPIにより、PCとUARTを介したようなやりとりができる。
https://w.atwiki.jp/quarte/
@wikiへようこそ ウィキはみんなで気軽にホームページ編集できるツールです。 このページは自由に編集することができます。 メールで送られてきたパスワードを用いてログインすることで、各種変更(サイト名、トップページ、メンバー管理、サイドページ、デザイン、ページ管理、等)することができます まずはこちらをご覧ください。 @wikiの基本操作 用途別のオススメ機能紹介 @wikiの設定/管理 分からないことは? @wiki ご利用ガイド よくある質問 無料で会員登録できるSNS内の@wiki助け合いコミュニティ @wiki更新情報 @wikiへのお問合せフォーム 等をご活用ください @wiki助け合いコミュニティの掲示板スレッド一覧 #atfb_bbs_list その他お勧めサービスについて 大容量1G、PHP/CGI、MySQL、FTPが使える無料ホームページは@PAGES 無料ブログ作成は@WORDをご利用ください 2ch型の無料掲示板は@chsをご利用ください フォーラム型の無料掲示板は@bbをご利用ください お絵かき掲示板は@paintをご利用ください その他の無料掲示板は@bbsをご利用ください 無料ソーシャルプロフィールサービス @flabo(アットフラボ) おすすめ機能 気になるニュースをチェック 関連するブログ一覧を表示 その他にもいろいろな機能満載!! @wikiプラグイン @wiki便利ツール @wiki構文 @wikiプラグイン一覧 まとめサイト作成支援ツール バグ・不具合を見つけたら? 要望がある場合は? お手数ですが、お問合せフォームからご連絡ください。
https://w.atwiki.jp/project_c3/pages/36.html
PSoC このページの目次 このページの目次 [#r267aea6] USBUARTにも使用できる、出力先選択可能なprintfを作成する [#hb240882] PSoCマイコンのCコンパイラで可変長引数を使用する [#c5cf25ec] 関数コール時の引数のメモリー構造を確認する [#ka3bb2f0] stgarg.h va_*互換マクロを作成する [#a9ef11ad] ctprintf(Const書式指定文字列版Tiny printf)を実装する [#i95c96d9] USBUARTに出力する関数をコールバックにしてprintfモジュールの汎用性を出す [#gd3b6808] USBUART文字列出力処理(コールバック登録用)を作成する [#i16260fa] ctprintf関数の実装 [#za386437] PSoC用USBUART printf互換関数全ソースソースコードについて [#w8dd4639] ダウンロード [#x6524f95] 謝辞 [#r3a984e7] USBUARTにも使用できる、出力先選択可能なprintfを作成する printf関数は、C言語の標準関数の一つで、標準出力に書式整形文字列を出力する基本的ながらとても重宝する関数です。 組み込みにおいても、処理でprintf出力を使用できると、便利だと思います。 しかし、組み込みでは、そもそもいわゆるコンソールというものを搭載しているとは限らず、printfの目的も、ユーザーへの表示(UIとしての)の場合もあれば、デバッグ用のログ出力であったりと多種多様です。 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (compare_process_printf.gif) このページでは、USB搭載PSoCのUSBユーザーモジュールである「USBUART」を使用し、PCにデバッグログを表示する事にも使用できる処理を作成します。但し、出力先はUSBUART固定とせず、printf処理の初期化時に選択できるようにし、汎用性を持たせます。 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (call_PSoC_printf.gif) PSoCマイコンのCコンパイラで可変長引数を使用する PSoCマイコンのCコンパイラには、可変長引数を実現するstgarg.hや、va_*マクロなどの提供が標準では無いようです。 そこで、可変長引数を取り扱うための実験をしてみます。 C言語では、可変長引数を取り扱う場合、以下のようなプロトタイプ宣言を使用します。 TEST_printf(const char* format, ...); 「...」の部分は、可変個数の引き数を持つ場合の宣言方法です。 この宣言をする事で関数を呼ぶ場合に引数の個数は固定されません。 関数コール時の引数のメモリー構造を確認する TEST_function(char c,short s,long l,char c){ // ここでc、s、l、c各変数のアドレス値を確認する } アドレス[byte] 変数名 Offset+0 c Offset-1 s Offset-2 Offset-3 l Offset-4 Offset-5 Offset-6 Offset-7 c というわけで、第一引数(c)から、それぞれ次の型のサイズ分アドレスを遡っていく事で値のアドレスに到達できます。仮に、変数cのアドレスが0220hの場合、変数sは、0x021e〜0x021fの範囲に存在しています。 stgarg.h va_*互換マクロを作成する 上記から、stgarg.hで提供される可変長引数アクセス用マクロva_*()を作成してみます。 typedef char* va_list; #define va_start(ap, p)(ap = (va_list)( p)) #define va_arg(ap,type)(*(type*)((ap-=sizeof(type)))) #define va_end(ap) va_arg(引数の値にアクセスするためのマクロ)は、型を指定する度にアドレスを遡って参照していくため、sizeof(type)をアドレスから減算しています。 ctprintf(Const書式指定文字列版Tiny printf)を実装する ctprintf()は、通常のprintf関数同様、可変長引数を使用します。 まずは、printfのTiny版ctprintfを実装、そこから、vsprintfのConst/Tiny版であるcvtsprintfをコールするような構造にします。 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (tprinf.png) cvtsprintfでは、引数で指定した書式指定文字列を解析し、%dや%sなどの指定子に応じて、続く引数で指定された変数から値を読み取り、文字列に追加していきます。 %dや%xなどの数値を文字列データに変換するモジュールを作成し、そのモジュールに値を渡すことで変換します。したがって、cvtsprintf関数には各形式毎の変換関数がぶら下がっています。 printfでは、以下のように書式指定文字列を書き込みます。 printf("Hello your name is %s and your age is %d old.\n",YourName,YourAge); ここで作成するctprintfは、標準のprintfをベースとしますが、文字列指定(%s)に関しては、参照先がconstの場合、non-constの場合の指定子を分ける必要がありますので、ある程度変更し、以下のようにしました。 書式指定子 内容 %d 10進 int型 %x 16進 int型(0-9a-f) %X 16進 int型(0-9A-F) %s char* ASCIIZ文字列 %S const char* ASCIIZ文字列 %c 1文字表示 int型 USBUARTに出力する関数をコールバックにしてprintfモジュールの汎用性を出す 通常、printf関数の出力先は標準出力(STDOUT)です。このモジュールでは、ctsprintfから最終的に文字出力を行う関数をコールバック関数とし、初期状態でtprintf_SetCallBack関数で出力用関数を登録して使用するようにすることで、printf関数モジュール群に出力デバイス依存処理が排除できるため、汎用性を持たせるようにしました。多分、通常のUARTでも使用できるかと思います。 void tprintf_SetCallBack(void (*)(char*)); static void (*uart_txs)(char*); /** Type printf標準出力用関数をコールバック登録する * @param func ASCIIZ文字列を出力できるvoid func(char*)型関数へのポインタ * @note NULLを指定しないこと */ void tprintf_SetCallBack(void (*func)(char*)){ uart_txs = func; } USBUART文字列出力処理(コールバック登録用)を作成する USBUARTで、文字列を出力する為の関数を作成します。 /** USBUARTへ文字列出力する * @param str 出力したいASCIIZ文字列に対するポインタ */ static void usbuart_stdout(char* str){ int len; len = tstrlen(str) + 1; while (!USBUART_bTxIsReady()); USBUART_Write(str,len); } こちらは簡単で、文字数をtstrlenで調べてろUSBUART_Write(USBUARTのAPI関数)に渡すだけです。 M8C_EnableGInt; // Global Interrupts有効化 USBUART_Start(USBUART_5V_OPERATION); tprintf_SetCallBack(usbuart_stdout); // 文字列出力用コールバック関数を登録 while(!USBUART_Init()); // USBUART初期化終了待ち このようにusbuart_stdout()関数を初期化時に登録しておくことで、ctprintf()で文字列を表示する時にusbuart_stdout関数を使用してUSBUARTから出力できるようになります。 ctprintf関数の実装 ここまでで作成したva_*マクロを使用し、最終的な表示にコールバック関数をコールするstprintfを実装します。 /** const文字列用Tiny printf関数 * @param fmt 書式指定文字列 * @param [argument]... 省略可能な引数 * @return 生成文字の文字数 * @note fmtに指定する文字列はROM内に確保したものを指定してください */ int ctprintf(const char* fmt, ...){ char buf[80]; va_list ap; int len; // コールバックが設定されていない場合の確認 if (uart_txs == NULL){ return(-1); } va_start(ap, fmt); len = cvtsprintf(buf, fmt, ap); va_end(ap); // 出力用コールバック関数をコール (*uart_txs)(buf); return(len); } PSoC用USBUART printf互換関数全ソースソースコードについて ここまで紹介させていただきましたvtprintf関数、内部で文字列処理するcvtsprintf関数、その他の全ソースとテスト用のmain()関数、プロジェクトファイルをまとめてここに置いておきます。 このアーカイブの使用方法は以下です。 アーカイブを解いて、USB_UART_UM.SOCをPSoC Designerで開く。 コンパイルする(既にコンパイル済みオブジェクトは含まれていますのでコンパイルしなくても書き込み出来ます) PSoC MiniProgで書き込みます。 PSoCボード上のUSBポートとPCとを接続します。 デバイスドライバは、アーカイブのlib/USBUART.infを使用して下さい。 COMポートが新規追加されますので、TeraTermまたはハイパーターミナルで当該ポートを開いてください。 ボーレート等は何でもOKです。 何かキーを押すたび、以下のテストメッセージが表示されるはずです。 i = 31(Hex 1F)(ROM Hello)(RAM R A M!) 123 i = 32(Hex 20)(ROM Hello)(RAM R A M!) 123 i = 33(Hex 21)(ROM Hello)(RAM R A M!) 123 i = 34(Hex 22)(ROM Hello)(RAM R A M!) 123 i = 35(Hex 23)(ROM Hello)(RAM R A M!) 123 i = 36(Hex 24)(ROM Hello)(RAM R A M!) 123 i = 37(Hex 25)(ROM Hello)(RAM R A M!) 123 【テストメッセージ表示で使用しているctprintf関数コール部分】 i++;// インクリメント tstrcpy(ram,"R A M!"); ctprintf("i = %d(Hex %X)(ROM %S)(RAM %s) %c%c%c\n\r",i,i,"Hello",ram,0x31,0x32,0x33); ダウンロード #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (usbuart_printf_sample.zip) vcディレクトリ内に、VisualStudio2005でソース編集する為のソリューションファイルを作成しておいてあります。なお、VisualC++2005 ExpressEdition(フリーのVC++)でも参照可能です。 謝辞 元々H8用に作成していたprintf処理をPSoCに移植しようとして、あまり気力が無くて諦めていたときに、以下のお二つの記事/サイトの影響を受け、作成を続けることが出来ました。 ありがとうございます。 PastelMagic 桑野さんのpr.c(UART用printf処理) - PSoCマイコンをご販売いただきました。 また、PSoC USBUART用printfの実装を諦めていたときに、桑野さん作のUART用printfを見て影響を受けました。 Atelier Blue アトリエブルーさんのC言語での可変個の引数 http //www.atelier-blue.com/memo/memo2006-4-16.htm - 参考にさせていただきました。 アクセスカウント(累計) - アクセスカウント(本日) - アクセスカウント(昨日) -
https://w.atwiki.jp/project_c3/pages/33.html
PSoC/PSoCのUSBモジュールの使用 このページの目次 このページの目次 [#weae0d7a] USBUARTユーザーモジュールの試用 [#ua057814] USBUARTモジュールのPlace [#w4baf559] main関数にテスト用処理を実装する [#bd2ec68f] 実際にPCと接続してテストを行う為の準備 [#o95d046e] 実際にPCと接続してテストを行う [#uc6b0a55] ここまでのまとめ [#le9592f0] UARTでの文字列の出力方法 [#f5a81754] USBUARTの初期化 [#b09f46cf] 文字列の出力 [#f712226f] 16進数値の出力 [#l8150f6e] USBUARTの応用 [#l1346e78] USBUARTユーザーモジュールの試用 ここでは、CypressのUSBUARTユーザーモジュールを使用したプログラミングについて、実験しながら使用し、とりあえずUSBUARTを使用し、printf互換関数でPCにデバッグログ出力をできるようにしていきたいと思います。 USBUARTモジュールのPlace USBUARTモジュールを選択、配置(Place)する PSoC Designerで、Vide→Device Editorを選択し、Config→Selectionを選択するこれで、ユーザーモジュール選択の画面になります。 ProtocolsグループのUSBUARTをダブルクリックする初期状態では、「USBUART_1」になっていると思います。ここでは、名称変更で「USBUART」にします。これで、USBUARTが選択されます(まだ、配置はされていません)。 Selected User Modulesの #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (selectitem.gif) USBUARTの設定を行う Config→Interconnectを選択する Selected User ModulesのUSBUARTモジュールを選択する パラメータを入力する#ref(UserModuleParams.gif) こちらに入力します。とりあえずVendorID等は暫定的にCypressのものを設定してみました。このまま入力していただければとりあえず正しく動作しますが、お好きなID/Stringで問題ありません。 APIの生成を行うConfig→Generate Applicationを選択すると、ユーザーモジュールにアクセスする為のAPI群が生成されます。 main関数にテスト用処理を実装する main関数へのテスト処理の導入main.cが自動生成されていますので、このファイル内のmain()関数に、USBUARTモジュールのヘルプのサンプルコードをコピーしてテストしてみます。 Sample Codeの項目を見てみてコピーペーストします。 USBUARTモジュールの名称によって、API関数プリフィックスが変化します。 ユーザーモジュール名がUSBUARTの時 USBUART_Start() ユーザーモジュール名がUSBUART_1の時 USBUART_1_Start() CompileするF7キーを押すと、コンパイルできます。エラーが出たら、コピーミスがないか、確認してください。 マイコンを書き換えるMiniProgとPSoCボードの端子を接続し、Program→Program Partを選択します。すると、PSoC Programmerというツールが起動します。 「Program」ボタンがグレー表示で押せない場合は、正常にCompile/ビルドが生成されていない可能性がありますので、一度そちらを確認して下さい。 正常なら「Program」をクリックすると、30秒程度で完了します。 実際にPCと接続してテストを行う為の準備 PCに接続する書き換えたら、一度MiniProgをはずし、PSoCマイコンボードのUSBポートとPCのUSBポートとを接続します。すると、新しいハードの追加ウィンドウが出てきます。 infファイルの設定今回生成したPSoCのプロジェクトフォルダには、libというフォルダが自動的に生成されています。この中に、Windowsにデバイスとして登録させる為のinfファイルが生成されていますので、libディレクトリを指定します。しばらくすると、デバイスの登録が完了します。 登録されたCOM番号を確認するPCにCOMポートとして登録されたとしても、それがCOMの何番になっているのかがわからないと通信できまんので確認します。 スタートボタンから、コントロールパネルを起動する システムを選択し、ハードウェア→デバイスマネージャーを選択する。 ポート(COM と LPT)の中を見て、COMの何番か確認する ここまで完了したら、実際に通信ソフトを起動して通信してみましょう。 実際にPCと接続してテストを行う TeraTerm または、ハイパーターミナル(Windowsの標準アクセサリ)を起動する 通信が開始したら、キーボードの任意のキーを押してみてください。文字が表示されると思います。 ここまでのまとめ ここまでで、エコーバックの処理が動作している事が確認できました。 地味な動作ですが、表示されているデータは、キーボードから入力されたものが一旦PSoCマイコンに転送され、PSoCマイコンから改めて打ち返されてきたデータです。 UARTでの文字列の出力方法 ここでは、USBUARTのユーザーモジュール名を「USBUART」として設定したとして説明します。もし違う名称でモジュールを宣言した場合には、API関数のプリフィックスを変更して下さい。 USBUARTの初期化 以下のようにしてUARTを初期化します。USBUART_Init()がTRUEになれば初期化完了です。 M8C_EnableGInt; USBUART_Start(USBUART_5V_OPERATION); while(!USBUART_Init()); 文字列の出力 以下のようにして文字列を出力します。以下は、文字列がROM内(const)の場合です。 while (!USBUART_bTxIsReady()); // UART出力可能になるまで待つ USBUART_CWrite("Hello,world\n\r",13); // 文字列出力 文字列がRAM内の場合には、以下のようにして出力します。 char str[] = "Hello,world\n\r"; while (!USBUART_bTxIsReady()); // UART出力可能になるまで待つ USBUART_Write(str,13); // 文字列出力 16進数値の出力 変数の値を出力した意場合などは、以下のようにします。 int i = 0x32; while (!USBUART_bTxIsReady()); // UART出力可能になるまで待つ USBUART_PutSHexInt(i); // 変数iの値を出力する ここで指定する値は、ポインタではありませんので、constであるかどうかを気にする必要はありません。 USBUART API関数で文字列送出関数を呼び出す場合には、毎回USBUART_bTxIsReady()をして送出可能になっているかどうか確認しましょう。 USBUARTの応用 USBUARTをデバッグに役立てるため、printf関数のサブセットを作成し、デバッグに生かしていきたいと思います。 USBUART用printfの作成 アクセスカウント(累計) - アクセスカウント(本日) - アクセスカウント(昨日) -
https://w.atwiki.jp/my-sql/pages/118.html
HOME 関数 日付と時刻関数 QUARTER QUARTER QUARTER(date) date に指定された日付に対応する四半期を、1 〜 4 の範囲の値として返す。 mysql SELECT QUARTER( 98-04-01 ); - 2