Bubble, bubble, toil and cuddle !!!

March 8, 2021
XML
カテゴリ: 作りモノ
今日は早めで帰宅は18時過ぎ。

Raspberry Pi Pico で NTSC モニタに出力した ときには、水平同期のタイミングは結構いい加減に(自分でタイミングを合わせるように)作ってました。これをタイマを用いた割込ベースのタイミング生成にしようとしてたのですが、タイマ使用中は sleep_us() が使えないので、水平同期信号の時間が制御できませんでした。

っちゅうことで、タイマの代わりにPWMのカウンタが設定値になったときにかかる割込( PWM_IRQ_WRAP )を使って、一定間隔で水平同期信号を発生させることにしました。この割込を有効にするには、まず PWM で使用するピンを決めてスライス番号を設定する必要があります。

// GPPWM pin is the PWM output
gpio_set_function(GPPWM, GPIO_FUNC_PWM);
// Figure out which slice we just connected to the GPPWM pin
uint slice_num = pwm_gpio_to_slice_num(GPPWM);

この後に、スライス番号に対するPWM割込をクリアしてからPWM割込を有効にします。

pwm_clear_irq(slice_num);
pwm_set_irq_enabled(slice_num, true);

次に、PWM割込(PWM_IRQ_WRAP)に対する割込ハンドラ(水平走査線の処理=垂直同期+水平同期+フォント描画を行う関数、ここでは horizontal_line )を設定してから、PWM割込を有効にします。

irq_set_exclusive_handler(PWM_IRQ_WRAP, horizontal_line);
irq_set_enabled(PWM_IRQ_WRAP, true);


この時点ではまだPWMが有効になってないので割込はかかりません。



// Set counter wrap value to generate PWM interrupt by this value
pwm_set_wrap(slice_num, 7999);
// Load the configuration into our PWM slice, and set it running.
pwm_set_enabled(slice_num, true);


これで64us周期のPWM割込(PWM_IRQ_WRAP)毎に水平走査線の処理を行うことができます。

プロジェクトは pa-art/test_ntsc に置いてあります。

見た目は前と変わらんけど... (^^;
見た目は前と変わらんけど... (^^;

前は無限ループの中で水平走査線処理を行っていたのですが、今回は割込で水平走査線処理を行うので、無限ループの中では好きな処理ができます。VRAM操作をすれば画面に反映されます。かなりウェイトをかけないと速すぎて困るぐらいです。(^^;; っちゅうことで、ゲームなんかも作れると思います。

行ったり来たりしてるバーの表示もかなりウェイトかけてる


ちなみにコンパイルはデバッグモードで行ってます。
--- 20:00 ---





お気に入りの記事を「いいね!」で応援しよう

Last updated  March 8, 2021 08:03:56 PM
コメントを書く
[作りモノ] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Keyword Search

▼キーワード検索

Category

Favorite Blog

まだ登録されていません

Comments

sorriman @ Re:HP ProDesk 400 G4 DM をセットアップした(01/13) 情報ありがとうございます。 また自宅を2…
Wi-Fiアンテナは多分入ってると思います。@ Re:HP ProDesk 400 G4 DM をセットアップした(01/13) 始めまして。 この機種はまだお使いでしょ…
通りすがりの者です@ Re:LIFEBOOK U939/B に WANカードを載せた(01/21) 私のLIFEBOOKではnanoSIMを装着後に再起動…
aki@ Re:秋葉原に寄った(01/14) この様な書込大変失礼致します。日本も当…
BOOSAN@ Re:SPY x FAMILY CODE:White を観た(01/08) 私は明日、PERFECT DAYS観ます。ビム・ベ…

© Rakuten Group, Inc.
X
Design a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: