過去ログ [ 0002 ]
過去ログ:
ワード検索: 条件: 表示:
Page: | 1 | 2 | 3 | 4 | 5 | 6 |
Pic3故障か? 投稿者:TR 投稿日:2018/10/08(Mon) 11:43 No.1055

MPLAB IPEというソフトを使ってみました。
これは、
ネット情報だとPIC3と接続してつかうソフトのようです。

試しに
電圧を3.5V、4.75V、5Vとかえてやってみましたが、
やはり、エラー表示が出てしまいました。
やはり、PIC3は故障のようです。

Target Device ID (0x0) does not match expected Device ID (0x1040).
試しに、Eraseボタンをクリックして、Blank Chechをクリックしたら
次の表示 →Blank check failed
この作業も失敗!

これは、PIC3が故障しているんでしょうね。
皆さん方も、PIC3が故障したことはありますか?

Re: Pic3故障か?
PICKIT3(互換品)自体が壊れたことはありません。
でもあんまり使っていません。
一応、使っていない互換品がもう一つあります。

私としてはArduinoの方をお勧めします。
アマゾンで400円(nano)〜500円(uno)で購入できます。
aliなら250円〜350円程度でしょうか。

この間、より重要性というか存在感?が増しているように感じます。
特にホビーの領域では、圧倒しているような気がします。

情報量、手軽さ、様々なモジュールとライブラリ、標準でシリアル通信ができるので、
PCで情報を表示出来ることなど、習得も楽だと思います。
猛牛ロック   2018/10/08(Mon) 12:33 !email! No.1056 !ico_edit!
Re: Pic3故障か?
Arduinoを見ましたが、色々と有りますね。
お勧めの本と、お勧めのArduino(具体のURL)をご紹介下さい。
TR   2018/10/08(Mon) 14:13 !email! No.1057 !ico_edit!
Re: Pic3故障か?
とりあえず、自分も駄目もとで、アマゾンの互換品をポチット行きました。
Pic3ですよ。
アマゾンのレビューを見ると、
純正Pic3は2年ほどで壊れたとのレビューがありました。
自分は、2年10か月経過したので、やはり壊れたっぽい。
https://www.amazon.co.jp/gp/product/B01K26W8FQ/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
TR   2018/10/08(Mon) 17:08 !email! No.1058 !ico_edit!
maboさんの間欠についての疑問 投稿者:TR 投稿日:2018/10/06(Sat) 19:20 No.1046

maboさんの間欠を、下記のとおり変えてみました。
//プロトタイプ宣言
void InitInterTomer0(void);
をして、教科書のように、
main関数の後に//タイマ0割り込み設定関数を位置し
更に、//割り込みサブルーチンも、main関数の後に位置させました。

動作しましたよ!


それと、

以前にmaboさんから下のように教わったのですが


それから、割り込み関数の処理ですが、MACHからの信号を調べて、STARTフラグを操作してるだけです。
MACHからの信号は、一度LOWになるとずっとそのままですが、割り込みでは、何度もその信号をしらべるので、一度だけSTARTを1にするために、STARTが0の時だけに1にするようにしてます。
同じように、MACHからの信号がHIGHになったら、STARTを0にして、RA2を強制的にOFFにして機械を止めます。
これも、STARTが1の時だけ、一回だけ0にして機械を止める処理をします。


上記について疑問あり
どうして、わざわざ、STARTフラグを操作をしなければいけないのでしょうか??
理由も書いてあるのですが、どうしても理解できません。
単純に
machからの信号が0になったら、→RA2=OFF
としては駄目なのでしょうか?

変えた全文
/*****************************
* 間欠タイマー
* 16F627A
* XC8 V1.35
*
* RA6←MACHからの入力想定
* RA2←制御機器へ
*****************************/
#include <xc.h>

#define _XTAL_FREQ 4000000 //delay用宣言

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// CONFIG
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is digital input, MCLR internally tied to VDD)
#pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD disabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EE Memory Code Protection bit (Data memory code protection off)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)

#define KanketuTime 2
#define DousaTime 1
#define On 0
#define Off 1
int Start;

//関数宣言
void Second(int sec);
//プロトタイプ宣言
void InitInterTomer0(void);

// メイン関数
void main (void){
OSCF=1;//内蔵発振器 4MHz使用に設定

CMCON = 0x07;// 1,2,17,18端子を入出力端子に設定

PORTA = 0x00;// 電圧レベルの初期設定
PORTB = 0xFF;

// 入出力設定
TRISA = 0b01010000;//RA5は入力専用・RA6は入力他は出力
TRISB = 0b11111111;//RB0は入力

//初期設定
RA2=Off;//MACH
RA6=Off;
Start=0;
//タイマ0割り込み関数の呼び出し
void InitInterTomer0(void);
GIE=1;//全体割り込み許可

// 永久ループ
while(1){
if(Start==1){//スタートフラグが1なら動作開始
RA2=On;
Second(DousaTime);
RA2=Off;
Second(KanketuTime);
}
}
}

void interrupt InterSyori( void ){//割り込みサブルーチン
if(T0IF==1){//割り込みがあったら
if(RA6==0){//MACHからの信号をしらべて0(Low)だったらスタートのフラグを1にする
if(Start==0){
Start=1;
}
}
if(RA6==1){//MACHからの信号をしらべて1(High)だったらスタートのフラグを0にして
if(Start==1){
Start=0;
RA2=Off;//機器の動作を強制的に止める。
}
}
TMR0=0;
T0IF=0;
}
}
//タイマ0割り込み設定関数
void InitInterTomer0(void)//プリスケラ2 5ビット=0 WDTは使わない
{
T0CS=0;
PSA=0;
//プリスケーラ値を2に設定
PS2=0;
PS1=0;
PS0=0;

TMR0=0x00;
T0IF=0;
T0IE=1;
}
// 待ち時間関数}
void Second(int sec){
while(sec >0){
sec--;
__delay_ms(1000);
}
}

