質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

1回答

4943閲覧

GPIO制御(raspberrypiのスイッチ判定)について。

kai10__

総合スコア8

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2017/12/27 23:49

編集2017/12/28 00:37

授業で扱っているアセンブリでのraspberrypiに関するプログラムなのですが、

equ GPIO_BASE, 0x3f200000  @ GPIOベースアドレス
.equ GPFSEL0, 0x00 @ GPIOポートの機能を選択する番地のオフセット
.equ GPFSEL_IN, 0x0 @ 入力用
.equ GPFSEL_OUT, 0x1 @ 出力用
.equ GPSET0, 0x1C @ GPIOポートの出力値を1にするための番地のオフセット
.equ GPCLR0, 0x28 @ GPIOボートの出力値を0にするための番地のオフセット
.equ LED_PORT, 10 @ LEDが接続されたGPIOのポート番号
.equ SWITCH_PORT, 13 @ switch1が接続されたGPIOのポート番号

.section .init
.global _start
_start:
ldr r0, =GPIO_BASE
mov r3, #(1 << 13)

@ GPIO #10 を出力用に設定
mov r1, #(GPFSEL_OUT << (3 * (LED_PORT % 10)))
str r1, [r0, #(GPFSEL0 + LED_PORT / 10 * 4)]

loop0:
ldr r2, [r0, #0x0034]  @ GPLEV0のアドレスをr2に代入 
and r2, r2, r3 @ 13番ポートの数値のみを残し,残りは0に
lsr r2, r2, #13 @ 1番ポートに13番ポートの数値を持ってくる.

cmp r2, #1
beq loop1
@ GPIO #10 に 0 を出力
mov r1, #(1 << (LED_PORT % 32))
str r1, [r0, #(GPCLR0 + LED_PORT / 32 * 4)]
b loop0

loop1:
@ GPIO #10 に 1 を出力
mov r1, #(1 << (LED_PORT % 32))
str r1, [r0, #(GPSET0 + LED_PORT / 32 * 4)]
b loop0

loop:
b loop

このようなプログラムでスイッチを押すとLEDが点灯するように設定することができました。しかし、GPIOのlevel0のアドレス
0x0034という値が授業テキストに
英語で書かれており、なぜそうなるのか
よく理解できていません。
教えてくれると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

多くのマイコンは特定のアドレスにGPIOなど内蔵回路の機能が割り振ってあって
そのアドレスの値を操作することで回路を操作できます。(memory mapped IO)

で、ラズパイに積んであるBCM2835というチップの
GPIOのlevel0に割り当てられているアドレスが0x0034なんです

BCM2835のデータシート90ページぐらいに書いてあります

投稿2017/12/28 00:47

編集2017/12/28 00:47
ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問