回路
🔗参考資料
🔗単語と機能の対応
🔗やるべき機能
- 書き込み
- Digital IO/Analog I
- タイマー割り込み→TMR0
- PWM
- 外部通信(USERT, I2C, SPI)
🔗データシート疑問点とその解決
- RA0 General Purpose IO
- AN0 AD Channel
- レジスタには行があり、Bankとよぶ(00-1F, 90-9Fのように)
- PORTAが双方向ポートで、TRISAがその向き。
- ANSELはinputのみをアナログにする?
- アセンブリ用語
- W アキュムレータ(一般用語)、ワーキングレジスタ(PIC用語)。tmp変数に相当。
- F Function Register: そこに読み書きするとビヘイビアが出たり読めたりする。(TRIS, Rなど)
- L リテラル
- prescaler 分周器
- Communication 通信
- SINGLE IN-LINE CONNECTOR ピンソケット
🔗書き込み・接続の注意
- 書き込み
- アナログの電源
- MCLRを使うとリセットが出来る。
🔗型番と機能
| |
|---|
| PIC16f88 | CCP1個、MSSPなし、ないけどSPI用のピンの名前はあるのはなんで? |
| PIC16f887 | CCP2個、MSSPあり |
🔗PIC16f88
🔗PIC16F887
🔗環境設定
- MPLABをインストール(Windows版は不安定との噂)
- XC8 compilerをインストール
🔗コード
🔗delay
- __delay_us, __delay_msを利用する。
- 引数に変数を入力してはいけない
- 可変にしたい場合は、以下のようにする。
#define _XTAL_FREQ 5000000 // F_OSC/4
for(i=0;i<n;i++)__delay_ms(10);/*10msをn回繰り返し*/
🔗TIMER0
- 4/F_OSC*プリスケーラ設定値 [s]周期で呼ばれる。
- configの説明はいったいどこにあるのか。
- ブラウンアウトリセットとは
- データコードプロテクションとは
- Applications/microchip/doc/chipsにconfigの説明が書いてある。
- Cプログラム上で利用可能なピンのディレクティブをどこで調べればいいのか(PORTA, RA0など)。
- simulatorがあるとの噂、どのように利用するのか。
- PWMのactive low, highとは何か。
🔗Config
🔗スタック
- スタックの深さが8程度しかないので注意
- 関数はできるだけ使わず、macroかinlineで
🔗リセット
MCLRE = ON // リセットボタンイネーブル
- リセットボタンなしかつプルアップしない状態でてきつーにやりたいときはこれをOFFしないと不定なので動かない
🔗32bit int, float
#include <stdint.h>
をするだけでなんの問題もなく演算可能。
🔗メモリ使用量
- ProjectName - DashboardというWindowで確認可能(なんかエラーが出てそうだったら、Propaty的なところからなんとかする)
🔗外部クロック
- 外部クロックのスピードによって、FOSCの設定内容が異なる(一番早いのでは、HS)