2022年6月14日火曜日

Raspberry Pi Pico PIOが少し理解できた。1回目

 Interface誌のPIOの解説を読んだが、まったく理解できなかった。

しょうがないので、先人たちの知恵をGoogleで探してようやく少し理解できた。

ヒントはこのサイトにあった。

https://qiita.com/keyyum/items/aa171aa295b714bb8467

先ず私が誤解していたのが

OUT命令だった。

OUT pins, 2

てっきり一つの端子から、TX FIFOに入ったデータが2ビット分で出来るのかと思っていたが、間違いで、イメージとしては2つの端子に出力するコマンドらしい。

よって下記のように書くと OSRからデータを引っ張ってきてOSRから2ビット分を2つの端子に出力するという事のようだ。

loop: pull ; TX_FIFOからOSRへデータをPULL out pins, 2 ; OSRから2bit分出力ポートへ jmp loop ; 先頭に戻る


もう一つ勘違いしていたのが、上記の命令を行った後、ようはTX FIFOからデータをpullするとデータは空になると思っていたが、FIFOのデータは空にならなく、下記プログラムのようにFIFOを書き換えるまではキープされるようだ。

pio_sm_put_blocking( pio, sm, 0x0001 ); /* ( GPIO3, GPIO2 ) = ( L, H ) */

/* TX FIFOにデータを書き込み */ sleep_us( 1 ); /* 1us待機 */ pio_sm_put_blocking( pio, sm, 0x0002 ); /* ( GPIO3, GPIO2 ) = ( H, L ) */ /* TX FIFOにデータを書き込み */


ここまで理解するのに1週間が掛かった。

0 件のコメント:

コメントを投稿