Re: maboさんの間欠についての疑問
ご無沙汰してます。_(._.)_

if(RA6==0) { //MACHからの信号をしらべて0(Low)だったらスタートのフラグを1にする
if(Start==0) {
Start=1;
}
}
if(RA6==1) { //MACHからの信号をしらべて1(High)だったらスタートのフラグを0にして
if(Start==1) {
Start=0;
RA2=Off;//機器の動作を強制的に止める。
}
}

の部分ですけど、実際の所、
if(RA6==0) {
Start=1;
} else {
Start=0;
RA2=Off;
}

でも、動作的には全く同じです。
けれども、今回の場合は行っている事が1命令、或いは2命令です。これが
if(RA6==0) {
Start=1;
kansu1();
kansu2();
kansu3();
keisan1;
keisan2;

}
みたいに長い処理の場合は、一度行えば充分なのに毎回割り込みに入る度に同じ事をしているなぁ、と言う事になります。
特にLCDなどに同じ文字を上書きするような時はそう思うでしょうね。

> どうして、わざわざ、STARTフラグを操作

これは必要な処理です。
メイン関数で
while(1){
if(Start==1){//スタートフラグが1なら動作開始

となっています。
尤も、この部分を
while(1){
if(RA6==0){
と変えるのなら、STARTフラグを使わないでも良いかもしれません。
猛牛ロック   2018/10/06(Sat) 23:31 !email! No.1047 !ico_edit!
Re: maboさんの間欠についての疑問
お久しぶりです。
早速、有り難うございます。

Startは、省略しても大丈夫でしたか。
自分は、while(1)にある if( 1)を忘れたせいか動作しませんでした。 訂正してやってみます。
猛牛ロックさん
タイマー0割り込みに代わるプログラムは
// 永久ループ
while(1){
MODE=PORTA&0b11;
__delay_ms(50);
while(MODE!=(PORTA&0b11)){ //変化があればウェイト、無ければ確定
MODE=PORTA&0b11;

この部分ですか?
TR   2018/10/07(Sun) 09:50 !email! No.1048 !ico_edit!
Re: maboさんの間欠についての疑問
Startや他の要らない部分を削ると↓のプログラムになります

#include <xc.h>

#define _XTAL_FREQ 4000000 //delay用宣言

// CONFIG
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is digital input, MCLR internally tied to VDD)
#pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD disabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EE Memory Code Protection bit (Data memory code protection off)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)

#define KanketuTime 2
#define DousaTime 1
#define On 0
#define Off 1


//プロトタイプ宣言
void InitInterTomer0(void);

// メイン関数
void main (void) {
OSCF=1;//内蔵発振器 4MHz使用に設定
CMCON = 0x07;// 1,2,17,18端子を入出力端子に設定

PORTA = 0x00;// 電圧レベルの初期設定
PORTB = 0xFF;
// 入出力設定
TRISA = 0b01010000;//RA5は入力専用・RA6は入力他は出力
TRISB = 0b11111111;//RB0は入力

//タイマ0割り込み関数の呼び出し
void InitInterTomer0(void);
GIE=1;//全体割り込み許可

// 永久ループ
while(1) {
if(RA6==0) { //スタートフラグが1なら動作開始
RA2=On;
__delay_ms(1000*DousaTime);//4Mhz駆動時は50秒まで
RA2=Off;
__delay_ms(1000*KanketuTime);
}
}
}

void interrupt InterSyori( void ) { //割り込みサブルーチン
if(T0IF==1) { //割り込みがあったら
if(RA6==1) RA2=Off;//機器の動作を強制的に止める。
T0IF=0;
}
}

//タイマ0割り込み設定関数
void InitInterTomer0(void) { //プリスケラ2 5ビット=0 WDTは使わない
T0CS=0;
PSA=0;
//プリスケーラ値を2に設定
PS2=0;
PS1=0;
PS0=0;

T0IF=0;
T0IE=1;
}
*********************

割り込みは現状、動作を直ぐに止めるために付けています。
なので、元のプログラムでは
char Second(unsigned int sec)
という関数自体がその役割です。
1秒と入れても、信号が変われば直ぐに終わる仕様になっています。

※if(1)は意味がありません。付けないのと同等です。
猛牛ロック   2018/10/07(Sun) 14:05 !email! No.1049 !ico_edit!
Re: maboさんの間欠についての疑問
教科書では、
以下の部分の記載がないので、不要となっているように思えます。
タイマー割り込みif(T0IF==1) { //割り込みがあったら
TR   2018/10/07(Sun) 15:52 !email! No.1050 !ico_edit!
Re: maboさんの間欠についての疑問
if(T0IF==1) { //割り込みがあったら
の事でしたか。

PICの場合は割り込みの際に、1つの割り込みベクタ(関数)に飛びます。
しかし、割り込み要因としては今回の「タイマー0溢れ割り込み」以外にも、タイマー1比較A割り込みとか
タイマー2や外部割り込みやSPI割り込み…と山ほど要因はあります。
そこで、割り込み関数に入った場合に、何の割り込みで入ったのかを自分で判断する必要があります。
それがif(T0IF==1) { です。コメント部は正確には「タイマー0溢れ割り込みがあったら」です。

今回は1つしか割り込みはセットしていませんから、取っても同じです。入ってきたら必ず(T0IF==1)になっている筈です。
猛牛ロック   2018/10/07(Sun) 17:47 !email! No.1051 !ico_edit!
Re: maboさんの間欠についての疑問
>割り込み要因としては今回の「タイマー0溢れ割り込み」以外にも、タイマー1比較A割り込みとか
タイマー2や外部割り込みやSPI割り込み…と山ほど要因はあります。

教科書にも、割り込みは、10種類もあるとありました。

if(T0IF==1) {
このように記載すると、10種類の割り込みから、タイマー0割り込みを特定できるという事ですね。
分かりました。


「タイマー0溢れ割り込み」このことですが、
自分としては、
「0タイマー0割り込み設定関数」と記載したかったのですが、「設定関数」の4文字が抜けてしまった様です。
で、
「0タイマー0割り込み設定関数」の自分的解釈は、
この関数を記載すると、
割り込みサブルーチンを実行すると理解しました。
なので、
while(1){
MODE=PORTA&0b11;

while(MODE!=(PORTA&0b11)){ //変化があればウェイト、無ければ確定
MODE=PORTA&0b11;

このように記載すれば、

MODE=PORTA&0b11; →まず、セレクターでモードを読み込む
while(MODE!=(PORTA&0b11))→ 現在のモードが、まず読み込んだモードと違えば
{
MODE=PORTA&0b11; →新しい値をモードとする

全て、並べれば、動作は、割り込みサブルーチンを実行するとこと同じと理解しました。
TR   2018/10/07(Sun) 19:39 !email! No.1052 !ico_edit!
Re: maboさんの間欠についての疑問
割り込み関数での組み方ですけど、重要な事の一つは早く終わらせる、と言う事です。
このタイマー割り込みの場合、
4MHz/4サイクル/2分周/256=1.953Hz→約0.5ms毎に割り込みがかかります。
つまり、0.5ms後には次の割り込みの番になります。
なので、最長でも、0.5ms内に収まる処理にして、関数を終了させます。

while(1)はこの中をやり続ける、という意味です。
実際にはその中で、break文やreturn文を入れれば外に出ますけど。
while(MODE!=(PORTA&0b11)){
も同じ理由でよくありません。

で、実際の処理の仕方としてはカウンタ/タイマを使います。

static unsigned char cnt=0,MODE_temp,MODE_new;
MODE_new=PORTA&0b11;//最初に固定値をとる
if(MODE_temp!=MODE_new){//前回と違っていれば
MODE_temp=MODE_new;//値を更新して
cnt=0;//0からカウント
}else if(cnt<255)cnt++;//前回と同じだったらカウントアップ

if(cnt==100)MODE=MODE_temp;//カウントが100なら採用

のような処理です。
MODE_new 今回取得した値。
MODE_temp 前回取得した値。
で、MODE_tempが100回≒50ms続いたら採用してMODEに代入します。

このように書けば、10サイクル程度→10us程度の時間しか掛かりません。
猛牛ロック   2018/10/07(Sun) 23:24 !email! No.1053 !ico_edit!
Re: maboさんの間欠についての疑問
新しいプログラムですね。
学びたいのですが、
また、Pic3が壊れたようです。
PICに書き込もうとしたら、、エラー表示 ↓
Target Device ID (0x0) does not match expected Device ID (0x1040).
TR   2018/10/08(Mon) 07:02 !email! No.1054 !ico_edit!
PIC 投稿者:TR 投稿日:2018/09/28(Fri) 15:40 No.1040

maboさん、こんにちは。
お久しぶりになりますね。

以前、大変お世話になりました。
お陰様で、当時製作したフライス盤は、今も時折、活躍します。
当時の思い出の中で、どうしても分からなかった事、それは、PICの言語です。
とうとう、最後まで、以下のプログラム(間欠制御)が分かりませんでした。
その後、退職をして、再雇用となり、時間が出来たので、今でも、時折、C言語を勉強しています。

で、以下のプログラム(間欠制御)ですが、当時は、外部割込みか、タイマー0割り込みのどちらかだろうとおもっていましたが、、、
最近やっと気が付きました。
以下のプログラム(間欠制御)には、外部割込みか、タイマー0割り込みのどれも使われていないという事です。
笑わないでくださいね(;^ω^)

/*****************************
* 間欠タイマー
* 16F627A
* XC8 V1.35

* RA6←MACHからの入力想定
* RA2ブロワ制御用リレー burowa
* RA3掃除機制御用リレー vacuum
* RA7 モニター用発光LED 
*****************************/
#include <xc.h>
// CONFIG
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is digital input, MCLR internally tied to VDD)
#pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD disabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EE Memory Code Protection bit (Data memory code protection off)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
#define _XTAL_FREQ 4000000 //delay用宣言。下記__delay_msを使うとコンパイラがマイコンの周波数に応じてループ回数を計算します
#define On 1
#define Off 0
#define MACH_sig RA6 //machからの信号入力プルダウン
#define burowa RA2=RA7 //RA2:ブロワ出力 RA7:LED出力
#define vacuum RA3 //掃除機出力
unsigned char PORTB_save; //ポートBの保存用。(変更に対応するため)
unsigned char MODE; //セレクタ保存用

// 待ち時間関数
char Second(unsigned int sec){//1S→0.1Sに変更。int secに1を入れると0.01秒ウェイト
while(sec >0){
if((MODE!=(PORTA&0b11))||(MODE==3&&MACH_sig==0)||(PORTB_save!=PORTB)) return 1;
//セレクタスイッチが変更された場合とMACH制御でのオフ信号、間欠時間の変更があった場合はwhileから抜ける
sec--;
__delay_ms(10); //この部分を1000→10に書き換えたので1s→0.01s
}
return 0;
}
// メイン関数
void main (void){
OSCF=1;//内蔵発振器 4MHz使用に設定
CMCON = 0x07;// 1,2,17,18端子を入出力端子に設定 ??
unsigned int DousaTime,KanketuTime; //宣言。#defineからこちらに変更
char change;
PORTA=0;//出力のピンを初期設定。
// 入出力設定
TRISA = 0b01000011;
TRISB = 0b11111111;//負論理ロータリースイッチ2個。RB0-3が動作時間、RB4-7が間欠時間
OPTION_REG=0b00000000;//ポートBプルアップ
unsigned int TIME[]={60,100,150,200,300,600,900,1200,1800,2400,3000,6000,9000,12000,15000,18000}; //unsigned intで65000まで
// 永久ループ
while(1){
MODE=PORTA&0b11;
__delay_ms(50);
while(MODE!=(PORTA&0b11)){ //変化があればウェイト、無ければ確定
MODE=PORTA&0b11;
__delay_ms(50);
}
if(MODE==0||(MODE==3&&MACH_sig==0)){//OFF
burowa=Off;
vacuum=Off;
}
else if(MODE==1){//掃除機のみオン
burowa=Off;
vacuum=On;
}
else if(MODE==2||(MODE==3&&MACH_sig==1)){ //間欠
PORTB_save=PORTB;
DousaTime=TIME[PORTB_save&0b1111];
KanketuTime=TIME[PORTB_save>>4];
vacuum=On;__delay_ms(700);burowa=On;

change=Second(DousaTime); //動作時間分ウェイト
if(change==0){
burowa=Off;__delay_ms(500);vacuum=Off;

change=Second(KanketuTime); //間欠時間分ウェイト
}
}
}
}

Re: PIC
追伸

プログラムの構成ですが、
以下の自分だったら、、、
main関数と
// 待ち時間関数
これの配置を変えて

まず最初にmain関数
その次に
// 待ち時間関数
を並べるのが教科書(キットで遊ぼう電子回路)の教えではと思いますが
如何でしょうか??


10/1 追記
Second関数とMaine関数を逆に配置しましたが、
コンパイルできませんでした。

Second関数のsecをSecond(DousaTime)として、
DousaTimeに10を与えることにより
Second関数に戻りsecを計算させているようですね!
こんなことが出来るんですね(@_@)


更に
Second関数中、 return 0とreturn 0を削除しても
Adwinのキットでは動作しました。

この他に
while(MODE!=(PORTA&0b11)){ //変化があればウェイト、無ければ確定
の下の行にある、
MODE=PORTA&0b11;
を削除しても動作します。
TR   2018/09/28(Fri) 15:44 !email! No.1041 !ico_edit!
Re: PIC
TRさん,こんにちは。

またしても亀レスですみません。

いろいろ頑張っておられますね。

私は,何をするでもなく,草刈り?をやったり,

最近はまってる,渋皮煮(栗)を作ったりしてます。


さて,PICのC言語についてですが,

>10/1 追記
>Second関数とMaine関数を逆に配置しましたが、
>コンパイルできませんでした。

これは,コンパイラーの仕様(文法)に関わることだと思いますが,

多分,明示的に最初にサブ関数の宣言をしてやるとコンパイルできるかもしれません。

 void char Second(unsigned int),

等の宣言をすると大丈夫かもです。

「サブ関数プロトタイプの宣言」でくぐると沢山でてきます。



>Second関数のsecをSecond(DousaTime)として、
>DousaTimeに10を与えることにより
>Second関数に戻りsecを計算させているようですね!
>こんなことが出来るんですね(@_@)

そうですね,サブ関数は,ある一定の動作をするためのものですね。

ある数値をサブ関数に渡して,サブ関数で処理(計算?)して,処理した数値を呼び出した側に渡すという動作ですね。

tasu(a,b){
return a+b;
}

main(){

c=tasu(4.5);

}

これだと,変数cに9が入ります。
(文法的にあってるか分かりませんのでコンパイルするには,
 手直しが必要ですね)



>更に
>Second関数中、 return 0とreturn 0を削除しても
>Adwinのキットでは動作しました。
 「return」については,戻り値がない場合は,多分省略が可能だったと思います。
あるいは,省略すると戻り値として,0がもどるのかもしれません。



>この他に
>while(MODE!=(PORTA&0b11)){ //変化があればウェイト、無け>れば確定
>の下の行にある、
>MODE=PORTA&0b11;
>を削除しても動作します。
 
 これ,プログラム見ましたが,大分時間経過してるので,
ちょと不明です。
分かったらレスします。



それから,割り込み処理ですが,割り込み処理には,必ず,

 void interrupt *****(void){
 
 }

というサブ関数が必要ですので,これの有無で判別できます。
mabo   2018/10/02(Tue) 10:40 !email! No.1042 !ico_edit!
Re: PIC
maboさんこんばんは。
レス有難うございます
//待ち時間関数の配置ですが、
プロトタイプ宣言をしたら、main関数の後に待ち時間関数を配置しても動作しました。
これで、教科書通りとなったので、見やすくなりました (^^♪

それと、
main関数のelse ifにある、
change;
このchangeも分かりずらくしているので、
cheangeをカットして、下のようにしても、動作しました。

else if(MODE==2||(MODE==3&&MACH_sig==1)){ //間欠
PORTB_save=PORTB;
DousaTime=TIME[PORTB_save&0b1111];
KanketuTime=TIME[PORTB_save>>4];
vacuum=On;__delay_ms(700);burowa=On;

Second(DousaTime); //動作時間分ウェイト
if(Second(DousaTime)==0){
burowa=Off;__delay_ms(500);vacuum=Off;

Second(KanketuTime); //間欠時間分ウェイト


それと、割り込み関数のvoid interrupt *****(void){
自分も、この記載がなかったので、割り込み関数ではないと分かりました。

10/3追記

main 関数 中、//永久ループの中にある
while(MODE!=(PORTA&0b11)){
MODE=(PORTA&0b11);  ← この意味が分かりました。以前教えて貰っていました。
お答え
次のループの意味は、while(保存していたセレクタスイッチの値が現在のセレクタスイッチと違っている間は){
現在のセレクタスイッチの値を保存しなさい

教えて下さった上記の文章を見て分かりました。
whileというループ関数は、if分と似ていますが、()内の条件が真なら{}内の処理を繰り返して行う
という事ですから、便利ですね。
TR   2018/10/02(Tue) 19:02 !email! No.1043 !ico_edit!
Re: PIC
TRさんこんばんは。

今日も,実家でとれた栗の渋皮煮を作成?してました。

レスの前に,疑問点解決なさったようで,なによりです。


PICのプログラムを作る時は,

ループの処理が不可欠だと思います。

ループがないと,一回きりの処理になってしまいますので。

特にたいていは,無限ループのなかに処理を置くのが

普通ではないかと思います。

処理的には,

   判断→処理

の繰り返しですね。

無限ループにはこのみでしょうけど,いくつか種類があります。

コンパイルできるかどうかは,別問題ですが。

1  for (;;) {
    処理;
   }

2  while(1){
  処理;
  }

3  do{
    処理;
   } while(1)

などが代表でしょうか。

何をさせるかで,使うループも違ってくるでしょうね。
mabo   2018/10/05(Fri) 00:28 !email! No.1044 !ico_edit!
Re: PIC
有難うございます。

今回のプログラムを、ざっくりと見ると、
machらの信号の有無を確認し、次の動作に繋げる といった流れだと思います。

で、maboさんは、
割り込み関数を使ってmachの信号の有無を確認した。

猛牛ロックさんは、
無限ループ(while(1)関数)とwhile関数の2つのwhileを使って、
machからの信号の有無を確認した。
ですよね??

いや〜、方々の頭の良さには感服です。

次に、maboさんの割り込み関数を使ったプログラムを学習します。
また何かあると思います。
その節は宜しくお願いします。
TR   2018/10/05(Fri) 08:43 !email! No.1045 !ico_edit!
XJ9512の補修 投稿者:TR 投稿日:2018/07/14(Sat) 06:35 No.1034

maboさん、おはようございます。
梅雨が明けて、毎日が猛暑ですね。
幸い、職場は、エアコンのある環境ですので、家にいるより、快適です。

過日、卓上フライス盤の移動最中に、誤って部品を折ってしまいました。
部材は、鋳物でした。
流石に中華です(笑

この、XJ9512は、フライス盤から、ボール盤に用途変更をし、使っています。
ボール盤としては、ある程度力もあるので、なかなかですよ。

部品を、NCフライスで製作しています。
あともうちょっと。

ジュラコンで、試しに作りました。

Re: XJ9512の補修
TRさん,こんにちは。

今日も暑いですね。

ご自分で破損の部品お作りになるんですね。

私のフライスは,そこの部分はエアスプリング仕様に変更で,

外してあります。

ちょっと調べたら,12ドルぐらいで部品はあるようです。

https://littlemachineshop.com/products/product_view.php?ProductID=1463

まあ,送料考えたら,ご自分で製作の方がいいかもですね。
mabo   2018/07/15(Sun) 10:09 !email! No.1035 !ico_edit!
Re: XJ9512の補修
maboさん、レス有難う。

そうなんですよね、送料が高い!
壊した部品ですが、無事に製作が完了し、取り付け後の動作も問題ないようです。

送料の話に戻りますが、
ドイツから、重さ17kgの品を買いました。
日本国内では、同様の品はあるのですが、自分のバイクに合いませんので、
やむを得ず、ドイツから取り寄せることにしました。
セカイモンというオークションの世界です。
実は、ドイツアマゾンで購入しようとしたら、日本へは無理という事でした。
しかし、オークションの世界は凄いですね!
http://www.sekaimon.com/s/ConStands%20Power%20Kawasaki%20Z%201000%20SX%2011-18%20/131090/de/?searchLocationType=all&aspect=Rennsport-Teile
TR   2018/07/17(Tue) 17:35 !email! No.1036 !ico_edit!
Re: XJ9512の補修
TRさんこんにちは。

セカイモンで購入なさったんですね。

私も一応会員にはなってますが,カードの登録してないので,

まだ,購入はできません。

セカイモンに登録したのは,以前どなたかが紹介してくださったものを購入しようかなと考えたのと,

LOG SPLITTERSなるものがほしいなと思ったからです。

http://www.sekaimon.com/gb/11752/Farm+Implements+%26+Equipment/263442149710/

https://www.youtube.com/watch?v=N4zVPnAgtLI

結局止めてしまいましたけど・・・・。

これ,薪割りの道具なんですけど,

知人のところの伐採した材木薪にするのに,便利かな

と思った次第です。

いろいろ便利なものがあるようですね。
mabo   2018/07/20(Fri) 11:22 !email! No.1037 !ico_edit!
Re: XJ9512の補修
動画サイトを見ましたが。
サクサクと薪割りが出来て便利そうですね。
でも、怖そうな感じです。
巻き込まれたら、大怪我をしそうです。
TR   2018/07/21(Sat) 20:14 !email! No.1038 !ico_edit!
雑木の伐採 投稿者:TR 投稿日:2018/06/25(Mon) 17:51 No.1031

maboさん、お暑うございます。
今年も、この挨拶をする時期になりましたね。

今日は自分、休みでしたので、
雑木の根に悩まされていたの払拭すべく、伐採しました。
30年生の木です。元が30pにも育っていました。
 なので、根本は実家のチェーンソーを借りてきて、
機械の力で切りました。

今日は、伐根が残りましたが、
汗をかいたので、一杯やりますよ(笑い

写真の、のこぎりは、今後に備えて新調しました。
きっと活躍してくれます。

Re: 雑木の伐採
maboさん、こんにちは。
今日も暑いですね。
梅雨明けじゃないと思いますが、暑くて、錯覚を起こします。

今日は、暑くなる前に、続きの作業である、伐根をやりました。
約3時間半かかりました。
若い頃と違って、クタクタになったので、ここまでで終了。
埋め戻しは、また次の日です。

今までは、じめじめしていたのですが、これで、ドライになると思います。
TR   2018/06/27(Wed) 11:55 !email! No.1032 !ico_edit!
Re: 雑木の伐採
TRさんこんばんわ。

抜根お疲れ様です。

こればかりは,重機ないと,手作業ですね。

30年ものをやったことはありませんが,

結構やっているので,大変さはよく分かるつもりです。



以前実家で抜根をしないで,なんとかできないかと,

スタンプアウトなるもので,処理したことがありますが,

http://mabo52.sakura.ne.jp/index.php?e=200

広告通りの効き目はなかったようにおもいます。

使い方が悪かったのかはわかりませんが。


時間があるのなら,切り株にして,

10年もほっておくと腐る,なんて気の長い話も,聞きました。


木陰がなくなると明るくなるし,乾燥もするようです。

多分,蚊も少なくなると思います。
mabo   2018/06/27(Wed) 23:36 !email! No.1033 !ico_edit!
週4日勤務 投稿者:TR 投稿日:2018/05/14(Mon) 06:44 No.1026

maboさん、おはようございます。
最近は、何かやっていますか?

自分は、
CNCフライスでバイク部品で、
前輪のクッションをオーバーホールする為の特殊工具を自作しました。
フライスの原点から何度も、プログラムをスタートさせたせいか、
ずれてしまいました。 工夫しないと駄目な感じです。

写真は、製作した自作の特殊工具です。
買ったら、3万位しますので自作しました。
多少使い勝手は悪いかもしれませんが、効果の程を期待しています(笑

&#8659;
海外の動画を参考にして作りました。
皆さん方も、特殊工具を作っていられるようです。
https://www.youtube.com/watch?v=eUA8-bilx6k&t=5s

Re: 週4日勤務
TRさん,こんばんは。

また超亀レスになってしまいました。

TRさんは,着実にDIYなさってますね。

ちょっと,うらやましい気がします。

今回お作りになったのは,バイク修理のための,

SSR(SST?)でしがか,補助具ですよね。

改めて,すごいなと思います。


私は,このところ,DIYと呼べる物は,

あまりやっていません。

つい最近組み立てたのは,

ペルチェ素子を使ったクーラーです。

これ,市販品の組み立てですけど。

携帯の冷却に使おうかと思って

組み立てましたが,組み立てただけで終わってます。

実際に使うには,携帯にセットするケース?

を作成しなきゃなので,できるかどうか。



それと,今,部品街なのが,実家の混合水栓のカートリッジです。

水漏れしはじまったので,交換する必要がでました。

通常の水道だと,パッキングの交換ですみますけど,

混合水栓は,高くつきますね。
mabo   2018/05/20(Sun) 21:52 !email! No.1027 !ico_edit!
Re: 週4日勤務
>ペルチェ素子を使ったクーラー

物凄いものを作っていますね!
テレビで見たくらいです。
手が出ませんよ〜。

混合水栓ですか、買ったことはありません。
いつも水道屋さんです。
なので、高いです。
時間が出来たら、セルフしたいですね。


牡鹿島に行ってきました。
湾が入り組んで、綺麗なところでした。
残念なことに、松島の観光船に乗れませんでした。
次回リベンジしたいと思います。
TR   2018/05/21(Mon) 19:59 !email! No.1028 !ico_edit!
Re: 週4日勤務
TRさん,こんばんは。

書き込みありがとうございます。

>残念なことに、松島の観光船に乗れませんでした。

きれいですね。

私は,現職の時に行ったかなあ。

ちょっと曖昧です。


なるべく節約のため?(高くつくこともあるのですが。)

なるべく自分でやろうとしてます。

今回の挑戦は,混合水栓のカートリッジの交換です。

http://horigblog.blog122.fc2.com/blog-entry-211.html

http://02memo.seesaa.net/article/409331029.html

等を参考に,やり方の勉強をしてます。

実家も我が家も,以前,DIYでこの水栓に交換しました。

交換したときに,

いずれは,水漏れのためにカートリッジの交換だろうな。

と思ってましたが,かれこれ,10年ぐらいでしょうか,

それで,水漏れするようになった次第です。

ネットで,カートリッジは,
 
野口さん,5枚程度です。

これ,業者に頼むと,多分

  出張費 8000円位?
  部品代 5000円以上
  工賃  5000円?

ということで,多分,部品代の4倍ぐらいになるかな。

ということで,DIYです。
mabo   2018/05/22(Tue) 00:00 !email! No.1029 !ico_edit!
Re: 週4日勤務
混合栓のご照会に感謝します。
これなら自分もできるかもしれません。
どうもでした。
我が家と同じ型が分かれば、やれそうです。
TR   2018/05/22(Tue) 06:27 !email! No.1030 !ico_edit!
錫メッキ完成 投稿者:TR 投稿日:2018/02/26(Mon) 21:28 No.1021

maboさん、こんばんは。

バイク用のアースターミナルを作ろうかと思っていましたが、
銅板のままではつまらないと思い、銅板に錫メッキをすることにしました。

板の左側は、鍍金のままの状態です。
灰色です。
右側は、ピカールでバフ掛け後になります。
凄いでしょう!
ピカピカです。

Re: 錫メッキ完成
TRさん,こんばんは。

超超亀レスです。

メッキすごいですねえ。

私は,メッキは,まだ手をそめていません。

メッキではないのですが,アルマイト仕上げ,

興味を持って買おうかと思いましたが,

値段で断念した記憶がります。。

確か,オリジナルマインドでした。

https://www.originalmind.co.jp/products/as

現役退いてしまうと,先立つものがとか,

なんかしみったれた?ことばかりになってしまいます。
mabo   2018/03/27(Tue) 22:57 !email! No.1023 !ico_edit!
Re: 錫メッキ完成
maboさん、こんにちは。
時々、見に来ていました。

>興味を持って買おうかと思いましたが,

値段で断念した記憶がります。。


そうですよね。
自分も、3月末で退職し、4月から、激安の給料で再雇用です。
そうなると、必然的に、支出に対しては、気を使いますよ。
もう既に、買い控えに入りました(苦笑

でも、退職記念にバイクの新車を買いました。
車と違って、ウン百万円にはなりませんよ。
やはり、夢はこの時にしかないと思って求めました。
ま〜、いざという時は、車と違って、まあまあの値段で売れますので。
写真は、愛車のバイクです。

PS
3月中旬までは、先が不安なせいか、眠れなかった日があります。
今でも、時々あります。
人間は弱い生き物です。
TR   2018/03/29(Thu) 17:50 !email! No.1024 !ico_edit!
Re: 錫メッキ完成
TRさん,こんにちは。

今回も超亀レスですみません。

書き込みありがとうございます。

TRさんも近々ご退職なさるんですね。

私も,退職にあわせてという訳ではないのですが,

現職の時に,大物の道具を一揃いそろえました。

一番の大物は,知人を通して,アメリカから輸入してもらった,

テーブルソーでしょうかね。

といっても,TRさんの買われたバイクには,

とうて及ばない値段ですけそ。

それでも,退職してからとなると,

結構な勇気いりますね。

それと,ドイツ製のルーターやら,同ドミノと呼ばれる

道後を購入しました。


今となっては,ちょっとむりでしょうけど。

TRさんは,生活のリズムが変化したのでしょうかね。

早く,お元気になること願ってます。
mabo   2018/04/10(Tue) 15:12 !email! No.1025 !ico_edit!
Probe Centering with Mach3 Tutorial 投稿者:TR 投稿日:2018/01/24(Wed) 12:00 No.1019

かな?
パイプの中心へ刃物を自動で移動させるVBを見つけました。
試してください。
http://www.mycncuk.com/threads/6162-Probe-Centering-with-Mach3-Tutorial

Re: Probe Centering with Mach3 Tutorial
maboさん、こんにちは。
今日はいい天気ですね〜。

自分のバイクですが、分け合って、乗り換えることにしたのですけど、
納車まで、ひたすらバイクの無い生活が続いています。

で、MCH3の方、ネットで便利な使い方を漁っています。
自分で試して、上手くいったので、自分のHPにアップしました。
気が向いたら見てやって下さい。
http://vfr800.web.fc2.com/machine/milling/vb.html

それと、自家製メッキて知っていましたか?
亜鉛、錫で鍍金しているようです。
バイクにアーシングという技術があるのですが、
そのターミナルを銅版で作って、更に、その銅版に自家製メッキをしてやろうかと思っています。
TR   2018/02/10(Sat) 09:37 !email! No.1020 !ico_edit!
Re: Probe Centering with Mach3 Tutorial
TRさんご無沙汰しております。

このところ,HPから遠ざかっておりました。

今回も超超亀レスになりました。

せっかくご紹介くださったVB,レスできなくて,

すみませんでした。

TRさんのHPも拝見さでていただきました。

苦手なMACHのVBも丁寧にまとめられたのに,

びっくりしております。

自分は,そこまで行ってないのですが,

作る時に参考にさせていただきたいと思います。
mabo   2018/03/27(Tue) 22:51 !email! No.1022 !ico_edit!
Set Step per Unit 投稿者:TR 投稿日:2018/01/21(Sun) 20:57 No.1015

maboさん、こんばんは。

現在、自分は、デジタル温度計のパネル製作の際中です。
道半ばですが、一部を削り終えたので、計測したら、なんと、少し大きめです!!
バックラッシュがおかしいような気がして、You Tubeで「Mach3 バックラッシュ」で検索したら、↓

https://www.youtube.com/watch?v=XkO5tc-jSxw

これを見て分かった事があります。
それは、モーターチューンの内、Step Perの設定です。
簡単にできそうですが、、、、
もう今夜は、くたびれて、断念、maboさん、試しにやってみませんか?
ご存知でしたら、失礼なことを云ってしまうことになりますが、如何でしょうか?

Re: Set Step per Unit
TRさん今晩は。書き込みありがとうございます。

相変わらず,熱心に取り組まれてますね。

ちょっと,うらやましいです。


>Step Perの設定

ですがあまりいじったことがありません。

正直言って,まだ,そこまで,調整したことがない,

というのが実態です。


ご紹介いただいたYOUTUBEみてみましたが,

ざっとみただけなので,

ちょっと理解できていません。

もうちょっと詳しく見てみます。


解決の情報,持ち合わせてなくてすみません。

何か,分かったら,教えてください。



ちなみに,今日は,こちらも雪がすごいです。


それから,電熱ジャケットレスできませんでした。

過日近くのHCに行ったところ,

TRさんがご紹介くださったものと類似の

電熱ジャケットがありました。

これは,職人さんの冬用の作業用みたいでした。


追記です。

英語のページですけど,

検索してみたら,下記のページが引っかかりました。

https://planet-cnc.com/how-to-setup-cnc/

http://www.instructables.com/id/Automatic-Axis-Calibration-Using-Mach-3/

細かい調整の方法が書いてあるようですが。

TRさんのご紹介くださったYouTubeは,

マイクロメーターを使って調整しているんですね。

MACHには,便利な機能があると,改めて感心しました。
mabo   2018/01/22(Mon) 21:49 !email! No.1016 !ico_edit!
Re: Set Step per Unit
TRさんちょっと詳しくみてみました。

バッククラッシュという言葉があったので,

バッククラッシュの調整かなと思いましたが,

STEP PER の調整なんですね。


一番最初に,モーターのワンパルスの回転角度等から,

計算したの思い出しました。

面倒な計算をしなくても,実際の計測ができれば,

その数値を入力することで,

MACHが自動でセットしてくれるみたいですね。
mabo   2018/01/22(Mon) 22:46 !email! No.1017 !ico_edit!
Re: Set Step per Unit
maboさん、おはようございます。

>MACHが自動でセットしてくれるみたいですね。

昨晩、やってみました。
最初は、中華製 DROを見ながらやりましたが、
DROもいい加減です。 どうも、1.0mm動作させるたびに、
微妙に移動距離が違う。
また、MAH3の自動移動距離も、どうも、いい加減な感じがします。

そこで、
マイクロメーターで移動距離を計測することにして、
計測側の精度を上げて、再度チャレンジ。
それでも、MACH3の自動PERの機能が、
微妙に、合わない。
でも、自動PERがあっているという感じがする時もあったので、
手動で、最後は決めました。

それと、自分のML4は、設定後、2年経過していました。
早いものです。設定当時は、maboさんに、色々とご教授を賜りまして、ありがとうございます。
特に、PICによる、ブロワの間欠制御は、今でも、完璧です。
TR   2018/01/24(Wed) 06:30 !email! No.1018 !ico_edit!
意外でした 投稿者:TR 投稿日:2018/01/14(Sun) 17:41 No.1010

maboさん、こんばんは。
寒い毎日ですが、お元気にお元気にお過ごしのこととご推察します。
ちょっと前から、maboさんには、奥様がおられることに気が付きました。
お二人共々元気元気(*^^*)

以外と驚きだったことがあります、それは、↓

安物ですが、意外と精度の高い中華製の温度計
昔ながらの熱膨張で赤い線がのびる温度計がありますが、
それを読み込むと中華温度計と、ほぼ同じでした!
安物でしたので、バカにしていたのですが、驚きでした。
これで、温度設定をしてファンを動作できるのですから!

実はこの品は、実際に使うかどうかわからないけど、
興味半分で買った品なのです。
転がしてきましたが、
固定用のパネルを作ることにしましたが、、、

ま〜、パネルの製作を通じて、良い経験になりました。
良い経験というのは、
四角いボタンをパネルに収めるには、どうやって、
パネルに四角の穴開けをするかです。

写真のように、ドリルで四角に穴を開けて、エンドミルで残りをさらったのですが、
やすりで角を落とした方が、無難なことが分かりました。
素材が、ベークなので、やすりで簡単に落とせます。
何ごとも経験ですね(笑

しかし、安物温度センサーですが、
パネルに収めると、それらしく見えてくるのが、笑ってしまいます。
切削痕が出てしまったりしているので、今後は改善しようかと思います。

Re: 意外でした
TRさん,今晩は。書き込みありがとうございます。

そうですね。個人情報には気を使ってるつもりですが,

ブログでは,家庭のことまで,配信することになりますね。

でも,まあ,詳細が公開されてはこまるのですが,妻帯者?

であることぐらいはいいかななんて思います。(笑)

二人とも現役退いて,年金生活ですが,なんとか生活してます。


ペットロストシンドロームもやっと落ち着いてきましたが,

やはり,ことあるたびに,思い出してウルウルです。



さて,TRさんが書き込んでくださった温度計のケースですが,

私だったら,エンドミルの分だけ内側削って,

四隅をやすりでしあげるでしょうかね。

書くまでもなく,TRさんも同じ方法お考えだったと思いますが。

写真の赤をやすりで加工でしょうかね。


温度計,例の中○製でしょうか。

安いのが魅力ですね。


ちゃんとケースに入れると本当,それらしくですよね。
mabo   2018/01/14(Sun) 22:30 !email! No.1011 !ico_edit!
Re: 意外でした
maboさん、レス有難うございます。

製作はまだ継続中ですよ。

自分も、もう直、再雇用になります。
でも、週4日の勤務なので、気が楽です。
最近、つくづく思いますよ。
それは、若い時のように、エネルギッシュさがない事です。
午後4時頃に、パワーダウンをしています(笑

>二人とも現役退いて,年金生活ですが,なんとか生活してます。

その気持ちは、良く分かります。
現役とは違うので、それなりに暮らすしかないですよね。


>ペットロストシンドロームもやっと落ち着いてきましたが,
良かった良かった。
自分の犬は、11歳になりますが、足腰が弱っているようですが、
まだ元気です。





>さて,TRさんが書き込んでくださった温度計のケースですが,

私だったら,エンドミルの分だけ内側削って,

四隅をやすりでしあげるでしょうかね。


私も同感です!!


最近気が付いた点があります。
それは、写真の様な切削痕です。
この切削痕は、どうして付くのだろうと思ていました。
色々と原因はあるのでしょうけど、
サーボONの時、ハンドルに力を加えると、若干ですが、ハンドルが動きます。
という事は、、、
切削中の負荷に負けて、刃先が動くという事だな〜と、思いました。
そうなると、仕上げの切削は必須だな〜とも、、、
今更ながらの、気付きです(苦笑
TR   2018/01/17(Wed) 18:40 !email! No.1012 !ico_edit!
Re: 意外でした
TRさんこんばんは。

書き込みありがとうございます。

さすがに,研究熱心ですね。

切削痕原因はわかりませんが,機械の剛性の問題やら,

エンドミルの剛性やら,ワークの固定やら,

ワーク自体のたわみやら,いろいろあるんでしょうね。

TRsんがおっしゃるように,仕上げの切削すると,

きれいになるんでしょうね。



TRさんは,再雇用でしたか。

多分,給料は少なくなるでしょうけど,

精神的には,ずいぶん楽になるような気がします。

現役の時にもらっていた給料は魅力的なのですが,

働く気力がありません。

家のもそんな話してました。

ちなみに家のも私と同じ業界で,仕事をしていました。

話は合うのですが・・・・・・・・。


時間はあるのですが,これで,先立つものがあれば,

いうことないのですが。(笑)
mabo   2018/01/18(Thu) 22:49 !email! No.1014 !ico_edit!
Page: | 1 | 2 | 3 | 4 | 5 | 6 |

- JoyfulNote v6.02 -
++ Edited by Hamel ++