-[[回路]]
[[回路]]

*目次 [#g742d492]
#contents

*参考資料 [#te092295]
-[[2つのPWM>http://www.asahi-net.or.jp/~gt6s-sbic/electro/fed-c/6-3.html]]

*単語と機能の対応 [#ffd5ff13]
|回路リセット|MCLR|Lowでリセット|
|PWM|CCPn||
|SPI, I2C|MSSP|例えば[[PIC16f887 183ページ>http://ww1.microchip.com/downloads/en/DeviceDoc/41291F.pdf]], pinはSCK, SDI, SDOを使う。[[Arduinoと通信した例>http://www.geocities.jp/zattouka/GarageHouse/micon/SPI/SPI.htm]], [[加速度センサと通信した例>http://wazalabo.com/pic-spi.html]]|

*やるべき機能 [#z6b96957]
-書き込み
-Digital IO/Analog I
-タイマー割り込み→TMR0
-PWM
-外部通信(USERT, I2C, SPI)


*データシート疑問点とその解決 [#b95ea924]
-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 ピンソケット


*書き込み・接続の注意 [#edd8122f]
-書き込み
--[[Pickit3 11ページ>http://ww1.microchip.com/downloads/en/DeviceDoc/PICkit_3_User_Guide_51795A.pdf]]にPickit3のピンアサイン
--[[Pickit3 13ページ>http://ww1.microchip.com/downloads/en/DeviceDoc/PICkit_3_User_Guide_51795A.pdf]]にPickit3の繋げ方
--[[PIC16f88 2ページ>http://akizukidenshi.com/download/PIC16F87.pdf]]に上記に対応するピンがある
--pin6は低電圧専用モードなので無視
--書き込み後に電源供給をするオプションは、MPLAB XのFile->Project Property->Pickit3->Powerで設定可能
-アナログの電源
--[[Pickit3 13ページ>http://ww1.microchip.com/downloads/en/DeviceDoc/PICkit_3_User_Guide_51795A.pdf]]のように、アナログのVSS, VDDをきちんとつながないとアナログが使えない
-MCLRを使うとリセットが出来る。
--[[繋げ方>http://www.opencircuits.com/A_Really_Basic_Guide_to_the_PIC_Microprocessor_and_BoostC#Reseting_the_Processor.2C_MCLR]]
--データシートで確認できないんですけど??


*型番と機能 [#ufd19358]
|PIC16f88|CCP1個、MSSPなし、ないけどSPI用のピンの名前はあるのはなんで?|
|PIC16f887|CCP2個、MSSPあり|





*PIC16f88 [#dd1a964b]
-[[PWMでサーボモータ>http://physics.cocolog-nifty.com/weblog/2014/10/pwm-ea25.html]]











*PIC16F887 [#d4cd598b]
**環境設定 [#t8719505]
-MPLABをインストール(Windows版は不安定との噂)
-XC8 compilerをインストール

**コード [#y9425c68]
-https://github.com/hamko/sample/blob/master/pic16f887/main.c
--【機能】Digital IO, PWM, Analog Read, [[LCD>http://akizukidenshi.com/download/ds/xiamen/ACM1602NI-FLW-FBW-M01_DISPLAYTRONIC_%20SPEC%20VER1.2.pdf]] via I2C, Timer Interrupt, float, int32_t
**delay [#nc72dc01]
-__delay_us, __delay_msを利用する。
--''引数に変数を入力してはいけない''
--可変にしたい場合は、以下のようにする。

 #define _XTAL_FREQ 5000000 // F_OSC/4
 for(i=0;i<n;i++)__delay_ms(10);/*10msをn回繰り返し*/

**TIMER0 [#yedb5885]
-4/F_OSC*プリスケーラ設定値 [s]周期で呼ばれる。
**疑問 [#b3a65440]
-configの説明はいったいどこにあるのか。
--ブラウンアウトリセットとは
--データコードプロテクションとは
--Applications/microchip/doc/chipsにconfigの説明が書いてある。
-Cプログラム上で利用可能なピンのディレクティブをどこで調べればいいのか(PORTA, RA0など)。
-simulatorがあるとの噂、どのように利用するのか。
-PWMのactive low, highとは何か。

**Config [#m11be348]
-[[変更したいconfigだけを変更するための方法>http://kuri6005.sakura.ne.jp/pic/pukiwiki.php?XC8%A1%A7%A5%B3%A5%F3%A5%D5%A5%A3%A5%B0%A5%EC%A1%BC%A5%B7%A5%E7%A5%F3%A5%EF%A1%BC%A5%C9%B5%AD%BD%D2%BD%F1%BC%B0%A4%CB%A4%C4%A4%A4%A4%C6#k97bbb0b]]
--デフォルトのconfigの方法がわかる。

**スタック [#ufabe69a]
-スタックの深さが8程度しかないので注意
--関数はできるだけ使わず、macroかinlineで

**リセット [#o489d2dd]
 MCLRE = ON // リセットボタンイネーブル

-リセットボタンなしかつプルアップしない状態でてきつーにやりたいときはこれをOFFしないと不定なので動かない

**32bit int, float [#t27941f4]
 #include <stdint.h>
をするだけでなんの問題もなく演算可能。

**メモリ使用量 [#i83a6e2c]
-ProjectName - DashboardというWindowで確認可能(なんかエラーが出てそうだったら、Propaty的なところからなんとかする)

**外部クロック [#ga466d9c]
-外部クロックのスピードによって、FOSCの設定内容が異なる(一番早いのでは、HS)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS