応用プログラミングⅠ

科目基礎情報

学校 長岡工業高等専門学校 開講年度 2017
授業科目 応用プログラミングⅠ
科目番号 0117 科目区分 専門 / 必履修
授業形態 講義 単位の種別と単位数 学修単位: 2
開設学科 電気電子システム工学科 対象学年 4
開設期 前期 週時間数 2
教科書/教材 著者 柴田望洋,書名 明解C 言語-入門編,出版社SoftBankCreative,2004 配布プリント
担当教員 矢野 昌平

到達目標

この科目は長岡高専の教育目標の(C)と主体的に関わる.
この科目の到達目標と,成績評価上の重み付け,各到達目標と長岡高専の学習・教育到達目標との関連を以下の表に示す.
科目の到達目標 評価の重み 学習・教育到達目標との関連
①組込みプログラミングに必要な知識である、型・制御構文・演算・ポインタ・構造体・ビット操作を理解する 35% C1
②組込みソフトウェアの開発ツールの使い方を身に付ける 35% C2
③ハードウェアとソフトウェアの関連を理解する 30% C1

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1組込みプログラミングに必要な知識である、型・制御構文・演算・ポインタ・構造体・ビット操作を理解し、与えられた課題に対してそれらを適応しプログラミングを行うことができる。組込みプログラミングに必要な知識である、型・制御構文・演算・ポインタ・構造体・ビット操作を理解しており、与えられたプログラムコードから動作を理解し、また穴埋めになっている部分に適切に補完することができる。組込みプログラミングに必要な知識である、型・制御構文・演算・ポインタ・構造体・ビット操作を理解が不十分であり、プログラムコードを読みその動作を説明することができない。
評価項目2組込みソフトウェアの開発ツールの使い方を身に付けており、統合開発環境の機能であるデバッグやモニター機能等を適切に用いることができ、効率的なプログラミング開発を行うことができる。組込みソフトウェアの開発ツールの使い方を身に付けており、統合開発環境をもちいてプログラミング開発を行うことができる。組込みソフトウェアの開発ツールの使い方を身に付けておらず、独自でプログラミング開発を行うことができない。
評価項目3ハードウェアとソフトウェアの関連を理解しており、リソースの中でこれらを適切に割り振りことができ、物理現象との関係を考慮しつたアウトプットを導き出すことができる。ハードウェアとソフトウェアの関連を理解しており、与えられたリソースの中で課題を解決するためのアウトプットを導き出すことができる。ハードウェアとソフトウェアの関連を理解することができていない。どちらか理解で不十分である。

学科の到達目標項目との関係

教育方法等

