目次

参考資料

単語と機能の対応

回路リセットMCLRLowでリセット
PWMCCPn
SPI, I2CMSSP例えばPIC16f887 183ページ, pinはSCK, SDI, SDOを使う。Arduinoと通信した例, 加速度センサと通信した例

やるべき機能

  • 書き込み
  • 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 ピンソケット

書き込み・接続の注意

  • 書き込み
    • Pickit3 11ページにPickit3のピンアサイン
    • Pickit3 13ページにPickit3の繋げ方
    • PIC16f88 2ページに上記に対応するピンがある
    • pin6は低電圧専用モードなので無視
    • 書き込み後に電源供給をするオプションは、MPLAB XのFile->Project Property->Pickit3->Powerで設定可能
  • アナログの電源
    • Pickit3 13ページのように、アナログのVSS, VDDをきちんとつながないとアナログが使えない
  • MCLRを使うとリセットが出来る。
    • 繋げ方
    • データシートで確認できないんですけど??

型番と機能

PIC16f88CCP1個、MSSPなし、ないけどSPI用のピンの名前はあるのはなんで?
PIC16f887CCP2個、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)

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS