• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+
イイね!
2017年03月24日

【備忘録】 フラッシュサーキット代替品(PICマイコン使用)

配線図とPICプログラミング(C言語)の備忘録



実際に車に取り付けたものは廉価版の12F509といううPICマイコンをもとにしたもの。

メイン基板 (スイッチボックス側)


実際にはロービームキャンセルスイッチも同じ基板に盛ったので↓だった。



リレー側 (テールライト側)




12F509用プログラム
PICkit3 + アダプタ(マルツオリジナル) ※マルツオンラインより
使用ソフト MPLAB X IDE v3.51
コンパイラ XC8 v1.40

******************************
// PIC12F509 Configuration Bit Settings
#include
#include
#include

// CONFIG
#pragma config OSC = IntRC
#pragma config WDT = OFF
#pragma config CP = OFF
#pragma config MCLRE = OFF
#pragma jis

// クロック周波数指定
// __delay_ms()関数が使用する
#define _XTAL_FREQ 4000000

int main (int argc, char** argv) {

// PICマイコン設定
OPTION = 0b10000000; //OPTION レジスタ設定,509は6bit目0でGP0,1,3プルアップ使用
OSCCAL = 0b11111110;
TRISGPIO = 0b00111000; // GP3,GP4,GP5のピンを入力モードに設定(ただしGP3ピンは常に入力モード)

// 時間計測の変数
unsigned short timer;

// 出力をを全OFFする
GPIO = 0x00;

// ループ処理
while(1){

// GP3,GP5スイッチが押されるまで待つ
while(GP3 == 1 && GP5 == 1){
}


if(GP3 == 0 && GP4 == 1){
// サンキューハザード: GP1点滅処理(2*2回繰り返す)
for(timer=0; timer<2; timer++){
// GP1を220msONする
GP1 = 1;
__delay_ms(220);
// GP1を100msOFFする
GP1 = 0;
__delay_ms(100);
// GP1を180msONする
GP1 = 1;
__delay_ms(180);
// GP1を700msOFFする
GP1 = 0;
__delay_ms(700);
}

// 1000ms待つ
__delay_ms(1000);
}


else if(GP3 == 0 && GP4 == 0){
// パパッとホーン: GP2点滅処理(2回)

// GP2を65msONする
GP2 = 1;
__delay_ms(65);
// GP2を70msOFFする
GP2 = 0;
__delay_ms(70);
// GP2を90msONする
GP2 = 1;
__delay_ms(90);
// GP2をOFFし、2500ms待つ
GP2 = 0;
__delay_ms(2500);
}


else if(GP4 == 1 && GP5 == 0){

// アイシテルのサイン: GP0点滅処理(5回繰り返す)
for(timer=0; timer<5; timer++){
// GP0を200msONする
GP0 = 1;
__delay_ms(200);
// GP0を200msOFFする
GP0 = 0;
__delay_ms(200);
}

// 1500ms待つ
__delay_ms(1500);
}


else{

// 車間ワーニング: GP0点滅処理(高速12回繰り返す)
for(timer=0; timer<12; timer++){
// GP0を100msONする
GP0 = 1;
__delay_ms(100);
// GP0を100msOFFする
GP0 = 0;
__delay_ms(100);
}

// 1000ms待つ
__delay_ms(1000);

}

}

// 以下の命令は実行されない
return (EXIT_SUCCESS);

}
******************************


実は整備手帳動画のほかにoutputにもう一種盛ってます。
高確率で使わんだろうけど。。。(余ってたのでテキトウに入れただけ)







上は最安部材のケースですが、
世の中の入門PICは、よりつぶしの利く12F1822という石です。
(こいつは509よりも世代が新しく、色々と便利な機能が入っている上に容量も少し大きい)
それを使った仕様の場合は以下の通り。

12F1822用メイン基板 (スイッチボックス側)


スイッチ側のプルアップはIC内部のプルアップですべて対応できる所が違います。
あと、IC端子の名前とか。
リレー側基盤は509版とまったく同一なので略。


12F1822用プログラム
ツールは同じ。
世代違いのせいか、同じ命令でもコマンドが微妙に違ってます。


******************************
// PIC12F1822 Configuration Bit Settings
#include
#include
#include

// PIC12F1822 Configuration Bit Settings
// CONFIG1
#pragma config FOSC = INTOSC // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select (MCLR/VPP pin function is digital input)
#pragma config CP = OFF // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = OFF // Internal/External Switchover (Internal/External Switchover mode is disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is disabled)
// CONFIG2
#pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = OFF // PLL Enable (4x PLL disabled)
#pragma config STVREN = OFF // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will not cause a Reset)
#pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = OFF // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming)


// クロック周波数指定
// __delay_ms()関数が使用する
#define _XTAL_FREQ 1000000