概要:
身の回りにある様々な機器(家電製品、携帯電話、自動車や工場で使う産業機器など)の内部に
格納されているソフトウェアを総称して「組込みソフトウェア」と呼ぶ。組込みソフトウェア
は産業を支える縁の下の力持ちである。本科目では、組込みソフトウェアを作成するための基礎
知識と技能を、実際に開発環境を用いながら学習していく。
○関連する科目: 基礎情報処理(1年次履修)、プログラミング(2年次履修)、プログラミング演習(前年度履修)、応用プログラミングⅡ(次年度履修)、計算機システム(次年度履修)、デジタル信号処理(次年度履修)
授業の進め方・方法:
1~3 学年における、関連科目の履修によりコンピュータの操作方法およびC言語の基本的文法を
理解しているものとした講義内容となっている。
注意点:
また、課題は、その時間に学ぶ内容だけでなく、
それまでに学習した内容を理解していないと解くことが難しい。十分な予習・復習をして授業に臨
でほしい。

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 マイコンの基本構成・各グループでの討議・アイスブレイク マイクロコントローラの アーキテクチャについて学習する。パソコン用のCPUとのちがい、世の中での役割、具体的な内部構造の異なり。データバスとアドレスバスについて理解をする。
[将来就きたいと思っている職業で、組み込み機器がどのように活用しているだろう。また、自分は組み込み機器のプログラミング技術を学ぶことによってどのようにそれを活用できるかを述べよ。]
2週 開発環境、デバッガー・実習ボードを用いた授業 実機動作での動作確認方法、開発環境の使い方を理解する。簡単な演習課題について、流れ図、デバッガーを用いた動作確認を行う方法を理解する。
[マイコンの内部構造について
35
講義で使用するマイコンのアーキテクチャ (レジスタ、メモリ、I/O)について調査しましょう。 ※レポート (課題演習1)]
3週 ビット操作・実習ボードを用いた授業 スイッチが押されている、LEDを点灯する等は、1ビット情報を制御する方法を学ぶ。そのためのビット演算を習得する。「レポート2
1. レポート1でバイト数を調べたchar,short,int,long型 の変数がメモリをどのように使用するかを調べよ 2. C言語の構造体の例をあげ、それがメモリをどのよ うに使用するかを調べよ 3. C言語の共用体の例をあげ、それがメモリをどのよ うに使用するかを調べよ」
4週 構造体、共用体・実習ボードを用いた授業 演算子の優先順序、メモリ内に配置される変数の構造を理解する。1ビット情報を制御する方法を学ぶ。そのための共用体、構造体、ビットフィールドを習得する。「レポート
1. メモリ上の0x300番地に存在する1バイト長のデータ領域に ある値を、ポインタを使って読むC言語命令を書きなさい。ま た、同じ領域にポインタを使って値0x10を書くC言語命令を 書きなさい。 読込先の変数名は任意で良い。 2. メモリ上の0x302番地に存在する2バイト長のデータ領域に ある値を、ポインタを使って読むC言語命令を書きなさい。ま た、同じ領域にポインタを使って値0x1001を書くC言語命令 を書きなさい。 読込先の変数名は任意で良い。 3. 1・2で値を書き込んだあとのメモリの状態を図示しなさい。」
5週 アドレス、レジスタ、ポインタ操作・実習ボードを用いた授業 ポインターのしくみ、メモリーに配置されるアドレスとデータの関係を理解する。
「レポート
1. マイコンでスイッチなどの入力を扱うときに「プルアップ」とい う概念が重要となる。「プルアップ」とはどのようなものなの か、なぜ重要なのかを書きなさい。 2. マイコンは「ポート」という概念で外部からの入力や外部へ の出力を行う。ポートの種類のひとつである汎用入出力 ポートとはどのようなものであるかを調べなさい。 3. M16Ctinyマイコンで汎用入出力ポートを使用する際にその 動作や機能にどのようなレジスタが関係するかを調べなさ い。 4. OAKS16miniマイコンボードでスイッチ4とスイッチ5が接続さ れているポートがどこであるかを調べ、それがどこのメモリ 番地(レジスタ)のどのビットのことなのかを調べなさい。」
6週 HWマニュアル、プルアップ、ポート入力演習 ハードウェアマニュアルの読み方について理解する。
①ポート入力の仕組みである、プルアップとその役割について理解する。②レジスタについて理解し、HWマニュアルからレジスタの設定方法を読み取りレジスタを設定する方法を理解する。
「1. 出力回路としてはオープンドレイン、オープンコレクタ が代表的であるが、これらがどのような回路であるか、 どのような使い方をするかを調べなさい。 2. OAKS16miniマイコンボードでLED2とLED3が接続されて いるポートがどこであるかを調べ、それがどこのメモリ 番地(レジスタ)のどのビットのことなのかを調べなさ い。 3. M16Ctinyマイコンの出力仕様を調べ、LEDを点灯させ るためにプログラムでどのような制御を行うべきかを書 きなさい。」
7週 オープンコレクタ、レジスタ、ポート出力演習 ①マイコンからの出力の仕組みについて理解する ②出力可能電流について理解する③出力の仕組みオープンコレクタついて理解する。「1. プログラム課題5とプログラム課題6のプログラム を書きなさい。 2. それぞれのプログラムの内容で重要と思えること を第三者に説明するように(講師ではなく、具体的 に机の隣の誰かを想定)書きなさい」
8週 周辺回路、ポート入出力 ①プログラムの動く仕組みとこれに関連し良いプログラムについて理解する ②入力と出力の仕組みについて理解する。「1. プログラムで処理の時間的関係を扱うのに、「同期 処理」と「非同期処理」という概念がある。 1.1 同期処理とはどのような処理であるかを調 べ、説明しなさい。 1.2 非同期処理とはどのような処理であるかを 調べ、説明しなさい。 2. 非同期処理の代表として「割込み処理」がある。割 込みには「優先度」という属性があるが、これはど のようなものかを調べ、説明しなさい。」
2ndQ
9週 課題解説 これまでの演習課題について、振り返りを行いさらに理解を深める。またコーディングに焦点をあてて良い/悪いプログラミングについて理解する。
「 M16Ctinyマイコンは周辺デバイスのひとつとしてタ イマ(Timer)を持つ。タイマはいくつかの動作モード を持つが、次週の演習でタイマモードを使用する。 – タイマモードとはどのようなモードか、調べなさい。 – タイマをタイマモードで動作させるために必要な レジスタを調べなさい。 (タイマA0を使用するために必要なレジスタ)」
10週 同期制御、非同期制御、ポーリング、インタラプト マイコンにおける、時間の取り扱い方を理解する。
「• M16Ctinyソフトウェアマニュアルなどを参考に、次のことがら を調べなさい。 – 割込み要因が発生してから割込みルーチン(割込み関 数)が起動するまでのシーケンスはどうなっているか – 割込み要因が発生してから割込みルーチンが起動するま での最短応答時間はおよそどれだけか – 割込み要因が発生してから割込みルーチンが起動するま での最長(最悪)応答時間はおよそどれだけか
上記の条件として、マイコン内のデータバス幅は16ビット、ウェイト無しアク セスを行っているものとする。加えて、マイコンのクロックは20MHzとする。 マシンサイクルはクロックの逆数であるから、ここからサイクル時間を得る こと」
11週 タイマー割込み タイマー割り込みを用いた時間の扱い方を理解する。チャタリングの発生とその対策について実践的に理解する「• スイッチなどの入力をマイコンで扱う際に、チャタリ ングという現象がある。これはどのような現象かを 調べなさい。 • チャタリングの影響を避けるために回路的にどのよ うな手段があるかを調べなさい。 • チャタリングの影響を避けるためにプログラム的に どのようなロジックがあるかを調べなさい」
12週 課題解説 課題について解説を行い、マイコンの動作についてさらに深く理解をすすめる。スタートアップの仕組みについて理解する「工学において品質の概念は非常に重要である。 – ソフトウェアの品質とはどのようなものであるかは 国際規格ISO/IECやJISで定義されている。それが どのようなものかを調べ、書きなさい。」
13週 モジュール設計、プログラムと粒度 ソフトウェアの開発手順と設計について理解を深める。品質の評価や品質を確保するための方法について理解する。「ソフトウェアの品質評価や品質確保のついて学習した内容をこれまでのプログラミング提出課題に適応せよ。」
14週 コーディングと品質 ソフトウェアの開発手順と設計について理解を深める。品質の評価や品質を確保するための方法について理解する。ソフトウェアの品質評価や品質確保のついて学習した内容をこれまでのプログラミング提出課題に適応せよ。」
15週 発展授業 試験解説と発展授業
16週

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週

評価割合

試験課題レポートその他合計
総合評価割合5020200010100
基礎的能力205500030
専門的能力20101000545
分野横断的能力105500525