int main (int argc, char** argv) {

// PICマイコン設定
OSCCON = 0b01011010; // 内部クロック周波数を1MHzに設定
ANSELA = 0b00000000; // すべてのピンをデジタルモードに設定
TRISA = 0b00111000; // RA3,RA4,RA5のピンを入力モードに設定(ただしRA3ピンは常に入力モード)
OPTION_REG = 0b00000000; //プルアップを使用に設定
WPUA = 0b00111000 ; // RA3,RA4,RA5をプルアップに指定。1でする、0でしない

// 時間計測の変数
unsigned short timer;

// 出力をを全OFFする
LATA = 0x00;

// ループ処理
while(1){

// RA3,RA5スイッチが押されるまで待つ
while(RA3 == 1 && RA5 == 1){
}


if(RA3 == 0 && RA4 == 1){
// サンキューハザード: LATA1 点滅処理(2*2回繰り返す)
for(timer=0; timer<2; timer++){
// LATA1を220msONする
LATA1 = 1;
__delay_ms(220);
// LATA1を100msOFFする
LATA1 = 0;
__delay_ms(100);
// LATA1を180msONする
LATA1 = 1;
__delay_ms(180);
// LATA1を700msOFFする
LATA1 = 0;
__delay_ms(700);
}

// 1000ms待つ
__delay_ms(1000);
}


else if(RA3 == 0 && RA4 == 0){
// パパッとホーン: LATA2 点滅処理(2回)
// LATA2を65msONする
LATA2 = 1;
__delay_ms(65);
// LATA2を70msOFFする
LATA2 = 0;
__delay_ms(70);
// LATA2を90msONする
LATA2 = 1;
__delay_ms(90);
// LATA2をOFFし、2500ms待つ
LATA2 = 0;
__delay_ms(2500);
}


else if(RA4 == 1 && RA5 == 0){
// アイシテルのサイン: LATA0 点滅処理(5回繰り返す)
for(timer=0; timer<5; timer++){
// LATA0を200msONする
LATA0 = 1;
__delay_ms(200);
// LATA0を250msOFFする
LATA0 = 0;
__delay_ms(200);
}

// 1500ms待つ
__delay_ms(1500);
}


else{
// 車間ワーニング: LATA0 点滅処理(高速12回繰り返す)
for(timer=0; timer<12; timer++){
// LATA0を100msONする
LATA0 = 1;
__delay_ms(100);
// LATA0を100msOFFする
LATA0 = 0;
__delay_ms(100);
}

// 1000ms待つ
__delay_ms(1000);
}

}

// 以下の命令は実行されない
return (EXIT_SUCCESS);

}
******************************

1822の場合、出力時はRA*ではなくLATA*と入れたほうが都合いいらしいです。





石自体は\100/個前後と激安で、その他の回路部品も二束三文なんだけど、
PICkit等の周辺機器が全部で1万円弱するので貧乏人には敷居が高く今まで躊躇してたけれど、
自己啓発の一環として買ってしまいました。
しばらく遊べそうなのでいい買い物したかな。

飲みに行くのを1回我慢すればいいだけのことだしね笑


 
ブログ一覧 | 暇人の工作 | 日記
Posted at 2017/03/25 01:04:53

イイね!0件



タグ

今、あなたにおすすめ

ブログ人気記事

死ぬまでバイクはやめられない・・・ ...
エイジングさん

年に1回のイヤなやつ
ボーエンさん

旅にでます😌〜 四万ブルー🩵か ...
あぶチャン大魔王さん

お問合せ多数!!GRヤリス フロン ...
AXIS PARTSさん

お誕生日な週末
M2さん

SUBARU WRX の ピラーガ ...
ハセ・プロさん

この記事へのコメント

コメントはありません。

プロフィール

https://tv.tuoitre.vn/video-135512.htm
吹っ飛んだのはチンクかな」
何シテル?   11/11 15:03
碓氷玉砕池谷と書いて『うすいぎょくさいいけたに』と読ませてましたが、長いのではしょりました。 (ネタ元は仁D) 4WDターボを卒業し、年相応に大人しいド...
みんカラ新規会員登録

ユーザー内検索

掲示板

<< 2025/5 >>

    123
45678910
11121314151617
18192021222324
25262728293031

リンク・クリップ

地元ラーメン屋一覧 
カテゴリ:その他(カテゴリ未設定)
2012/09/01 00:46:36
 
オカルトチューン、本当に効果あるの? 
カテゴリ:その他(カテゴリ未設定)
2012/03/17 13:12:00
 
Fiat500 (総合) 
カテゴリ:その他(カテゴリ未設定)
2012/03/02 22:21:56
 

愛車一覧

その他 その他 その他 その他
チンクのおまけで付いてきた、折りたためるFR車です。
日産 エクストレイル オヤジの遺産 (日産 エクストレイル)
オヤジより引継ぎ。 馬力は無いけど、人も荷物も乗っかるので意外と便利なんだよねぇ。。 ...
日産 スカイラインGT‐R 日産 スカイラインGT‐R
死ぬまでに一度この手の車に乗りたい願望が・・・ 低走行(4万km)、B-up(Fcon) ...
フィアット 500 (ハッチバック) フィアット 500 (ハッチバック)
『維持費の安い車に買い替え』通達が発令。 最終的にチンクならば良しとのお許しをいただきま ...

過去のブログ

2021年
01月02月03月04月05月06月
07月08月09月10月11月12月
2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
2017年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2015年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
2012年
01月02月03月04月05月06月
07月08月09月10月11月12月
2011年
01月02月03月04月05月06月
07月08月09月10月11月12月
2010年
01月02月03月04月05月06月
07月08月09月10月11月12月
2009年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ

あなたの愛車、今いくら?

複数社の査定額を比較して愛車の最高額を調べよう!

あなたの愛車、今いくら?
メーカー
モデル
年式
走行距離(km)
© LY Corporation